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