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