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