1// Copyright 2021 Google LLC.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Code generated file. DO NOT EDIT.
6
7// Package serviceconsumermanagement provides access to the Service Consumer Management API.
8//
9// For product documentation, see: https://cloud.google.com/service-consumer-management/docs/overview
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/serviceconsumermanagement/v1beta1"
16//   ...
17//   ctx := context.Background()
18//   serviceconsumermanagementService, err := serviceconsumermanagement.NewService(ctx)
19//
20// In this example, Google Application Default Credentials are used for authentication.
21//
22// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
23//
24// Other authentication options
25//
26// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
27//
28//   serviceconsumermanagementService, err := serviceconsumermanagement.NewService(ctx, option.WithAPIKey("AIza..."))
29//
30// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
31//
32//   config := &oauth2.Config{...}
33//   // ...
34//   token, err := config.Exchange(ctx, ...)
35//   serviceconsumermanagementService, err := serviceconsumermanagement.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
36//
37// See https://godoc.org/google.golang.org/api/option/ for details on options.
38package serviceconsumermanagement // import "google.golang.org/api/serviceconsumermanagement/v1beta1"
39
40import (
41	"bytes"
42	"context"
43	"encoding/json"
44	"errors"
45	"fmt"
46	"io"
47	"net/http"
48	"net/url"
49	"strconv"
50	"strings"
51
52	googleapi "google.golang.org/api/googleapi"
53	gensupport "google.golang.org/api/internal/gensupport"
54	option "google.golang.org/api/option"
55	internaloption "google.golang.org/api/option/internaloption"
56	htransport "google.golang.org/api/transport/http"
57)
58
59// Always reference these packages, just in case the auto-generated code
60// below doesn't.
61var _ = bytes.NewBuffer
62var _ = strconv.Itoa
63var _ = fmt.Sprintf
64var _ = json.NewDecoder
65var _ = io.Copy
66var _ = url.Parse
67var _ = gensupport.MarshalJSON
68var _ = googleapi.Version
69var _ = errors.New
70var _ = strings.Replace
71var _ = context.Canceled
72var _ = internaloption.WithDefaultEndpoint
73
74const apiId = "serviceconsumermanagement:v1beta1"
75const apiName = "serviceconsumermanagement"
76const apiVersion = "v1beta1"
77const basePath = "https://serviceconsumermanagement.googleapis.com/"
78const mtlsBasePath = "https://serviceconsumermanagement.mtls.googleapis.com/"
79
80// OAuth2 scopes used by this API.
81const (
82	// See, edit, configure, and delete your Google Cloud data and see the
83	// email address for your Google Account.
84	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
85)
86
87// NewService creates a new APIService.
88func NewService(ctx context.Context, opts ...option.ClientOption) (*APIService, error) {
89	scopesOption := option.WithScopes(
90		"https://www.googleapis.com/auth/cloud-platform",
91	)
92	// NOTE: prepend, so we don't override user-specified scopes.
93	opts = append([]option.ClientOption{scopesOption}, opts...)
94	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
95	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
96	client, endpoint, err := htransport.NewClient(ctx, opts...)
97	if err != nil {
98		return nil, err
99	}
100	s, err := New(client)
101	if err != nil {
102		return nil, err
103	}
104	if endpoint != "" {
105		s.BasePath = endpoint
106	}
107	return s, nil
108}
109
110// New creates a new APIService. It uses the provided http.Client for requests.
111//
112// Deprecated: please use NewService instead.
113// To provide a custom HTTP client, use option.WithHTTPClient.
114// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
115func New(client *http.Client) (*APIService, error) {
116	if client == nil {
117		return nil, errors.New("client is nil")
118	}
119	s := &APIService{client: client, BasePath: basePath}
120	s.Operations = NewOperationsService(s)
121	s.Services = NewServicesService(s)
122	return s, nil
123}
124
125type APIService struct {
126	client    *http.Client
127	BasePath  string // API endpoint base URL
128	UserAgent string // optional additional User-Agent fragment
129
130	Operations *OperationsService
131
132	Services *ServicesService
133}
134
135func (s *APIService) userAgent() string {
136	if s.UserAgent == "" {
137		return googleapi.UserAgent
138	}
139	return googleapi.UserAgent + " " + s.UserAgent
140}
141
142func NewOperationsService(s *APIService) *OperationsService {
143	rs := &OperationsService{s: s}
144	return rs
145}
146
147type OperationsService struct {
148	s *APIService
149}
150
151func NewServicesService(s *APIService) *ServicesService {
152	rs := &ServicesService{s: s}
153	rs.ConsumerQuotaMetrics = NewServicesConsumerQuotaMetricsService(s)
154	return rs
155}
156
157type ServicesService struct {
158	s *APIService
159
160	ConsumerQuotaMetrics *ServicesConsumerQuotaMetricsService
161}
162
163func NewServicesConsumerQuotaMetricsService(s *APIService) *ServicesConsumerQuotaMetricsService {
164	rs := &ServicesConsumerQuotaMetricsService{s: s}
165	rs.Limits = NewServicesConsumerQuotaMetricsLimitsService(s)
166	return rs
167}
168
169type ServicesConsumerQuotaMetricsService struct {
170	s *APIService
171
172	Limits *ServicesConsumerQuotaMetricsLimitsService
173}
174
175func NewServicesConsumerQuotaMetricsLimitsService(s *APIService) *ServicesConsumerQuotaMetricsLimitsService {
176	rs := &ServicesConsumerQuotaMetricsLimitsService{s: s}
177	rs.ProducerOverrides = NewServicesConsumerQuotaMetricsLimitsProducerOverridesService(s)
178	return rs
179}
180
181type ServicesConsumerQuotaMetricsLimitsService struct {
182	s *APIService
183
184	ProducerOverrides *ServicesConsumerQuotaMetricsLimitsProducerOverridesService
185}
186
187func NewServicesConsumerQuotaMetricsLimitsProducerOverridesService(s *APIService) *ServicesConsumerQuotaMetricsLimitsProducerOverridesService {
188	rs := &ServicesConsumerQuotaMetricsLimitsProducerOverridesService{s: s}
189	return rs
190}
191
192type ServicesConsumerQuotaMetricsLimitsProducerOverridesService struct {
193	s *APIService
194}
195
196// Api: Api is a light-weight descriptor for an API Interface.
197// Interfaces are also described as "protocol buffer services" in some
198// contexts, such as by the "service" keyword in a .proto file, but they
199// are different from API Services, which represent a concrete
200// implementation of an interface as opposed to simply a description of
201// methods and bindings. They are also sometimes simply referred to as
202// "APIs" in other contexts, such as the name of this message itself.
203// See https://cloud.google.com/apis/design/glossary for detailed
204// terminology.
205type Api struct {
206	// Methods: The methods of this interface, in unspecified order.
207	Methods []*Method `json:"methods,omitempty"`
208
209	// Mixins: Included interfaces. See Mixin.
210	Mixins []*Mixin `json:"mixins,omitempty"`
211
212	// Name: The fully qualified name of this interface, including package
213	// name followed by the interface's simple name.
214	Name string `json:"name,omitempty"`
215
216	// Options: Any metadata attached to the interface.
217	Options []*Option `json:"options,omitempty"`
218
219	// SourceContext: Source context for the protocol buffer service
220	// represented by this message.
221	SourceContext *SourceContext `json:"sourceContext,omitempty"`
222
223	// Syntax: The source syntax of the service.
224	//
225	// Possible values:
226	//   "SYNTAX_PROTO2" - Syntax `proto2`.
227	//   "SYNTAX_PROTO3" - Syntax `proto3`.
228	Syntax string `json:"syntax,omitempty"`
229
230	// Version: A version string for this interface. If specified, must have
231	// the form `major-version.minor-version`, as in `1.10`. If the minor
232	// version is omitted, it defaults to zero. If the entire version field
233	// is empty, the major version is derived from the package name, as
234	// outlined below. If the field is not empty, the version in the package
235	// name will be verified to be consistent with what is provided here.
236	// The versioning schema uses semantic versioning (http://semver.org)
237	// where the major version number indicates a breaking change and the
238	// minor version an additive, non-breaking change. Both version numbers
239	// are signals to users what to expect from different versions, and
240	// should be carefully chosen based on the product plan. The major
241	// version is also reflected in the package name of the interface, which
242	// must end in `v`, as in `google.feature.v1`. For major versions 0 and
243	// 1, the suffix can be omitted. Zero major versions must only be used
244	// for experimental, non-GA interfaces.
245	Version string `json:"version,omitempty"`
246
247	// ForceSendFields is a list of field names (e.g. "Methods") to
248	// unconditionally include in API requests. By default, fields with
249	// empty or default values are omitted from API requests. However, any
250	// non-pointer, non-interface field appearing in ForceSendFields will be
251	// sent to the server regardless of whether the field is empty or not.
252	// This may be used to include empty fields in Patch requests.
253	ForceSendFields []string `json:"-"`
254
255	// NullFields is a list of field names (e.g. "Methods") to include in
256	// API requests with the JSON null value. By default, fields with empty
257	// values are omitted from API requests. However, any field with an
258	// empty value appearing in NullFields will be sent to the server as
259	// null. It is an error if a field in this list has a non-empty value.
260	// This may be used to include null fields in Patch requests.
261	NullFields []string `json:"-"`
262}
263
264func (s *Api) MarshalJSON() ([]byte, error) {
265	type NoMethod Api
266	raw := NoMethod(*s)
267	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
268}
269
270// AuthProvider: Configuration for an authentication provider, including
271// support for JSON Web Token (JWT)
272// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
273type AuthProvider struct {
274	// Audiences: The list of JWT audiences
275	// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
276	// that are allowed to access. A JWT containing any of these audiences
277	// will be accepted. When this setting is absent, JWTs with audiences: -
278	// "https://[service.name]/[google.protobuf.Api.name]" -
279	// "https://[service.name]/" will be accepted. For example, if no
280	// audiences are in the setting, LibraryService API will accept JWTs
281	// with the following audiences: -
282	// https://library-example.googleapis.com/google.example.library.v1.LibraryService
283	// - https://library-example.googleapis.com/ Example: audiences:
284	// bookstore_android.apps.googleusercontent.com,
285	// bookstore_web.apps.googleusercontent.com
286	Audiences string `json:"audiences,omitempty"`
287
288	// AuthorizationUrl: Redirect URL if JWT token is required but not
289	// present or is expired. Implement authorizationUrl of
290	// securityDefinitions in OpenAPI spec.
291	AuthorizationUrl string `json:"authorizationUrl,omitempty"`
292
293	// Id: The unique identifier of the auth provider. It will be referred
294	// to by `AuthRequirement.provider_id`. Example: "bookstore_auth".
295	Id string `json:"id,omitempty"`
296
297	// Issuer: Identifies the principal that issued the JWT. See
298	// https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
299	// Usually a URL or an email address. Example:
300	// https://securetoken.google.com Example:
301	// 1234567-compute@developer.gserviceaccount.com
302	Issuer string `json:"issuer,omitempty"`
303
304	// JwksUri: URL of the provider's public key set to validate signature
305	// of the JWT. See OpenID Discovery
306	// (https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
307	// Optional if the key set document: - can be retrieved from OpenID
308	// Discovery
309	// (https://openid.net/specs/openid-connect-discovery-1_0.html) of the
310	// issuer. - can be inferred from the email domain of the issuer (e.g. a
311	// Google service account). Example:
312	// https://www.googleapis.com/oauth2/v1/certs
313	JwksUri string `json:"jwksUri,omitempty"`
314
315	// JwtLocations: Defines the locations to extract the JWT. JWT locations
316	// can be either from HTTP headers or URL query parameters. The rule is
317	// that the first match wins. The checking order is: checking all
318	// headers first, then URL query parameters. If not specified, default
319	// to use following 3 locations: 1) Authorization: Bearer 2)
320	// x-goog-iap-jwt-assertion 3) access_token query parameter Default
321	// locations can be specified as followings: jwt_locations: - header:
322	// Authorization value_prefix: "Bearer " - header:
323	// x-goog-iap-jwt-assertion - query: access_token
324	JwtLocations []*JwtLocation `json:"jwtLocations,omitempty"`
325
326	// ForceSendFields is a list of field names (e.g. "Audiences") to
327	// unconditionally include in API requests. By default, fields with
328	// empty or default values are omitted from API requests. However, any
329	// non-pointer, non-interface field appearing in ForceSendFields will be
330	// sent to the server regardless of whether the field is empty or not.
331	// This may be used to include empty fields in Patch requests.
332	ForceSendFields []string `json:"-"`
333
334	// NullFields is a list of field names (e.g. "Audiences") to include in
335	// API requests with the JSON null value. By default, fields with empty
336	// values are omitted from API requests. However, any field with an
337	// empty value appearing in NullFields will be sent to the server as
338	// null. It is an error if a field in this list has a non-empty value.
339	// This may be used to include null fields in Patch requests.
340	NullFields []string `json:"-"`
341}
342
343func (s *AuthProvider) MarshalJSON() ([]byte, error) {
344	type NoMethod AuthProvider
345	raw := NoMethod(*s)
346	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
347}
348
349// AuthRequirement: User-defined authentication requirements, including
350// support for JSON Web Token (JWT)
351// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
352type AuthRequirement struct {
353	// Audiences: NOTE: This will be deprecated soon, once
354	// AuthProvider.audiences is implemented and accepted in all the runtime
355	// components. The list of JWT audiences
356	// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
357	// that are allowed to access. A JWT containing any of these audiences
358	// will be accepted. When this setting is absent, only JWTs with
359	// audience "https://Service_name/API_name" will be accepted. For
360	// example, if no audiences are in the setting, LibraryService API will
361	// only accept JWTs with the following audience
362	// "https://library-example.googleapis.com/google.example.library.v1.Libr
363	// aryService". Example: audiences:
364	// bookstore_android.apps.googleusercontent.com,
365	// bookstore_web.apps.googleusercontent.com
366	Audiences string `json:"audiences,omitempty"`
367
368	// ProviderId: id from authentication provider. Example: provider_id:
369	// bookstore_auth
370	ProviderId string `json:"providerId,omitempty"`
371
372	// ForceSendFields is a list of field names (e.g. "Audiences") to
373	// unconditionally include in API requests. By default, fields with
374	// empty or default values are omitted from API requests. However, any
375	// non-pointer, non-interface field appearing in ForceSendFields will be
376	// sent to the server regardless of whether the field is empty or not.
377	// This may be used to include empty fields in Patch requests.
378	ForceSendFields []string `json:"-"`
379
380	// NullFields is a list of field names (e.g. "Audiences") to include in
381	// API requests with the JSON null value. By default, fields with empty
382	// values are omitted from API requests. However, any field with an
383	// empty value appearing in NullFields will be sent to the server as
384	// null. It is an error if a field in this list has a non-empty value.
385	// This may be used to include null fields in Patch requests.
386	NullFields []string `json:"-"`
387}
388
389func (s *AuthRequirement) MarshalJSON() ([]byte, error) {
390	type NoMethod AuthRequirement
391	raw := NoMethod(*s)
392	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
393}
394
395// Authentication: `Authentication` defines the authentication
396// configuration for API methods provided by an API service. Example:
397// name: calendar.googleapis.com authentication: providers: - id:
398// google_calendar_auth jwks_uri:
399// https://www.googleapis.com/oauth2/v1/certs issuer:
400// https://securetoken.google.com rules: - selector: "*" requirements:
401// provider_id: google_calendar_auth - selector:
402// google.calendar.Delegate oauth: canonical_scopes:
403// https://www.googleapis.com/auth/calendar.read
404type Authentication struct {
405	// Providers: Defines a set of authentication providers that a service
406	// supports.
407	Providers []*AuthProvider `json:"providers,omitempty"`
408
409	// Rules: A list of authentication rules that apply to individual API
410	// methods. **NOTE:** All service configuration rules follow "last one
411	// wins" order.
412	Rules []*AuthenticationRule `json:"rules,omitempty"`
413
414	// ForceSendFields is a list of field names (e.g. "Providers") to
415	// unconditionally include in API requests. By default, fields with
416	// empty or default values are omitted from API requests. However, any
417	// non-pointer, non-interface field appearing in ForceSendFields will be
418	// sent to the server regardless of whether the field is empty or not.
419	// This may be used to include empty fields in Patch requests.
420	ForceSendFields []string `json:"-"`
421
422	// NullFields is a list of field names (e.g. "Providers") to include in
423	// API requests with the JSON null value. By default, fields with empty
424	// values are omitted from API requests. However, any field with an
425	// empty value appearing in NullFields will be sent to the server as
426	// null. It is an error if a field in this list has a non-empty value.
427	// This may be used to include null fields in Patch requests.
428	NullFields []string `json:"-"`
429}
430
431func (s *Authentication) MarshalJSON() ([]byte, error) {
432	type NoMethod Authentication
433	raw := NoMethod(*s)
434	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
435}
436
437// AuthenticationRule: Authentication rules for the service. By default,
438// if a method has any authentication requirements, every request must
439// include a valid credential matching one of the requirements. It's an
440// error to include more than one kind of credential in a single
441// request. If a method doesn't have any auth requirements, request
442// credentials will be ignored.
443type AuthenticationRule struct {
444	// AllowWithoutCredential: If true, the service accepts API keys without
445	// any other credential. This flag only applies to HTTP and gRPC
446	// requests.
447	AllowWithoutCredential bool `json:"allowWithoutCredential,omitempty"`
448
449	// Oauth: The requirements for OAuth credentials.
450	Oauth *OAuthRequirements `json:"oauth,omitempty"`
451
452	// Requirements: Requirements for additional authentication providers.
453	Requirements []*AuthRequirement `json:"requirements,omitempty"`
454
455	// Selector: Selects the methods to which this rule applies. Refer to
456	// selector for syntax details.
457	Selector string `json:"selector,omitempty"`
458
459	// ForceSendFields is a list of field names (e.g.
460	// "AllowWithoutCredential") to unconditionally include in API requests.
461	// By default, fields with empty or default values are omitted from API
462	// requests. However, any non-pointer, non-interface field appearing in
463	// ForceSendFields will be sent to the server regardless of whether the
464	// field is empty or not. This may be used to include empty fields in
465	// Patch requests.
466	ForceSendFields []string `json:"-"`
467
468	// NullFields is a list of field names (e.g. "AllowWithoutCredential")
469	// to include in API requests with the JSON null value. By default,
470	// fields with empty values are omitted from API requests. However, any
471	// field with an empty value appearing in NullFields will be sent to the
472	// server as null. It is an error if a field in this list has a
473	// non-empty value. This may be used to include null fields in Patch
474	// requests.
475	NullFields []string `json:"-"`
476}
477
478func (s *AuthenticationRule) MarshalJSON() ([]byte, error) {
479	type NoMethod AuthenticationRule
480	raw := NoMethod(*s)
481	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
482}
483
484// Backend: `Backend` defines the backend configuration for a service.
485type Backend struct {
486	// Rules: A list of API backend rules that apply to individual API
487	// methods. **NOTE:** All service configuration rules follow "last one
488	// wins" order.
489	Rules []*BackendRule `json:"rules,omitempty"`
490
491	// ForceSendFields is a list of field names (e.g. "Rules") to
492	// unconditionally include in API requests. By default, fields with
493	// empty or default values are omitted from API requests. However, any
494	// non-pointer, non-interface field appearing in ForceSendFields will be
495	// sent to the server regardless of whether the field is empty or not.
496	// This may be used to include empty fields in Patch requests.
497	ForceSendFields []string `json:"-"`
498
499	// NullFields is a list of field names (e.g. "Rules") to include in API
500	// requests with the JSON null value. By default, fields with empty
501	// values are omitted from API requests. However, any field with an
502	// empty value appearing in NullFields will be sent to the server as
503	// null. It is an error if a field in this list has a non-empty value.
504	// This may be used to include null fields in Patch requests.
505	NullFields []string `json:"-"`
506}
507
508func (s *Backend) MarshalJSON() ([]byte, error) {
509	type NoMethod Backend
510	raw := NoMethod(*s)
511	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
512}
513
514// BackendRule: A backend rule provides configuration for an individual
515// API element.
516type BackendRule struct {
517	// Address: The address of the API backend. The scheme is used to
518	// determine the backend protocol and security. The following schemes
519	// are accepted: SCHEME PROTOCOL SECURITY http:// HTTP None https://
520	// HTTP TLS grpc:// gRPC None grpcs:// gRPC TLS It is recommended to
521	// explicitly include a scheme. Leaving out the scheme may cause
522	// constrasting behaviors across platforms. If the port is unspecified,
523	// the default is: - 80 for schemes without TLS - 443 for schemes with
524	// TLS For HTTP backends, use protocol to specify the protocol version.
525	Address string `json:"address,omitempty"`
526
527	// Deadline: The number of seconds to wait for a response from a
528	// request. The default varies based on the request protocol and
529	// deployment environment.
530	Deadline float64 `json:"deadline,omitempty"`
531
532	// DisableAuth: When disable_auth is true, a JWT ID token won't be
533	// generated and the original "Authorization" HTTP header will be
534	// preserved. If the header is used to carry the original token and is
535	// expected by the backend, this field must be set to true to preserve
536	// the header.
537	DisableAuth bool `json:"disableAuth,omitempty"`
538
539	// JwtAudience: The JWT audience is used when generating a JWT ID token
540	// for the backend. This ID token will be added in the HTTP
541	// "authorization" header, and sent to the backend.
542	JwtAudience string `json:"jwtAudience,omitempty"`
543
544	// OperationDeadline: The number of seconds to wait for the completion
545	// of a long running operation. The default is no deadline.
546	OperationDeadline float64 `json:"operationDeadline,omitempty"`
547
548	// Possible values:
549	//   "PATH_TRANSLATION_UNSPECIFIED"
550	//   "CONSTANT_ADDRESS" - Use the backend address as-is, with no
551	// modification to the path. If the URL pattern contains variables, the
552	// variable names and values will be appended to the query string. If a
553	// query string parameter and a URL pattern variable have the same name,
554	// this may result in duplicate keys in the query string. # Examples
555	// Given the following operation config: Method path:
556	// /api/company/{cid}/user/{uid} Backend address:
557	// https://example.cloudfunctions.net/getUser Requests to the following
558	// request paths will call the backend at the translated path: Request
559	// path: /api/company/widgetworks/user/johndoe Translated:
560	// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
561	// Request path: /api/company/widgetworks/user/johndoe?timezone=EST
562	// Translated:
563	// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
564	//   "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the
565	// backend address. # Examples Given the following operation config:
566	// Method path: /api/company/{cid}/user/{uid} Backend address:
567	// https://example.appspot.com Requests to the following request paths
568	// will call the backend at the translated path: Request path:
569	// /api/company/widgetworks/user/johndoe Translated:
570	// https://example.appspot.com/api/company/widgetworks/user/johndoe
571	// Request path: /api/company/widgetworks/user/johndoe?timezone=EST
572	// Translated:
573	// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
574	PathTranslation string `json:"pathTranslation,omitempty"`
575
576	// Protocol: The protocol used for sending a request to the backend. The
577	// supported values are "http/1.1" and "h2". The default value is
578	// inferred from the scheme in the address field: SCHEME PROTOCOL
579	// http:// http/1.1 https:// http/1.1 grpc:// h2 grpcs:// h2 For secure
580	// HTTP backends (https://) that support HTTP/2, set this field to "h2"
581	// for improved performance. Configuring this field to non-default
582	// values is only supported for secure HTTP backends. This field will be
583	// ignored for all other backends. See
584	// https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
585	// for more details on the supported values.
586	Protocol string `json:"protocol,omitempty"`
587
588	// Selector: Selects the methods to which this rule applies. Refer to
589	// selector for syntax details.
590	Selector string `json:"selector,omitempty"`
591
592	// ForceSendFields is a list of field names (e.g. "Address") to
593	// unconditionally include in API requests. By default, fields with
594	// empty or default values are omitted from API requests. However, any
595	// non-pointer, non-interface field appearing in ForceSendFields will be
596	// sent to the server regardless of whether the field is empty or not.
597	// This may be used to include empty fields in Patch requests.
598	ForceSendFields []string `json:"-"`
599
600	// NullFields is a list of field names (e.g. "Address") to include in
601	// API requests with the JSON null value. By default, fields with empty
602	// values are omitted from API requests. However, any field with an
603	// empty value appearing in NullFields will be sent to the server as
604	// null. It is an error if a field in this list has a non-empty value.
605	// This may be used to include null fields in Patch requests.
606	NullFields []string `json:"-"`
607}
608
609func (s *BackendRule) MarshalJSON() ([]byte, error) {
610	type NoMethod BackendRule
611	raw := NoMethod(*s)
612	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
613}
614
615func (s *BackendRule) UnmarshalJSON(data []byte) error {
616	type NoMethod BackendRule
617	var s1 struct {
618		Deadline          gensupport.JSONFloat64 `json:"deadline"`
619		OperationDeadline gensupport.JSONFloat64 `json:"operationDeadline"`
620		*NoMethod
621	}
622	s1.NoMethod = (*NoMethod)(s)
623	if err := json.Unmarshal(data, &s1); err != nil {
624		return err
625	}
626	s.Deadline = float64(s1.Deadline)
627	s.OperationDeadline = float64(s1.OperationDeadline)
628	return nil
629}
630
631// Billing: Billing related configuration of the service. The following
632// example shows how to configure monitored resources and metrics for
633// billing, `consumer_destinations` is the only supported destination
634// and the monitored resources need at least one label key
635// `cloud.googleapis.com/location` to indicate the location of the
636// billing usage, using different monitored resources between monitoring
637// and billing is recommended so they can be evolved independently:
638// monitored_resources: - type: library.googleapis.com/billing_branch
639// labels: - key: cloud.googleapis.com/location description: |
640// Predefined label to support billing location restriction. - key: city
641// description: | Custom label to define the city where the library
642// branch is located in. - key: name description: Custom label to define
643// the name of the library branch. metrics: - name:
644// library.googleapis.com/book/borrowed_count metric_kind: DELTA
645// value_type: INT64 unit: "1" billing: consumer_destinations: -
646// monitored_resource: library.googleapis.com/billing_branch metrics: -
647// library.googleapis.com/book/borrowed_count
648type Billing struct {
649	// ConsumerDestinations: Billing configurations for sending metrics to
650	// the consumer project. There can be multiple consumer destinations per
651	// service, each one must have a different monitored resource type. A
652	// metric can be used in at most one consumer destination.
653	ConsumerDestinations []*BillingDestination `json:"consumerDestinations,omitempty"`
654
655	// ForceSendFields is a list of field names (e.g.
656	// "ConsumerDestinations") to unconditionally include in API requests.
657	// By default, fields with empty or default values are omitted from API
658	// requests. However, any non-pointer, non-interface field appearing in
659	// ForceSendFields will be sent to the server regardless of whether the
660	// field is empty or not. This may be used to include empty fields in
661	// Patch requests.
662	ForceSendFields []string `json:"-"`
663
664	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
665	// include in API requests with the JSON null value. By default, fields
666	// with empty values are omitted from API requests. However, any field
667	// with an empty value appearing in NullFields will be sent to the
668	// server as null. It is an error if a field in this list has a
669	// non-empty value. This may be used to include null fields in Patch
670	// requests.
671	NullFields []string `json:"-"`
672}
673
674func (s *Billing) MarshalJSON() ([]byte, error) {
675	type NoMethod Billing
676	raw := NoMethod(*s)
677	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
678}
679
680// BillingDestination: Configuration of a specific billing destination
681// (Currently only support bill against consumer project).
682type BillingDestination struct {
683	// Metrics: Names of the metrics to report to this billing destination.
684	// Each name must be defined in Service.metrics section.
685	Metrics []string `json:"metrics,omitempty"`
686
687	// MonitoredResource: The monitored resource type. The type must be
688	// defined in Service.monitored_resources section.
689	MonitoredResource string `json:"monitoredResource,omitempty"`
690
691	// ForceSendFields is a list of field names (e.g. "Metrics") to
692	// unconditionally include in API requests. By default, fields with
693	// empty or default values are omitted from API requests. However, any
694	// non-pointer, non-interface field appearing in ForceSendFields will be
695	// sent to the server regardless of whether the field is empty or not.
696	// This may be used to include empty fields in Patch requests.
697	ForceSendFields []string `json:"-"`
698
699	// NullFields is a list of field names (e.g. "Metrics") to include in
700	// API requests with the JSON null value. By default, fields with empty
701	// values are omitted from API requests. However, any field with an
702	// empty value appearing in NullFields will be sent to the server as
703	// null. It is an error if a field in this list has a non-empty value.
704	// This may be used to include null fields in Patch requests.
705	NullFields []string `json:"-"`
706}
707
708func (s *BillingDestination) MarshalJSON() ([]byte, error) {
709	type NoMethod BillingDestination
710	raw := NoMethod(*s)
711	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
712}
713
714// Context: `Context` defines which contexts an API requests. Example:
715// context: rules: - selector: "*" requested: -
716// google.rpc.context.ProjectContext - google.rpc.context.OriginContext
717// The above specifies that all methods in the API request
718// `google.rpc.context.ProjectContext` and
719// `google.rpc.context.OriginContext`. Available context types are
720// defined in package `google.rpc.context`. This also provides mechanism
721// to allowlist any protobuf message extension that can be sent in grpc
722// metadata using “x-goog-ext--bin” and “x-goog-ext--jspb”
723// format. For example, list any service specific protobuf types that
724// can appear in grpc metadata as follows in your yaml file: Example:
725// context: rules: - selector:
726// "google.example.library.v1.LibraryService.CreateBook"
727// allowed_request_extensions: - google.foo.v1.NewExtension
728// allowed_response_extensions: - google.foo.v1.NewExtension You can
729// also specify extension ID instead of fully qualified extension name
730// here.
731type Context struct {
732	// Rules: A list of RPC context rules that apply to individual API
733	// methods. **NOTE:** All service configuration rules follow "last one
734	// wins" order.
735	Rules []*ContextRule `json:"rules,omitempty"`
736
737	// ForceSendFields is a list of field names (e.g. "Rules") to
738	// unconditionally include in API requests. By default, fields with
739	// empty or default values are omitted from API requests. However, any
740	// non-pointer, non-interface field appearing in ForceSendFields will be
741	// sent to the server regardless of whether the field is empty or not.
742	// This may be used to include empty fields in Patch requests.
743	ForceSendFields []string `json:"-"`
744
745	// NullFields is a list of field names (e.g. "Rules") to include in API
746	// requests with the JSON null value. By default, fields with empty
747	// values are omitted from API requests. However, any field with an
748	// empty value appearing in NullFields will be sent to the server as
749	// null. It is an error if a field in this list has a non-empty value.
750	// This may be used to include null fields in Patch requests.
751	NullFields []string `json:"-"`
752}
753
754func (s *Context) MarshalJSON() ([]byte, error) {
755	type NoMethod Context
756	raw := NoMethod(*s)
757	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
758}
759
760// ContextRule: A context rule provides information about the context
761// for an individual API element.
762type ContextRule struct {
763	// AllowedRequestExtensions: A list of full type names or extension IDs
764	// of extensions allowed in grpc side channel from client to backend.
765	AllowedRequestExtensions []string `json:"allowedRequestExtensions,omitempty"`
766
767	// AllowedResponseExtensions: A list of full type names or extension IDs
768	// of extensions allowed in grpc side channel from backend to client.
769	AllowedResponseExtensions []string `json:"allowedResponseExtensions,omitempty"`
770
771	// Provided: A list of full type names of provided contexts.
772	Provided []string `json:"provided,omitempty"`
773
774	// Requested: A list of full type names of requested contexts.
775	Requested []string `json:"requested,omitempty"`
776
777	// Selector: Selects the methods to which this rule applies. Refer to
778	// selector for syntax details.
779	Selector string `json:"selector,omitempty"`
780
781	// ForceSendFields is a list of field names (e.g.
782	// "AllowedRequestExtensions") to unconditionally include in API
783	// requests. By default, fields with empty or default values are omitted
784	// from API requests. However, any non-pointer, non-interface field
785	// appearing in ForceSendFields will be sent to the server regardless of
786	// whether the field is empty or not. This may be used to include empty
787	// fields in Patch requests.
788	ForceSendFields []string `json:"-"`
789
790	// NullFields is a list of field names (e.g. "AllowedRequestExtensions")
791	// to include in API requests with the JSON null value. By default,
792	// fields with empty values are omitted from API requests. However, any
793	// field with an empty value appearing in NullFields will be sent to the
794	// server as null. It is an error if a field in this list has a
795	// non-empty value. This may be used to include null fields in Patch
796	// requests.
797	NullFields []string `json:"-"`
798}
799
800func (s *ContextRule) MarshalJSON() ([]byte, error) {
801	type NoMethod ContextRule
802	raw := NoMethod(*s)
803	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
804}
805
806// Control: Selects and configures the service controller used by the
807// service. The service controller handles features like abuse, quota,
808// billing, logging, monitoring, etc.
809type Control struct {
810	// Environment: The service control environment to use. If empty, no
811	// control plane feature (like quota and billing) will be enabled.
812	Environment string `json:"environment,omitempty"`
813
814	// ForceSendFields is a list of field names (e.g. "Environment") to
815	// unconditionally include in API requests. By default, fields with
816	// empty or default values are omitted from API requests. However, any
817	// non-pointer, non-interface field appearing in ForceSendFields will be
818	// sent to the server regardless of whether the field is empty or not.
819	// This may be used to include empty fields in Patch requests.
820	ForceSendFields []string `json:"-"`
821
822	// NullFields is a list of field names (e.g. "Environment") to include
823	// in API requests with the JSON null value. By default, fields with
824	// empty values are omitted from API requests. However, any field with
825	// an empty value appearing in NullFields will be sent to the server as
826	// null. It is an error if a field in this list has a non-empty value.
827	// This may be used to include null fields in Patch requests.
828	NullFields []string `json:"-"`
829}
830
831func (s *Control) MarshalJSON() ([]byte, error) {
832	type NoMethod Control
833	raw := NoMethod(*s)
834	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
835}
836
837// CustomError: Customize service error responses. For example, list any
838// service specific protobuf types that can appear in error detail lists
839// of error responses. Example: custom_error: types: -
840// google.foo.v1.CustomError - google.foo.v1.AnotherError
841type CustomError struct {
842	// Rules: The list of custom error rules that apply to individual API
843	// messages. **NOTE:** All service configuration rules follow "last one
844	// wins" order.
845	Rules []*CustomErrorRule `json:"rules,omitempty"`
846
847	// Types: The list of custom error detail types, e.g.
848	// 'google.foo.v1.CustomError'.
849	Types []string `json:"types,omitempty"`
850
851	// ForceSendFields is a list of field names (e.g. "Rules") to
852	// unconditionally include in API requests. By default, fields with
853	// empty or default values are omitted from API requests. However, any
854	// non-pointer, non-interface field appearing in ForceSendFields will be
855	// sent to the server regardless of whether the field is empty or not.
856	// This may be used to include empty fields in Patch requests.
857	ForceSendFields []string `json:"-"`
858
859	// NullFields is a list of field names (e.g. "Rules") to include in API
860	// requests with the JSON null value. By default, fields with empty
861	// values are omitted from API requests. However, any field with an
862	// empty value appearing in NullFields will be sent to the server as
863	// null. It is an error if a field in this list has a non-empty value.
864	// This may be used to include null fields in Patch requests.
865	NullFields []string `json:"-"`
866}
867
868func (s *CustomError) MarshalJSON() ([]byte, error) {
869	type NoMethod CustomError
870	raw := NoMethod(*s)
871	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
872}
873
874// CustomErrorRule: A custom error rule.
875type CustomErrorRule struct {
876	// IsErrorType: Mark this message as possible payload in error response.
877	// Otherwise, objects of this type will be filtered when they appear in
878	// error payload.
879	IsErrorType bool `json:"isErrorType,omitempty"`
880
881	// Selector: Selects messages to which this rule applies. Refer to
882	// selector for syntax details.
883	Selector string `json:"selector,omitempty"`
884
885	// ForceSendFields is a list of field names (e.g. "IsErrorType") to
886	// unconditionally include in API requests. By default, fields with
887	// empty or default values are omitted from API requests. However, any
888	// non-pointer, non-interface field appearing in ForceSendFields will be
889	// sent to the server regardless of whether the field is empty or not.
890	// This may be used to include empty fields in Patch requests.
891	ForceSendFields []string `json:"-"`
892
893	// NullFields is a list of field names (e.g. "IsErrorType") to include
894	// in API requests with the JSON null value. By default, fields with
895	// empty values are omitted from API requests. However, any field with
896	// an empty value appearing in NullFields will be sent to the server as
897	// null. It is an error if a field in this list has a non-empty value.
898	// This may be used to include null fields in Patch requests.
899	NullFields []string `json:"-"`
900}
901
902func (s *CustomErrorRule) MarshalJSON() ([]byte, error) {
903	type NoMethod CustomErrorRule
904	raw := NoMethod(*s)
905	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
906}
907
908// CustomHttpPattern: A custom pattern is used for defining custom HTTP
909// verb.
910type CustomHttpPattern struct {
911	// Kind: The name of this custom HTTP verb.
912	Kind string `json:"kind,omitempty"`
913
914	// Path: The path matched by this custom verb.
915	Path string `json:"path,omitempty"`
916
917	// ForceSendFields is a list of field names (e.g. "Kind") to
918	// unconditionally include in API requests. By default, fields with
919	// empty or default values are omitted from API requests. However, any
920	// non-pointer, non-interface field appearing in ForceSendFields will be
921	// sent to the server regardless of whether the field is empty or not.
922	// This may be used to include empty fields in Patch requests.
923	ForceSendFields []string `json:"-"`
924
925	// NullFields is a list of field names (e.g. "Kind") to include in API
926	// requests with the JSON null value. By default, fields with empty
927	// values are omitted from API requests. However, any field with an
928	// empty value appearing in NullFields will be sent to the server as
929	// null. It is an error if a field in this list has a non-empty value.
930	// This may be used to include null fields in Patch requests.
931	NullFields []string `json:"-"`
932}
933
934func (s *CustomHttpPattern) MarshalJSON() ([]byte, error) {
935	type NoMethod CustomHttpPattern
936	raw := NoMethod(*s)
937	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
938}
939
940// Documentation: `Documentation` provides the information for
941// describing a service. Example: documentation: summary: > The Google
942// Calendar API gives access to most calendar features. pages: - name:
943// Overview content: (== include google/foo/overview.md ==) - name:
944// Tutorial content: (== include google/foo/tutorial.md ==) subpages; -
945// name: Java content: (== include google/foo/tutorial_java.md ==)
946// rules: - selector: google.calendar.Calendar.Get description: > ... -
947// selector: google.calendar.Calendar.Put description: > ...
948// Documentation is provided in markdown syntax. In addition to standard
949// markdown features, definition lists, tables and fenced code blocks
950// are supported. Section headers can be provided and are interpreted
951// relative to the section nesting of the context where a documentation
952// fragment is embedded. Documentation from the IDL is merged with
953// documentation defined via the config at normalization time, where
954// documentation provided by config rules overrides IDL provided. A
955// number of constructs specific to the API platform are supported in
956// documentation text. In order to reference a proto element, the
957// following notation can be used: [fully.qualified.proto.name][] To
958// override the display text used for the link, this can be used:
959// [display text][fully.qualified.proto.name] Text can be excluded from
960// doc using the following notation: (-- internal comment --) A few
961// directives are available in documentation. Note that directives must
962// appear on a single line to be properly identified. The `include`
963// directive includes a markdown file from an external source: (==
964// include path/to/file ==) The `resource_for` directive marks a message
965// to be the resource of a collection in REST view. If it is not
966// specified, tools attempt to infer the resource from the operations in
967// a collection: (== resource_for v1.shelves.books ==) The directive
968// `suppress_warning` does not directly affect documentation and is
969// documented together with service config validation.
970type Documentation struct {
971	// DocumentationRootUrl: The URL to the root of documentation.
972	DocumentationRootUrl string `json:"documentationRootUrl,omitempty"`
973
974	// Overview: Declares a single overview page. For example:
975	// documentation: summary: ... overview: (== include overview.md ==)
976	// This is a shortcut for the following declaration (using pages style):
977	// documentation: summary: ... pages: - name: Overview content: (==
978	// include overview.md ==) Note: you cannot specify both `overview`
979	// field and `pages` field.
980	Overview string `json:"overview,omitempty"`
981
982	// Pages: The top level pages for the documentation set.
983	Pages []*Page `json:"pages,omitempty"`
984
985	// Rules: A list of documentation rules that apply to individual API
986	// elements. **NOTE:** All service configuration rules follow "last one
987	// wins" order.
988	Rules []*DocumentationRule `json:"rules,omitempty"`
989
990	// ServiceRootUrl: Specifies the service root url if the default one
991	// (the service name from the yaml file) is not suitable. This can be
992	// seen in any fully specified service urls as well as sections that
993	// show a base that other urls are relative to.
994	ServiceRootUrl string `json:"serviceRootUrl,omitempty"`
995
996	// Summary: A short description of what the service does. The summary
997	// must be plain text. It becomes the overview of the service displayed
998	// in Google Cloud Console. NOTE: This field is equivalent to the
999	// standard field `description`.
1000	Summary string `json:"summary,omitempty"`
1001
1002	// ForceSendFields is a list of field names (e.g.
1003	// "DocumentationRootUrl") to unconditionally include in API requests.
1004	// By default, fields with empty or default values are omitted from API
1005	// requests. However, any non-pointer, non-interface field appearing in
1006	// ForceSendFields will be sent to the server regardless of whether the
1007	// field is empty or not. This may be used to include empty fields in
1008	// Patch requests.
1009	ForceSendFields []string `json:"-"`
1010
1011	// NullFields is a list of field names (e.g. "DocumentationRootUrl") to
1012	// include in API requests with the JSON null value. By default, fields
1013	// with empty values are omitted from API requests. However, any field
1014	// with an empty value appearing in NullFields will be sent to the
1015	// server as null. It is an error if a field in this list has a
1016	// non-empty value. This may be used to include null fields in Patch
1017	// requests.
1018	NullFields []string `json:"-"`
1019}
1020
1021func (s *Documentation) MarshalJSON() ([]byte, error) {
1022	type NoMethod Documentation
1023	raw := NoMethod(*s)
1024	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1025}
1026
1027// DocumentationRule: A documentation rule provides information about
1028// individual API elements.
1029type DocumentationRule struct {
1030	// DeprecationDescription: Deprecation description of the selected
1031	// element(s). It can be provided if an element is marked as
1032	// `deprecated`.
1033	DeprecationDescription string `json:"deprecationDescription,omitempty"`
1034
1035	// Description: Description of the selected proto element (e.g. a
1036	// message, a method, a 'service' definition, or a field). Defaults to
1037	// leading & trailing comments taken from the proto source definition of
1038	// the proto element.
1039	Description string `json:"description,omitempty"`
1040
1041	// Selector: The selector is a comma-separated list of patterns for any
1042	// element such as a method, a field, an enum value. Each pattern is a
1043	// qualified name of the element which may end in "*", indicating a
1044	// wildcard. Wildcards are only allowed at the end and for a whole
1045	// component of the qualified name, i.e. "foo.*" is ok, but not "foo.b*"
1046	// or "foo.*.bar". A wildcard will match one or more components. To
1047	// specify a default for all applicable elements, the whole pattern "*"
1048	// is used.
1049	Selector string `json:"selector,omitempty"`
1050
1051	// ForceSendFields is a list of field names (e.g.
1052	// "DeprecationDescription") to unconditionally include in API requests.
1053	// By default, fields with empty or default values are omitted from API
1054	// requests. However, any non-pointer, non-interface field appearing in
1055	// ForceSendFields will be sent to the server regardless of whether the
1056	// field is empty or not. This may be used to include empty fields in
1057	// Patch requests.
1058	ForceSendFields []string `json:"-"`
1059
1060	// NullFields is a list of field names (e.g. "DeprecationDescription")
1061	// to include in API requests with the JSON null value. By default,
1062	// fields with empty values are omitted from API requests. However, any
1063	// field with an empty value appearing in NullFields will be sent to the
1064	// server as null. It is an error if a field in this list has a
1065	// non-empty value. This may be used to include null fields in Patch
1066	// requests.
1067	NullFields []string `json:"-"`
1068}
1069
1070func (s *DocumentationRule) MarshalJSON() ([]byte, error) {
1071	type NoMethod DocumentationRule
1072	raw := NoMethod(*s)
1073	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1074}
1075
1076// Empty: A generic empty message that you can re-use to avoid defining
1077// duplicated empty messages in your APIs. A typical example is to use
1078// it as the request or the response type of an API method. For
1079// instance: service Foo { rpc Bar(google.protobuf.Empty) returns
1080// (google.protobuf.Empty); } The JSON representation for `Empty` is
1081// empty JSON object `{}`.
1082type Empty struct {
1083}
1084
1085// Endpoint: `Endpoint` describes a network address of a service that
1086// serves a set of APIs. It is commonly known as a service endpoint. A
1087// service may expose any number of service endpoints, and all service
1088// endpoints share the same service definition, such as quota limits and
1089// monitoring metrics. Example: type: google.api.Service name:
1090// library-example.googleapis.com endpoints: # Declares network address
1091// `https://library-example.googleapis.com` # for service
1092// `library-example.googleapis.com`. The `https` scheme # is implicit
1093// for all service endpoints. Other schemes may be # supported in the
1094// future. - name: library-example.googleapis.com allow_cors: false -
1095// name: content-staging-library-example.googleapis.com # Allows HTTP
1096// OPTIONS calls to be passed to the API frontend, for it # to decide
1097// whether the subsequent cross-origin request is allowed # to proceed.
1098// allow_cors: true
1099type Endpoint struct {
1100	// AllowCors: Allowing CORS
1101	// (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
1102	// cross-domain traffic, would allow the backends served from this
1103	// endpoint to receive and respond to HTTP OPTIONS requests. The
1104	// response will be used by the browser to determine whether the
1105	// subsequent cross-origin request is allowed to proceed.
1106	AllowCors bool `json:"allowCors,omitempty"`
1107
1108	// Name: The canonical name of this endpoint.
1109	Name string `json:"name,omitempty"`
1110
1111	// Target: The specification of an Internet routable address of API
1112	// frontend that will handle requests to this API Endpoint
1113	// (https://cloud.google.com/apis/design/glossary). It should be either
1114	// a valid IPv4 address or a fully-qualified domain name. For example,
1115	// "8.8.8.8" or "myservice.appspot.com".
1116	Target string `json:"target,omitempty"`
1117
1118	// ForceSendFields is a list of field names (e.g. "AllowCors") to
1119	// unconditionally include in API requests. By default, fields with
1120	// empty or default values are omitted from API requests. However, any
1121	// non-pointer, non-interface field appearing in ForceSendFields will be
1122	// sent to the server regardless of whether the field is empty or not.
1123	// This may be used to include empty fields in Patch requests.
1124	ForceSendFields []string `json:"-"`
1125
1126	// NullFields is a list of field names (e.g. "AllowCors") to include in
1127	// API requests with the JSON null value. By default, fields with empty
1128	// values are omitted from API requests. However, any field with an
1129	// empty value appearing in NullFields will be sent to the server as
1130	// null. It is an error if a field in this list has a non-empty value.
1131	// This may be used to include null fields in Patch requests.
1132	NullFields []string `json:"-"`
1133}
1134
1135func (s *Endpoint) MarshalJSON() ([]byte, error) {
1136	type NoMethod Endpoint
1137	raw := NoMethod(*s)
1138	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1139}
1140
1141// Enum: Enum type definition.
1142type Enum struct {
1143	// Enumvalue: Enum value definitions.
1144	Enumvalue []*EnumValue `json:"enumvalue,omitempty"`
1145
1146	// Name: Enum type name.
1147	Name string `json:"name,omitempty"`
1148
1149	// Options: Protocol buffer options.
1150	Options []*Option `json:"options,omitempty"`
1151
1152	// SourceContext: The source context.
1153	SourceContext *SourceContext `json:"sourceContext,omitempty"`
1154
1155	// Syntax: The source syntax.
1156	//
1157	// Possible values:
1158	//   "SYNTAX_PROTO2" - Syntax `proto2`.
1159	//   "SYNTAX_PROTO3" - Syntax `proto3`.
1160	Syntax string `json:"syntax,omitempty"`
1161
1162	// ForceSendFields is a list of field names (e.g. "Enumvalue") to
1163	// unconditionally include in API requests. By default, fields with
1164	// empty or default values are omitted from API requests. However, any
1165	// non-pointer, non-interface field appearing in ForceSendFields will be
1166	// sent to the server regardless of whether the field is empty or not.
1167	// This may be used to include empty fields in Patch requests.
1168	ForceSendFields []string `json:"-"`
1169
1170	// NullFields is a list of field names (e.g. "Enumvalue") to include in
1171	// API requests with the JSON null value. By default, fields with empty
1172	// values are omitted from API requests. However, any field with an
1173	// empty value appearing in NullFields will be sent to the server as
1174	// null. It is an error if a field in this list has a non-empty value.
1175	// This may be used to include null fields in Patch requests.
1176	NullFields []string `json:"-"`
1177}
1178
1179func (s *Enum) MarshalJSON() ([]byte, error) {
1180	type NoMethod Enum
1181	raw := NoMethod(*s)
1182	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1183}
1184
1185// EnumValue: Enum value definition.
1186type EnumValue struct {
1187	// Name: Enum value name.
1188	Name string `json:"name,omitempty"`
1189
1190	// Number: Enum value number.
1191	Number int64 `json:"number,omitempty"`
1192
1193	// Options: Protocol buffer options.
1194	Options []*Option `json:"options,omitempty"`
1195
1196	// ForceSendFields is a list of field names (e.g. "Name") to
1197	// unconditionally include in API requests. By default, fields with
1198	// empty or default values are omitted from API requests. However, any
1199	// non-pointer, non-interface field appearing in ForceSendFields will be
1200	// sent to the server regardless of whether the field is empty or not.
1201	// This may be used to include empty fields in Patch requests.
1202	ForceSendFields []string `json:"-"`
1203
1204	// NullFields is a list of field names (e.g. "Name") to include in API
1205	// requests with the JSON null value. By default, fields with empty
1206	// values are omitted from API requests. However, any field with an
1207	// empty value appearing in NullFields will be sent to the server as
1208	// null. It is an error if a field in this list has a non-empty value.
1209	// This may be used to include null fields in Patch requests.
1210	NullFields []string `json:"-"`
1211}
1212
1213func (s *EnumValue) MarshalJSON() ([]byte, error) {
1214	type NoMethod EnumValue
1215	raw := NoMethod(*s)
1216	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1217}
1218
1219// Field: A single field of a message type.
1220type Field struct {
1221	// Cardinality: The field cardinality.
1222	//
1223	// Possible values:
1224	//   "CARDINALITY_UNKNOWN" - For fields with unknown cardinality.
1225	//   "CARDINALITY_OPTIONAL" - For optional fields.
1226	//   "CARDINALITY_REQUIRED" - For required fields. Proto2 syntax only.
1227	//   "CARDINALITY_REPEATED" - For repeated fields.
1228	Cardinality string `json:"cardinality,omitempty"`
1229
1230	// DefaultValue: The string value of the default value of this field.
1231	// Proto2 syntax only.
1232	DefaultValue string `json:"defaultValue,omitempty"`
1233
1234	// JsonName: The field JSON name.
1235	JsonName string `json:"jsonName,omitempty"`
1236
1237	// Kind: The field type.
1238	//
1239	// Possible values:
1240	//   "TYPE_UNKNOWN" - Field type unknown.
1241	//   "TYPE_DOUBLE" - Field type double.
1242	//   "TYPE_FLOAT" - Field type float.
1243	//   "TYPE_INT64" - Field type int64.
1244	//   "TYPE_UINT64" - Field type uint64.
1245	//   "TYPE_INT32" - Field type int32.
1246	//   "TYPE_FIXED64" - Field type fixed64.
1247	//   "TYPE_FIXED32" - Field type fixed32.
1248	//   "TYPE_BOOL" - Field type bool.
1249	//   "TYPE_STRING" - Field type string.
1250	//   "TYPE_GROUP" - Field type group. Proto2 syntax only, and
1251	// deprecated.
1252	//   "TYPE_MESSAGE" - Field type message.
1253	//   "TYPE_BYTES" - Field type bytes.
1254	//   "TYPE_UINT32" - Field type uint32.
1255	//   "TYPE_ENUM" - Field type enum.
1256	//   "TYPE_SFIXED32" - Field type sfixed32.
1257	//   "TYPE_SFIXED64" - Field type sfixed64.
1258	//   "TYPE_SINT32" - Field type sint32.
1259	//   "TYPE_SINT64" - Field type sint64.
1260	Kind string `json:"kind,omitempty"`
1261
1262	// Name: The field name.
1263	Name string `json:"name,omitempty"`
1264
1265	// Number: The field number.
1266	Number int64 `json:"number,omitempty"`
1267
1268	// OneofIndex: The index of the field type in `Type.oneofs`, for message
1269	// or enumeration types. The first type has index 1; zero means the type
1270	// is not in the list.
1271	OneofIndex int64 `json:"oneofIndex,omitempty"`
1272
1273	// Options: The protocol buffer options.
1274	Options []*Option `json:"options,omitempty"`
1275
1276	// Packed: Whether to use alternative packed wire representation.
1277	Packed bool `json:"packed,omitempty"`
1278
1279	// TypeUrl: The field type URL, without the scheme, for message or
1280	// enumeration types. Example:
1281	// "type.googleapis.com/google.protobuf.Timestamp".
1282	TypeUrl string `json:"typeUrl,omitempty"`
1283
1284	// ForceSendFields is a list of field names (e.g. "Cardinality") to
1285	// unconditionally include in API requests. By default, fields with
1286	// empty or default values are omitted from API requests. However, any
1287	// non-pointer, non-interface field appearing in ForceSendFields will be
1288	// sent to the server regardless of whether the field is empty or not.
1289	// This may be used to include empty fields in Patch requests.
1290	ForceSendFields []string `json:"-"`
1291
1292	// NullFields is a list of field names (e.g. "Cardinality") to include
1293	// in API requests with the JSON null value. By default, fields with
1294	// empty values are omitted from API requests. However, any field with
1295	// an empty value appearing in NullFields will be sent to the server as
1296	// null. It is an error if a field in this list has a non-empty value.
1297	// This may be used to include null fields in Patch requests.
1298	NullFields []string `json:"-"`
1299}
1300
1301func (s *Field) MarshalJSON() ([]byte, error) {
1302	type NoMethod Field
1303	raw := NoMethod(*s)
1304	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1305}
1306
1307// Http: Defines the HTTP configuration for an API service. It contains
1308// a list of HttpRule, each specifying the mapping of an RPC method to
1309// one or more HTTP REST API methods.
1310type Http struct {
1311	// FullyDecodeReservedExpansion: When set to true, URL path parameters
1312	// will be fully URI-decoded except in cases of single segment matches
1313	// in reserved expansion, where "%2F" will be left encoded. The default
1314	// behavior is to not decode RFC 6570 reserved characters in multi
1315	// segment matches.
1316	FullyDecodeReservedExpansion bool `json:"fullyDecodeReservedExpansion,omitempty"`
1317
1318	// Rules: A list of HTTP configuration rules that apply to individual
1319	// API methods. **NOTE:** All service configuration rules follow "last
1320	// one wins" order.
1321	Rules []*HttpRule `json:"rules,omitempty"`
1322
1323	// ForceSendFields is a list of field names (e.g.
1324	// "FullyDecodeReservedExpansion") to unconditionally include in API
1325	// requests. By default, fields with empty or default values are omitted
1326	// from API requests. However, any non-pointer, non-interface field
1327	// appearing in ForceSendFields will be sent to the server regardless of
1328	// whether the field is empty or not. This may be used to include empty
1329	// fields in Patch requests.
1330	ForceSendFields []string `json:"-"`
1331
1332	// NullFields is a list of field names (e.g.
1333	// "FullyDecodeReservedExpansion") to include in API requests with the
1334	// JSON null value. By default, fields with empty values are omitted
1335	// from API requests. However, any field with an empty value appearing
1336	// in NullFields will be sent to the server as null. It is an error if a
1337	// field in this list has a non-empty value. This may be used to include
1338	// null fields in Patch requests.
1339	NullFields []string `json:"-"`
1340}
1341
1342func (s *Http) MarshalJSON() ([]byte, error) {
1343	type NoMethod Http
1344	raw := NoMethod(*s)
1345	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1346}
1347
1348// HttpRule: # gRPC Transcoding gRPC Transcoding is a feature for
1349// mapping between a gRPC method and one or more HTTP REST endpoints. It
1350// allows developers to build a single API service that supports both
1351// gRPC APIs and REST APIs. Many systems, including Google APIs
1352// (https://github.com/googleapis/googleapis), Cloud Endpoints
1353// (https://cloud.google.com/endpoints), gRPC Gateway
1354// (https://github.com/grpc-ecosystem/grpc-gateway), and Envoy
1355// (https://github.com/envoyproxy/envoy) proxy support this feature and
1356// use it for large scale production services. `HttpRule` defines the
1357// schema of the gRPC/REST mapping. The mapping specifies how different
1358// portions of the gRPC request message are mapped to the URL path, URL
1359// query parameters, and HTTP request body. It also controls how the
1360// gRPC response message is mapped to the HTTP response body. `HttpRule`
1361// is typically specified as an `google.api.http` annotation on the gRPC
1362// method. Each mapping specifies a URL path template and an HTTP
1363// method. The path template may refer to one or more fields in the gRPC
1364// request message, as long as each field is a non-repeated field with a
1365// primitive (non-message) type. The path template controls how fields
1366// of the request message are mapped to the URL path. Example: service
1367// Messaging { rpc GetMessage(GetMessageRequest) returns (Message) {
1368// option (google.api.http) = { get: "/v1/{name=messages/*}" }; } }
1369// message GetMessageRequest { string name = 1; // Mapped to URL path. }
1370// message Message { string text = 1; // The resource content. } This
1371// enables an HTTP REST to gRPC mapping as below: HTTP | gRPC
1372// -----|----- `GET /v1/messages/123456` | `GetMessage(name:
1373// "messages/123456")` Any fields in the request message which are not
1374// bound by the path template automatically become HTTP query parameters
1375// if there is no HTTP request body. For example: service Messaging {
1376// rpc GetMessage(GetMessageRequest) returns (Message) { option
1377// (google.api.http) = { get:"/v1/messages/{message_id}" }; } } message
1378// GetMessageRequest { message SubMessage { string subfield = 1; }
1379// string message_id = 1; // Mapped to URL path. int64 revision = 2; //
1380// Mapped to URL query parameter `revision`. SubMessage sub = 3; //
1381// Mapped to URL query parameter `sub.subfield`. } This enables a HTTP
1382// JSON to RPC mapping as below: HTTP | gRPC -----|----- `GET
1383// /v1/messages/123456?revision=2&sub.subfield=foo` |
1384// `GetMessage(message_id: "123456" revision: 2 sub:
1385// SubMessage(subfield: "foo"))` Note that fields which are mapped to
1386// URL query parameters must have a primitive type or a repeated
1387// primitive type or a non-repeated message type. In the case of a
1388// repeated type, the parameter can be repeated in the URL as
1389// `...?param=A&param=B`. In the case of a message type, each field of
1390// the message is mapped to a separate parameter, such as
1391// `...?foo.a=A&foo.b=B&foo.c=C`. For HTTP methods that allow a request
1392// body, the `body` field specifies the mapping. Consider a REST update
1393// method on the message resource collection: service Messaging { rpc
1394// UpdateMessage(UpdateMessageRequest) returns (Message) { option
1395// (google.api.http) = { patch: "/v1/messages/{message_id}" body:
1396// "message" }; } } message UpdateMessageRequest { string message_id =
1397// 1; // mapped to the URL Message message = 2; // mapped to the body }
1398// The following HTTP JSON to RPC mapping is enabled, where the
1399// representation of the JSON in the request body is determined by
1400// protos JSON encoding: HTTP | gRPC -----|----- `PATCH
1401// /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
1402// "123456" message { text: "Hi!" })` The special name `*` can be used
1403// in the body mapping to define that every field not bound by the path
1404// template should be mapped to the request body. This enables the
1405// following alternative definition of the update method: service
1406// Messaging { rpc UpdateMessage(Message) returns (Message) { option
1407// (google.api.http) = { patch: "/v1/messages/{message_id}" body: "*" };
1408// } } message Message { string message_id = 1; string text = 2; } The
1409// following HTTP JSON to RPC mapping is enabled: HTTP | gRPC
1410// -----|----- `PATCH /v1/messages/123456 { "text": "Hi!" }` |
1411// `UpdateMessage(message_id: "123456" text: "Hi!")` Note that when
1412// using `*` in the body mapping, it is not possible to have HTTP
1413// parameters, as all fields not bound by the path end in the body. This
1414// makes this option more rarely used in practice when defining REST
1415// APIs. The common usage of `*` is in custom methods which don't use
1416// the URL at all for transferring data. It is possible to define
1417// multiple HTTP methods for one RPC by using the `additional_bindings`
1418// option. Example: service Messaging { rpc
1419// GetMessage(GetMessageRequest) returns (Message) { option
1420// (google.api.http) = { get: "/v1/messages/{message_id}"
1421// additional_bindings { get:
1422// "/v1/users/{user_id}/messages/{message_id}" } }; } } message
1423// GetMessageRequest { string message_id = 1; string user_id = 2; } This
1424// enables the following two alternative HTTP JSON to RPC mappings: HTTP
1425// | gRPC -----|----- `GET /v1/messages/123456` |
1426// `GetMessage(message_id: "123456")` `GET /v1/users/me/messages/123456`
1427// | `GetMessage(user_id: "me" message_id: "123456")` ## Rules for HTTP
1428// mapping 1. Leaf request fields (recursive expansion nested messages
1429// in the request message) are classified into three categories: -
1430// Fields referred by the path template. They are passed via the URL
1431// path. - Fields referred by the HttpRule.body. They are passed via the
1432// HTTP request body. - All other fields are passed via the URL query
1433// parameters, and the parameter name is the field path in the request
1434// message. A repeated field can be represented as multiple query
1435// parameters under the same name. 2. If HttpRule.body is "*", there is
1436// no URL query parameter, all fields are passed via URL path and HTTP
1437// request body. 3. If HttpRule.body is omitted, there is no HTTP
1438// request body, all fields are passed via URL path and URL query
1439// parameters. ### Path template syntax Template = "/" Segments [ Verb ]
1440// ; Segments = Segment { "/" Segment } ; Segment = "*" | "**" | LITERAL
1441// | Variable ; Variable = "{" FieldPath [ "=" Segments ] "}" ;
1442// FieldPath = IDENT { "." IDENT } ; Verb = ":" LITERAL ; The syntax `*`
1443// matches a single URL path segment. The syntax `**` matches zero or
1444// more URL path segments, which must be the last part of the URL path
1445// except the `Verb`. The syntax `Variable` matches part of the URL path
1446// as specified by its template. A variable template must not contain
1447// other variables. If a variable matches a single path segment, its
1448// template may be omitted, e.g. `{var}` is equivalent to `{var=*}`. The
1449// syntax `LITERAL` matches literal text in the URL path. If the
1450// `LITERAL` contains any reserved character, such characters should be
1451// percent-encoded before the matching. If a variable contains exactly
1452// one path segment, such as "{var}" or "{var=*}", when such a
1453// variable is expanded into a URL path on the client side, all
1454// characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The server
1455// side does the reverse decoding. Such variables show up in the
1456// Discovery Document
1457// (https://developers.google.com/discovery/v1/reference/apis) as
1458// `{var}`. If a variable contains multiple path segments, such as
1459// "{var=foo/*}" or "{var=**}", when such a variable is expanded
1460// into a URL path on the client side, all characters except
1461// `[-_.~/0-9a-zA-Z]` are percent-encoded. The server side does the
1462// reverse decoding, except "%2F" and "%2f" are left unchanged. Such
1463// variables show up in the Discovery Document
1464// (https://developers.google.com/discovery/v1/reference/apis) as
1465// `{+var}`. ## Using gRPC API Service Configuration gRPC API Service
1466// Configuration (service config) is a configuration language for
1467// configuring a gRPC service to become a user-facing product. The
1468// service config is simply the YAML representation of the
1469// `google.api.Service` proto message. As an alternative to annotating
1470// your proto file, you can configure gRPC transcoding in your service
1471// config YAML files. You do this by specifying a `HttpRule` that maps
1472// the gRPC method to a REST endpoint, achieving the same effect as the
1473// proto annotation. This can be particularly useful if you have a proto
1474// that is reused in multiple services. Note that any transcoding
1475// specified in the service config will override any matching
1476// transcoding configuration in the proto. Example: http: rules: #
1477// Selects a gRPC method and applies HttpRule to it. - selector:
1478// example.v1.Messaging.GetMessage get:
1479// /v1/messages/{message_id}/{sub.subfield} ## Special notes When gRPC
1480// Transcoding is used to map a gRPC to JSON REST endpoints, the proto
1481// to JSON conversion must follow the proto3 specification
1482// (https://developers.google.com/protocol-buffers/docs/proto3#json).
1483// While the single segment variable follows the semantics of RFC 6570
1484// (https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
1485// Expansion, the multi segment variable **does not** follow RFC 6570
1486// Section 3.2.3 Reserved Expansion. The reason is that the Reserved
1487// Expansion does not expand special characters like `?` and `#`, which
1488// would lead to invalid URLs. As the result, gRPC Transcoding uses a
1489// custom encoding for multi segment variables. The path variables
1490// **must not** refer to any repeated or mapped field, because client
1491// libraries are not capable of handling such variable expansion. The
1492// path variables **must not** capture the leading "/" character. The
1493// reason is that the most common use case "{var}" does not capture the
1494// leading "/" character. For consistency, all path variables must share
1495// the same behavior. Repeated message fields must not be mapped to URL
1496// query parameters, because no client library can support such
1497// complicated mapping. If an API needs to use a JSON array for request
1498// or response body, it can map the request or response body to a
1499// repeated field. However, some gRPC Transcoding implementations may
1500// not support this feature.
1501type HttpRule struct {
1502	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
1503	// bindings must not contain an `additional_bindings` field themselves
1504	// (that is, the nesting may only be one level deep).
1505	AdditionalBindings []*HttpRule `json:"additionalBindings,omitempty"`
1506
1507	// Body: The name of the request field whose value is mapped to the HTTP
1508	// request body, or `*` for mapping all request fields not captured by
1509	// the path pattern to the HTTP body, or omitted for not having any HTTP
1510	// request body. NOTE: the referred field must be present at the
1511	// top-level of the request message type.
1512	Body string `json:"body,omitempty"`
1513
1514	// Custom: The custom pattern is used for specifying an HTTP method that
1515	// is not included in the `pattern` field, such as HEAD, or "*" to leave
1516	// the HTTP method unspecified for this rule. The wild-card rule is
1517	// useful for services that provide content to Web (HTML) clients.
1518	Custom *CustomHttpPattern `json:"custom,omitempty"`
1519
1520	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
1521	Delete string `json:"delete,omitempty"`
1522
1523	// Get: Maps to HTTP GET. Used for listing and getting information about
1524	// resources.
1525	Get string `json:"get,omitempty"`
1526
1527	// Patch: Maps to HTTP PATCH. Used for updating a resource.
1528	Patch string `json:"patch,omitempty"`
1529
1530	// Post: Maps to HTTP POST. Used for creating a resource or performing
1531	// an action.
1532	Post string `json:"post,omitempty"`
1533
1534	// Put: Maps to HTTP PUT. Used for replacing a resource.
1535	Put string `json:"put,omitempty"`
1536
1537	// ResponseBody: Optional. The name of the response field whose value is
1538	// mapped to the HTTP response body. When omitted, the entire response
1539	// message will be used as the HTTP response body. NOTE: The referred
1540	// field must be present at the top-level of the response message type.
1541	ResponseBody string `json:"responseBody,omitempty"`
1542
1543	// Selector: Selects a method to which this rule applies. Refer to
1544	// selector for syntax details.
1545	Selector string `json:"selector,omitempty"`
1546
1547	// ForceSendFields is a list of field names (e.g. "AdditionalBindings")
1548	// to unconditionally include in API requests. By default, fields with
1549	// empty or default values are omitted from API requests. However, any
1550	// non-pointer, non-interface field appearing in ForceSendFields will be
1551	// sent to the server regardless of whether the field is empty or not.
1552	// This may be used to include empty fields in Patch requests.
1553	ForceSendFields []string `json:"-"`
1554
1555	// NullFields is a list of field names (e.g. "AdditionalBindings") to
1556	// include in API requests with the JSON null value. By default, fields
1557	// with empty values are omitted from API requests. However, any field
1558	// with an empty value appearing in NullFields will be sent to the
1559	// server as null. It is an error if a field in this list has a
1560	// non-empty value. This may be used to include null fields in Patch
1561	// requests.
1562	NullFields []string `json:"-"`
1563}
1564
1565func (s *HttpRule) MarshalJSON() ([]byte, error) {
1566	type NoMethod HttpRule
1567	raw := NoMethod(*s)
1568	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1569}
1570
1571// JwtLocation: Specifies a location to extract JWT from an API request.
1572type JwtLocation struct {
1573	// Header: Specifies HTTP header name to extract JWT token.
1574	Header string `json:"header,omitempty"`
1575
1576	// Query: Specifies URL query parameter name to extract JWT token.
1577	Query string `json:"query,omitempty"`
1578
1579	// ValuePrefix: The value prefix. The value format is
1580	// "value_prefix{token}" Only applies to "in" header type. Must be empty
1581	// for "in" query type. If not empty, the header value has to match
1582	// (case sensitive) this prefix. If not matched, JWT will not be
1583	// extracted. If matched, JWT will be extracted after the prefix is
1584	// removed. For example, for "Authorization: Bearer {JWT}",
1585	// value_prefix="Bearer " with a space at the end.
1586	ValuePrefix string `json:"valuePrefix,omitempty"`
1587
1588	// ForceSendFields is a list of field names (e.g. "Header") to
1589	// unconditionally include in API requests. By default, fields with
1590	// empty or default values are omitted from API requests. However, any
1591	// non-pointer, non-interface field appearing in ForceSendFields will be
1592	// sent to the server regardless of whether the field is empty or not.
1593	// This may be used to include empty fields in Patch requests.
1594	ForceSendFields []string `json:"-"`
1595
1596	// NullFields is a list of field names (e.g. "Header") to include in API
1597	// requests with the JSON null value. By default, fields with empty
1598	// values are omitted from API requests. However, any field with an
1599	// empty value appearing in NullFields will be sent to the server as
1600	// null. It is an error if a field in this list has a non-empty value.
1601	// This may be used to include null fields in Patch requests.
1602	NullFields []string `json:"-"`
1603}
1604
1605func (s *JwtLocation) MarshalJSON() ([]byte, error) {
1606	type NoMethod JwtLocation
1607	raw := NoMethod(*s)
1608	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1609}
1610
1611// LabelDescriptor: A description of a label.
1612type LabelDescriptor struct {
1613	// Description: A human-readable description for the label.
1614	Description string `json:"description,omitempty"`
1615
1616	// Key: The label key.
1617	Key string `json:"key,omitempty"`
1618
1619	// ValueType: The type of data that can be assigned to the label.
1620	//
1621	// Possible values:
1622	//   "STRING" - A variable-length string. This is the default.
1623	//   "BOOL" - Boolean; true or false.
1624	//   "INT64" - A 64-bit signed integer.
1625	ValueType string `json:"valueType,omitempty"`
1626
1627	// ForceSendFields is a list of field names (e.g. "Description") to
1628	// unconditionally include in API requests. By default, fields with
1629	// empty or default values are omitted from API requests. However, any
1630	// non-pointer, non-interface field appearing in ForceSendFields will be
1631	// sent to the server regardless of whether the field is empty or not.
1632	// This may be used to include empty fields in Patch requests.
1633	ForceSendFields []string `json:"-"`
1634
1635	// NullFields is a list of field names (e.g. "Description") to include
1636	// in API requests with the JSON null value. By default, fields with
1637	// empty values are omitted from API requests. However, any field with
1638	// an empty value appearing in NullFields will be sent to the server as
1639	// null. It is an error if a field in this list has a non-empty value.
1640	// This may be used to include null fields in Patch requests.
1641	NullFields []string `json:"-"`
1642}
1643
1644func (s *LabelDescriptor) MarshalJSON() ([]byte, error) {
1645	type NoMethod LabelDescriptor
1646	raw := NoMethod(*s)
1647	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1648}
1649
1650// LogDescriptor: A description of a log type. Example in YAML format: -
1651// name: library.googleapis.com/activity_history description: The
1652// history of borrowing and returning library items. display_name:
1653// Activity labels: - key: /customer_id description: Identifier of a
1654// library customer
1655type LogDescriptor struct {
1656	// Description: A human-readable description of this log. This
1657	// information appears in the documentation and can contain details.
1658	Description string `json:"description,omitempty"`
1659
1660	// DisplayName: The human-readable name for this log. This information
1661	// appears on the user interface and should be concise.
1662	DisplayName string `json:"displayName,omitempty"`
1663
1664	// Labels: The set of labels that are available to describe a specific
1665	// log entry. Runtime requests that contain labels not specified here
1666	// are considered invalid.
1667	Labels []*LabelDescriptor `json:"labels,omitempty"`
1668
1669	// Name: The name of the log. It must be less than 512 characters long
1670	// and can include the following characters: upper- and lower-case
1671	// alphanumeric characters [A-Za-z0-9], and punctuation characters
1672	// including slash, underscore, hyphen, period [/_-.].
1673	Name string `json:"name,omitempty"`
1674
1675	// ForceSendFields is a list of field names (e.g. "Description") to
1676	// unconditionally include in API requests. By default, fields with
1677	// empty or default values are omitted from API requests. However, any
1678	// non-pointer, non-interface field appearing in ForceSendFields will be
1679	// sent to the server regardless of whether the field is empty or not.
1680	// This may be used to include empty fields in Patch requests.
1681	ForceSendFields []string `json:"-"`
1682
1683	// NullFields is a list of field names (e.g. "Description") to include
1684	// in API requests with the JSON null value. By default, fields with
1685	// empty values are omitted from API requests. However, any field with
1686	// an empty value appearing in NullFields will be sent to the server as
1687	// null. It is an error if a field in this list has a non-empty value.
1688	// This may be used to include null fields in Patch requests.
1689	NullFields []string `json:"-"`
1690}
1691
1692func (s *LogDescriptor) MarshalJSON() ([]byte, error) {
1693	type NoMethod LogDescriptor
1694	raw := NoMethod(*s)
1695	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1696}
1697
1698// Logging: Logging configuration of the service. The following example
1699// shows how to configure logs to be sent to the producer and consumer
1700// projects. In the example, the `activity_history` log is sent to both
1701// the producer and consumer projects, whereas the `purchase_history`
1702// log is only sent to the producer project. monitored_resources: -
1703// type: library.googleapis.com/branch labels: - key: /city description:
1704// The city where the library branch is located in. - key: /name
1705// description: The name of the branch. logs: - name: activity_history
1706// labels: - key: /customer_id - name: purchase_history logging:
1707// producer_destinations: - monitored_resource:
1708// library.googleapis.com/branch logs: - activity_history -
1709// purchase_history consumer_destinations: - monitored_resource:
1710// library.googleapis.com/branch logs: - activity_history
1711type Logging struct {
1712	// ConsumerDestinations: Logging configurations for sending logs to the
1713	// consumer project. There can be multiple consumer destinations, each
1714	// one must have a different monitored resource type. A log can be used
1715	// in at most one consumer destination.
1716	ConsumerDestinations []*LoggingDestination `json:"consumerDestinations,omitempty"`
1717
1718	// ProducerDestinations: Logging configurations for sending logs to the
1719	// producer project. There can be multiple producer destinations, each
1720	// one must have a different monitored resource type. A log can be used
1721	// in at most one producer destination.
1722	ProducerDestinations []*LoggingDestination `json:"producerDestinations,omitempty"`
1723
1724	// ForceSendFields is a list of field names (e.g.
1725	// "ConsumerDestinations") to unconditionally include in API requests.
1726	// By default, fields with empty or default values are omitted from API
1727	// requests. However, any non-pointer, non-interface field appearing in
1728	// ForceSendFields will be sent to the server regardless of whether the
1729	// field is empty or not. This may be used to include empty fields in
1730	// Patch requests.
1731	ForceSendFields []string `json:"-"`
1732
1733	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
1734	// include in API requests with the JSON null value. By default, fields
1735	// with empty values are omitted from API requests. However, any field
1736	// with an empty value appearing in NullFields will be sent to the
1737	// server as null. It is an error if a field in this list has a
1738	// non-empty value. This may be used to include null fields in Patch
1739	// requests.
1740	NullFields []string `json:"-"`
1741}
1742
1743func (s *Logging) MarshalJSON() ([]byte, error) {
1744	type NoMethod Logging
1745	raw := NoMethod(*s)
1746	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1747}
1748
1749// LoggingDestination: Configuration of a specific logging destination
1750// (the producer project or the consumer project).
1751type LoggingDestination struct {
1752	// Logs: Names of the logs to be sent to this destination. Each name
1753	// must be defined in the Service.logs section. If the log name is not a
1754	// domain scoped name, it will be automatically prefixed with the
1755	// service name followed by "/".
1756	Logs []string `json:"logs,omitempty"`
1757
1758	// MonitoredResource: The monitored resource type. The type must be
1759	// defined in the Service.monitored_resources section.
1760	MonitoredResource string `json:"monitoredResource,omitempty"`
1761
1762	// ForceSendFields is a list of field names (e.g. "Logs") to
1763	// unconditionally include in API requests. By default, fields with
1764	// empty or default values are omitted from API requests. However, any
1765	// non-pointer, non-interface field appearing in ForceSendFields will be
1766	// sent to the server regardless of whether the field is empty or not.
1767	// This may be used to include empty fields in Patch requests.
1768	ForceSendFields []string `json:"-"`
1769
1770	// NullFields is a list of field names (e.g. "Logs") to include in API
1771	// requests with the JSON null value. By default, fields with empty
1772	// values are omitted from API requests. However, any field with an
1773	// empty value appearing in NullFields will be sent to the server as
1774	// null. It is an error if a field in this list has a non-empty value.
1775	// This may be used to include null fields in Patch requests.
1776	NullFields []string `json:"-"`
1777}
1778
1779func (s *LoggingDestination) MarshalJSON() ([]byte, error) {
1780	type NoMethod LoggingDestination
1781	raw := NoMethod(*s)
1782	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1783}
1784
1785// Method: Method represents a method of an API interface.
1786type Method struct {
1787	// Name: The simple name of this method.
1788	Name string `json:"name,omitempty"`
1789
1790	// Options: Any metadata attached to the method.
1791	Options []*Option `json:"options,omitempty"`
1792
1793	// RequestStreaming: If true, the request is streamed.
1794	RequestStreaming bool `json:"requestStreaming,omitempty"`
1795
1796	// RequestTypeUrl: A URL of the input message type.
1797	RequestTypeUrl string `json:"requestTypeUrl,omitempty"`
1798
1799	// ResponseStreaming: If true, the response is streamed.
1800	ResponseStreaming bool `json:"responseStreaming,omitempty"`
1801
1802	// ResponseTypeUrl: The URL of the output message type.
1803	ResponseTypeUrl string `json:"responseTypeUrl,omitempty"`
1804
1805	// Syntax: The source syntax of this method.
1806	//
1807	// Possible values:
1808	//   "SYNTAX_PROTO2" - Syntax `proto2`.
1809	//   "SYNTAX_PROTO3" - Syntax `proto3`.
1810	Syntax string `json:"syntax,omitempty"`
1811
1812	// ForceSendFields is a list of field names (e.g. "Name") to
1813	// unconditionally include in API requests. By default, fields with
1814	// empty or default values are omitted from API requests. However, any
1815	// non-pointer, non-interface field appearing in ForceSendFields will be
1816	// sent to the server regardless of whether the field is empty or not.
1817	// This may be used to include empty fields in Patch requests.
1818	ForceSendFields []string `json:"-"`
1819
1820	// NullFields is a list of field names (e.g. "Name") to include in API
1821	// requests with the JSON null value. By default, fields with empty
1822	// values are omitted from API requests. However, any field with an
1823	// empty value appearing in NullFields will be sent to the server as
1824	// null. It is an error if a field in this list has a non-empty value.
1825	// This may be used to include null fields in Patch requests.
1826	NullFields []string `json:"-"`
1827}
1828
1829func (s *Method) MarshalJSON() ([]byte, error) {
1830	type NoMethod Method
1831	raw := NoMethod(*s)
1832	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1833}
1834
1835// MetricDescriptor: Defines a metric type and its schema. Once a metric
1836// descriptor is created, deleting or altering it stops data collection
1837// and makes the metric type's existing data unusable.
1838type MetricDescriptor struct {
1839	// Description: A detailed description of the metric, which can be used
1840	// in documentation.
1841	Description string `json:"description,omitempty"`
1842
1843	// DisplayName: A concise name for the metric, which can be displayed in
1844	// user interfaces. Use sentence case without an ending period, for
1845	// example "Request count". This field is optional but it is recommended
1846	// to be set for any metrics associated with user-visible concepts, such
1847	// as Quota.
1848	DisplayName string `json:"displayName,omitempty"`
1849
1850	// Labels: The set of labels that can be used to describe a specific
1851	// instance of this metric type. For example, the
1852	// `appengine.googleapis.com/http/server/response_latencies` metric type
1853	// has a label for the HTTP response code, `response_code`, so you can
1854	// look at latencies for successful responses or just for responses that
1855	// failed.
1856	Labels []*LabelDescriptor `json:"labels,omitempty"`
1857
1858	// LaunchStage: Optional. The launch stage of the metric definition.
1859	//
1860	// Possible values:
1861	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
1862	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not
1863	// use it.
1864	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
1865	// visible internally.
1866	//   "EARLY_ACCESS" - Early Access features are limited to a closed
1867	// group of testers. To use these features, you must sign up in advance
1868	// and sign a Trusted Tester agreement (which includes confidentiality
1869	// provisions). These features may be unstable, changed in
1870	// backward-incompatible ways, and are not guaranteed to be released.
1871	//   "ALPHA" - Alpha is a limited availability test for releases before
1872	// they are cleared for widespread use. By Alpha, all significant design
1873	// issues are resolved and we are in the process of verifying
1874	// functionality. Alpha customers need to apply for access, agree to
1875	// applicable terms, and have their projects allowlisted. Alpha releases
1876	// don’t have to be feature complete, no SLAs are provided, and there
1877	// are no technical support obligations, but they will be far enough
1878	// along that customers can actually use them in test environments or
1879	// for limited-use tests -- just like they would in normal production
1880	// cases.
1881	//   "BETA" - Beta is the point at which we are ready to open a release
1882	// for any customer to use. There are no SLA or technical support
1883	// obligations in a Beta release. Products will be complete from a
1884	// feature perspective, but may have some open outstanding issues. Beta
1885	// releases are suitable for limited production use cases.
1886	//   "GA" - GA features are open to all developers and are considered
1887	// stable and fully qualified for production use.
1888	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
1889	// and removed. For more information, see the “Deprecation Policy”
1890	// section of our [Terms of Service](https://cloud.google.com/terms/)
1891	// and the [Google Cloud Platform Subject to the Deprecation
1892	// Policy](https://cloud.google.com/terms/deprecation) documentation.
1893	LaunchStage string `json:"launchStage,omitempty"`
1894
1895	// Metadata: Optional. Metadata which can be used to guide usage of the
1896	// metric.
1897	Metadata *MetricDescriptorMetadata `json:"metadata,omitempty"`
1898
1899	// MetricKind: Whether the metric records instantaneous values, changes
1900	// to a value, etc. Some combinations of `metric_kind` and `value_type`
1901	// might not be supported.
1902	//
1903	// Possible values:
1904	//   "METRIC_KIND_UNSPECIFIED" - Do not use this default value.
1905	//   "GAUGE" - An instantaneous measurement of a value.
1906	//   "DELTA" - The change in a value during a time interval.
1907	//   "CUMULATIVE" - A value accumulated over a time interval. Cumulative
1908	// measurements in a time series should have the same start time and
1909	// increasing end times, until an event resets the cumulative value to
1910	// zero and sets a new start time for the following points.
1911	MetricKind string `json:"metricKind,omitempty"`
1912
1913	// MonitoredResourceTypes: Read-only. If present, then a time series,
1914	// which is identified partially by a metric type and a
1915	// MonitoredResourceDescriptor, that is associated with this metric type
1916	// can only be associated with one of the monitored resource types
1917	// listed here.
1918	MonitoredResourceTypes []string `json:"monitoredResourceTypes,omitempty"`
1919
1920	// Name: The resource name of the metric descriptor.
1921	Name string `json:"name,omitempty"`
1922
1923	// Type: The metric type, including its DNS name prefix. The type is not
1924	// URL-encoded. All user-defined metric types have the DNS name
1925	// `custom.googleapis.com` or `external.googleapis.com`. Metric types
1926	// should use a natural hierarchical grouping. For example:
1927	// "custom.googleapis.com/invoice/paid/amount"
1928	// "external.googleapis.com/prometheus/up"
1929	// "appengine.googleapis.com/http/server/response_latencies"
1930	Type string `json:"type,omitempty"`
1931
1932	// Unit: The units in which the metric value is reported. It is only
1933	// applicable if the `value_type` is `INT64`, `DOUBLE`, or
1934	// `DISTRIBUTION`. The `unit` defines the representation of the stored
1935	// metric values. Different systems might scale the values to be more
1936	// easily displayed (so a value of `0.02kBy` _might_ be displayed as
1937	// `20By`, and a value of `3523kBy` _might_ be displayed as `3.5MBy`).
1938	// However, if the `unit` is `kBy`, then the value of the metric is
1939	// always in thousands of bytes, no matter how it might be displayed. If
1940	// you want a custom metric to record the exact number of CPU-seconds
1941	// used by a job, you can create an `INT64 CUMULATIVE` metric whose
1942	// `unit` is `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the
1943	// job uses 12,005 CPU-seconds, then the value is written as `12005`.
1944	// Alternatively, if you want a custom metric to record data in a more
1945	// granular way, you can create a `DOUBLE CUMULATIVE` metric whose
1946	// `unit` is `ks{CPU}`, and then write the value `12.005` (which is
1947	// `12005/1000`), or use `Kis{CPU}` and write `11.723` (which is
1948	// `12005/1024`). The supported units are a subset of The Unified Code
1949	// for Units of Measure (https://unitsofmeasure.org/ucum.html) standard:
1950	// **Basic units (UNIT)** * `bit` bit * `By` byte * `s` second * `min`
1951	// minute * `h` hour * `d` day * `1` dimensionless **Prefixes (PREFIX)**
1952	// * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera
1953	// (10^12) * `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) *
1954	// `Y` yotta (10^24) * `m` milli (10^-3) * `u` micro (10^-6) * `n` nano
1955	// (10^-9) * `p` pico (10^-12) * `f` femto (10^-15) * `a` atto (10^-18)
1956	// * `z` zepto (10^-21) * `y` yocto (10^-24) * `Ki` kibi (2^10) * `Mi`
1957	// mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (2^40) * `Pi` pebi (2^50)
1958	// **Grammar** The grammar also includes these connectors: * `/`
1959	// division or ratio (as an infix operator). For examples, `kBy/{email}`
1960	// or `MiBy/10ms` (although you should almost never have `/s` in a
1961	// metric `unit`; rates should always be computed at query time from the
1962	// underlying cumulative or delta value). * `.` multiplication or
1963	// composition (as an infix operator). For examples, `GBy.d` or
1964	// `k{watt}.h`. The grammar for a unit is as follows: Expression =
1965	// Component { "." Component } { "/" Component } ; Component = ( [
1966	// PREFIX ] UNIT | "%" ) [ Annotation ] | Annotation | "1" ; Annotation
1967	// = "{" NAME "}" ; Notes: * `Annotation` is just a comment if it
1968	// follows a `UNIT`. If the annotation is used alone, then the unit is
1969	// equivalent to `1`. For examples, `{request}/s == 1/s`,
1970	// `By{transmitted}/s == By/s`. * `NAME` is a sequence of non-blank
1971	// printable ASCII characters not containing `{` or `}`. * `1`
1972	// represents a unitary dimensionless unit
1973	// (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as
1974	// in `1/s`. It is typically used when none of the basic units are
1975	// appropriate. For example, "new users per day" can be represented as
1976	// `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
1977	// users). Alternatively, "thousands of page views per day" would be
1978	// represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
1979	// value of `5.3` would mean "5300 page views per day"). * `%`
1980	// represents dimensionless value of 1/100, and annotates values giving
1981	// a percentage (so the metric values are typically in the range of
1982	// 0..100, and a metric value `3` means "3 percent"). * `10^2.%`
1983	// indicates a metric contains a ratio, typically in the range 0..1,
1984	// that will be multiplied by 100 and displayed as a percentage (so a
1985	// metric value `0.03` means "3 percent").
1986	Unit string `json:"unit,omitempty"`
1987
1988	// ValueType: Whether the measurement is an integer, a floating-point
1989	// number, etc. Some combinations of `metric_kind` and `value_type`
1990	// might not be supported.
1991	//
1992	// Possible values:
1993	//   "VALUE_TYPE_UNSPECIFIED" - Do not use this default value.
1994	//   "BOOL" - The value is a boolean. This value type can be used only
1995	// if the metric kind is `GAUGE`.
1996	//   "INT64" - The value is a signed 64-bit integer.
1997	//   "DOUBLE" - The value is a double precision floating point number.
1998	//   "STRING" - The value is a text string. This value type can be used
1999	// only if the metric kind is `GAUGE`.
2000	//   "DISTRIBUTION" - The value is a `Distribution`.
2001	//   "MONEY" - The value is money.
2002	ValueType string `json:"valueType,omitempty"`
2003
2004	// ForceSendFields is a list of field names (e.g. "Description") to
2005	// unconditionally include in API requests. By default, fields with
2006	// empty or default values are omitted from API requests. However, any
2007	// non-pointer, non-interface field appearing in ForceSendFields will be
2008	// sent to the server regardless of whether the field is empty or not.
2009	// This may be used to include empty fields in Patch requests.
2010	ForceSendFields []string `json:"-"`
2011
2012	// NullFields is a list of field names (e.g. "Description") to include
2013	// in API requests with the JSON null value. By default, fields with
2014	// empty values are omitted from API requests. However, any field with
2015	// an empty value appearing in NullFields will be sent to the server as
2016	// null. It is an error if a field in this list has a non-empty value.
2017	// This may be used to include null fields in Patch requests.
2018	NullFields []string `json:"-"`
2019}
2020
2021func (s *MetricDescriptor) MarshalJSON() ([]byte, error) {
2022	type NoMethod MetricDescriptor
2023	raw := NoMethod(*s)
2024	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2025}
2026
2027// MetricDescriptorMetadata: Additional annotations that can be used to
2028// guide the usage of a metric.
2029type MetricDescriptorMetadata struct {
2030	// IngestDelay: The delay of data points caused by ingestion. Data
2031	// points older than this age are guaranteed to be ingested and
2032	// available to be read, excluding data loss due to errors.
2033	IngestDelay string `json:"ingestDelay,omitempty"`
2034
2035	// LaunchStage: Deprecated. Must use the MetricDescriptor.launch_stage
2036	// instead.
2037	//
2038	// Possible values:
2039	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
2040	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not
2041	// use it.
2042	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
2043	// visible internally.
2044	//   "EARLY_ACCESS" - Early Access features are limited to a closed
2045	// group of testers. To use these features, you must sign up in advance
2046	// and sign a Trusted Tester agreement (which includes confidentiality
2047	// provisions). These features may be unstable, changed in
2048	// backward-incompatible ways, and are not guaranteed to be released.
2049	//   "ALPHA" - Alpha is a limited availability test for releases before
2050	// they are cleared for widespread use. By Alpha, all significant design
2051	// issues are resolved and we are in the process of verifying
2052	// functionality. Alpha customers need to apply for access, agree to
2053	// applicable terms, and have their projects allowlisted. Alpha releases
2054	// don’t have to be feature complete, no SLAs are provided, and there
2055	// are no technical support obligations, but they will be far enough
2056	// along that customers can actually use them in test environments or
2057	// for limited-use tests -- just like they would in normal production
2058	// cases.
2059	//   "BETA" - Beta is the point at which we are ready to open a release
2060	// for any customer to use. There are no SLA or technical support
2061	// obligations in a Beta release. Products will be complete from a
2062	// feature perspective, but may have some open outstanding issues. Beta
2063	// releases are suitable for limited production use cases.
2064	//   "GA" - GA features are open to all developers and are considered
2065	// stable and fully qualified for production use.
2066	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
2067	// and removed. For more information, see the “Deprecation Policy”
2068	// section of our [Terms of Service](https://cloud.google.com/terms/)
2069	// and the [Google Cloud Platform Subject to the Deprecation
2070	// Policy](https://cloud.google.com/terms/deprecation) documentation.
2071	LaunchStage string `json:"launchStage,omitempty"`
2072
2073	// SamplePeriod: The sampling period of metric data points. For metrics
2074	// which are written periodically, consecutive data points are stored at
2075	// this time interval, excluding data loss due to errors. Metrics with a
2076	// higher granularity have a smaller sampling period.
2077	SamplePeriod string `json:"samplePeriod,omitempty"`
2078
2079	// ForceSendFields is a list of field names (e.g. "IngestDelay") to
2080	// unconditionally include in API requests. By default, fields with
2081	// empty or default values are omitted from API requests. However, any
2082	// non-pointer, non-interface field appearing in ForceSendFields will be
2083	// sent to the server regardless of whether the field is empty or not.
2084	// This may be used to include empty fields in Patch requests.
2085	ForceSendFields []string `json:"-"`
2086
2087	// NullFields is a list of field names (e.g. "IngestDelay") to include
2088	// in API requests with the JSON null value. By default, fields with
2089	// empty values are omitted from API requests. However, any field with
2090	// an empty value appearing in NullFields will be sent to the server as
2091	// null. It is an error if a field in this list has a non-empty value.
2092	// This may be used to include null fields in Patch requests.
2093	NullFields []string `json:"-"`
2094}
2095
2096func (s *MetricDescriptorMetadata) MarshalJSON() ([]byte, error) {
2097	type NoMethod MetricDescriptorMetadata
2098	raw := NoMethod(*s)
2099	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2100}
2101
2102// MetricRule: Bind API methods to metrics. Binding a method to a metric
2103// causes that metric's configured quota behaviors to apply to the
2104// method call.
2105type MetricRule struct {
2106	// MetricCosts: Metrics to update when the selected methods are called,
2107	// and the associated cost applied to each metric. The key of the map is
2108	// the metric name, and the values are the amount increased for the
2109	// metric against which the quota limits are defined. The value must not
2110	// be negative.
2111	MetricCosts map[string]string `json:"metricCosts,omitempty"`
2112
2113	// Selector: Selects the methods to which this rule applies. Refer to
2114	// selector for syntax details.
2115	Selector string `json:"selector,omitempty"`
2116
2117	// ForceSendFields is a list of field names (e.g. "MetricCosts") to
2118	// unconditionally include in API requests. By default, fields with
2119	// empty or default values are omitted from API requests. However, any
2120	// non-pointer, non-interface field appearing in ForceSendFields will be
2121	// sent to the server regardless of whether the field is empty or not.
2122	// This may be used to include empty fields in Patch requests.
2123	ForceSendFields []string `json:"-"`
2124
2125	// NullFields is a list of field names (e.g. "MetricCosts") to include
2126	// in API requests with the JSON null value. By default, fields with
2127	// empty values are omitted from API requests. However, any field with
2128	// an empty value appearing in NullFields will be sent to the server as
2129	// null. It is an error if a field in this list has a non-empty value.
2130	// This may be used to include null fields in Patch requests.
2131	NullFields []string `json:"-"`
2132}
2133
2134func (s *MetricRule) MarshalJSON() ([]byte, error) {
2135	type NoMethod MetricRule
2136	raw := NoMethod(*s)
2137	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2138}
2139
2140// Mixin: Declares an API Interface to be included in this interface.
2141// The including interface must redeclare all the methods from the
2142// included interface, but documentation and options are inherited as
2143// follows: - If after comment and whitespace stripping, the
2144// documentation string of the redeclared method is empty, it will be
2145// inherited from the original method. - Each annotation belonging to
2146// the service config (http, visibility) which is not set in the
2147// redeclared method will be inherited. - If an http annotation is
2148// inherited, the path pattern will be modified as follows. Any version
2149// prefix will be replaced by the version of the including interface
2150// plus the root path if specified. Example of a simple mixin: package
2151// google.acl.v1; service AccessControl { // Get the underlying ACL
2152// object. rpc GetAcl(GetAclRequest) returns (Acl) { option
2153// (google.api.http).get = "/v1/{resource=**}:getAcl"; } } package
2154// google.storage.v2; service Storage { // rpc GetAcl(GetAclRequest)
2155// returns (Acl); // Get a data record. rpc GetData(GetDataRequest)
2156// returns (Data) { option (google.api.http).get = "/v2/{resource=**}";
2157// } } Example of a mixin configuration: apis: - name:
2158// google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl
2159// The mixin construct implies that all methods in `AccessControl` are
2160// also declared with same name and request/response types in `Storage`.
2161// A documentation generator or annotation processor will see the
2162// effective `Storage.GetAcl` method after inheriting documentation and
2163// annotations as follows: service Storage { // Get the underlying ACL
2164// object. rpc GetAcl(GetAclRequest) returns (Acl) { option
2165// (google.api.http).get = "/v2/{resource=**}:getAcl"; } ... } Note how
2166// the version in the path pattern changed from `v1` to `v2`. If the
2167// `root` field in the mixin is specified, it should be a relative path
2168// under which inherited HTTP paths are placed. Example: apis: - name:
2169// google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl
2170// root: acls This implies the following inherited HTTP annotation:
2171// service Storage { // Get the underlying ACL object. rpc
2172// GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get =
2173// "/v2/acls/{resource=**}:getAcl"; } ... }
2174type Mixin struct {
2175	// Name: The fully qualified name of the interface which is included.
2176	Name string `json:"name,omitempty"`
2177
2178	// Root: If non-empty specifies a path under which inherited HTTP paths
2179	// are rooted.
2180	Root string `json:"root,omitempty"`
2181
2182	// ForceSendFields is a list of field names (e.g. "Name") to
2183	// unconditionally include in API requests. By default, fields with
2184	// empty or default values are omitted from API requests. However, any
2185	// non-pointer, non-interface field appearing in ForceSendFields will be
2186	// sent to the server regardless of whether the field is empty or not.
2187	// This may be used to include empty fields in Patch requests.
2188	ForceSendFields []string `json:"-"`
2189
2190	// NullFields is a list of field names (e.g. "Name") to include in API
2191	// requests with the JSON null value. By default, fields with empty
2192	// values are omitted from API requests. However, any field with an
2193	// empty value appearing in NullFields will be sent to the server as
2194	// null. It is an error if a field in this list has a non-empty value.
2195	// This may be used to include null fields in Patch requests.
2196	NullFields []string `json:"-"`
2197}
2198
2199func (s *Mixin) MarshalJSON() ([]byte, error) {
2200	type NoMethod Mixin
2201	raw := NoMethod(*s)
2202	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2203}
2204
2205// MonitoredResourceDescriptor: An object that describes the schema of a
2206// MonitoredResource object using a type name and a set of labels. For
2207// example, the monitored resource descriptor for Google Compute Engine
2208// VM instances has a type of "gce_instance" and specifies the use of
2209// the labels "instance_id" and "zone" to identify particular VM
2210// instances. Different APIs can support different monitored resource
2211// types. APIs generally provide a `list` method that returns the
2212// monitored resource descriptors used by the API.
2213type MonitoredResourceDescriptor struct {
2214	// Description: Optional. A detailed description of the monitored
2215	// resource type that might be used in documentation.
2216	Description string `json:"description,omitempty"`
2217
2218	// DisplayName: Optional. A concise name for the monitored resource type
2219	// that might be displayed in user interfaces. It should be a Title
2220	// Cased Noun Phrase, without any article or other determiners. For
2221	// example, "Google Cloud SQL Database".
2222	DisplayName string `json:"displayName,omitempty"`
2223
2224	// Labels: Required. A set of labels used to describe instances of this
2225	// monitored resource type. For example, an individual Google Cloud SQL
2226	// database is identified by values for the labels "database_id" and
2227	// "zone".
2228	Labels []*LabelDescriptor `json:"labels,omitempty"`
2229
2230	// LaunchStage: Optional. The launch stage of the monitored resource
2231	// definition.
2232	//
2233	// Possible values:
2234	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
2235	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not
2236	// use it.
2237	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
2238	// visible internally.
2239	//   "EARLY_ACCESS" - Early Access features are limited to a closed
2240	// group of testers. To use these features, you must sign up in advance
2241	// and sign a Trusted Tester agreement (which includes confidentiality
2242	// provisions). These features may be unstable, changed in
2243	// backward-incompatible ways, and are not guaranteed to be released.
2244	//   "ALPHA" - Alpha is a limited availability test for releases before
2245	// they are cleared for widespread use. By Alpha, all significant design
2246	// issues are resolved and we are in the process of verifying
2247	// functionality. Alpha customers need to apply for access, agree to
2248	// applicable terms, and have their projects allowlisted. Alpha releases
2249	// don’t have to be feature complete, no SLAs are provided, and there
2250	// are no technical support obligations, but they will be far enough
2251	// along that customers can actually use them in test environments or
2252	// for limited-use tests -- just like they would in normal production
2253	// cases.
2254	//   "BETA" - Beta is the point at which we are ready to open a release
2255	// for any customer to use. There are no SLA or technical support
2256	// obligations in a Beta release. Products will be complete from a
2257	// feature perspective, but may have some open outstanding issues. Beta
2258	// releases are suitable for limited production use cases.
2259	//   "GA" - GA features are open to all developers and are considered
2260	// stable and fully qualified for production use.
2261	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
2262	// and removed. For more information, see the “Deprecation Policy”
2263	// section of our [Terms of Service](https://cloud.google.com/terms/)
2264	// and the [Google Cloud Platform Subject to the Deprecation
2265	// Policy](https://cloud.google.com/terms/deprecation) documentation.
2266	LaunchStage string `json:"launchStage,omitempty"`
2267
2268	// Name: Optional. The resource name of the monitored resource
2269	// descriptor:
2270	// "projects/{project_id}/monitoredResourceDescriptors/{type}" where
2271	// {type} is the value of the `type` field in this object and
2272	// {project_id} is a project ID that provides API-specific context for
2273	// accessing the type. APIs that do not use project information can use
2274	// the resource name format "monitoredResourceDescriptors/{type}".
2275	Name string `json:"name,omitempty"`
2276
2277	// Type: Required. The monitored resource type. For example, the type
2278	// "cloudsql_database" represents databases in Google Cloud SQL. For a
2279	// list of types, see Monitoring resource types
2280	// (https://cloud.google.com/monitoring/api/resources) and Logging
2281	// resource types
2282	// (https://cloud.google.com/logging/docs/api/v2/resource-list).
2283	Type string `json:"type,omitempty"`
2284
2285	// ForceSendFields is a list of field names (e.g. "Description") to
2286	// unconditionally include in API requests. By default, fields with
2287	// empty or default values are omitted from API requests. However, any
2288	// non-pointer, non-interface field appearing in ForceSendFields will be
2289	// sent to the server regardless of whether the field is empty or not.
2290	// This may be used to include empty fields in Patch requests.
2291	ForceSendFields []string `json:"-"`
2292
2293	// NullFields is a list of field names (e.g. "Description") to include
2294	// in API requests with the JSON null value. By default, fields with
2295	// empty values are omitted from API requests. However, any field with
2296	// an empty value appearing in NullFields will be sent to the server as
2297	// null. It is an error if a field in this list has a non-empty value.
2298	// This may be used to include null fields in Patch requests.
2299	NullFields []string `json:"-"`
2300}
2301
2302func (s *MonitoredResourceDescriptor) MarshalJSON() ([]byte, error) {
2303	type NoMethod MonitoredResourceDescriptor
2304	raw := NoMethod(*s)
2305	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2306}
2307
2308// Monitoring: Monitoring configuration of the service. The example
2309// below shows how to configure monitored resources and metrics for
2310// monitoring. In the example, a monitored resource and two metrics are
2311// defined. The `library.googleapis.com/book/returned_count` metric is
2312// sent to both producer and consumer projects, whereas the
2313// `library.googleapis.com/book/num_overdue` metric is only sent to the
2314// consumer project. monitored_resources: - type:
2315// library.googleapis.com/Branch display_name: "Library Branch"
2316// description: "A branch of a library." launch_stage: GA labels: - key:
2317// resource_container description: "The Cloud container (ie. project id)
2318// for the Branch." - key: location description: "The location of the
2319// library branch." - key: branch_id description: "The id of the
2320// branch." metrics: - name: library.googleapis.com/book/returned_count
2321// display_name: "Books Returned" description: "The count of books that
2322// have been returned." launch_stage: GA metric_kind: DELTA value_type:
2323// INT64 unit: "1" labels: - key: customer_id description: "The id of
2324// the customer." - name: library.googleapis.com/book/num_overdue
2325// display_name: "Books Overdue" description: "The current number of
2326// overdue books." launch_stage: GA metric_kind: GAUGE value_type: INT64
2327// unit: "1" labels: - key: customer_id description: "The id of the
2328// customer." monitoring: producer_destinations: - monitored_resource:
2329// library.googleapis.com/Branch metrics: -
2330// library.googleapis.com/book/returned_count consumer_destinations: -
2331// monitored_resource: library.googleapis.com/Branch metrics: -
2332// library.googleapis.com/book/returned_count -
2333// library.googleapis.com/book/num_overdue
2334type Monitoring struct {
2335	// ConsumerDestinations: Monitoring configurations for sending metrics
2336	// to the consumer project. There can be multiple consumer destinations.
2337	// A monitored resource type may appear in multiple monitoring
2338	// destinations if different aggregations are needed for different sets
2339	// of metrics associated with that monitored resource type. A monitored
2340	// resource and metric pair may only be used once in the Monitoring
2341	// configuration.
2342	ConsumerDestinations []*MonitoringDestination `json:"consumerDestinations,omitempty"`
2343
2344	// ProducerDestinations: Monitoring configurations for sending metrics
2345	// to the producer project. There can be multiple producer destinations.
2346	// A monitored resource type may appear in multiple monitoring
2347	// destinations if different aggregations are needed for different sets
2348	// of metrics associated with that monitored resource type. A monitored
2349	// resource and metric pair may only be used once in the Monitoring
2350	// configuration.
2351	ProducerDestinations []*MonitoringDestination `json:"producerDestinations,omitempty"`
2352
2353	// ForceSendFields is a list of field names (e.g.
2354	// "ConsumerDestinations") to unconditionally include in API requests.
2355	// By default, fields with empty or default values are omitted from API
2356	// requests. However, any non-pointer, non-interface field appearing in
2357	// ForceSendFields will be sent to the server regardless of whether the
2358	// field is empty or not. This may be used to include empty fields in
2359	// Patch requests.
2360	ForceSendFields []string `json:"-"`
2361
2362	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
2363	// include in API requests with the JSON null value. By default, fields
2364	// with empty values are omitted from API requests. However, any field
2365	// with an empty value appearing in NullFields will be sent to the
2366	// server as null. It is an error if a field in this list has a
2367	// non-empty value. This may be used to include null fields in Patch
2368	// requests.
2369	NullFields []string `json:"-"`
2370}
2371
2372func (s *Monitoring) MarshalJSON() ([]byte, error) {
2373	type NoMethod Monitoring
2374	raw := NoMethod(*s)
2375	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2376}
2377
2378// MonitoringDestination: Configuration of a specific monitoring
2379// destination (the producer project or the consumer project).
2380type MonitoringDestination struct {
2381	// Metrics: Types of the metrics to report to this monitoring
2382	// destination. Each type must be defined in Service.metrics section.
2383	Metrics []string `json:"metrics,omitempty"`
2384
2385	// MonitoredResource: The monitored resource type. The type must be
2386	// defined in Service.monitored_resources section.
2387	MonitoredResource string `json:"monitoredResource,omitempty"`
2388
2389	// ForceSendFields is a list of field names (e.g. "Metrics") to
2390	// unconditionally include in API requests. By default, fields with
2391	// empty or default values are omitted from API requests. However, any
2392	// non-pointer, non-interface field appearing in ForceSendFields will be
2393	// sent to the server regardless of whether the field is empty or not.
2394	// This may be used to include empty fields in Patch requests.
2395	ForceSendFields []string `json:"-"`
2396
2397	// NullFields is a list of field names (e.g. "Metrics") to include in
2398	// API requests with the JSON null value. By default, fields with empty
2399	// values are omitted from API requests. However, any field with an
2400	// empty value appearing in NullFields will be sent to the server as
2401	// null. It is an error if a field in this list has a non-empty value.
2402	// This may be used to include null fields in Patch requests.
2403	NullFields []string `json:"-"`
2404}
2405
2406func (s *MonitoringDestination) MarshalJSON() ([]byte, error) {
2407	type NoMethod MonitoringDestination
2408	raw := NoMethod(*s)
2409	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2410}
2411
2412// OAuthRequirements: OAuth scopes are a way to define data and
2413// permissions on data. For example, there are scopes defined for
2414// "Read-only access to Google Calendar" and "Access to Cloud Platform".
2415// Users can consent to a scope for an application, giving it permission
2416// to access that data on their behalf. OAuth scope specifications
2417// should be fairly coarse grained; a user will need to see and
2418// understand the text description of what your scope means. In most
2419// cases: use one or at most two OAuth scopes for an entire family of
2420// products. If your product has multiple APIs, you should probably be
2421// sharing the OAuth scope across all of those APIs. When you need finer
2422// grained OAuth consent screens: talk with your product management
2423// about how developers will use them in practice. Please note that even
2424// though each of the canonical scopes is enough for a request to be
2425// accepted and passed to the backend, a request can still fail due to
2426// the backend requiring additional scopes or permissions.
2427type OAuthRequirements struct {
2428	// CanonicalScopes: The list of publicly documented OAuth scopes that
2429	// are allowed access. An OAuth token containing any of these scopes
2430	// will be accepted. Example: canonical_scopes:
2431	// https://www.googleapis.com/auth/calendar,
2432	// https://www.googleapis.com/auth/calendar.read
2433	CanonicalScopes string `json:"canonicalScopes,omitempty"`
2434
2435	// ForceSendFields is a list of field names (e.g. "CanonicalScopes") to
2436	// unconditionally include in API requests. By default, fields with
2437	// empty or default values are omitted from API requests. However, any
2438	// non-pointer, non-interface field appearing in ForceSendFields will be
2439	// sent to the server regardless of whether the field is empty or not.
2440	// This may be used to include empty fields in Patch requests.
2441	ForceSendFields []string `json:"-"`
2442
2443	// NullFields is a list of field names (e.g. "CanonicalScopes") to
2444	// include in API requests with the JSON null value. By default, fields
2445	// with empty values are omitted from API requests. However, any field
2446	// with an empty value appearing in NullFields will be sent to the
2447	// server as null. It is an error if a field in this list has a
2448	// non-empty value. This may be used to include null fields in Patch
2449	// requests.
2450	NullFields []string `json:"-"`
2451}
2452
2453func (s *OAuthRequirements) MarshalJSON() ([]byte, error) {
2454	type NoMethod OAuthRequirements
2455	raw := NoMethod(*s)
2456	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2457}
2458
2459// Operation: This resource represents a long-running operation that is
2460// the result of a network API call.
2461type Operation struct {
2462	// Done: If the value is `false`, it means the operation is still in
2463	// progress. If `true`, the operation is completed, and either `error`
2464	// or `response` is available.
2465	Done bool `json:"done,omitempty"`
2466
2467	// Error: The error result of the operation in case of failure or
2468	// cancellation.
2469	Error *Status `json:"error,omitempty"`
2470
2471	// Metadata: Service-specific metadata associated with the operation. It
2472	// typically contains progress information and common metadata such as
2473	// create time. Some services might not provide such metadata. Any
2474	// method that returns a long-running operation should document the
2475	// metadata type, if any.
2476	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
2477
2478	// Name: The server-assigned name, which is only unique within the same
2479	// service that originally returns it. If you use the default HTTP
2480	// mapping, the `name` should be a resource name ending with
2481	// `operations/{unique_id}`.
2482	Name string `json:"name,omitempty"`
2483
2484	// Response: The normal response of the operation in case of success. If
2485	// the original method returns no data on success, such as `Delete`, the
2486	// response is `google.protobuf.Empty`. If the original method is
2487	// standard `Get`/`Create`/`Update`, the response should be the
2488	// resource. For other methods, the response should have the type
2489	// `XxxResponse`, where `Xxx` is the original method name. For example,
2490	// if the original method name is `TakeSnapshot()`, the inferred
2491	// response type is `TakeSnapshotResponse`.
2492	Response googleapi.RawMessage `json:"response,omitempty"`
2493
2494	// ServerResponse contains the HTTP response code and headers from the
2495	// server.
2496	googleapi.ServerResponse `json:"-"`
2497
2498	// ForceSendFields is a list of field names (e.g. "Done") to
2499	// unconditionally include in API requests. By default, fields with
2500	// empty or default values are omitted from API requests. However, any
2501	// non-pointer, non-interface field appearing in ForceSendFields will be
2502	// sent to the server regardless of whether the field is empty or not.
2503	// This may be used to include empty fields in Patch requests.
2504	ForceSendFields []string `json:"-"`
2505
2506	// NullFields is a list of field names (e.g. "Done") to include in API
2507	// requests with the JSON null value. By default, fields with empty
2508	// values are omitted from API requests. However, any field with an
2509	// empty value appearing in NullFields will be sent to the server as
2510	// null. It is an error if a field in this list has a non-empty value.
2511	// This may be used to include null fields in Patch requests.
2512	NullFields []string `json:"-"`
2513}
2514
2515func (s *Operation) MarshalJSON() ([]byte, error) {
2516	type NoMethod Operation
2517	raw := NoMethod(*s)
2518	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2519}
2520
2521// Option: A protocol buffer option, which can be attached to a message,
2522// field, enumeration, etc.
2523type Option struct {
2524	// Name: The option's name. For protobuf built-in options (options
2525	// defined in descriptor.proto), this is the short name. For example,
2526	// "map_entry". For custom options, it should be the fully-qualified
2527	// name. For example, "google.api.http".
2528	Name string `json:"name,omitempty"`
2529
2530	// Value: The option's value packed in an Any message. If the value is a
2531	// primitive, the corresponding wrapper type defined in
2532	// google/protobuf/wrappers.proto should be used. If the value is an
2533	// enum, it should be stored as an int32 value using the
2534	// google.protobuf.Int32Value type.
2535	Value googleapi.RawMessage `json:"value,omitempty"`
2536
2537	// ForceSendFields is a list of field names (e.g. "Name") to
2538	// unconditionally include in API requests. By default, fields with
2539	// empty or default values are omitted from API requests. However, any
2540	// non-pointer, non-interface field appearing in ForceSendFields will be
2541	// sent to the server regardless of whether the field is empty or not.
2542	// This may be used to include empty fields in Patch requests.
2543	ForceSendFields []string `json:"-"`
2544
2545	// NullFields is a list of field names (e.g. "Name") to include in API
2546	// requests with the JSON null value. By default, fields with empty
2547	// values are omitted from API requests. However, any field with an
2548	// empty value appearing in NullFields will be sent to the server as
2549	// null. It is an error if a field in this list has a non-empty value.
2550	// This may be used to include null fields in Patch requests.
2551	NullFields []string `json:"-"`
2552}
2553
2554func (s *Option) MarshalJSON() ([]byte, error) {
2555	type NoMethod Option
2556	raw := NoMethod(*s)
2557	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2558}
2559
2560// Page: Represents a documentation page. A page can contain subpages to
2561// represent nested documentation set structure.
2562type Page struct {
2563	// Content: The Markdown content of the page. You can use (== include
2564	// {path} ==) to include content from a Markdown file. The content can
2565	// be used to produce the documentation page such as HTML format page.
2566	Content string `json:"content,omitempty"`
2567
2568	// Name: The name of the page. It will be used as an identity of the
2569	// page to generate URI of the page, text of the link to this page in
2570	// navigation, etc. The full page name (start from the root page name to
2571	// this page concatenated with `.`) can be used as reference to the page
2572	// in your documentation. For example: pages: - name: Tutorial content:
2573	// (== include tutorial.md ==) subpages: - name: Java content: (==
2574	// include tutorial_java.md ==) You can reference `Java` page using
2575	// Markdown reference link syntax: `Java`.
2576	Name string `json:"name,omitempty"`
2577
2578	// Subpages: Subpages of this page. The order of subpages specified here
2579	// will be honored in the generated docset.
2580	Subpages []*Page `json:"subpages,omitempty"`
2581
2582	// ForceSendFields is a list of field names (e.g. "Content") to
2583	// unconditionally include in API requests. By default, fields with
2584	// empty or default values are omitted from API requests. However, any
2585	// non-pointer, non-interface field appearing in ForceSendFields will be
2586	// sent to the server regardless of whether the field is empty or not.
2587	// This may be used to include empty fields in Patch requests.
2588	ForceSendFields []string `json:"-"`
2589
2590	// NullFields is a list of field names (e.g. "Content") to include in
2591	// API requests with the JSON null value. By default, fields with empty
2592	// values are omitted from API requests. However, any field with an
2593	// empty value appearing in NullFields will be sent to the server as
2594	// null. It is an error if a field in this list has a non-empty value.
2595	// This may be used to include null fields in Patch requests.
2596	NullFields []string `json:"-"`
2597}
2598
2599func (s *Page) MarshalJSON() ([]byte, error) {
2600	type NoMethod Page
2601	raw := NoMethod(*s)
2602	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2603}
2604
2605// Quota: Quota configuration helps to achieve fairness and budgeting in
2606// service usage. The metric based quota configuration works this way: -
2607// The service configuration defines a set of metrics. - For API calls,
2608// the quota.metric_rules maps methods to metrics with corresponding
2609// costs. - The quota.limits defines limits on the metrics, which will
2610// be used for quota checks at runtime. An example quota configuration
2611// in yaml format: quota: limits: - name: apiWriteQpsPerProject metric:
2612// library.googleapis.com/write_calls unit: "1/min/{project}" # rate
2613// limit for consumer projects values: STANDARD: 10000 # The metric
2614// rules bind all methods to the read_calls metric, # except for the
2615// UpdateBook and DeleteBook methods. These two methods # are mapped to
2616// the write_calls metric, with the UpdateBook method # consuming at
2617// twice rate as the DeleteBook method. metric_rules: - selector: "*"
2618// metric_costs: library.googleapis.com/read_calls: 1 - selector:
2619// google.example.library.v1.LibraryService.UpdateBook metric_costs:
2620// library.googleapis.com/write_calls: 2 - selector:
2621// google.example.library.v1.LibraryService.DeleteBook metric_costs:
2622// library.googleapis.com/write_calls: 1 Corresponding Metric
2623// definition: metrics: - name: library.googleapis.com/read_calls
2624// display_name: Read requests metric_kind: DELTA value_type: INT64 -
2625// name: library.googleapis.com/write_calls display_name: Write requests
2626// metric_kind: DELTA value_type: INT64
2627type Quota struct {
2628	// Limits: List of `QuotaLimit` definitions for the service.
2629	Limits []*QuotaLimit `json:"limits,omitempty"`
2630
2631	// MetricRules: List of `MetricRule` definitions, each one mapping a
2632	// selected method to one or more metrics.
2633	MetricRules []*MetricRule `json:"metricRules,omitempty"`
2634
2635	// ForceSendFields is a list of field names (e.g. "Limits") to
2636	// unconditionally include in API requests. By default, fields with
2637	// empty or default values are omitted from API requests. However, any
2638	// non-pointer, non-interface field appearing in ForceSendFields will be
2639	// sent to the server regardless of whether the field is empty or not.
2640	// This may be used to include empty fields in Patch requests.
2641	ForceSendFields []string `json:"-"`
2642
2643	// NullFields is a list of field names (e.g. "Limits") to include in API
2644	// requests with the JSON null value. By default, fields with empty
2645	// values are omitted from API requests. However, any field with an
2646	// empty value appearing in NullFields will be sent to the server as
2647	// null. It is an error if a field in this list has a non-empty value.
2648	// This may be used to include null fields in Patch requests.
2649	NullFields []string `json:"-"`
2650}
2651
2652func (s *Quota) MarshalJSON() ([]byte, error) {
2653	type NoMethod Quota
2654	raw := NoMethod(*s)
2655	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2656}
2657
2658// QuotaLimit: `QuotaLimit` defines a specific limit that applies over a
2659// specified duration for a limit type. There can be at most one limit
2660// for a duration and limit type combination defined within a
2661// `QuotaGroup`.
2662type QuotaLimit struct {
2663	// DefaultLimit: Default number of tokens that can be consumed during
2664	// the specified duration. This is the number of tokens assigned when a
2665	// client application developer activates the service for his/her
2666	// project. Specifying a value of 0 will block all requests. This can be
2667	// used if you are provisioning quota to selected consumers and blocking
2668	// others. Similarly, a value of -1 will indicate an unlimited quota. No
2669	// other negative values are allowed. Used by group-based quotas only.
2670	DefaultLimit int64 `json:"defaultLimit,omitempty,string"`
2671
2672	// Description: Optional. User-visible, extended description for this
2673	// quota limit. Should be used only when more context is needed to
2674	// understand this limit than provided by the limit's display name (see:
2675	// `display_name`).
2676	Description string `json:"description,omitempty"`
2677
2678	// DisplayName: User-visible display name for this limit. Optional. If
2679	// not set, the UI will provide a default display name based on the
2680	// quota configuration. This field can be used to override the default
2681	// display name generated from the configuration.
2682	DisplayName string `json:"displayName,omitempty"`
2683
2684	// Duration: Duration of this limit in textual notation. Must be "100s"
2685	// or "1d". Used by group-based quotas only.
2686	Duration string `json:"duration,omitempty"`
2687
2688	// FreeTier: Free tier value displayed in the Developers Console for
2689	// this limit. The free tier is the number of tokens that will be
2690	// subtracted from the billed amount when billing is enabled. This field
2691	// can only be set on a limit with duration "1d", in a billable group;
2692	// it is invalid on any other limit. If this field is not set, it
2693	// defaults to 0, indicating that there is no free tier for this
2694	// service. Used by group-based quotas only.
2695	FreeTier int64 `json:"freeTier,omitempty,string"`
2696
2697	// MaxLimit: Maximum number of tokens that can be consumed during the
2698	// specified duration. Client application developers can override the
2699	// default limit up to this maximum. If specified, this value cannot be
2700	// set to a value less than the default limit. If not specified, it is
2701	// set to the default limit. To allow clients to apply overrides with no
2702	// upper bound, set this to -1, indicating unlimited maximum quota. Used
2703	// by group-based quotas only.
2704	MaxLimit int64 `json:"maxLimit,omitempty,string"`
2705
2706	// Metric: The name of the metric this quota limit applies to. The quota
2707	// limits with the same metric will be checked together during runtime.
2708	// The metric must be defined within the service config.
2709	Metric string `json:"metric,omitempty"`
2710
2711	// Name: Name of the quota limit. The name must be provided, and it must
2712	// be unique within the service. The name can only include alphanumeric
2713	// characters as well as '-'. The maximum length of the limit name is 64
2714	// characters.
2715	Name string `json:"name,omitempty"`
2716
2717	// Unit: Specify the unit of the quota limit. It uses the same syntax as
2718	// Metric.unit. The supported unit kinds are determined by the quota
2719	// backend system. Here are some examples: * "1/min/{project}" for quota
2720	// per minute per project. Note: the order of unit components is
2721	// insignificant. The "1" at the beginning is required to follow the
2722	// metric unit syntax.
2723	Unit string `json:"unit,omitempty"`
2724
2725	// Values: Tiered limit values. You must specify this as a key:value
2726	// pair, with an integer value that is the maximum number of requests
2727	// allowed for the specified unit. Currently only STANDARD is supported.
2728	Values map[string]string `json:"values,omitempty"`
2729
2730	// ForceSendFields is a list of field names (e.g. "DefaultLimit") to
2731	// unconditionally include in API requests. By default, fields with
2732	// empty or default values are omitted from API requests. However, any
2733	// non-pointer, non-interface field appearing in ForceSendFields will be
2734	// sent to the server regardless of whether the field is empty or not.
2735	// This may be used to include empty fields in Patch requests.
2736	ForceSendFields []string `json:"-"`
2737
2738	// NullFields is a list of field names (e.g. "DefaultLimit") to include
2739	// in API requests with the JSON null value. By default, fields with
2740	// empty values are omitted from API requests. However, any field with
2741	// an empty value appearing in NullFields will be sent to the server as
2742	// null. It is an error if a field in this list has a non-empty value.
2743	// This may be used to include null fields in Patch requests.
2744	NullFields []string `json:"-"`
2745}
2746
2747func (s *QuotaLimit) MarshalJSON() ([]byte, error) {
2748	type NoMethod QuotaLimit
2749	raw := NoMethod(*s)
2750	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2751}
2752
2753// Service: `Service` is the root object of Google API service
2754// configuration (service config). It describes the basic information
2755// about a logical service, such as the service name and the user-facing
2756// title, and delegates other aspects to sub-sections. Each sub-section
2757// is either a proto message or a repeated proto message that configures
2758// a specific aspect, such as auth. For more information, see each proto
2759// message definition. Example: type: google.api.Service name:
2760// calendar.googleapis.com title: Google Calendar API apis: - name:
2761// google.calendar.v3.Calendar visibility: rules: - selector:
2762// "google.calendar.v3.*" restriction: PREVIEW backend: rules: -
2763// selector: "google.calendar.v3.*" address: calendar.example.com
2764// authentication: providers: - id: google_calendar_auth jwks_uri:
2765// https://www.googleapis.com/oauth2/v1/certs issuer:
2766// https://securetoken.google.com rules: - selector: "*" requirements:
2767// provider_id: google_calendar_auth
2768type Service struct {
2769	// Apis: A list of API interfaces exported by this service. Only the
2770	// `name` field of the google.protobuf.Api needs to be provided by the
2771	// configuration author, as the remaining fields will be derived from
2772	// the IDL during the normalization process. It is an error to specify
2773	// an API interface here which cannot be resolved against the associated
2774	// IDL files.
2775	Apis []*Api `json:"apis,omitempty"`
2776
2777	// Authentication: Auth configuration.
2778	Authentication *Authentication `json:"authentication,omitempty"`
2779
2780	// Backend: API backend configuration.
2781	Backend *Backend `json:"backend,omitempty"`
2782
2783	// Billing: Billing configuration.
2784	Billing *Billing `json:"billing,omitempty"`
2785
2786	// ConfigVersion: Obsolete. Do not use. This field has no semantic
2787	// meaning. The service config compiler always sets this field to `3`.
2788	ConfigVersion int64 `json:"configVersion,omitempty"`
2789
2790	// Context: Context configuration.
2791	Context *Context `json:"context,omitempty"`
2792
2793	// Control: Configuration for the service control plane.
2794	Control *Control `json:"control,omitempty"`
2795
2796	// CustomError: Custom error configuration.
2797	CustomError *CustomError `json:"customError,omitempty"`
2798
2799	// Documentation: Additional API documentation.
2800	Documentation *Documentation `json:"documentation,omitempty"`
2801
2802	// Endpoints: Configuration for network endpoints. If this is empty,
2803	// then an endpoint with the same name as the service is automatically
2804	// generated to service all defined APIs.
2805	Endpoints []*Endpoint `json:"endpoints,omitempty"`
2806
2807	// Enums: A list of all enum types included in this API service. Enums
2808	// referenced directly or indirectly by the `apis` are automatically
2809	// included. Enums which are not referenced but shall be included should
2810	// be listed here by name by the configuration author. Example: enums: -
2811	// name: google.someapi.v1.SomeEnum
2812	Enums []*Enum `json:"enums,omitempty"`
2813
2814	// Http: HTTP configuration.
2815	Http *Http `json:"http,omitempty"`
2816
2817	// Id: A unique ID for a specific instance of this message, typically
2818	// assigned by the client for tracking purpose. Must be no longer than
2819	// 63 characters and only lower case letters, digits, '.', '_' and '-'
2820	// are allowed. If empty, the server may choose to generate one instead.
2821	Id string `json:"id,omitempty"`
2822
2823	// Logging: Logging configuration.
2824	Logging *Logging `json:"logging,omitempty"`
2825
2826	// Logs: Defines the logs used by this service.
2827	Logs []*LogDescriptor `json:"logs,omitempty"`
2828
2829	// Metrics: Defines the metrics used by this service.
2830	Metrics []*MetricDescriptor `json:"metrics,omitempty"`
2831
2832	// MonitoredResources: Defines the monitored resources used by this
2833	// service. This is required by the Service.monitoring and
2834	// Service.logging configurations.
2835	MonitoredResources []*MonitoredResourceDescriptor `json:"monitoredResources,omitempty"`
2836
2837	// Monitoring: Monitoring configuration.
2838	Monitoring *Monitoring `json:"monitoring,omitempty"`
2839
2840	// Name: The service name, which is a DNS-like logical identifier for
2841	// the service, such as `calendar.googleapis.com`. The service name
2842	// typically goes through DNS verification to make sure the owner of the
2843	// service also owns the DNS name.
2844	Name string `json:"name,omitempty"`
2845
2846	// ProducerProjectId: The Google project that owns this service.
2847	ProducerProjectId string `json:"producerProjectId,omitempty"`
2848
2849	// Quota: Quota configuration.
2850	Quota *Quota `json:"quota,omitempty"`
2851
2852	// SourceInfo: Output only. The source information for this
2853	// configuration if available.
2854	SourceInfo *SourceInfo `json:"sourceInfo,omitempty"`
2855
2856	// SystemParameters: System parameter configuration.
2857	SystemParameters *SystemParameters `json:"systemParameters,omitempty"`
2858
2859	// SystemTypes: A list of all proto message types included in this API
2860	// service. It serves similar purpose as [google.api.Service.types],
2861	// except that these types are not needed by user-defined APIs.
2862	// Therefore, they will not show up in the generated discovery doc. This
2863	// field should only be used to define system APIs in ESF.
2864	SystemTypes []*Type `json:"systemTypes,omitempty"`
2865
2866	// Title: The product title for this service, it is the name displayed
2867	// in Google Cloud Console.
2868	Title string `json:"title,omitempty"`
2869
2870	// Types: A list of all proto message types included in this API
2871	// service. Types referenced directly or indirectly by the `apis` are
2872	// automatically included. Messages which are not referenced but shall
2873	// be included, such as types used by the `google.protobuf.Any` type,
2874	// should be listed here by name by the configuration author. Example:
2875	// types: - name: google.protobuf.Int32
2876	Types []*Type `json:"types,omitempty"`
2877
2878	// Usage: Configuration controlling usage of this service.
2879	Usage *Usage `json:"usage,omitempty"`
2880
2881	// ForceSendFields is a list of field names (e.g. "Apis") to
2882	// unconditionally include in API requests. By default, fields with
2883	// empty or default values are omitted from API requests. However, any
2884	// non-pointer, non-interface field appearing in ForceSendFields will be
2885	// sent to the server regardless of whether the field is empty or not.
2886	// This may be used to include empty fields in Patch requests.
2887	ForceSendFields []string `json:"-"`
2888
2889	// NullFields is a list of field names (e.g. "Apis") to include in API
2890	// requests with the JSON null value. By default, fields with empty
2891	// values are omitted from API requests. However, any field with an
2892	// empty value appearing in NullFields will be sent to the server as
2893	// null. It is an error if a field in this list has a non-empty value.
2894	// This may be used to include null fields in Patch requests.
2895	NullFields []string `json:"-"`
2896}
2897
2898func (s *Service) MarshalJSON() ([]byte, error) {
2899	type NoMethod Service
2900	raw := NoMethod(*s)
2901	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2902}
2903
2904// SourceContext: `SourceContext` represents information about the
2905// source of a protobuf element, like the file in which it is defined.
2906type SourceContext struct {
2907	// FileName: The path-qualified name of the .proto file that contained
2908	// the associated protobuf element. For example:
2909	// "google/protobuf/source_context.proto".
2910	FileName string `json:"fileName,omitempty"`
2911
2912	// ForceSendFields is a list of field names (e.g. "FileName") to
2913	// unconditionally include in API requests. By default, fields with
2914	// empty or default values are omitted from API requests. However, any
2915	// non-pointer, non-interface field appearing in ForceSendFields will be
2916	// sent to the server regardless of whether the field is empty or not.
2917	// This may be used to include empty fields in Patch requests.
2918	ForceSendFields []string `json:"-"`
2919
2920	// NullFields is a list of field names (e.g. "FileName") to include in
2921	// API requests with the JSON null value. By default, fields with empty
2922	// values are omitted from API requests. However, any field with an
2923	// empty value appearing in NullFields will be sent to the server as
2924	// null. It is an error if a field in this list has a non-empty value.
2925	// This may be used to include null fields in Patch requests.
2926	NullFields []string `json:"-"`
2927}
2928
2929func (s *SourceContext) MarshalJSON() ([]byte, error) {
2930	type NoMethod SourceContext
2931	raw := NoMethod(*s)
2932	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2933}
2934
2935// SourceInfo: Source information used to create a Service Config
2936type SourceInfo struct {
2937	// SourceFiles: All files used during config generation.
2938	SourceFiles []googleapi.RawMessage `json:"sourceFiles,omitempty"`
2939
2940	// ForceSendFields is a list of field names (e.g. "SourceFiles") to
2941	// unconditionally include in API requests. By default, fields with
2942	// empty or default values are omitted from API requests. However, any
2943	// non-pointer, non-interface field appearing in ForceSendFields will be
2944	// sent to the server regardless of whether the field is empty or not.
2945	// This may be used to include empty fields in Patch requests.
2946	ForceSendFields []string `json:"-"`
2947
2948	// NullFields is a list of field names (e.g. "SourceFiles") to include
2949	// in API requests with the JSON null value. By default, fields with
2950	// empty values are omitted from API requests. However, any field with
2951	// an empty value appearing in NullFields will be sent to the server as
2952	// null. It is an error if a field in this list has a non-empty value.
2953	// This may be used to include null fields in Patch requests.
2954	NullFields []string `json:"-"`
2955}
2956
2957func (s *SourceInfo) MarshalJSON() ([]byte, error) {
2958	type NoMethod SourceInfo
2959	raw := NoMethod(*s)
2960	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2961}
2962
2963// Status: The `Status` type defines a logical error model that is
2964// suitable for different programming environments, including REST APIs
2965// and RPC APIs. It is used by gRPC (https://github.com/grpc). Each
2966// `Status` message contains three pieces of data: error code, error
2967// message, and error details. You can find out more about this error
2968// model and how to work with it in the API Design Guide
2969// (https://cloud.google.com/apis/design/errors).
2970type Status struct {
2971	// Code: The status code, which should be an enum value of
2972	// google.rpc.Code.
2973	Code int64 `json:"code,omitempty"`
2974
2975	// Details: A list of messages that carry the error details. There is a
2976	// common set of message types for APIs to use.
2977	Details []googleapi.RawMessage `json:"details,omitempty"`
2978
2979	// Message: A developer-facing error message, which should be in
2980	// English. Any user-facing error message should be localized and sent
2981	// in the google.rpc.Status.details field, or localized by the client.
2982	Message string `json:"message,omitempty"`
2983
2984	// ForceSendFields is a list of field names (e.g. "Code") to
2985	// unconditionally include in API requests. By default, fields with
2986	// empty or default values are omitted from API requests. However, any
2987	// non-pointer, non-interface field appearing in ForceSendFields will be
2988	// sent to the server regardless of whether the field is empty or not.
2989	// This may be used to include empty fields in Patch requests.
2990	ForceSendFields []string `json:"-"`
2991
2992	// NullFields is a list of field names (e.g. "Code") to include in API
2993	// requests with the JSON null value. By default, fields with empty
2994	// values are omitted from API requests. However, any field with an
2995	// empty value appearing in NullFields will be sent to the server as
2996	// null. It is an error if a field in this list has a non-empty value.
2997	// This may be used to include null fields in Patch requests.
2998	NullFields []string `json:"-"`
2999}
3000
3001func (s *Status) MarshalJSON() ([]byte, error) {
3002	type NoMethod Status
3003	raw := NoMethod(*s)
3004	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3005}
3006
3007// SystemParameter: Define a parameter's name and location. The
3008// parameter may be passed as either an HTTP header or a URL query
3009// parameter, and if both are passed the behavior is
3010// implementation-dependent.
3011type SystemParameter struct {
3012	// HttpHeader: Define the HTTP header name to use for the parameter. It
3013	// is case insensitive.
3014	HttpHeader string `json:"httpHeader,omitempty"`
3015
3016	// Name: Define the name of the parameter, such as "api_key" . It is
3017	// case sensitive.
3018	Name string `json:"name,omitempty"`
3019
3020	// UrlQueryParameter: Define the URL query parameter name to use for the
3021	// parameter. It is case sensitive.
3022	UrlQueryParameter string `json:"urlQueryParameter,omitempty"`
3023
3024	// ForceSendFields is a list of field names (e.g. "HttpHeader") to
3025	// unconditionally include in API requests. By default, fields with
3026	// empty or default values are omitted from API requests. However, any
3027	// non-pointer, non-interface field appearing in ForceSendFields will be
3028	// sent to the server regardless of whether the field is empty or not.
3029	// This may be used to include empty fields in Patch requests.
3030	ForceSendFields []string `json:"-"`
3031
3032	// NullFields is a list of field names (e.g. "HttpHeader") to include in
3033	// API requests with the JSON null value. By default, fields with empty
3034	// values are omitted from API requests. However, any field with an
3035	// empty value appearing in NullFields will be sent to the server as
3036	// null. It is an error if a field in this list has a non-empty value.
3037	// This may be used to include null fields in Patch requests.
3038	NullFields []string `json:"-"`
3039}
3040
3041func (s *SystemParameter) MarshalJSON() ([]byte, error) {
3042	type NoMethod SystemParameter
3043	raw := NoMethod(*s)
3044	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3045}
3046
3047// SystemParameterRule: Define a system parameter rule mapping system
3048// parameter definitions to methods.
3049type SystemParameterRule struct {
3050	// Parameters: Define parameters. Multiple names may be defined for a
3051	// parameter. For a given method call, only one of them should be used.
3052	// If multiple names are used the behavior is implementation-dependent.
3053	// If none of the specified names are present the behavior is
3054	// parameter-dependent.
3055	Parameters []*SystemParameter `json:"parameters,omitempty"`
3056
3057	// Selector: Selects the methods to which this rule applies. Use '*' to
3058	// indicate all methods in all APIs. Refer to selector for syntax
3059	// details.
3060	Selector string `json:"selector,omitempty"`
3061
3062	// ForceSendFields is a list of field names (e.g. "Parameters") to
3063	// unconditionally include in API requests. By default, fields with
3064	// empty or default values are omitted from API requests. However, any
3065	// non-pointer, non-interface field appearing in ForceSendFields will be
3066	// sent to the server regardless of whether the field is empty or not.
3067	// This may be used to include empty fields in Patch requests.
3068	ForceSendFields []string `json:"-"`
3069
3070	// NullFields is a list of field names (e.g. "Parameters") to include in
3071	// API requests with the JSON null value. By default, fields with empty
3072	// values are omitted from API requests. However, any field with an
3073	// empty value appearing in NullFields will be sent to the server as
3074	// null. It is an error if a field in this list has a non-empty value.
3075	// This may be used to include null fields in Patch requests.
3076	NullFields []string `json:"-"`
3077}
3078
3079func (s *SystemParameterRule) MarshalJSON() ([]byte, error) {
3080	type NoMethod SystemParameterRule
3081	raw := NoMethod(*s)
3082	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3083}
3084
3085// SystemParameters: ### System parameter configuration A system
3086// parameter is a special kind of parameter defined by the API system,
3087// not by an individual API. It is typically mapped to an HTTP header
3088// and/or a URL query parameter. This configuration specifies which
3089// methods change the names of the system parameters.
3090type SystemParameters struct {
3091	// Rules: Define system parameters. The parameters defined here will
3092	// override the default parameters implemented by the system. If this
3093	// field is missing from the service config, default system parameters
3094	// will be used. Default system parameters and names is
3095	// implementation-dependent. Example: define api key for all methods
3096	// system_parameters rules: - selector: "*" parameters: - name: api_key
3097	// url_query_parameter: api_key Example: define 2 api key names for a
3098	// specific method. system_parameters rules: - selector: "/ListShelves"
3099	// parameters: - name: api_key http_header: Api-Key1 - name: api_key
3100	// http_header: Api-Key2 **NOTE:** All service configuration rules
3101	// follow "last one wins" order.
3102	Rules []*SystemParameterRule `json:"rules,omitempty"`
3103
3104	// ForceSendFields is a list of field names (e.g. "Rules") to
3105	// unconditionally include in API requests. By default, fields with
3106	// empty or default values are omitted from API requests. However, any
3107	// non-pointer, non-interface field appearing in ForceSendFields will be
3108	// sent to the server regardless of whether the field is empty or not.
3109	// This may be used to include empty fields in Patch requests.
3110	ForceSendFields []string `json:"-"`
3111
3112	// NullFields is a list of field names (e.g. "Rules") to include in API
3113	// requests with the JSON null value. By default, fields with empty
3114	// values are omitted from API requests. However, any field with an
3115	// empty value appearing in NullFields will be sent to the server as
3116	// null. It is an error if a field in this list has a non-empty value.
3117	// This may be used to include null fields in Patch requests.
3118	NullFields []string `json:"-"`
3119}
3120
3121func (s *SystemParameters) MarshalJSON() ([]byte, error) {
3122	type NoMethod SystemParameters
3123	raw := NoMethod(*s)
3124	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3125}
3126
3127// Type: A protocol buffer message type.
3128type Type struct {
3129	// Fields: The list of fields.
3130	Fields []*Field `json:"fields,omitempty"`
3131
3132	// Name: The fully qualified message name.
3133	Name string `json:"name,omitempty"`
3134
3135	// Oneofs: The list of types appearing in `oneof` definitions in this
3136	// type.
3137	Oneofs []string `json:"oneofs,omitempty"`
3138
3139	// Options: The protocol buffer options.
3140	Options []*Option `json:"options,omitempty"`
3141
3142	// SourceContext: The source context.
3143	SourceContext *SourceContext `json:"sourceContext,omitempty"`
3144
3145	// Syntax: The source syntax.
3146	//
3147	// Possible values:
3148	//   "SYNTAX_PROTO2" - Syntax `proto2`.
3149	//   "SYNTAX_PROTO3" - Syntax `proto3`.
3150	Syntax string `json:"syntax,omitempty"`
3151
3152	// ForceSendFields is a list of field names (e.g. "Fields") to
3153	// unconditionally include in API requests. By default, fields with
3154	// empty or default values are omitted from API requests. However, any
3155	// non-pointer, non-interface field appearing in ForceSendFields will be
3156	// sent to the server regardless of whether the field is empty or not.
3157	// This may be used to include empty fields in Patch requests.
3158	ForceSendFields []string `json:"-"`
3159
3160	// NullFields is a list of field names (e.g. "Fields") to include in API
3161	// requests with the JSON null value. By default, fields with empty
3162	// values are omitted from API requests. However, any field with an
3163	// empty value appearing in NullFields will be sent to the server as
3164	// null. It is an error if a field in this list has a non-empty value.
3165	// This may be used to include null fields in Patch requests.
3166	NullFields []string `json:"-"`
3167}
3168
3169func (s *Type) MarshalJSON() ([]byte, error) {
3170	type NoMethod Type
3171	raw := NoMethod(*s)
3172	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3173}
3174
3175// Usage: Configuration controlling usage of a service.
3176type Usage struct {
3177	// ProducerNotificationChannel: The full resource name of a channel used
3178	// for sending notifications to the service producer. Google Service
3179	// Management currently only supports Google Cloud Pub/Sub
3180	// (https://cloud.google.com/pubsub) as a notification channel. To use
3181	// Google Cloud Pub/Sub as the channel, this must be the name of a Cloud
3182	// Pub/Sub topic that uses the Cloud Pub/Sub topic name format
3183	// documented in https://cloud.google.com/pubsub/docs/overview.
3184	ProducerNotificationChannel string `json:"producerNotificationChannel,omitempty"`
3185
3186	// Requirements: Requirements that must be satisfied before a consumer
3187	// project can use the service. Each requirement is of the form /; for
3188	// example 'serviceusage.googleapis.com/billing-enabled'. For Google
3189	// APIs, a Terms of Service requirement must be included here. Google
3190	// Cloud APIs must include "serviceusage.googleapis.com/tos/cloud".
3191	// Other Google APIs should include
3192	// "serviceusage.googleapis.com/tos/universal". Additional ToS can be
3193	// included based on the business needs.
3194	Requirements []string `json:"requirements,omitempty"`
3195
3196	// Rules: A list of usage rules that apply to individual API methods.
3197	// **NOTE:** All service configuration rules follow "last one wins"
3198	// order.
3199	Rules []*UsageRule `json:"rules,omitempty"`
3200
3201	// ForceSendFields is a list of field names (e.g.
3202	// "ProducerNotificationChannel") to unconditionally include in API
3203	// requests. By default, fields with empty or default values are omitted
3204	// from API requests. However, any non-pointer, non-interface field
3205	// appearing in ForceSendFields will be sent to the server regardless of
3206	// whether the field is empty or not. This may be used to include empty
3207	// fields in Patch requests.
3208	ForceSendFields []string `json:"-"`
3209
3210	// NullFields is a list of field names (e.g.
3211	// "ProducerNotificationChannel") to include in API requests with the
3212	// JSON null value. By default, fields with empty values are omitted
3213	// from API requests. However, any field with an empty value appearing
3214	// in NullFields will be sent to the server as null. It is an error if a
3215	// field in this list has a non-empty value. This may be used to include
3216	// null fields in Patch requests.
3217	NullFields []string `json:"-"`
3218}
3219
3220func (s *Usage) MarshalJSON() ([]byte, error) {
3221	type NoMethod Usage
3222	raw := NoMethod(*s)
3223	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3224}
3225
3226// UsageRule: Usage configuration rules for the service. NOTE: Under
3227// development. Use this rule to configure unregistered calls for the
3228// service. Unregistered calls are calls that do not contain consumer
3229// project identity. (Example: calls that do not contain an API key). By
3230// default, API methods do not allow unregistered calls, and each method
3231// call must be identified by a consumer project identity. Use this rule
3232// to allow/disallow unregistered calls. Example of an API that wants to
3233// allow unregistered calls for entire service. usage: rules: -
3234// selector: "*" allow_unregistered_calls: true Example of a method that
3235// wants to allow unregistered calls. usage: rules: - selector:
3236// "google.example.library.v1.LibraryService.CreateBook"
3237// allow_unregistered_calls: true
3238type UsageRule struct {
3239	// AllowUnregisteredCalls: If true, the selected method allows
3240	// unregistered calls, e.g. calls that don't identify any user or
3241	// application.
3242	AllowUnregisteredCalls bool `json:"allowUnregisteredCalls,omitempty"`
3243
3244	// Selector: Selects the methods to which this rule applies. Use '*' to
3245	// indicate all methods in all APIs. Refer to selector for syntax
3246	// details.
3247	Selector string `json:"selector,omitempty"`
3248
3249	// SkipServiceControl: If true, the selected method should skip service
3250	// control and the control plane features, such as quota and billing,
3251	// will not be available. This flag is used by Google Cloud Endpoints to
3252	// bypass checks for internal methods, such as service health check
3253	// methods.
3254	SkipServiceControl bool `json:"skipServiceControl,omitempty"`
3255
3256	// ForceSendFields is a list of field names (e.g.
3257	// "AllowUnregisteredCalls") to unconditionally include in API requests.
3258	// By default, fields with empty or default values are omitted from API
3259	// requests. However, any non-pointer, non-interface field appearing in
3260	// ForceSendFields will be sent to the server regardless of whether the
3261	// field is empty or not. This may be used to include empty fields in
3262	// Patch requests.
3263	ForceSendFields []string `json:"-"`
3264
3265	// NullFields is a list of field names (e.g. "AllowUnregisteredCalls")
3266	// to include in API requests with the JSON null value. By default,
3267	// fields with empty values are omitted from API requests. However, any
3268	// field with an empty value appearing in NullFields will be sent to the
3269	// server as null. It is an error if a field in this list has a
3270	// non-empty value. This may be used to include null fields in Patch
3271	// requests.
3272	NullFields []string `json:"-"`
3273}
3274
3275func (s *UsageRule) MarshalJSON() ([]byte, error) {
3276	type NoMethod UsageRule
3277	raw := NoMethod(*s)
3278	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3279}
3280
3281// V1Beta1BatchCreateProducerOverridesResponse: Response message for
3282// BatchCreateProducerOverrides
3283type V1Beta1BatchCreateProducerOverridesResponse struct {
3284	// Overrides: The overrides that were created.
3285	Overrides []*V1Beta1QuotaOverride `json:"overrides,omitempty"`
3286
3287	// ForceSendFields is a list of field names (e.g. "Overrides") to
3288	// unconditionally include in API requests. By default, fields with
3289	// empty or default values are omitted from API requests. However, any
3290	// non-pointer, non-interface field appearing in ForceSendFields will be
3291	// sent to the server regardless of whether the field is empty or not.
3292	// This may be used to include empty fields in Patch requests.
3293	ForceSendFields []string `json:"-"`
3294
3295	// NullFields is a list of field names (e.g. "Overrides") to include in
3296	// API requests with the JSON null value. By default, fields with empty
3297	// values are omitted from API requests. However, any field with an
3298	// empty value appearing in NullFields will be sent to the server as
3299	// null. It is an error if a field in this list has a non-empty value.
3300	// This may be used to include null fields in Patch requests.
3301	NullFields []string `json:"-"`
3302}
3303
3304func (s *V1Beta1BatchCreateProducerOverridesResponse) MarshalJSON() ([]byte, error) {
3305	type NoMethod V1Beta1BatchCreateProducerOverridesResponse
3306	raw := NoMethod(*s)
3307	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3308}
3309
3310// V1Beta1ConsumerQuotaLimit: Consumer quota settings for a quota limit.
3311type V1Beta1ConsumerQuotaLimit struct {
3312	// IsPrecise: Whether this limit is precise or imprecise.
3313	IsPrecise bool `json:"isPrecise,omitempty"`
3314
3315	// Metric: The name of the parent metric of this limit. An example name
3316	// would be: `compute.googleapis.com/cpus`
3317	Metric string `json:"metric,omitempty"`
3318
3319	// Name: The resource name of the quota limit. An example name would be:
3320	// `services/compute.googleapis.com/projects/123/quotas/metrics/compute.g
3321	// oogleapis.com%2Fcpus/limits/%2Fproject%2Fregion` The resource name is
3322	// intended to be opaque and should not be parsed for its component
3323	// strings, since its representation could change in the future.
3324	Name string `json:"name,omitempty"`
3325
3326	// QuotaBuckets: Summary of the enforced quota buckets, organized by
3327	// quota dimension, ordered from least specific to most specific (for
3328	// example, the global default bucket, with no quota dimensions, will
3329	// always appear first).
3330	QuotaBuckets []*V1Beta1QuotaBucket `json:"quotaBuckets,omitempty"`
3331
3332	// Unit: The limit unit. An example unit would be:
3333	// `1/{project}/{region}` Note that `{project}` and `{region}` are not
3334	// placeholders in this example; the literal characters `{` and `}`
3335	// occur in the string.
3336	Unit string `json:"unit,omitempty"`
3337
3338	// ServerResponse contains the HTTP response code and headers from the
3339	// server.
3340	googleapi.ServerResponse `json:"-"`
3341
3342	// ForceSendFields is a list of field names (e.g. "IsPrecise") to
3343	// unconditionally include in API requests. By default, fields with
3344	// empty or default values are omitted from API requests. However, any
3345	// non-pointer, non-interface field appearing in ForceSendFields will be
3346	// sent to the server regardless of whether the field is empty or not.
3347	// This may be used to include empty fields in Patch requests.
3348	ForceSendFields []string `json:"-"`
3349
3350	// NullFields is a list of field names (e.g. "IsPrecise") to include in
3351	// API requests with the JSON null value. By default, fields with empty
3352	// values are omitted from API requests. However, any field with an
3353	// empty value appearing in NullFields will be sent to the server as
3354	// null. It is an error if a field in this list has a non-empty value.
3355	// This may be used to include null fields in Patch requests.
3356	NullFields []string `json:"-"`
3357}
3358
3359func (s *V1Beta1ConsumerQuotaLimit) MarshalJSON() ([]byte, error) {
3360	type NoMethod V1Beta1ConsumerQuotaLimit
3361	raw := NoMethod(*s)
3362	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3363}
3364
3365// V1Beta1ConsumerQuotaMetric: Consumer quota settings for a quota
3366// metric.
3367type V1Beta1ConsumerQuotaMetric struct {
3368	// ConsumerQuotaLimits: The consumer quota for each quota limit defined
3369	// on the metric.
3370	ConsumerQuotaLimits []*V1Beta1ConsumerQuotaLimit `json:"consumerQuotaLimits,omitempty"`
3371
3372	// DescendantConsumerQuotaLimits: The quota limits targeting the
3373	// descendant containers of the consumer in request. If the consumer in
3374	// request is of type `organizations` or `folders`, the field will list
3375	// per-project limits in the metric; if the consumer in request is of
3376	// type `project`, the field will be empty. The `quota_buckets` field of
3377	// each descendant consumer quota limit will not be populated.
3378	DescendantConsumerQuotaLimits []*V1Beta1ConsumerQuotaLimit `json:"descendantConsumerQuotaLimits,omitempty"`
3379
3380	// DisplayName: The display name of the metric. An example name would
3381	// be: "CPUs"
3382	DisplayName string `json:"displayName,omitempty"`
3383
3384	// Metric: The name of the metric. An example name would be:
3385	// `compute.googleapis.com/cpus`
3386	Metric string `json:"metric,omitempty"`
3387
3388	// Name: The resource name of the quota settings on this metric for this
3389	// consumer. An example name would be:
3390	// `services/serviceconsumermanagement.googleapis.com/projects/123/quota/
3391	// metrics/compute.googleapis.com%2Fcpus The resource name is intended
3392	// to be opaque and should not be parsed for its component strings,
3393	// since its representation could change in the future.
3394	Name string `json:"name,omitempty"`
3395
3396	// Unit: The units in which the metric value is reported.
3397	Unit string `json:"unit,omitempty"`
3398
3399	// ServerResponse contains the HTTP response code and headers from the
3400	// server.
3401	googleapi.ServerResponse `json:"-"`
3402
3403	// ForceSendFields is a list of field names (e.g. "ConsumerQuotaLimits")
3404	// to unconditionally include in API requests. By default, fields with
3405	// empty or default values are omitted from API requests. However, any
3406	// non-pointer, non-interface field appearing in ForceSendFields will be
3407	// sent to the server regardless of whether the field is empty or not.
3408	// This may be used to include empty fields in Patch requests.
3409	ForceSendFields []string `json:"-"`
3410
3411	// NullFields is a list of field names (e.g. "ConsumerQuotaLimits") to
3412	// include in API requests with the JSON null value. By default, fields
3413	// with empty values are omitted from API requests. However, any field
3414	// with an empty value appearing in NullFields will be sent to the
3415	// server as null. It is an error if a field in this list has a
3416	// non-empty value. This may be used to include null fields in Patch
3417	// requests.
3418	NullFields []string `json:"-"`
3419}
3420
3421func (s *V1Beta1ConsumerQuotaMetric) MarshalJSON() ([]byte, error) {
3422	type NoMethod V1Beta1ConsumerQuotaMetric
3423	raw := NoMethod(*s)
3424	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3425}
3426
3427// V1Beta1DisableConsumerResponse: Response message for the
3428// `DisableConsumer` method. This response message is assigned to the
3429// `response` field of the returned Operation when that operation is
3430// done.
3431type V1Beta1DisableConsumerResponse struct {
3432}
3433
3434// V1Beta1EnableConsumerResponse: Response message for the
3435// `EnableConsumer` method. This response message is assigned to the
3436// `response` field of the returned Operation when that operation is
3437// done.
3438type V1Beta1EnableConsumerResponse struct {
3439}
3440
3441// V1Beta1GenerateServiceIdentityResponse: Response message for the
3442// `GenerateServiceIdentity` method. This response message is assigned
3443// to the `response` field of the returned Operation when that operation
3444// is done.
3445type V1Beta1GenerateServiceIdentityResponse struct {
3446	// Identity: ServiceIdentity that was created or retrieved.
3447	Identity *V1Beta1ServiceIdentity `json:"identity,omitempty"`
3448
3449	// ForceSendFields is a list of field names (e.g. "Identity") to
3450	// unconditionally include in API requests. By default, fields with
3451	// empty or default values are omitted from API requests. However, any
3452	// non-pointer, non-interface field appearing in ForceSendFields will be
3453	// sent to the server regardless of whether the field is empty or not.
3454	// This may be used to include empty fields in Patch requests.
3455	ForceSendFields []string `json:"-"`
3456
3457	// NullFields is a list of field names (e.g. "Identity") to include in
3458	// API requests with the JSON null value. By default, fields with empty
3459	// values are omitted from API requests. However, any field with an
3460	// empty value appearing in NullFields will be sent to the server as
3461	// null. It is an error if a field in this list has a non-empty value.
3462	// This may be used to include null fields in Patch requests.
3463	NullFields []string `json:"-"`
3464}
3465
3466func (s *V1Beta1GenerateServiceIdentityResponse) MarshalJSON() ([]byte, error) {
3467	type NoMethod V1Beta1GenerateServiceIdentityResponse
3468	raw := NoMethod(*s)
3469	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3470}
3471
3472// V1Beta1ImportProducerOverridesRequest: Request message for
3473// ImportProducerOverrides
3474type V1Beta1ImportProducerOverridesRequest struct {
3475	// Force: Whether to force the creation of the quota overrides. Setting
3476	// the force parameter to 'true' ignores all quota safety checks that
3477	// would fail the request. QuotaSafetyCheck lists all such validations.
3478	Force bool `json:"force,omitempty"`
3479
3480	// ForceOnly: The list of quota safety checks to ignore before the
3481	// override mutation. Unlike 'force' field that ignores all the quota
3482	// safety checks, the 'force_only' field ignores only the specified
3483	// checks; other checks are still enforced. The 'force' and 'force_only'
3484	// fields cannot both be set.
3485	//
3486	// Possible values:
3487	//   "QUOTA_SAFETY_CHECK_UNSPECIFIED" - Unspecified quota safety check.
3488	//   "LIMIT_DECREASE_BELOW_USAGE" - Validates that a quota mutation
3489	// would not cause the consumer's effective limit to be lower than the
3490	// consumer's quota usage.
3491	//   "LIMIT_DECREASE_PERCENTAGE_TOO_HIGH" - Validates that a quota
3492	// mutation would not cause the consumer's effective limit to decrease
3493	// by more than 10 percent.
3494	ForceOnly []string `json:"forceOnly,omitempty"`
3495
3496	// InlineSource: The import data is specified in the request message
3497	// itself
3498	InlineSource *V1Beta1OverrideInlineSource `json:"inlineSource,omitempty"`
3499
3500	// ForceSendFields is a list of field names (e.g. "Force") to
3501	// unconditionally include in API requests. By default, fields with
3502	// empty or default values are omitted from API requests. However, any
3503	// non-pointer, non-interface field appearing in ForceSendFields will be
3504	// sent to the server regardless of whether the field is empty or not.
3505	// This may be used to include empty fields in Patch requests.
3506	ForceSendFields []string `json:"-"`
3507
3508	// NullFields is a list of field names (e.g. "Force") to include in API
3509	// requests with the JSON null value. By default, fields with empty
3510	// values are omitted from API requests. However, any field with an
3511	// empty value appearing in NullFields will be sent to the server as
3512	// null. It is an error if a field in this list has a non-empty value.
3513	// This may be used to include null fields in Patch requests.
3514	NullFields []string `json:"-"`
3515}
3516
3517func (s *V1Beta1ImportProducerOverridesRequest) MarshalJSON() ([]byte, error) {
3518	type NoMethod V1Beta1ImportProducerOverridesRequest
3519	raw := NoMethod(*s)
3520	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3521}
3522
3523// V1Beta1ImportProducerOverridesResponse: Response message for
3524// ImportProducerOverrides
3525type V1Beta1ImportProducerOverridesResponse struct {
3526	// Overrides: The overrides that were created from the imported data.
3527	Overrides []*V1Beta1QuotaOverride `json:"overrides,omitempty"`
3528
3529	// ForceSendFields is a list of field names (e.g. "Overrides") to
3530	// unconditionally include in API requests. By default, fields with
3531	// empty or default values are omitted from API requests. However, any
3532	// non-pointer, non-interface field appearing in ForceSendFields will be
3533	// sent to the server regardless of whether the field is empty or not.
3534	// This may be used to include empty fields in Patch requests.
3535	ForceSendFields []string `json:"-"`
3536
3537	// NullFields is a list of field names (e.g. "Overrides") to include in
3538	// API requests with the JSON null value. By default, fields with empty
3539	// values are omitted from API requests. However, any field with an
3540	// empty value appearing in NullFields will be sent to the server as
3541	// null. It is an error if a field in this list has a non-empty value.
3542	// This may be used to include null fields in Patch requests.
3543	NullFields []string `json:"-"`
3544}
3545
3546func (s *V1Beta1ImportProducerOverridesResponse) MarshalJSON() ([]byte, error) {
3547	type NoMethod V1Beta1ImportProducerOverridesResponse
3548	raw := NoMethod(*s)
3549	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3550}
3551
3552// V1Beta1ImportProducerQuotaPoliciesResponse: Response message for
3553// ImportProducerQuotaPolicies
3554type V1Beta1ImportProducerQuotaPoliciesResponse struct {
3555	// Policies: The policies that were created from the imported data.
3556	Policies []*V1Beta1ProducerQuotaPolicy `json:"policies,omitempty"`
3557
3558	// ForceSendFields is a list of field names (e.g. "Policies") to
3559	// unconditionally include in API requests. By default, fields with
3560	// empty or default values are omitted from API requests. However, any
3561	// non-pointer, non-interface field appearing in ForceSendFields will be
3562	// sent to the server regardless of whether the field is empty or not.
3563	// This may be used to include empty fields in Patch requests.
3564	ForceSendFields []string `json:"-"`
3565
3566	// NullFields is a list of field names (e.g. "Policies") to include in
3567	// API requests with the JSON null value. By default, fields with empty
3568	// values are omitted from API requests. However, any field with an
3569	// empty value appearing in NullFields will be sent to the server as
3570	// null. It is an error if a field in this list has a non-empty value.
3571	// This may be used to include null fields in Patch requests.
3572	NullFields []string `json:"-"`
3573}
3574
3575func (s *V1Beta1ImportProducerQuotaPoliciesResponse) MarshalJSON() ([]byte, error) {
3576	type NoMethod V1Beta1ImportProducerQuotaPoliciesResponse
3577	raw := NoMethod(*s)
3578	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3579}
3580
3581// V1Beta1ListConsumerQuotaMetricsResponse: Response message for
3582// ListConsumerQuotaMetrics.
3583type V1Beta1ListConsumerQuotaMetricsResponse struct {
3584	// Metrics: Quota settings for the consumer, organized by quota metric.
3585	Metrics []*V1Beta1ConsumerQuotaMetric `json:"metrics,omitempty"`
3586
3587	// NextPageToken: Token identifying which result to start with; returned
3588	// by a previous list call.
3589	NextPageToken string `json:"nextPageToken,omitempty"`
3590
3591	// ServerResponse contains the HTTP response code and headers from the
3592	// server.
3593	googleapi.ServerResponse `json:"-"`
3594
3595	// ForceSendFields is a list of field names (e.g. "Metrics") to
3596	// unconditionally include in API requests. By default, fields with
3597	// empty or default values are omitted from API requests. However, any
3598	// non-pointer, non-interface field appearing in ForceSendFields will be
3599	// sent to the server regardless of whether the field is empty or not.
3600	// This may be used to include empty fields in Patch requests.
3601	ForceSendFields []string `json:"-"`
3602
3603	// NullFields is a list of field names (e.g. "Metrics") to include in
3604	// API requests with the JSON null value. By default, fields with empty
3605	// values are omitted from API requests. However, any field with an
3606	// empty value appearing in NullFields will be sent to the server as
3607	// null. It is an error if a field in this list has a non-empty value.
3608	// This may be used to include null fields in Patch requests.
3609	NullFields []string `json:"-"`
3610}
3611
3612func (s *V1Beta1ListConsumerQuotaMetricsResponse) MarshalJSON() ([]byte, error) {
3613	type NoMethod V1Beta1ListConsumerQuotaMetricsResponse
3614	raw := NoMethod(*s)
3615	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3616}
3617
3618// V1Beta1ListProducerOverridesResponse: Response message for
3619// ListProducerOverrides.
3620type V1Beta1ListProducerOverridesResponse struct {
3621	// NextPageToken: Token identifying which result to start with; returned
3622	// by a previous list call.
3623	NextPageToken string `json:"nextPageToken,omitempty"`
3624
3625	// Overrides: Producer overrides on this limit.
3626	Overrides []*V1Beta1QuotaOverride `json:"overrides,omitempty"`
3627
3628	// ServerResponse contains the HTTP response code and headers from the
3629	// server.
3630	googleapi.ServerResponse `json:"-"`
3631
3632	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
3633	// unconditionally include in API requests. By default, fields with
3634	// empty or default values are omitted from API requests. However, any
3635	// non-pointer, non-interface field appearing in ForceSendFields will be
3636	// sent to the server regardless of whether the field is empty or not.
3637	// This may be used to include empty fields in Patch requests.
3638	ForceSendFields []string `json:"-"`
3639
3640	// NullFields is a list of field names (e.g. "NextPageToken") to include
3641	// in API requests with the JSON null value. By default, fields with
3642	// empty values are omitted from API requests. However, any field with
3643	// an empty value appearing in NullFields will be sent to the server as
3644	// null. It is an error if a field in this list has a non-empty value.
3645	// This may be used to include null fields in Patch requests.
3646	NullFields []string `json:"-"`
3647}
3648
3649func (s *V1Beta1ListProducerOverridesResponse) MarshalJSON() ([]byte, error) {
3650	type NoMethod V1Beta1ListProducerOverridesResponse
3651	raw := NoMethod(*s)
3652	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3653}
3654
3655// V1Beta1OverrideInlineSource: Import data embedded in the request
3656// message
3657type V1Beta1OverrideInlineSource struct {
3658	// Overrides: The overrides to create. Each override must have a value
3659	// for 'metric' and 'unit', to specify which metric and which limit the
3660	// override should be applied to. The 'name' field of the override does
3661	// not need to be set; it is ignored.
3662	Overrides []*V1Beta1QuotaOverride `json:"overrides,omitempty"`
3663
3664	// ForceSendFields is a list of field names (e.g. "Overrides") to
3665	// unconditionally include in API requests. By default, fields with
3666	// empty or default values are omitted from API requests. However, any
3667	// non-pointer, non-interface field appearing in ForceSendFields will be
3668	// sent to the server regardless of whether the field is empty or not.
3669	// This may be used to include empty fields in Patch requests.
3670	ForceSendFields []string `json:"-"`
3671
3672	// NullFields is a list of field names (e.g. "Overrides") to include in
3673	// API requests with the JSON null value. By default, fields with empty
3674	// values are omitted from API requests. However, any field with an
3675	// empty value appearing in NullFields will be sent to the server as
3676	// null. It is an error if a field in this list has a non-empty value.
3677	// This may be used to include null fields in Patch requests.
3678	NullFields []string `json:"-"`
3679}
3680
3681func (s *V1Beta1OverrideInlineSource) MarshalJSON() ([]byte, error) {
3682	type NoMethod V1Beta1OverrideInlineSource
3683	raw := NoMethod(*s)
3684	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3685}
3686
3687// V1Beta1ProducerQuotaPolicy: Quota policy created by service producer.
3688type V1Beta1ProducerQuotaPolicy struct {
3689	// Container: The cloud resource container at which the quota policy is
3690	// created. The format is {container_type}/{container_number}
3691	Container string `json:"container,omitempty"`
3692
3693	// Dimensions:  If this map is nonempty, then this policy applies only
3694	// to specific values for dimensions defined in the limit unit. For
3695	// example, an policy on a limit with the unit 1/{project}/{region}
3696	// could contain an entry with the key "region" and the value
3697	// "us-east-1"; the policy is only applied to quota consumed in that
3698	// region. This map has the following restrictions: * Keys that are not
3699	// defined in the limit's unit are not valid keys. Any string appearing
3700	// in {brackets} in the unit (besides {project} or {user}) is a defined
3701	// key. * "project" is not a valid key; the project is already specified
3702	// in the parent resource name. * "user" is not a valid key; the API
3703	// does not support quota polcies that apply only to a specific user. *
3704	// If "region" appears as a key, its value must be a valid Cloud region.
3705	// * If "zone" appears as a key, its value must be a valid Cloud zone. *
3706	// If any valid key other than "region" or "zone" appears in the map,
3707	// then all valid keys other than "region" or "zone" must also appear in
3708	// the map.
3709	Dimensions map[string]string `json:"dimensions,omitempty"`
3710
3711	// Metric: The name of the metric to which this policy applies. An
3712	// example name would be: `compute.googleapis.com/cpus`
3713	Metric string `json:"metric,omitempty"`
3714
3715	// Name: The resource name of the producer policy. An example name would
3716	// be:
3717	// `services/compute.googleapis.com/organizations/123/consumerQuotaMetric
3718	// s/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerQuo
3719	// taPolicies/4a3f2c1d`
3720	Name string `json:"name,omitempty"`
3721
3722	// PolicyValue: The quota policy value. Can be any nonnegative integer,
3723	// or -1 (unlimited quota).
3724	PolicyValue int64 `json:"policyValue,omitempty,string"`
3725
3726	// Unit: The limit unit of the limit to which this policy applies. An
3727	// example unit would be: `1/{project}/{region}` Note that `{project}`
3728	// and `{region}` are not placeholders in this example; the literal
3729	// characters `{` and `}` occur in the string.
3730	Unit string `json:"unit,omitempty"`
3731
3732	// ForceSendFields is a list of field names (e.g. "Container") to
3733	// unconditionally include in API requests. By default, fields with
3734	// empty or default values are omitted from API requests. However, any
3735	// non-pointer, non-interface field appearing in ForceSendFields will be
3736	// sent to the server regardless of whether the field is empty or not.
3737	// This may be used to include empty fields in Patch requests.
3738	ForceSendFields []string `json:"-"`
3739
3740	// NullFields is a list of field names (e.g. "Container") to include in
3741	// API requests with the JSON null value. By default, fields with empty
3742	// values are omitted from API requests. However, any field with an
3743	// empty value appearing in NullFields will be sent to the server as
3744	// null. It is an error if a field in this list has a non-empty value.
3745	// This may be used to include null fields in Patch requests.
3746	NullFields []string `json:"-"`
3747}
3748
3749func (s *V1Beta1ProducerQuotaPolicy) MarshalJSON() ([]byte, error) {
3750	type NoMethod V1Beta1ProducerQuotaPolicy
3751	raw := NoMethod(*s)
3752	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3753}
3754
3755// V1Beta1QuotaBucket: A quota bucket is a quota provisioning unit for a
3756// specific set of dimensions.
3757type V1Beta1QuotaBucket struct {
3758	// AdminOverride: Admin override on this quota bucket.
3759	AdminOverride *V1Beta1QuotaOverride `json:"adminOverride,omitempty"`
3760
3761	// ConsumerOverride: Consumer override on this quota bucket.
3762	ConsumerOverride *V1Beta1QuotaOverride `json:"consumerOverride,omitempty"`
3763
3764	// DefaultLimit: The default limit of this quota bucket, as specified by
3765	// the service configuration.
3766	DefaultLimit int64 `json:"defaultLimit,omitempty,string"`
3767
3768	// Dimensions: The dimensions of this quota bucket. If this map is
3769	// empty, this is the global bucket, which is the default quota value
3770	// applied to all requests that do not have a more specific override. If
3771	// this map is nonempty, the default limit, effective limit, and quota
3772	// overrides apply only to requests that have the dimensions given in
3773	// the map. For example, if the map has key "region" and value
3774	// "us-east-1", then the specified effective limit is only effective in
3775	// that region, and the specified overrides apply only in that region.
3776	Dimensions map[string]string `json:"dimensions,omitempty"`
3777
3778	// EffectiveLimit: The effective limit of this quota bucket. Equal to
3779	// default_limit if there are no overrides.
3780	EffectiveLimit int64 `json:"effectiveLimit,omitempty,string"`
3781
3782	// ProducerOverride: Producer override on this quota bucket.
3783	ProducerOverride *V1Beta1QuotaOverride `json:"producerOverride,omitempty"`
3784
3785	// ForceSendFields is a list of field names (e.g. "AdminOverride") to
3786	// unconditionally include in API requests. By default, fields with
3787	// empty or default values are omitted from API requests. However, any
3788	// non-pointer, non-interface field appearing in ForceSendFields will be
3789	// sent to the server regardless of whether the field is empty or not.
3790	// This may be used to include empty fields in Patch requests.
3791	ForceSendFields []string `json:"-"`
3792
3793	// NullFields is a list of field names (e.g. "AdminOverride") to include
3794	// in API requests with the JSON null value. By default, fields with
3795	// empty values are omitted from API requests. However, any field with
3796	// an empty value appearing in NullFields will be sent to the server as
3797	// null. It is an error if a field in this list has a non-empty value.
3798	// This may be used to include null fields in Patch requests.
3799	NullFields []string `json:"-"`
3800}
3801
3802func (s *V1Beta1QuotaBucket) MarshalJSON() ([]byte, error) {
3803	type NoMethod V1Beta1QuotaBucket
3804	raw := NoMethod(*s)
3805	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3806}
3807
3808// V1Beta1QuotaOverride: A quota override
3809type V1Beta1QuotaOverride struct {
3810	// AdminOverrideAncestor: The resource name of the ancestor that
3811	// requested the override. For example: "organizations/12345" or
3812	// "folders/67890". Used by admin overrides only.
3813	AdminOverrideAncestor string `json:"adminOverrideAncestor,omitempty"`
3814
3815	// Dimensions:  If this map is nonempty, then this override applies only
3816	// to specific values for dimensions defined in the limit unit. For
3817	// example, an override on a limit with the unit 1/{project}/{region}
3818	// could contain an entry with the key "region" and the value
3819	// "us-east-1"; the override is only applied to quota consumed in that
3820	// region. This map has the following restrictions: * Keys that are not
3821	// defined in the limit's unit are not valid keys. Any string appearing
3822	// in {brackets} in the unit (besides {project} or {user}) is a defined
3823	// key. * "project" is not a valid key; the project is already specified
3824	// in the parent resource name. * "user" is not a valid key; the API
3825	// does not support quota overrides that apply only to a specific user.
3826	// * If "region" appears as a key, its value must be a valid Cloud
3827	// region. * If "zone" appears as a key, its value must be a valid Cloud
3828	// zone. * If any valid key other than "region" or "zone" appears in the
3829	// map, then all valid keys other than "region" or "zone" must also
3830	// appear in the map.
3831	Dimensions map[string]string `json:"dimensions,omitempty"`
3832
3833	// Metric: The name of the metric to which this override applies. An
3834	// example name would be: `compute.googleapis.com/cpus`
3835	Metric string `json:"metric,omitempty"`
3836
3837	// Name: The resource name of the producer override. An example name
3838	// would be:
3839	// `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/com
3840	// pute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerOverride
3841	// s/4a3f2c1d`
3842	Name string `json:"name,omitempty"`
3843
3844	// OverrideValue: The overriding quota limit value. Can be any
3845	// nonnegative integer, or -1 (unlimited quota).
3846	OverrideValue int64 `json:"overrideValue,omitempty,string"`
3847
3848	// Unit: The limit unit of the limit to which this override applies. An
3849	// example unit would be: `1/{project}/{region}` Note that `{project}`
3850	// and `{region}` are not placeholders in this example; the literal
3851	// characters `{` and `}` occur in the string.
3852	Unit string `json:"unit,omitempty"`
3853
3854	// ForceSendFields is a list of field names (e.g.
3855	// "AdminOverrideAncestor") to unconditionally include in API requests.
3856	// By default, fields with empty or default values are omitted from API
3857	// requests. However, any non-pointer, non-interface field appearing in
3858	// ForceSendFields will be sent to the server regardless of whether the
3859	// field is empty or not. This may be used to include empty fields in
3860	// Patch requests.
3861	ForceSendFields []string `json:"-"`
3862
3863	// NullFields is a list of field names (e.g. "AdminOverrideAncestor") to
3864	// include in API requests with the JSON null value. By default, fields
3865	// with empty values are omitted from API requests. However, any field
3866	// with an empty value appearing in NullFields will be sent to the
3867	// server as null. It is an error if a field in this list has a
3868	// non-empty value. This may be used to include null fields in Patch
3869	// requests.
3870	NullFields []string `json:"-"`
3871}
3872
3873func (s *V1Beta1QuotaOverride) MarshalJSON() ([]byte, error) {
3874	type NoMethod V1Beta1QuotaOverride
3875	raw := NoMethod(*s)
3876	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3877}
3878
3879// V1Beta1RefreshConsumerResponse: Response message for the
3880// `RefreshConsumer` method. This response message is assigned to the
3881// `response` field of the returned Operation when that operation is
3882// done.
3883type V1Beta1RefreshConsumerResponse struct {
3884}
3885
3886// V1Beta1ServiceIdentity: A service identity in the Identity and Access
3887// Management API.
3888type V1Beta1ServiceIdentity struct {
3889	// Email: The email address of the service identity.
3890	Email string `json:"email,omitempty"`
3891
3892	// Name: P4 service identity resource name. An example name would be:
3893	// `services/serviceconsumermanagement.googleapis.com/projects/123/servic
3894	// eIdentities/default`
3895	Name string `json:"name,omitempty"`
3896
3897	// Tag: The P4 service identity configuration tag. This must be defined
3898	// in activation_grants. If not specified when creating the account, the
3899	// tag is set to "default".
3900	Tag string `json:"tag,omitempty"`
3901
3902	// UniqueId: The unique and stable id of the service identity.
3903	UniqueId string `json:"uniqueId,omitempty"`
3904
3905	// ForceSendFields is a list of field names (e.g. "Email") to
3906	// unconditionally include in API requests. By default, fields with
3907	// empty or default values are omitted from API requests. However, any
3908	// non-pointer, non-interface field appearing in ForceSendFields will be
3909	// sent to the server regardless of whether the field is empty or not.
3910	// This may be used to include empty fields in Patch requests.
3911	ForceSendFields []string `json:"-"`
3912
3913	// NullFields is a list of field names (e.g. "Email") to include in API
3914	// requests with the JSON null value. By default, fields with empty
3915	// values are omitted from API requests. However, any field with an
3916	// empty value appearing in NullFields will be sent to the server as
3917	// null. It is an error if a field in this list has a non-empty value.
3918	// This may be used to include null fields in Patch requests.
3919	NullFields []string `json:"-"`
3920}
3921
3922func (s *V1Beta1ServiceIdentity) MarshalJSON() ([]byte, error) {
3923	type NoMethod V1Beta1ServiceIdentity
3924	raw := NoMethod(*s)
3925	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3926}
3927
3928// V1beta1AddVisibilityLabelsResponse: Response message for the
3929// `AddVisibilityLabels` method. This response message is assigned to
3930// the `response` field of the returned Operation when that operation is
3931// done.
3932type V1beta1AddVisibilityLabelsResponse struct {
3933	// Labels: The updated set of visibility labels for this consumer on
3934	// this service.
3935	Labels []string `json:"labels,omitempty"`
3936
3937	// ForceSendFields is a list of field names (e.g. "Labels") to
3938	// unconditionally include in API requests. By default, fields with
3939	// empty or default values are omitted from API requests. However, any
3940	// non-pointer, non-interface field appearing in ForceSendFields will be
3941	// sent to the server regardless of whether the field is empty or not.
3942	// This may be used to include empty fields in Patch requests.
3943	ForceSendFields []string `json:"-"`
3944
3945	// NullFields is a list of field names (e.g. "Labels") to include in API
3946	// requests with the JSON null value. By default, fields with empty
3947	// values are omitted from API requests. However, any field with an
3948	// empty value appearing in NullFields will be sent to the server as
3949	// null. It is an error if a field in this list has a non-empty value.
3950	// This may be used to include null fields in Patch requests.
3951	NullFields []string `json:"-"`
3952}
3953
3954func (s *V1beta1AddVisibilityLabelsResponse) MarshalJSON() ([]byte, error) {
3955	type NoMethod V1beta1AddVisibilityLabelsResponse
3956	raw := NoMethod(*s)
3957	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3958}
3959
3960// V1beta1DefaultIdentity: A default identity in the Identity and Access
3961// Management API.
3962type V1beta1DefaultIdentity struct {
3963	// Email: The email address of the default identity.
3964	Email string `json:"email,omitempty"`
3965
3966	// Name: Default identity resource name. An example name would be:
3967	// `services/serviceconsumermanagement.googleapis.com/projects/123/defaul
3968	// tIdentity`
3969	Name string `json:"name,omitempty"`
3970
3971	// Tag: The Default Identity tag. If specified when creating the
3972	// account, the tag must be present in activation_grants. If not
3973	// specified when creating the account, the tag is set to the tag
3974	// specified in activation_grants.
3975	Tag string `json:"tag,omitempty"`
3976
3977	// UniqueId: The unique and stable id of the default identity.
3978	UniqueId string `json:"uniqueId,omitempty"`
3979
3980	// ForceSendFields is a list of field names (e.g. "Email") to
3981	// unconditionally include in API requests. By default, fields with
3982	// empty or default values are omitted from API requests. However, any
3983	// non-pointer, non-interface field appearing in ForceSendFields will be
3984	// sent to the server regardless of whether the field is empty or not.
3985	// This may be used to include empty fields in Patch requests.
3986	ForceSendFields []string `json:"-"`
3987
3988	// NullFields is a list of field names (e.g. "Email") to include in API
3989	// requests with the JSON null value. By default, fields with empty
3990	// values are omitted from API requests. However, any field with an
3991	// empty value appearing in NullFields will be sent to the server as
3992	// null. It is an error if a field in this list has a non-empty value.
3993	// This may be used to include null fields in Patch requests.
3994	NullFields []string `json:"-"`
3995}
3996
3997func (s *V1beta1DefaultIdentity) MarshalJSON() ([]byte, error) {
3998	type NoMethod V1beta1DefaultIdentity
3999	raw := NoMethod(*s)
4000	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4001}
4002
4003// V1beta1DisableConsumerResponse: Response message for the
4004// `DisableConsumer` method. This response message is assigned to the
4005// `response` field of the returned Operation when that operation is
4006// done.
4007type V1beta1DisableConsumerResponse struct {
4008}
4009
4010// V1beta1EnableConsumerResponse: Response message for the
4011// `EnableConsumer` method. This response message is assigned to the
4012// `response` field of the returned Operation when that operation is
4013// done.
4014type V1beta1EnableConsumerResponse struct {
4015}
4016
4017// V1beta1GenerateDefaultIdentityResponse: Response message for the
4018// `GenerateDefaultIdentity` method. This response message is assigned
4019// to the `response` field of the returned Operation when that operation
4020// is done.
4021type V1beta1GenerateDefaultIdentityResponse struct {
4022	// AttachStatus: Status of the role attachment. Under development
4023	// (go/si-attach-role), currently always return
4024	// ATTACH_STATUS_UNSPECIFIED)
4025	//
4026	// Possible values:
4027	//   "ATTACH_STATUS_UNSPECIFIED" - Indicates that the AttachStatus was
4028	// not set.
4029	//   "ATTACHED" - The default identity was attached to a role
4030	// successfully in this request.
4031	//   "ATTACH_SKIPPED" - The request specified that no attempt should be
4032	// made to attach the role.
4033	//   "PREVIOUSLY_ATTACHED" - Role was attached to the consumer project
4034	// at some point in time. Tenant manager doesn't make assertion about
4035	// the current state of the identity with respect to the consumer. Role
4036	// attachment should happen only once after activation and cannot be
4037	// reattached after customer removes it. (go/si-attach-role)
4038	//   "ATTACH_DENIED_BY_ORG_POLICY" - Role attachment was denied in this
4039	// request by customer set org policy. (go/si-attach-role)
4040	AttachStatus string `json:"attachStatus,omitempty"`
4041
4042	// Identity: DefaultIdentity that was created or retrieved.
4043	Identity *V1beta1DefaultIdentity `json:"identity,omitempty"`
4044
4045	// Role: Role attached to consumer project. Empty if not attached in
4046	// this request. (Under development, currently always return empty.)
4047	Role string `json:"role,omitempty"`
4048
4049	// ForceSendFields is a list of field names (e.g. "AttachStatus") to
4050	// unconditionally include in API requests. By default, fields with
4051	// empty or default values are omitted from API requests. However, any
4052	// non-pointer, non-interface field appearing in ForceSendFields will be
4053	// sent to the server regardless of whether the field is empty or not.
4054	// This may be used to include empty fields in Patch requests.
4055	ForceSendFields []string `json:"-"`
4056
4057	// NullFields is a list of field names (e.g. "AttachStatus") to include
4058	// in API requests with the JSON null value. By default, fields with
4059	// empty values are omitted from API requests. However, any field with
4060	// an empty value appearing in NullFields will be sent to the server as
4061	// null. It is an error if a field in this list has a non-empty value.
4062	// This may be used to include null fields in Patch requests.
4063	NullFields []string `json:"-"`
4064}
4065
4066func (s *V1beta1GenerateDefaultIdentityResponse) MarshalJSON() ([]byte, error) {
4067	type NoMethod V1beta1GenerateDefaultIdentityResponse
4068	raw := NoMethod(*s)
4069	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4070}
4071
4072// V1beta1GenerateServiceAccountResponse: Response message for the
4073// `GenerateServiceAccount` method. This response message is assigned to
4074// the `response` field of the returned Operation when that operation is
4075// done.
4076type V1beta1GenerateServiceAccountResponse struct {
4077	// Account: ServiceAccount that was created or retrieved.
4078	Account *V1beta1ServiceAccount `json:"account,omitempty"`
4079
4080	// ForceSendFields is a list of field names (e.g. "Account") to
4081	// unconditionally include in API requests. By default, fields with
4082	// empty or default values are omitted from API requests. However, any
4083	// non-pointer, non-interface field appearing in ForceSendFields will be
4084	// sent to the server regardless of whether the field is empty or not.
4085	// This may be used to include empty fields in Patch requests.
4086	ForceSendFields []string `json:"-"`
4087
4088	// NullFields is a list of field names (e.g. "Account") to include in
4089	// API requests with the JSON null value. By default, fields with empty
4090	// values are omitted from API requests. However, any field with an
4091	// empty value appearing in NullFields will be sent to the server as
4092	// null. It is an error if a field in this list has a non-empty value.
4093	// This may be used to include null fields in Patch requests.
4094	NullFields []string `json:"-"`
4095}
4096
4097func (s *V1beta1GenerateServiceAccountResponse) MarshalJSON() ([]byte, error) {
4098	type NoMethod V1beta1GenerateServiceAccountResponse
4099	raw := NoMethod(*s)
4100	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4101}
4102
4103// V1beta1RefreshConsumerResponse: Response message for the
4104// `RefreshConsumer` method. This response message is assigned to the
4105// `response` field of the returned Operation when that operation is
4106// done.
4107type V1beta1RefreshConsumerResponse struct {
4108}
4109
4110// V1beta1RemoveVisibilityLabelsResponse: Response message for the
4111// `RemoveVisibilityLabels` method. This response message is assigned to
4112// the `response` field of the returned Operation when that operation is
4113// done.
4114type V1beta1RemoveVisibilityLabelsResponse struct {
4115	// Labels: The updated set of visibility labels for this consumer on
4116	// this service.
4117	Labels []string `json:"labels,omitempty"`
4118
4119	// ForceSendFields is a list of field names (e.g. "Labels") to
4120	// unconditionally include in API requests. By default, fields with
4121	// empty or default values are omitted from API requests. However, any
4122	// non-pointer, non-interface field appearing in ForceSendFields will be
4123	// sent to the server regardless of whether the field is empty or not.
4124	// This may be used to include empty fields in Patch requests.
4125	ForceSendFields []string `json:"-"`
4126
4127	// NullFields is a list of field names (e.g. "Labels") to include in API
4128	// requests with the JSON null value. By default, fields with empty
4129	// values are omitted from API requests. However, any field with an
4130	// empty value appearing in NullFields will be sent to the server as
4131	// null. It is an error if a field in this list has a non-empty value.
4132	// This may be used to include null fields in Patch requests.
4133	NullFields []string `json:"-"`
4134}
4135
4136func (s *V1beta1RemoveVisibilityLabelsResponse) MarshalJSON() ([]byte, error) {
4137	type NoMethod V1beta1RemoveVisibilityLabelsResponse
4138	raw := NoMethod(*s)
4139	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4140}
4141
4142// V1beta1ServiceAccount: A service account in the Identity and Access
4143// Management API.
4144type V1beta1ServiceAccount struct {
4145	// Email: The email address of the service account.
4146	Email string `json:"email,omitempty"`
4147
4148	// IamAccountName: Deprecated. See b/136209818.
4149	IamAccountName string `json:"iamAccountName,omitempty"`
4150
4151	// Name: P4 SA resource name. An example name would be:
4152	// `services/serviceconsumermanagement.googleapis.com/projects/123/servic
4153	// eAccounts/default`
4154	Name string `json:"name,omitempty"`
4155
4156	// Tag: The P4 SA configuration tag. This must be defined in
4157	// activation_grants. If not specified when creating the account, the
4158	// tag is set to "default".
4159	Tag string `json:"tag,omitempty"`
4160
4161	// UniqueId: The unique and stable id of the service account.
4162	UniqueId string `json:"uniqueId,omitempty"`
4163
4164	// ForceSendFields is a list of field names (e.g. "Email") to
4165	// unconditionally include in API requests. By default, fields with
4166	// empty or default values are omitted from API requests. However, any
4167	// non-pointer, non-interface field appearing in ForceSendFields will be
4168	// sent to the server regardless of whether the field is empty or not.
4169	// This may be used to include empty fields in Patch requests.
4170	ForceSendFields []string `json:"-"`
4171
4172	// NullFields is a list of field names (e.g. "Email") to include in API
4173	// requests with the JSON null value. By default, fields with empty
4174	// values are omitted from API requests. However, any field with an
4175	// empty value appearing in NullFields will be sent to the server as
4176	// null. It is an error if a field in this list has a non-empty value.
4177	// This may be used to include null fields in Patch requests.
4178	NullFields []string `json:"-"`
4179}
4180
4181func (s *V1beta1ServiceAccount) MarshalJSON() ([]byte, error) {
4182	type NoMethod V1beta1ServiceAccount
4183	raw := NoMethod(*s)
4184	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4185}
4186
4187// method id "serviceconsumermanagement.operations.get":
4188
4189type OperationsGetCall struct {
4190	s            *APIService
4191	name         string
4192	urlParams_   gensupport.URLParams
4193	ifNoneMatch_ string
4194	ctx_         context.Context
4195	header_      http.Header
4196}
4197
4198// Get: Gets the latest state of a long-running operation. Clients can
4199// use this method to poll the operation result at intervals as
4200// recommended by the API service.
4201//
4202// - name: The name of the operation resource.
4203func (r *OperationsService) Get(name string) *OperationsGetCall {
4204	c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4205	c.name = name
4206	return c
4207}
4208
4209// Fields allows partial responses to be retrieved. See
4210// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4211// for more information.
4212func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall {
4213	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4214	return c
4215}
4216
4217// IfNoneMatch sets the optional parameter which makes the operation
4218// fail if the object's ETag matches the given value. This is useful for
4219// getting updates only after the object has changed since the last
4220// request. Use googleapi.IsNotModified to check whether the response
4221// error from Do is the result of In-None-Match.
4222func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall {
4223	c.ifNoneMatch_ = entityTag
4224	return c
4225}
4226
4227// Context sets the context to be used in this call's Do method. Any
4228// pending HTTP request will be aborted if the provided context is
4229// canceled.
4230func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall {
4231	c.ctx_ = ctx
4232	return c
4233}
4234
4235// Header returns an http.Header that can be modified by the caller to
4236// add HTTP headers to the request.
4237func (c *OperationsGetCall) Header() http.Header {
4238	if c.header_ == nil {
4239		c.header_ = make(http.Header)
4240	}
4241	return c.header_
4242}
4243
4244func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
4245	reqHeaders := make(http.Header)
4246	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
4247	for k, v := range c.header_ {
4248		reqHeaders[k] = v
4249	}
4250	reqHeaders.Set("User-Agent", c.s.userAgent())
4251	if c.ifNoneMatch_ != "" {
4252		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
4253	}
4254	var body io.Reader = nil
4255	c.urlParams_.Set("alt", alt)
4256	c.urlParams_.Set("prettyPrint", "false")
4257	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
4258	urls += "?" + c.urlParams_.Encode()
4259	req, err := http.NewRequest("GET", urls, body)
4260	if err != nil {
4261		return nil, err
4262	}
4263	req.Header = reqHeaders
4264	googleapi.Expand(req.URL, map[string]string{
4265		"name": c.name,
4266	})
4267	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4268}
4269
4270// Do executes the "serviceconsumermanagement.operations.get" call.
4271// Exactly one of *Operation or error will be non-nil. Any non-2xx
4272// status code is an error. Response headers are in either
4273// *Operation.ServerResponse.Header or (if a response was returned at
4274// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
4275// to check whether the returned error was because
4276// http.StatusNotModified was returned.
4277func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
4278	gensupport.SetOptions(c.urlParams_, opts...)
4279	res, err := c.doRequest("json")
4280	if res != nil && res.StatusCode == http.StatusNotModified {
4281		if res.Body != nil {
4282			res.Body.Close()
4283		}
4284		return nil, &googleapi.Error{
4285			Code:   res.StatusCode,
4286			Header: res.Header,
4287		}
4288	}
4289	if err != nil {
4290		return nil, err
4291	}
4292	defer googleapi.CloseBody(res)
4293	if err := googleapi.CheckResponse(res); err != nil {
4294		return nil, err
4295	}
4296	ret := &Operation{
4297		ServerResponse: googleapi.ServerResponse{
4298			Header:         res.Header,
4299			HTTPStatusCode: res.StatusCode,
4300		},
4301	}
4302	target := &ret
4303	if err := gensupport.DecodeResponse(target, res); err != nil {
4304		return nil, err
4305	}
4306	return ret, nil
4307	// {
4308	//   "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
4309	//   "flatPath": "v1beta1/operations/{operationsId}",
4310	//   "httpMethod": "GET",
4311	//   "id": "serviceconsumermanagement.operations.get",
4312	//   "parameterOrder": [
4313	//     "name"
4314	//   ],
4315	//   "parameters": {
4316	//     "name": {
4317	//       "description": "The name of the operation resource.",
4318	//       "location": "path",
4319	//       "pattern": "^operations/[^/]+$",
4320	//       "required": true,
4321	//       "type": "string"
4322	//     }
4323	//   },
4324	//   "path": "v1beta1/{+name}",
4325	//   "response": {
4326	//     "$ref": "Operation"
4327	//   },
4328	//   "scopes": [
4329	//     "https://www.googleapis.com/auth/cloud-platform"
4330	//   ]
4331	// }
4332
4333}
4334
4335// method id "serviceconsumermanagement.services.consumerQuotaMetrics.get":
4336
4337type ServicesConsumerQuotaMetricsGetCall struct {
4338	s            *APIService
4339	name         string
4340	urlParams_   gensupport.URLParams
4341	ifNoneMatch_ string
4342	ctx_         context.Context
4343	header_      http.Header
4344}
4345
4346// Get: Retrieves a summary of quota information for a specific quota
4347// metric.
4348//
4349// - name: The resource name of the quota metric, returned by a
4350//   ListConsumerQuotaMetrics call. An example name would be:
4351//   `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/c
4352//   ompute.googleapis.com%2Fcpus`.
4353func (r *ServicesConsumerQuotaMetricsService) Get(name string) *ServicesConsumerQuotaMetricsGetCall {
4354	c := &ServicesConsumerQuotaMetricsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4355	c.name = name
4356	return c
4357}
4358
4359// View sets the optional parameter "view": Specifies the level of
4360// detail for quota information in the response.
4361//
4362// Possible values:
4363//   "QUOTA_VIEW_UNSPECIFIED" - No quota view specified. Requests that
4364// do not specify a quota view will typically default to the BASIC view.
4365//   "BASIC" - Only buckets with overrides are shown in the response.
4366//   "FULL" - Include per-location buckets even if they do not have
4367// overrides. When the view is FULL, and a limit has regional or zonal
4368// quota, the limit will include buckets for all regions or zones that
4369// could support overrides, even if none are currently present. In some
4370// cases this will cause the response to become very large; callers that
4371// do not need this extra information should use the BASIC view instead.
4372func (c *ServicesConsumerQuotaMetricsGetCall) View(view string) *ServicesConsumerQuotaMetricsGetCall {
4373	c.urlParams_.Set("view", view)
4374	return c
4375}
4376
4377// Fields allows partial responses to be retrieved. See
4378// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4379// for more information.
4380func (c *ServicesConsumerQuotaMetricsGetCall) Fields(s ...googleapi.Field) *ServicesConsumerQuotaMetricsGetCall {
4381	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4382	return c
4383}
4384
4385// IfNoneMatch sets the optional parameter which makes the operation
4386// fail if the object's ETag matches the given value. This is useful for
4387// getting updates only after the object has changed since the last
4388// request. Use googleapi.IsNotModified to check whether the response
4389// error from Do is the result of In-None-Match.
4390func (c *ServicesConsumerQuotaMetricsGetCall) IfNoneMatch(entityTag string) *ServicesConsumerQuotaMetricsGetCall {
4391	c.ifNoneMatch_ = entityTag
4392	return c
4393}
4394
4395// Context sets the context to be used in this call's Do method. Any
4396// pending HTTP request will be aborted if the provided context is
4397// canceled.
4398func (c *ServicesConsumerQuotaMetricsGetCall) Context(ctx context.Context) *ServicesConsumerQuotaMetricsGetCall {
4399	c.ctx_ = ctx
4400	return c
4401}
4402
4403// Header returns an http.Header that can be modified by the caller to
4404// add HTTP headers to the request.
4405func (c *ServicesConsumerQuotaMetricsGetCall) Header() http.Header {
4406	if c.header_ == nil {
4407		c.header_ = make(http.Header)
4408	}
4409	return c.header_
4410}
4411
4412func (c *ServicesConsumerQuotaMetricsGetCall) doRequest(alt string) (*http.Response, error) {
4413	reqHeaders := make(http.Header)
4414	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
4415	for k, v := range c.header_ {
4416		reqHeaders[k] = v
4417	}
4418	reqHeaders.Set("User-Agent", c.s.userAgent())
4419	if c.ifNoneMatch_ != "" {
4420		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
4421	}
4422	var body io.Reader = nil
4423	c.urlParams_.Set("alt", alt)
4424	c.urlParams_.Set("prettyPrint", "false")
4425	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
4426	urls += "?" + c.urlParams_.Encode()
4427	req, err := http.NewRequest("GET", urls, body)
4428	if err != nil {
4429		return nil, err
4430	}
4431	req.Header = reqHeaders
4432	googleapi.Expand(req.URL, map[string]string{
4433		"name": c.name,
4434	})
4435	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4436}
4437
4438// Do executes the "serviceconsumermanagement.services.consumerQuotaMetrics.get" call.
4439// Exactly one of *V1Beta1ConsumerQuotaMetric or error will be non-nil.
4440// Any non-2xx status code is an error. Response headers are in either
4441// *V1Beta1ConsumerQuotaMetric.ServerResponse.Header or (if a response
4442// was returned at all) in error.(*googleapi.Error).Header. Use
4443// googleapi.IsNotModified to check whether the returned error was
4444// because http.StatusNotModified was returned.
4445func (c *ServicesConsumerQuotaMetricsGetCall) Do(opts ...googleapi.CallOption) (*V1Beta1ConsumerQuotaMetric, error) {
4446	gensupport.SetOptions(c.urlParams_, opts...)
4447	res, err := c.doRequest("json")
4448	if res != nil && res.StatusCode == http.StatusNotModified {
4449		if res.Body != nil {
4450			res.Body.Close()
4451		}
4452		return nil, &googleapi.Error{
4453			Code:   res.StatusCode,
4454			Header: res.Header,
4455		}
4456	}
4457	if err != nil {
4458		return nil, err
4459	}
4460	defer googleapi.CloseBody(res)
4461	if err := googleapi.CheckResponse(res); err != nil {
4462		return nil, err
4463	}
4464	ret := &V1Beta1ConsumerQuotaMetric{
4465		ServerResponse: googleapi.ServerResponse{
4466			Header:         res.Header,
4467			HTTPStatusCode: res.StatusCode,
4468		},
4469	}
4470	target := &ret
4471	if err := gensupport.DecodeResponse(target, res); err != nil {
4472		return nil, err
4473	}
4474	return ret, nil
4475	// {
4476	//   "description": "Retrieves a summary of quota information for a specific quota metric.",
4477	//   "flatPath": "v1beta1/services/{servicesId}/{servicesId1}/{servicesId2}/consumerQuotaMetrics/{consumerQuotaMetricsId}",
4478	//   "httpMethod": "GET",
4479	//   "id": "serviceconsumermanagement.services.consumerQuotaMetrics.get",
4480	//   "parameterOrder": [
4481	//     "name"
4482	//   ],
4483	//   "parameters": {
4484	//     "name": {
4485	//       "description": "The resource name of the quota metric, returned by a ListConsumerQuotaMetrics call. An example name would be: `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/compute.googleapis.com%2Fcpus`",
4486	//       "location": "path",
4487	//       "pattern": "^services/[^/]+/[^/]+/[^/]+/consumerQuotaMetrics/[^/]+$",
4488	//       "required": true,
4489	//       "type": "string"
4490	//     },
4491	//     "view": {
4492	//       "description": "Specifies the level of detail for quota information in the response.",
4493	//       "enum": [
4494	//         "QUOTA_VIEW_UNSPECIFIED",
4495	//         "BASIC",
4496	//         "FULL"
4497	//       ],
4498	//       "enumDescriptions": [
4499	//         "No quota view specified. Requests that do not specify a quota view will typically default to the BASIC view.",
4500	//         "Only buckets with overrides are shown in the response.",
4501	//         "Include per-location buckets even if they do not have overrides. When the view is FULL, and a limit has regional or zonal quota, the limit will include buckets for all regions or zones that could support overrides, even if none are currently present. In some cases this will cause the response to become very large; callers that do not need this extra information should use the BASIC view instead."
4502	//       ],
4503	//       "location": "query",
4504	//       "type": "string"
4505	//     }
4506	//   },
4507	//   "path": "v1beta1/{+name}",
4508	//   "response": {
4509	//     "$ref": "V1Beta1ConsumerQuotaMetric"
4510	//   },
4511	//   "scopes": [
4512	//     "https://www.googleapis.com/auth/cloud-platform"
4513	//   ]
4514	// }
4515
4516}
4517
4518// method id "serviceconsumermanagement.services.consumerQuotaMetrics.importProducerOverrides":
4519
4520type ServicesConsumerQuotaMetricsImportProducerOverridesCall struct {
4521	s                                     *APIService
4522	parent                                string
4523	v1beta1importproduceroverridesrequest *V1Beta1ImportProducerOverridesRequest
4524	urlParams_                            gensupport.URLParams
4525	ctx_                                  context.Context
4526	header_                               http.Header
4527}
4528
4529// ImportProducerOverrides: Create or update multiple producer overrides
4530// atomically, all on the same consumer, but on many different metrics
4531// or limits. The name field in the quota override message should not be
4532// set.
4533//
4534// - parent: The resource name of the consumer. An example name would
4535//   be: `services/compute.googleapis.com/projects/123`.
4536func (r *ServicesConsumerQuotaMetricsService) ImportProducerOverrides(parent string, v1beta1importproduceroverridesrequest *V1Beta1ImportProducerOverridesRequest) *ServicesConsumerQuotaMetricsImportProducerOverridesCall {
4537	c := &ServicesConsumerQuotaMetricsImportProducerOverridesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4538	c.parent = parent
4539	c.v1beta1importproduceroverridesrequest = v1beta1importproduceroverridesrequest
4540	return c
4541}
4542
4543// Fields allows partial responses to be retrieved. See
4544// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4545// for more information.
4546func (c *ServicesConsumerQuotaMetricsImportProducerOverridesCall) Fields(s ...googleapi.Field) *ServicesConsumerQuotaMetricsImportProducerOverridesCall {
4547	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4548	return c
4549}
4550
4551// Context sets the context to be used in this call's Do method. Any
4552// pending HTTP request will be aborted if the provided context is
4553// canceled.
4554func (c *ServicesConsumerQuotaMetricsImportProducerOverridesCall) Context(ctx context.Context) *ServicesConsumerQuotaMetricsImportProducerOverridesCall {
4555	c.ctx_ = ctx
4556	return c
4557}
4558
4559// Header returns an http.Header that can be modified by the caller to
4560// add HTTP headers to the request.
4561func (c *ServicesConsumerQuotaMetricsImportProducerOverridesCall) Header() http.Header {
4562	if c.header_ == nil {
4563		c.header_ = make(http.Header)
4564	}
4565	return c.header_
4566}
4567
4568func (c *ServicesConsumerQuotaMetricsImportProducerOverridesCall) doRequest(alt string) (*http.Response, error) {
4569	reqHeaders := make(http.Header)
4570	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
4571	for k, v := range c.header_ {
4572		reqHeaders[k] = v
4573	}
4574	reqHeaders.Set("User-Agent", c.s.userAgent())
4575	var body io.Reader = nil
4576	body, err := googleapi.WithoutDataWrapper.JSONReader(c.v1beta1importproduceroverridesrequest)
4577	if err != nil {
4578		return nil, err
4579	}
4580	reqHeaders.Set("Content-Type", "application/json")
4581	c.urlParams_.Set("alt", alt)
4582	c.urlParams_.Set("prettyPrint", "false")
4583	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/consumerQuotaMetrics:importProducerOverrides")
4584	urls += "?" + c.urlParams_.Encode()
4585	req, err := http.NewRequest("POST", urls, body)
4586	if err != nil {
4587		return nil, err
4588	}
4589	req.Header = reqHeaders
4590	googleapi.Expand(req.URL, map[string]string{
4591		"parent": c.parent,
4592	})
4593	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4594}
4595
4596// Do executes the "serviceconsumermanagement.services.consumerQuotaMetrics.importProducerOverrides" call.
4597// Exactly one of *Operation or error will be non-nil. Any non-2xx
4598// status code is an error. Response headers are in either
4599// *Operation.ServerResponse.Header or (if a response was returned at
4600// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
4601// to check whether the returned error was because
4602// http.StatusNotModified was returned.
4603func (c *ServicesConsumerQuotaMetricsImportProducerOverridesCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
4604	gensupport.SetOptions(c.urlParams_, opts...)
4605	res, err := c.doRequest("json")
4606	if res != nil && res.StatusCode == http.StatusNotModified {
4607		if res.Body != nil {
4608			res.Body.Close()
4609		}
4610		return nil, &googleapi.Error{
4611			Code:   res.StatusCode,
4612			Header: res.Header,
4613		}
4614	}
4615	if err != nil {
4616		return nil, err
4617	}
4618	defer googleapi.CloseBody(res)
4619	if err := googleapi.CheckResponse(res); err != nil {
4620		return nil, err
4621	}
4622	ret := &Operation{
4623		ServerResponse: googleapi.ServerResponse{
4624			Header:         res.Header,
4625			HTTPStatusCode: res.StatusCode,
4626		},
4627	}
4628	target := &ret
4629	if err := gensupport.DecodeResponse(target, res); err != nil {
4630		return nil, err
4631	}
4632	return ret, nil
4633	// {
4634	//   "description": "Create or update multiple producer overrides atomically, all on the same consumer, but on many different metrics or limits. The name field in the quota override message should not be set.",
4635	//   "flatPath": "v1beta1/services/{servicesId}/{servicesId1}/{servicesId2}/consumerQuotaMetrics:importProducerOverrides",
4636	//   "httpMethod": "POST",
4637	//   "id": "serviceconsumermanagement.services.consumerQuotaMetrics.importProducerOverrides",
4638	//   "parameterOrder": [
4639	//     "parent"
4640	//   ],
4641	//   "parameters": {
4642	//     "parent": {
4643	//       "description": "The resource name of the consumer. An example name would be: `services/compute.googleapis.com/projects/123`",
4644	//       "location": "path",
4645	//       "pattern": "^services/[^/]+/[^/]+/[^/]+$",
4646	//       "required": true,
4647	//       "type": "string"
4648	//     }
4649	//   },
4650	//   "path": "v1beta1/{+parent}/consumerQuotaMetrics:importProducerOverrides",
4651	//   "request": {
4652	//     "$ref": "V1Beta1ImportProducerOverridesRequest"
4653	//   },
4654	//   "response": {
4655	//     "$ref": "Operation"
4656	//   },
4657	//   "scopes": [
4658	//     "https://www.googleapis.com/auth/cloud-platform"
4659	//   ]
4660	// }
4661
4662}
4663
4664// method id "serviceconsumermanagement.services.consumerQuotaMetrics.list":
4665
4666type ServicesConsumerQuotaMetricsListCall struct {
4667	s            *APIService
4668	parent       string
4669	urlParams_   gensupport.URLParams
4670	ifNoneMatch_ string
4671	ctx_         context.Context
4672	header_      http.Header
4673}
4674
4675// List: Retrieves a summary of all quota information about this
4676// consumer that is visible to the service producer, for each quota
4677// metric defined by the service. Each metric includes information about
4678// all of its defined limits. Each limit includes the limit
4679// configuration (quota unit, preciseness, default value), the current
4680// effective limit value, and all of the overrides applied to the limit.
4681//
4682// - parent: Parent of the quotas resource. An example parent would be:
4683//   `services/serviceconsumermanagement.googleapis.com/projects/123`.
4684func (r *ServicesConsumerQuotaMetricsService) List(parent string) *ServicesConsumerQuotaMetricsListCall {
4685	c := &ServicesConsumerQuotaMetricsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4686	c.parent = parent
4687	return c
4688}
4689
4690// PageSize sets the optional parameter "pageSize": Requested size of
4691// the next page of data.
4692func (c *ServicesConsumerQuotaMetricsListCall) PageSize(pageSize int64) *ServicesConsumerQuotaMetricsListCall {
4693	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
4694	return c
4695}
4696
4697// PageToken sets the optional parameter "pageToken": Token identifying
4698// which result to start with; returned by a previous list call.
4699func (c *ServicesConsumerQuotaMetricsListCall) PageToken(pageToken string) *ServicesConsumerQuotaMetricsListCall {
4700	c.urlParams_.Set("pageToken", pageToken)
4701	return c
4702}
4703
4704// View sets the optional parameter "view": Specifies the level of
4705// detail for quota information in the response.
4706//
4707// Possible values:
4708//   "QUOTA_VIEW_UNSPECIFIED" - No quota view specified. Requests that
4709// do not specify a quota view will typically default to the BASIC view.
4710//   "BASIC" - Only buckets with overrides are shown in the response.
4711//   "FULL" - Include per-location buckets even if they do not have
4712// overrides. When the view is FULL, and a limit has regional or zonal
4713// quota, the limit will include buckets for all regions or zones that
4714// could support overrides, even if none are currently present. In some
4715// cases this will cause the response to become very large; callers that
4716// do not need this extra information should use the BASIC view instead.
4717func (c *ServicesConsumerQuotaMetricsListCall) View(view string) *ServicesConsumerQuotaMetricsListCall {
4718	c.urlParams_.Set("view", view)
4719	return c
4720}
4721
4722// Fields allows partial responses to be retrieved. See
4723// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4724// for more information.
4725func (c *ServicesConsumerQuotaMetricsListCall) Fields(s ...googleapi.Field) *ServicesConsumerQuotaMetricsListCall {
4726	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4727	return c
4728}
4729
4730// IfNoneMatch sets the optional parameter which makes the operation
4731// fail if the object's ETag matches the given value. This is useful for
4732// getting updates only after the object has changed since the last
4733// request. Use googleapi.IsNotModified to check whether the response
4734// error from Do is the result of In-None-Match.
4735func (c *ServicesConsumerQuotaMetricsListCall) IfNoneMatch(entityTag string) *ServicesConsumerQuotaMetricsListCall {
4736	c.ifNoneMatch_ = entityTag
4737	return c
4738}
4739
4740// Context sets the context to be used in this call's Do method. Any
4741// pending HTTP request will be aborted if the provided context is
4742// canceled.
4743func (c *ServicesConsumerQuotaMetricsListCall) Context(ctx context.Context) *ServicesConsumerQuotaMetricsListCall {
4744	c.ctx_ = ctx
4745	return c
4746}
4747
4748// Header returns an http.Header that can be modified by the caller to
4749// add HTTP headers to the request.
4750func (c *ServicesConsumerQuotaMetricsListCall) Header() http.Header {
4751	if c.header_ == nil {
4752		c.header_ = make(http.Header)
4753	}
4754	return c.header_
4755}
4756
4757func (c *ServicesConsumerQuotaMetricsListCall) doRequest(alt string) (*http.Response, error) {
4758	reqHeaders := make(http.Header)
4759	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
4760	for k, v := range c.header_ {
4761		reqHeaders[k] = v
4762	}
4763	reqHeaders.Set("User-Agent", c.s.userAgent())
4764	if c.ifNoneMatch_ != "" {
4765		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
4766	}
4767	var body io.Reader = nil
4768	c.urlParams_.Set("alt", alt)
4769	c.urlParams_.Set("prettyPrint", "false")
4770	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/consumerQuotaMetrics")
4771	urls += "?" + c.urlParams_.Encode()
4772	req, err := http.NewRequest("GET", urls, body)
4773	if err != nil {
4774		return nil, err
4775	}
4776	req.Header = reqHeaders
4777	googleapi.Expand(req.URL, map[string]string{
4778		"parent": c.parent,
4779	})
4780	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4781}
4782
4783// Do executes the "serviceconsumermanagement.services.consumerQuotaMetrics.list" call.
4784// Exactly one of *V1Beta1ListConsumerQuotaMetricsResponse or error will
4785// be non-nil. Any non-2xx status code is an error. Response headers are
4786// in either
4787// *V1Beta1ListConsumerQuotaMetricsResponse.ServerResponse.Header or (if
4788// a response was returned at all) in error.(*googleapi.Error).Header.
4789// Use googleapi.IsNotModified to check whether the returned error was
4790// because http.StatusNotModified was returned.
4791func (c *ServicesConsumerQuotaMetricsListCall) Do(opts ...googleapi.CallOption) (*V1Beta1ListConsumerQuotaMetricsResponse, error) {
4792	gensupport.SetOptions(c.urlParams_, opts...)
4793	res, err := c.doRequest("json")
4794	if res != nil && res.StatusCode == http.StatusNotModified {
4795		if res.Body != nil {
4796			res.Body.Close()
4797		}
4798		return nil, &googleapi.Error{
4799			Code:   res.StatusCode,
4800			Header: res.Header,
4801		}
4802	}
4803	if err != nil {
4804		return nil, err
4805	}
4806	defer googleapi.CloseBody(res)
4807	if err := googleapi.CheckResponse(res); err != nil {
4808		return nil, err
4809	}
4810	ret := &V1Beta1ListConsumerQuotaMetricsResponse{
4811		ServerResponse: googleapi.ServerResponse{
4812			Header:         res.Header,
4813			HTTPStatusCode: res.StatusCode,
4814		},
4815	}
4816	target := &ret
4817	if err := gensupport.DecodeResponse(target, res); err != nil {
4818		return nil, err
4819	}
4820	return ret, nil
4821	// {
4822	//   "description": "Retrieves a summary of all quota information about this consumer that is visible to the service producer, for each quota metric defined by the service. Each metric includes information about all of its defined limits. Each limit includes the limit configuration (quota unit, preciseness, default value), the current effective limit value, and all of the overrides applied to the limit.",
4823	//   "flatPath": "v1beta1/services/{servicesId}/{servicesId1}/{servicesId2}/consumerQuotaMetrics",
4824	//   "httpMethod": "GET",
4825	//   "id": "serviceconsumermanagement.services.consumerQuotaMetrics.list",
4826	//   "parameterOrder": [
4827	//     "parent"
4828	//   ],
4829	//   "parameters": {
4830	//     "pageSize": {
4831	//       "description": "Requested size of the next page of data.",
4832	//       "format": "int32",
4833	//       "location": "query",
4834	//       "type": "integer"
4835	//     },
4836	//     "pageToken": {
4837	//       "description": "Token identifying which result to start with; returned by a previous list call.",
4838	//       "location": "query",
4839	//       "type": "string"
4840	//     },
4841	//     "parent": {
4842	//       "description": "Parent of the quotas resource. An example parent would be: `services/serviceconsumermanagement.googleapis.com/projects/123`",
4843	//       "location": "path",
4844	//       "pattern": "^services/[^/]+/[^/]+/[^/]+$",
4845	//       "required": true,
4846	//       "type": "string"
4847	//     },
4848	//     "view": {
4849	//       "description": "Specifies the level of detail for quota information in the response.",
4850	//       "enum": [
4851	//         "QUOTA_VIEW_UNSPECIFIED",
4852	//         "BASIC",
4853	//         "FULL"
4854	//       ],
4855	//       "enumDescriptions": [
4856	//         "No quota view specified. Requests that do not specify a quota view will typically default to the BASIC view.",
4857	//         "Only buckets with overrides are shown in the response.",
4858	//         "Include per-location buckets even if they do not have overrides. When the view is FULL, and a limit has regional or zonal quota, the limit will include buckets for all regions or zones that could support overrides, even if none are currently present. In some cases this will cause the response to become very large; callers that do not need this extra information should use the BASIC view instead."
4859	//       ],
4860	//       "location": "query",
4861	//       "type": "string"
4862	//     }
4863	//   },
4864	//   "path": "v1beta1/{+parent}/consumerQuotaMetrics",
4865	//   "response": {
4866	//     "$ref": "V1Beta1ListConsumerQuotaMetricsResponse"
4867	//   },
4868	//   "scopes": [
4869	//     "https://www.googleapis.com/auth/cloud-platform"
4870	//   ]
4871	// }
4872
4873}
4874
4875// Pages invokes f for each page of results.
4876// A non-nil error returned from f will halt the iteration.
4877// The provided context supersedes any context provided to the Context method.
4878func (c *ServicesConsumerQuotaMetricsListCall) Pages(ctx context.Context, f func(*V1Beta1ListConsumerQuotaMetricsResponse) error) error {
4879	c.ctx_ = ctx
4880	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
4881	for {
4882		x, err := c.Do()
4883		if err != nil {
4884			return err
4885		}
4886		if err := f(x); err != nil {
4887			return err
4888		}
4889		if x.NextPageToken == "" {
4890			return nil
4891		}
4892		c.PageToken(x.NextPageToken)
4893	}
4894}
4895
4896// method id "serviceconsumermanagement.services.consumerQuotaMetrics.limits.get":
4897
4898type ServicesConsumerQuotaMetricsLimitsGetCall struct {
4899	s            *APIService
4900	name         string
4901	urlParams_   gensupport.URLParams
4902	ifNoneMatch_ string
4903	ctx_         context.Context
4904	header_      http.Header
4905}
4906
4907// Get: Retrieves a summary of quota information for a specific quota
4908// limit.
4909//
4910// - name: The resource name of the quota limit, returned by a
4911//   ListConsumerQuotaMetrics or GetConsumerQuotaMetric call. An example
4912//   name would be:
4913//   `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/c
4914//   ompute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion`.
4915func (r *ServicesConsumerQuotaMetricsLimitsService) Get(name string) *ServicesConsumerQuotaMetricsLimitsGetCall {
4916	c := &ServicesConsumerQuotaMetricsLimitsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4917	c.name = name
4918	return c
4919}
4920
4921// View sets the optional parameter "view": Specifies the level of
4922// detail for quota information in the response.
4923//
4924// Possible values:
4925//   "QUOTA_VIEW_UNSPECIFIED" - No quota view specified. Requests that
4926// do not specify a quota view will typically default to the BASIC view.
4927//   "BASIC" - Only buckets with overrides are shown in the response.
4928//   "FULL" - Include per-location buckets even if they do not have
4929// overrides. When the view is FULL, and a limit has regional or zonal
4930// quota, the limit will include buckets for all regions or zones that
4931// could support overrides, even if none are currently present. In some
4932// cases this will cause the response to become very large; callers that
4933// do not need this extra information should use the BASIC view instead.
4934func (c *ServicesConsumerQuotaMetricsLimitsGetCall) View(view string) *ServicesConsumerQuotaMetricsLimitsGetCall {
4935	c.urlParams_.Set("view", view)
4936	return c
4937}
4938
4939// Fields allows partial responses to be retrieved. See
4940// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4941// for more information.
4942func (c *ServicesConsumerQuotaMetricsLimitsGetCall) Fields(s ...googleapi.Field) *ServicesConsumerQuotaMetricsLimitsGetCall {
4943	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4944	return c
4945}
4946
4947// IfNoneMatch sets the optional parameter which makes the operation
4948// fail if the object's ETag matches the given value. This is useful for
4949// getting updates only after the object has changed since the last
4950// request. Use googleapi.IsNotModified to check whether the response
4951// error from Do is the result of In-None-Match.
4952func (c *ServicesConsumerQuotaMetricsLimitsGetCall) IfNoneMatch(entityTag string) *ServicesConsumerQuotaMetricsLimitsGetCall {
4953	c.ifNoneMatch_ = entityTag
4954	return c
4955}
4956
4957// Context sets the context to be used in this call's Do method. Any
4958// pending HTTP request will be aborted if the provided context is
4959// canceled.
4960func (c *ServicesConsumerQuotaMetricsLimitsGetCall) Context(ctx context.Context) *ServicesConsumerQuotaMetricsLimitsGetCall {
4961	c.ctx_ = ctx
4962	return c
4963}
4964
4965// Header returns an http.Header that can be modified by the caller to
4966// add HTTP headers to the request.
4967func (c *ServicesConsumerQuotaMetricsLimitsGetCall) Header() http.Header {
4968	if c.header_ == nil {
4969		c.header_ = make(http.Header)
4970	}
4971	return c.header_
4972}
4973
4974func (c *ServicesConsumerQuotaMetricsLimitsGetCall) doRequest(alt string) (*http.Response, error) {
4975	reqHeaders := make(http.Header)
4976	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
4977	for k, v := range c.header_ {
4978		reqHeaders[k] = v
4979	}
4980	reqHeaders.Set("User-Agent", c.s.userAgent())
4981	if c.ifNoneMatch_ != "" {
4982		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
4983	}
4984	var body io.Reader = nil
4985	c.urlParams_.Set("alt", alt)
4986	c.urlParams_.Set("prettyPrint", "false")
4987	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
4988	urls += "?" + c.urlParams_.Encode()
4989	req, err := http.NewRequest("GET", urls, body)
4990	if err != nil {
4991		return nil, err
4992	}
4993	req.Header = reqHeaders
4994	googleapi.Expand(req.URL, map[string]string{
4995		"name": c.name,
4996	})
4997	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4998}
4999
5000// Do executes the "serviceconsumermanagement.services.consumerQuotaMetrics.limits.get" call.
5001// Exactly one of *V1Beta1ConsumerQuotaLimit or error will be non-nil.
5002// Any non-2xx status code is an error. Response headers are in either
5003// *V1Beta1ConsumerQuotaLimit.ServerResponse.Header or (if a response
5004// was returned at all) in error.(*googleapi.Error).Header. Use
5005// googleapi.IsNotModified to check whether the returned error was
5006// because http.StatusNotModified was returned.
5007func (c *ServicesConsumerQuotaMetricsLimitsGetCall) Do(opts ...googleapi.CallOption) (*V1Beta1ConsumerQuotaLimit, error) {
5008	gensupport.SetOptions(c.urlParams_, opts...)
5009	res, err := c.doRequest("json")
5010	if res != nil && res.StatusCode == http.StatusNotModified {
5011		if res.Body != nil {
5012			res.Body.Close()
5013		}
5014		return nil, &googleapi.Error{
5015			Code:   res.StatusCode,
5016			Header: res.Header,
5017		}
5018	}
5019	if err != nil {
5020		return nil, err
5021	}
5022	defer googleapi.CloseBody(res)
5023	if err := googleapi.CheckResponse(res); err != nil {
5024		return nil, err
5025	}
5026	ret := &V1Beta1ConsumerQuotaLimit{
5027		ServerResponse: googleapi.ServerResponse{
5028			Header:         res.Header,
5029			HTTPStatusCode: res.StatusCode,
5030		},
5031	}
5032	target := &ret
5033	if err := gensupport.DecodeResponse(target, res); err != nil {
5034		return nil, err
5035	}
5036	return ret, nil
5037	// {
5038	//   "description": "Retrieves a summary of quota information for a specific quota limit.",
5039	//   "flatPath": "v1beta1/services/{servicesId}/{servicesId1}/{servicesId2}/consumerQuotaMetrics/{consumerQuotaMetricsId}/limits/{limitsId}",
5040	//   "httpMethod": "GET",
5041	//   "id": "serviceconsumermanagement.services.consumerQuotaMetrics.limits.get",
5042	//   "parameterOrder": [
5043	//     "name"
5044	//   ],
5045	//   "parameters": {
5046	//     "name": {
5047	//       "description": "The resource name of the quota limit, returned by a ListConsumerQuotaMetrics or GetConsumerQuotaMetric call. An example name would be: `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion`",
5048	//       "location": "path",
5049	//       "pattern": "^services/[^/]+/[^/]+/[^/]+/consumerQuotaMetrics/[^/]+/limits/[^/]+$",
5050	//       "required": true,
5051	//       "type": "string"
5052	//     },
5053	//     "view": {
5054	//       "description": "Specifies the level of detail for quota information in the response.",
5055	//       "enum": [
5056	//         "QUOTA_VIEW_UNSPECIFIED",
5057	//         "BASIC",
5058	//         "FULL"
5059	//       ],
5060	//       "enumDescriptions": [
5061	//         "No quota view specified. Requests that do not specify a quota view will typically default to the BASIC view.",
5062	//         "Only buckets with overrides are shown in the response.",
5063	//         "Include per-location buckets even if they do not have overrides. When the view is FULL, and a limit has regional or zonal quota, the limit will include buckets for all regions or zones that could support overrides, even if none are currently present. In some cases this will cause the response to become very large; callers that do not need this extra information should use the BASIC view instead."
5064	//       ],
5065	//       "location": "query",
5066	//       "type": "string"
5067	//     }
5068	//   },
5069	//   "path": "v1beta1/{+name}",
5070	//   "response": {
5071	//     "$ref": "V1Beta1ConsumerQuotaLimit"
5072	//   },
5073	//   "scopes": [
5074	//     "https://www.googleapis.com/auth/cloud-platform"
5075	//   ]
5076	// }
5077
5078}
5079
5080// method id "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.create":
5081
5082type ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall struct {
5083	s                    *APIService
5084	parent               string
5085	v1beta1quotaoverride *V1Beta1QuotaOverride
5086	urlParams_           gensupport.URLParams
5087	ctx_                 context.Context
5088	header_              http.Header
5089}
5090
5091// Create: Creates a producer override. A producer override is applied
5092// by the owner or administrator of a service to increase or decrease
5093// the amount of quota a consumer of the service is allowed to use. To
5094// create multiple overrides at once, use ImportProducerOverrides
5095// instead. If an override with the specified dimensions already exists,
5096// this call will fail. To overwrite an existing override if one is
5097// already present ("upsert" semantics), use ImportProducerOverrides
5098// instead.
5099//
5100// - parent: The resource name of the parent quota limit, returned by a
5101//   ListConsumerQuotaMetrics or GetConsumerQuotaMetric call. An example
5102//   name would be:
5103//   `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/c
5104//   ompute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion`.
5105func (r *ServicesConsumerQuotaMetricsLimitsProducerOverridesService) Create(parent string, v1beta1quotaoverride *V1Beta1QuotaOverride) *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall {
5106	c := &ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5107	c.parent = parent
5108	c.v1beta1quotaoverride = v1beta1quotaoverride
5109	return c
5110}
5111
5112// Force sets the optional parameter "force": Whether to force the
5113// creation of the quota override. Setting the force parameter to 'true'
5114// ignores all quota safety checks that would fail the request.
5115// QuotaSafetyCheck lists all such validations.
5116func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall) Force(force bool) *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall {
5117	c.urlParams_.Set("force", fmt.Sprint(force))
5118	return c
5119}
5120
5121// ForceOnly sets the optional parameter "forceOnly": The list of quota
5122// safety checks to ignore before the override mutation. Unlike 'force'
5123// field that ignores all the quota safety checks, the 'force_only'
5124// field ignores only the specified checks; other checks are still
5125// enforced. The 'force' and 'force_only' fields cannot both be set.
5126//
5127// Possible values:
5128//   "QUOTA_SAFETY_CHECK_UNSPECIFIED" - Unspecified quota safety check.
5129//   "LIMIT_DECREASE_BELOW_USAGE" - Validates that a quota mutation
5130// would not cause the consumer's effective limit to be lower than the
5131// consumer's quota usage.
5132//   "LIMIT_DECREASE_PERCENTAGE_TOO_HIGH" - Validates that a quota
5133// mutation would not cause the consumer's effective limit to decrease
5134// by more than 10 percent.
5135func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall) ForceOnly(forceOnly ...string) *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall {
5136	c.urlParams_.SetMulti("forceOnly", append([]string{}, forceOnly...))
5137	return c
5138}
5139
5140// Fields allows partial responses to be retrieved. See
5141// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5142// for more information.
5143func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall) Fields(s ...googleapi.Field) *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall {
5144	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5145	return c
5146}
5147
5148// Context sets the context to be used in this call's Do method. Any
5149// pending HTTP request will be aborted if the provided context is
5150// canceled.
5151func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall) Context(ctx context.Context) *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall {
5152	c.ctx_ = ctx
5153	return c
5154}
5155
5156// Header returns an http.Header that can be modified by the caller to
5157// add HTTP headers to the request.
5158func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall) Header() http.Header {
5159	if c.header_ == nil {
5160		c.header_ = make(http.Header)
5161	}
5162	return c.header_
5163}
5164
5165func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall) doRequest(alt string) (*http.Response, error) {
5166	reqHeaders := make(http.Header)
5167	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
5168	for k, v := range c.header_ {
5169		reqHeaders[k] = v
5170	}
5171	reqHeaders.Set("User-Agent", c.s.userAgent())
5172	var body io.Reader = nil
5173	body, err := googleapi.WithoutDataWrapper.JSONReader(c.v1beta1quotaoverride)
5174	if err != nil {
5175		return nil, err
5176	}
5177	reqHeaders.Set("Content-Type", "application/json")
5178	c.urlParams_.Set("alt", alt)
5179	c.urlParams_.Set("prettyPrint", "false")
5180	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/producerOverrides")
5181	urls += "?" + c.urlParams_.Encode()
5182	req, err := http.NewRequest("POST", urls, body)
5183	if err != nil {
5184		return nil, err
5185	}
5186	req.Header = reqHeaders
5187	googleapi.Expand(req.URL, map[string]string{
5188		"parent": c.parent,
5189	})
5190	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5191}
5192
5193// Do executes the "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.create" call.
5194// Exactly one of *Operation or error will be non-nil. Any non-2xx
5195// status code is an error. Response headers are in either
5196// *Operation.ServerResponse.Header or (if a response was returned at
5197// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
5198// to check whether the returned error was because
5199// http.StatusNotModified was returned.
5200func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
5201	gensupport.SetOptions(c.urlParams_, opts...)
5202	res, err := c.doRequest("json")
5203	if res != nil && res.StatusCode == http.StatusNotModified {
5204		if res.Body != nil {
5205			res.Body.Close()
5206		}
5207		return nil, &googleapi.Error{
5208			Code:   res.StatusCode,
5209			Header: res.Header,
5210		}
5211	}
5212	if err != nil {
5213		return nil, err
5214	}
5215	defer googleapi.CloseBody(res)
5216	if err := googleapi.CheckResponse(res); err != nil {
5217		return nil, err
5218	}
5219	ret := &Operation{
5220		ServerResponse: googleapi.ServerResponse{
5221			Header:         res.Header,
5222			HTTPStatusCode: res.StatusCode,
5223		},
5224	}
5225	target := &ret
5226	if err := gensupport.DecodeResponse(target, res); err != nil {
5227		return nil, err
5228	}
5229	return ret, nil
5230	// {
5231	//   "description": "Creates a producer override. A producer override is applied by the owner or administrator of a service to increase or decrease the amount of quota a consumer of the service is allowed to use. To create multiple overrides at once, use ImportProducerOverrides instead. If an override with the specified dimensions already exists, this call will fail. To overwrite an existing override if one is already present (\"upsert\" semantics), use ImportProducerOverrides instead.",
5232	//   "flatPath": "v1beta1/services/{servicesId}/{servicesId1}/{servicesId2}/consumerQuotaMetrics/{consumerQuotaMetricsId}/limits/{limitsId}/producerOverrides",
5233	//   "httpMethod": "POST",
5234	//   "id": "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.create",
5235	//   "parameterOrder": [
5236	//     "parent"
5237	//   ],
5238	//   "parameters": {
5239	//     "force": {
5240	//       "description": "Whether to force the creation of the quota override. Setting the force parameter to 'true' ignores all quota safety checks that would fail the request. QuotaSafetyCheck lists all such validations.",
5241	//       "location": "query",
5242	//       "type": "boolean"
5243	//     },
5244	//     "forceOnly": {
5245	//       "description": "The list of quota safety checks to ignore before the override mutation. Unlike 'force' field that ignores all the quota safety checks, the 'force_only' field ignores only the specified checks; other checks are still enforced. The 'force' and 'force_only' fields cannot both be set.",
5246	//       "enum": [
5247	//         "QUOTA_SAFETY_CHECK_UNSPECIFIED",
5248	//         "LIMIT_DECREASE_BELOW_USAGE",
5249	//         "LIMIT_DECREASE_PERCENTAGE_TOO_HIGH"
5250	//       ],
5251	//       "enumDescriptions": [
5252	//         "Unspecified quota safety check.",
5253	//         "Validates that a quota mutation would not cause the consumer's effective limit to be lower than the consumer's quota usage.",
5254	//         "Validates that a quota mutation would not cause the consumer's effective limit to decrease by more than 10 percent."
5255	//       ],
5256	//       "location": "query",
5257	//       "repeated": true,
5258	//       "type": "string"
5259	//     },
5260	//     "parent": {
5261	//       "description": "The resource name of the parent quota limit, returned by a ListConsumerQuotaMetrics or GetConsumerQuotaMetric call. An example name would be: `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion`",
5262	//       "location": "path",
5263	//       "pattern": "^services/[^/]+/[^/]+/[^/]+/consumerQuotaMetrics/[^/]+/limits/[^/]+$",
5264	//       "required": true,
5265	//       "type": "string"
5266	//     }
5267	//   },
5268	//   "path": "v1beta1/{+parent}/producerOverrides",
5269	//   "request": {
5270	//     "$ref": "V1Beta1QuotaOverride"
5271	//   },
5272	//   "response": {
5273	//     "$ref": "Operation"
5274	//   },
5275	//   "scopes": [
5276	//     "https://www.googleapis.com/auth/cloud-platform"
5277	//   ]
5278	// }
5279
5280}
5281
5282// method id "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.delete":
5283
5284type ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall struct {
5285	s          *APIService
5286	name       string
5287	urlParams_ gensupport.URLParams
5288	ctx_       context.Context
5289	header_    http.Header
5290}
5291
5292// Delete: Deletes a producer override.
5293//
5294// - name: The resource name of the override to delete. An example name
5295//   would be:
5296//   `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/c
5297//   ompute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerOver
5298//   rides/4a3f2c1d`.
5299func (r *ServicesConsumerQuotaMetricsLimitsProducerOverridesService) Delete(name string) *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall {
5300	c := &ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5301	c.name = name
5302	return c
5303}
5304
5305// Force sets the optional parameter "force": Whether to force the
5306// deletion of the quota override. Setting the force parameter to 'true'
5307// ignores all quota safety checks that would fail the request.
5308// QuotaSafetyCheck lists all such validations.
5309func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall) Force(force bool) *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall {
5310	c.urlParams_.Set("force", fmt.Sprint(force))
5311	return c
5312}
5313
5314// ForceOnly sets the optional parameter "forceOnly": The list of quota
5315// safety checks to ignore before the override mutation. Unlike 'force'
5316// field that ignores all the quota safety checks, the 'force_only'
5317// field ignores only the specified checks; other checks are still
5318// enforced. The 'force' and 'force_only' fields cannot both be set.
5319//
5320// Possible values:
5321//   "QUOTA_SAFETY_CHECK_UNSPECIFIED" - Unspecified quota safety check.
5322//   "LIMIT_DECREASE_BELOW_USAGE" - Validates that a quota mutation
5323// would not cause the consumer's effective limit to be lower than the
5324// consumer's quota usage.
5325//   "LIMIT_DECREASE_PERCENTAGE_TOO_HIGH" - Validates that a quota
5326// mutation would not cause the consumer's effective limit to decrease
5327// by more than 10 percent.
5328func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall) ForceOnly(forceOnly ...string) *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall {
5329	c.urlParams_.SetMulti("forceOnly", append([]string{}, forceOnly...))
5330	return c
5331}
5332
5333// Fields allows partial responses to be retrieved. See
5334// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5335// for more information.
5336func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall) Fields(s ...googleapi.Field) *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall {
5337	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5338	return c
5339}
5340
5341// Context sets the context to be used in this call's Do method. Any
5342// pending HTTP request will be aborted if the provided context is
5343// canceled.
5344func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall) Context(ctx context.Context) *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall {
5345	c.ctx_ = ctx
5346	return c
5347}
5348
5349// Header returns an http.Header that can be modified by the caller to
5350// add HTTP headers to the request.
5351func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall) Header() http.Header {
5352	if c.header_ == nil {
5353		c.header_ = make(http.Header)
5354	}
5355	return c.header_
5356}
5357
5358func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall) doRequest(alt string) (*http.Response, error) {
5359	reqHeaders := make(http.Header)
5360	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
5361	for k, v := range c.header_ {
5362		reqHeaders[k] = v
5363	}
5364	reqHeaders.Set("User-Agent", c.s.userAgent())
5365	var body io.Reader = nil
5366	c.urlParams_.Set("alt", alt)
5367	c.urlParams_.Set("prettyPrint", "false")
5368	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
5369	urls += "?" + c.urlParams_.Encode()
5370	req, err := http.NewRequest("DELETE", urls, body)
5371	if err != nil {
5372		return nil, err
5373	}
5374	req.Header = reqHeaders
5375	googleapi.Expand(req.URL, map[string]string{
5376		"name": c.name,
5377	})
5378	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5379}
5380
5381// Do executes the "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.delete" call.
5382// Exactly one of *Operation or error will be non-nil. Any non-2xx
5383// status code is an error. Response headers are in either
5384// *Operation.ServerResponse.Header or (if a response was returned at
5385// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
5386// to check whether the returned error was because
5387// http.StatusNotModified was returned.
5388func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
5389	gensupport.SetOptions(c.urlParams_, opts...)
5390	res, err := c.doRequest("json")
5391	if res != nil && res.StatusCode == http.StatusNotModified {
5392		if res.Body != nil {
5393			res.Body.Close()
5394		}
5395		return nil, &googleapi.Error{
5396			Code:   res.StatusCode,
5397			Header: res.Header,
5398		}
5399	}
5400	if err != nil {
5401		return nil, err
5402	}
5403	defer googleapi.CloseBody(res)
5404	if err := googleapi.CheckResponse(res); err != nil {
5405		return nil, err
5406	}
5407	ret := &Operation{
5408		ServerResponse: googleapi.ServerResponse{
5409			Header:         res.Header,
5410			HTTPStatusCode: res.StatusCode,
5411		},
5412	}
5413	target := &ret
5414	if err := gensupport.DecodeResponse(target, res); err != nil {
5415		return nil, err
5416	}
5417	return ret, nil
5418	// {
5419	//   "description": "Deletes a producer override.",
5420	//   "flatPath": "v1beta1/services/{servicesId}/{servicesId1}/{servicesId2}/consumerQuotaMetrics/{consumerQuotaMetricsId}/limits/{limitsId}/producerOverrides/{producerOverridesId}",
5421	//   "httpMethod": "DELETE",
5422	//   "id": "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.delete",
5423	//   "parameterOrder": [
5424	//     "name"
5425	//   ],
5426	//   "parameters": {
5427	//     "force": {
5428	//       "description": "Whether to force the deletion of the quota override. Setting the force parameter to 'true' ignores all quota safety checks that would fail the request. QuotaSafetyCheck lists all such validations.",
5429	//       "location": "query",
5430	//       "type": "boolean"
5431	//     },
5432	//     "forceOnly": {
5433	//       "description": "The list of quota safety checks to ignore before the override mutation. Unlike 'force' field that ignores all the quota safety checks, the 'force_only' field ignores only the specified checks; other checks are still enforced. The 'force' and 'force_only' fields cannot both be set.",
5434	//       "enum": [
5435	//         "QUOTA_SAFETY_CHECK_UNSPECIFIED",
5436	//         "LIMIT_DECREASE_BELOW_USAGE",
5437	//         "LIMIT_DECREASE_PERCENTAGE_TOO_HIGH"
5438	//       ],
5439	//       "enumDescriptions": [
5440	//         "Unspecified quota safety check.",
5441	//         "Validates that a quota mutation would not cause the consumer's effective limit to be lower than the consumer's quota usage.",
5442	//         "Validates that a quota mutation would not cause the consumer's effective limit to decrease by more than 10 percent."
5443	//       ],
5444	//       "location": "query",
5445	//       "repeated": true,
5446	//       "type": "string"
5447	//     },
5448	//     "name": {
5449	//       "description": "The resource name of the override to delete. An example name would be: `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerOverrides/4a3f2c1d`",
5450	//       "location": "path",
5451	//       "pattern": "^services/[^/]+/[^/]+/[^/]+/consumerQuotaMetrics/[^/]+/limits/[^/]+/producerOverrides/[^/]+$",
5452	//       "required": true,
5453	//       "type": "string"
5454	//     }
5455	//   },
5456	//   "path": "v1beta1/{+name}",
5457	//   "response": {
5458	//     "$ref": "Operation"
5459	//   },
5460	//   "scopes": [
5461	//     "https://www.googleapis.com/auth/cloud-platform"
5462	//   ]
5463	// }
5464
5465}
5466
5467// method id "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.list":
5468
5469type ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall struct {
5470	s            *APIService
5471	parent       string
5472	urlParams_   gensupport.URLParams
5473	ifNoneMatch_ string
5474	ctx_         context.Context
5475	header_      http.Header
5476}
5477
5478// List: Lists all producer overrides on this limit.
5479//
5480// - parent: The resource name of the parent quota limit, returned by a
5481//   ListConsumerQuotaMetrics or GetConsumerQuotaMetric call. An example
5482//   name would be:
5483//   `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/c
5484//   ompute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion`.
5485func (r *ServicesConsumerQuotaMetricsLimitsProducerOverridesService) List(parent string) *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall {
5486	c := &ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5487	c.parent = parent
5488	return c
5489}
5490
5491// PageSize sets the optional parameter "pageSize": Requested size of
5492// the next page of data.
5493func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) PageSize(pageSize int64) *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall {
5494	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
5495	return c
5496}
5497
5498// PageToken sets the optional parameter "pageToken": Token identifying
5499// which result to start with; returned by a previous list call.
5500func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) PageToken(pageToken string) *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall {
5501	c.urlParams_.Set("pageToken", pageToken)
5502	return c
5503}
5504
5505// Fields allows partial responses to be retrieved. See
5506// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5507// for more information.
5508func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) Fields(s ...googleapi.Field) *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall {
5509	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5510	return c
5511}
5512
5513// IfNoneMatch sets the optional parameter which makes the operation
5514// fail if the object's ETag matches the given value. This is useful for
5515// getting updates only after the object has changed since the last
5516// request. Use googleapi.IsNotModified to check whether the response
5517// error from Do is the result of In-None-Match.
5518func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) IfNoneMatch(entityTag string) *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall {
5519	c.ifNoneMatch_ = entityTag
5520	return c
5521}
5522
5523// Context sets the context to be used in this call's Do method. Any
5524// pending HTTP request will be aborted if the provided context is
5525// canceled.
5526func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) Context(ctx context.Context) *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall {
5527	c.ctx_ = ctx
5528	return c
5529}
5530
5531// Header returns an http.Header that can be modified by the caller to
5532// add HTTP headers to the request.
5533func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) Header() http.Header {
5534	if c.header_ == nil {
5535		c.header_ = make(http.Header)
5536	}
5537	return c.header_
5538}
5539
5540func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) doRequest(alt string) (*http.Response, error) {
5541	reqHeaders := make(http.Header)
5542	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
5543	for k, v := range c.header_ {
5544		reqHeaders[k] = v
5545	}
5546	reqHeaders.Set("User-Agent", c.s.userAgent())
5547	if c.ifNoneMatch_ != "" {
5548		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
5549	}
5550	var body io.Reader = nil
5551	c.urlParams_.Set("alt", alt)
5552	c.urlParams_.Set("prettyPrint", "false")
5553	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/producerOverrides")
5554	urls += "?" + c.urlParams_.Encode()
5555	req, err := http.NewRequest("GET", urls, body)
5556	if err != nil {
5557		return nil, err
5558	}
5559	req.Header = reqHeaders
5560	googleapi.Expand(req.URL, map[string]string{
5561		"parent": c.parent,
5562	})
5563	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5564}
5565
5566// Do executes the "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.list" call.
5567// Exactly one of *V1Beta1ListProducerOverridesResponse or error will be
5568// non-nil. Any non-2xx status code is an error. Response headers are in
5569// either *V1Beta1ListProducerOverridesResponse.ServerResponse.Header or
5570// (if a response was returned at all) in
5571// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
5572// whether the returned error was because http.StatusNotModified was
5573// returned.
5574func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) Do(opts ...googleapi.CallOption) (*V1Beta1ListProducerOverridesResponse, error) {
5575	gensupport.SetOptions(c.urlParams_, opts...)
5576	res, err := c.doRequest("json")
5577	if res != nil && res.StatusCode == http.StatusNotModified {
5578		if res.Body != nil {
5579			res.Body.Close()
5580		}
5581		return nil, &googleapi.Error{
5582			Code:   res.StatusCode,
5583			Header: res.Header,
5584		}
5585	}
5586	if err != nil {
5587		return nil, err
5588	}
5589	defer googleapi.CloseBody(res)
5590	if err := googleapi.CheckResponse(res); err != nil {
5591		return nil, err
5592	}
5593	ret := &V1Beta1ListProducerOverridesResponse{
5594		ServerResponse: googleapi.ServerResponse{
5595			Header:         res.Header,
5596			HTTPStatusCode: res.StatusCode,
5597		},
5598	}
5599	target := &ret
5600	if err := gensupport.DecodeResponse(target, res); err != nil {
5601		return nil, err
5602	}
5603	return ret, nil
5604	// {
5605	//   "description": "Lists all producer overrides on this limit.",
5606	//   "flatPath": "v1beta1/services/{servicesId}/{servicesId1}/{servicesId2}/consumerQuotaMetrics/{consumerQuotaMetricsId}/limits/{limitsId}/producerOverrides",
5607	//   "httpMethod": "GET",
5608	//   "id": "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.list",
5609	//   "parameterOrder": [
5610	//     "parent"
5611	//   ],
5612	//   "parameters": {
5613	//     "pageSize": {
5614	//       "description": "Requested size of the next page of data.",
5615	//       "format": "int32",
5616	//       "location": "query",
5617	//       "type": "integer"
5618	//     },
5619	//     "pageToken": {
5620	//       "description": "Token identifying which result to start with; returned by a previous list call.",
5621	//       "location": "query",
5622	//       "type": "string"
5623	//     },
5624	//     "parent": {
5625	//       "description": "The resource name of the parent quota limit, returned by a ListConsumerQuotaMetrics or GetConsumerQuotaMetric call. An example name would be: `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion`",
5626	//       "location": "path",
5627	//       "pattern": "^services/[^/]+/[^/]+/[^/]+/consumerQuotaMetrics/[^/]+/limits/[^/]+$",
5628	//       "required": true,
5629	//       "type": "string"
5630	//     }
5631	//   },
5632	//   "path": "v1beta1/{+parent}/producerOverrides",
5633	//   "response": {
5634	//     "$ref": "V1Beta1ListProducerOverridesResponse"
5635	//   },
5636	//   "scopes": [
5637	//     "https://www.googleapis.com/auth/cloud-platform"
5638	//   ]
5639	// }
5640
5641}
5642
5643// Pages invokes f for each page of results.
5644// A non-nil error returned from f will halt the iteration.
5645// The provided context supersedes any context provided to the Context method.
5646func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesListCall) Pages(ctx context.Context, f func(*V1Beta1ListProducerOverridesResponse) error) error {
5647	c.ctx_ = ctx
5648	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
5649	for {
5650		x, err := c.Do()
5651		if err != nil {
5652			return err
5653		}
5654		if err := f(x); err != nil {
5655			return err
5656		}
5657		if x.NextPageToken == "" {
5658			return nil
5659		}
5660		c.PageToken(x.NextPageToken)
5661	}
5662}
5663
5664// method id "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.patch":
5665
5666type ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall struct {
5667	s                    *APIService
5668	name                 string
5669	v1beta1quotaoverride *V1Beta1QuotaOverride
5670	urlParams_           gensupport.URLParams
5671	ctx_                 context.Context
5672	header_              http.Header
5673}
5674
5675// Patch: Updates a producer override.
5676//
5677// - name: The resource name of the override to update. An example name
5678//   would be:
5679//   `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/c
5680//   ompute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerOver
5681//   rides/4a3f2c1d`.
5682func (r *ServicesConsumerQuotaMetricsLimitsProducerOverridesService) Patch(name string, v1beta1quotaoverride *V1Beta1QuotaOverride) *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall {
5683	c := &ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5684	c.name = name
5685	c.v1beta1quotaoverride = v1beta1quotaoverride
5686	return c
5687}
5688
5689// Force sets the optional parameter "force": Whether to force the
5690// update of the quota override. Setting the force parameter to 'true'
5691// ignores all quota safety checks that would fail the request.
5692// QuotaSafetyCheck lists all such validations.
5693func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall) Force(force bool) *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall {
5694	c.urlParams_.Set("force", fmt.Sprint(force))
5695	return c
5696}
5697
5698// ForceOnly sets the optional parameter "forceOnly": The list of quota
5699// safety checks to ignore before the override mutation. Unlike 'force'
5700// field that ignores all the quota safety checks, the 'force_only'
5701// field ignores only the specified checks; other checks are still
5702// enforced. The 'force' and 'force_only' fields cannot both be set.
5703//
5704// Possible values:
5705//   "QUOTA_SAFETY_CHECK_UNSPECIFIED" - Unspecified quota safety check.
5706//   "LIMIT_DECREASE_BELOW_USAGE" - Validates that a quota mutation
5707// would not cause the consumer's effective limit to be lower than the
5708// consumer's quota usage.
5709//   "LIMIT_DECREASE_PERCENTAGE_TOO_HIGH" - Validates that a quota
5710// mutation would not cause the consumer's effective limit to decrease
5711// by more than 10 percent.
5712func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall) ForceOnly(forceOnly ...string) *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall {
5713	c.urlParams_.SetMulti("forceOnly", append([]string{}, forceOnly...))
5714	return c
5715}
5716
5717// UpdateMask sets the optional parameter "updateMask": Update only the
5718// specified fields. If unset, all modifiable fields will be updated.
5719func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall) UpdateMask(updateMask string) *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall {
5720	c.urlParams_.Set("updateMask", updateMask)
5721	return c
5722}
5723
5724// Fields allows partial responses to be retrieved. See
5725// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5726// for more information.
5727func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall) Fields(s ...googleapi.Field) *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall {
5728	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5729	return c
5730}
5731
5732// Context sets the context to be used in this call's Do method. Any
5733// pending HTTP request will be aborted if the provided context is
5734// canceled.
5735func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall) Context(ctx context.Context) *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall {
5736	c.ctx_ = ctx
5737	return c
5738}
5739
5740// Header returns an http.Header that can be modified by the caller to
5741// add HTTP headers to the request.
5742func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall) Header() http.Header {
5743	if c.header_ == nil {
5744		c.header_ = make(http.Header)
5745	}
5746	return c.header_
5747}
5748
5749func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall) doRequest(alt string) (*http.Response, error) {
5750	reqHeaders := make(http.Header)
5751	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20211201")
5752	for k, v := range c.header_ {
5753		reqHeaders[k] = v
5754	}
5755	reqHeaders.Set("User-Agent", c.s.userAgent())
5756	var body io.Reader = nil
5757	body, err := googleapi.WithoutDataWrapper.JSONReader(c.v1beta1quotaoverride)
5758	if err != nil {
5759		return nil, err
5760	}
5761	reqHeaders.Set("Content-Type", "application/json")
5762	c.urlParams_.Set("alt", alt)
5763	c.urlParams_.Set("prettyPrint", "false")
5764	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}")
5765	urls += "?" + c.urlParams_.Encode()
5766	req, err := http.NewRequest("PATCH", urls, body)
5767	if err != nil {
5768		return nil, err
5769	}
5770	req.Header = reqHeaders
5771	googleapi.Expand(req.URL, map[string]string{
5772		"name": c.name,
5773	})
5774	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5775}
5776
5777// Do executes the "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.patch" call.
5778// Exactly one of *Operation or error will be non-nil. Any non-2xx
5779// status code is an error. Response headers are in either
5780// *Operation.ServerResponse.Header or (if a response was returned at
5781// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
5782// to check whether the returned error was because
5783// http.StatusNotModified was returned.
5784func (c *ServicesConsumerQuotaMetricsLimitsProducerOverridesPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
5785	gensupport.SetOptions(c.urlParams_, opts...)
5786	res, err := c.doRequest("json")
5787	if res != nil && res.StatusCode == http.StatusNotModified {
5788		if res.Body != nil {
5789			res.Body.Close()
5790		}
5791		return nil, &googleapi.Error{
5792			Code:   res.StatusCode,
5793			Header: res.Header,
5794		}
5795	}
5796	if err != nil {
5797		return nil, err
5798	}
5799	defer googleapi.CloseBody(res)
5800	if err := googleapi.CheckResponse(res); err != nil {
5801		return nil, err
5802	}
5803	ret := &Operation{
5804		ServerResponse: googleapi.ServerResponse{
5805			Header:         res.Header,
5806			HTTPStatusCode: res.StatusCode,
5807		},
5808	}
5809	target := &ret
5810	if err := gensupport.DecodeResponse(target, res); err != nil {
5811		return nil, err
5812	}
5813	return ret, nil
5814	// {
5815	//   "description": "Updates a producer override.",
5816	//   "flatPath": "v1beta1/services/{servicesId}/{servicesId1}/{servicesId2}/consumerQuotaMetrics/{consumerQuotaMetricsId}/limits/{limitsId}/producerOverrides/{producerOverridesId}",
5817	//   "httpMethod": "PATCH",
5818	//   "id": "serviceconsumermanagement.services.consumerQuotaMetrics.limits.producerOverrides.patch",
5819	//   "parameterOrder": [
5820	//     "name"
5821	//   ],
5822	//   "parameters": {
5823	//     "force": {
5824	//       "description": "Whether to force the update of the quota override. Setting the force parameter to 'true' ignores all quota safety checks that would fail the request. QuotaSafetyCheck lists all such validations.",
5825	//       "location": "query",
5826	//       "type": "boolean"
5827	//     },
5828	//     "forceOnly": {
5829	//       "description": "The list of quota safety checks to ignore before the override mutation. Unlike 'force' field that ignores all the quota safety checks, the 'force_only' field ignores only the specified checks; other checks are still enforced. The 'force' and 'force_only' fields cannot both be set.",
5830	//       "enum": [
5831	//         "QUOTA_SAFETY_CHECK_UNSPECIFIED",
5832	//         "LIMIT_DECREASE_BELOW_USAGE",
5833	//         "LIMIT_DECREASE_PERCENTAGE_TOO_HIGH"
5834	//       ],
5835	//       "enumDescriptions": [
5836	//         "Unspecified quota safety check.",
5837	//         "Validates that a quota mutation would not cause the consumer's effective limit to be lower than the consumer's quota usage.",
5838	//         "Validates that a quota mutation would not cause the consumer's effective limit to decrease by more than 10 percent."
5839	//       ],
5840	//       "location": "query",
5841	//       "repeated": true,
5842	//       "type": "string"
5843	//     },
5844	//     "name": {
5845	//       "description": "The resource name of the override to update. An example name would be: `services/compute.googleapis.com/projects/123/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/producerOverrides/4a3f2c1d`",
5846	//       "location": "path",
5847	//       "pattern": "^services/[^/]+/[^/]+/[^/]+/consumerQuotaMetrics/[^/]+/limits/[^/]+/producerOverrides/[^/]+$",
5848	//       "required": true,
5849	//       "type": "string"
5850	//     },
5851	//     "updateMask": {
5852	//       "description": "Update only the specified fields. If unset, all modifiable fields will be updated.",
5853	//       "format": "google-fieldmask",
5854	//       "location": "query",
5855	//       "type": "string"
5856	//     }
5857	//   },
5858	//   "path": "v1beta1/{+name}",
5859	//   "request": {
5860	//     "$ref": "V1Beta1QuotaOverride"
5861	//   },
5862	//   "response": {
5863	//     "$ref": "Operation"
5864	//   },
5865	//   "scopes": [
5866	//     "https://www.googleapis.com/auth/cloud-platform"
5867	//   ]
5868	// }
5869
5870}
5871