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