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