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