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 servicemanagement provides access to the Service Management API.
8//
9// For product documentation, see: https://cloud.google.com/service-management/
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/servicemanagement/v1"
16//   ...
17//   ctx := context.Background()
18//   servicemanagementService, err := servicemanagement.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//   servicemanagementService, err := servicemanagement.NewService(ctx, option.WithScopes(servicemanagement.ServiceManagementReadonlyScope))
29//
30// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
31//
32//   servicemanagementService, err := servicemanagement.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//   servicemanagementService, err := servicemanagement.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
40//
41// See https://godoc.org/google.golang.org/api/option/ for details on options.
42package servicemanagement // import "google.golang.org/api/servicemanagement/v1"
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 = "servicemanagement:v1"
79const apiName = "servicemanagement"
80const apiVersion = "v1"
81const basePath = "https://servicemanagement.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	// View your Google API service configuration
95	ServiceManagementReadonlyScope = "https://www.googleapis.com/auth/service.management.readonly"
96)
97
98// NewService creates a new APIService.
99func NewService(ctx context.Context, opts ...option.ClientOption) (*APIService, error) {
100	scopesOption := option.WithScopes(
101		"https://www.googleapis.com/auth/cloud-platform",
102		"https://www.googleapis.com/auth/cloud-platform.read-only",
103		"https://www.googleapis.com/auth/service.management",
104		"https://www.googleapis.com/auth/service.management.readonly",
105	)
106	// NOTE: prepend, so we don't override user-specified scopes.
107	opts = append([]option.ClientOption{scopesOption}, opts...)
108	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
109	client, endpoint, err := htransport.NewClient(ctx, opts...)
110	if err != nil {
111		return nil, err
112	}
113	s, err := New(client)
114	if err != nil {
115		return nil, err
116	}
117	if endpoint != "" {
118		s.BasePath = endpoint
119	}
120	return s, nil
121}
122
123// New creates a new APIService. It uses the provided http.Client for requests.
124//
125// Deprecated: please use NewService instead.
126// To provide a custom HTTP client, use option.WithHTTPClient.
127// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
128func New(client *http.Client) (*APIService, error) {
129	if client == nil {
130		return nil, errors.New("client is nil")
131	}
132	s := &APIService{client: client, BasePath: basePath}
133	s.Operations = NewOperationsService(s)
134	s.Services = NewServicesService(s)
135	return s, nil
136}
137
138type APIService struct {
139	client    *http.Client
140	BasePath  string // API endpoint base URL
141	UserAgent string // optional additional User-Agent fragment
142
143	Operations *OperationsService
144
145	Services *ServicesService
146}
147
148func (s *APIService) userAgent() string {
149	if s.UserAgent == "" {
150		return googleapi.UserAgent
151	}
152	return googleapi.UserAgent + " " + s.UserAgent
153}
154
155func NewOperationsService(s *APIService) *OperationsService {
156	rs := &OperationsService{s: s}
157	return rs
158}
159
160type OperationsService struct {
161	s *APIService
162}
163
164func NewServicesService(s *APIService) *ServicesService {
165	rs := &ServicesService{s: s}
166	rs.Configs = NewServicesConfigsService(s)
167	rs.Consumers = NewServicesConsumersService(s)
168	rs.Rollouts = NewServicesRolloutsService(s)
169	return rs
170}
171
172type ServicesService struct {
173	s *APIService
174
175	Configs *ServicesConfigsService
176
177	Consumers *ServicesConsumersService
178
179	Rollouts *ServicesRolloutsService
180}
181
182func NewServicesConfigsService(s *APIService) *ServicesConfigsService {
183	rs := &ServicesConfigsService{s: s}
184	return rs
185}
186
187type ServicesConfigsService struct {
188	s *APIService
189}
190
191func NewServicesConsumersService(s *APIService) *ServicesConsumersService {
192	rs := &ServicesConsumersService{s: s}
193	return rs
194}
195
196type ServicesConsumersService struct {
197	s *APIService
198}
199
200func NewServicesRolloutsService(s *APIService) *ServicesRolloutsService {
201	rs := &ServicesRolloutsService{s: s}
202	return rs
203}
204
205type ServicesRolloutsService struct {
206	s *APIService
207}
208
209// Advice: Generated advice about this change, used for providing
210// more
211// information about how a change will affect the existing service.
212type Advice struct {
213	// Description: Useful description for why this advice was applied and
214	// what actions should
215	// be taken to mitigate any implied risks.
216	Description string `json:"description,omitempty"`
217
218	// ForceSendFields is a list of field names (e.g. "Description") to
219	// unconditionally include in API requests. By default, fields with
220	// empty values are omitted from API requests. However, any non-pointer,
221	// non-interface field appearing in ForceSendFields will be sent to the
222	// server regardless of whether the field is empty or not. This may be
223	// used to include empty fields in Patch requests.
224	ForceSendFields []string `json:"-"`
225
226	// NullFields is a list of field names (e.g. "Description") to include
227	// in API requests with the JSON null value. By default, fields with
228	// empty values are omitted from API requests. However, any field with
229	// an empty value appearing in NullFields will be sent to the server as
230	// null. It is an error if a field in this list has a non-empty value.
231	// This may be used to include null fields in Patch requests.
232	NullFields []string `json:"-"`
233}
234
235func (s *Advice) MarshalJSON() ([]byte, error) {
236	type NoMethod Advice
237	raw := NoMethod(*s)
238	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
239}
240
241// Api: Api is a light-weight descriptor for an API
242// Interface.
243//
244// Interfaces are also described as "protocol buffer services" in some
245// contexts,
246// such as by the "service" keyword in a .proto file, but they are
247// different
248// from API Services, which represent a concrete implementation of an
249// interface
250// as opposed to simply a description of methods and bindings. They are
251// also
252// sometimes simply referred to as "APIs" in other contexts, such as the
253// name of
254// this message itself. See
255// https://cloud.google.com/apis/design/glossary for
256// detailed terminology.
257type Api struct {
258	// Methods: The methods of this interface, in unspecified order.
259	Methods []*Method `json:"methods,omitempty"`
260
261	// Mixins: Included interfaces. See Mixin.
262	Mixins []*Mixin `json:"mixins,omitempty"`
263
264	// Name: The fully qualified name of this interface, including package
265	// name
266	// followed by the interface's simple name.
267	Name string `json:"name,omitempty"`
268
269	// Options: Any metadata attached to the interface.
270	Options []*Option `json:"options,omitempty"`
271
272	// SourceContext: Source context for the protocol buffer service
273	// represented by this
274	// message.
275	SourceContext *SourceContext `json:"sourceContext,omitempty"`
276
277	// Syntax: The source syntax of the service.
278	//
279	// Possible values:
280	//   "SYNTAX_PROTO2" - Syntax `proto2`.
281	//   "SYNTAX_PROTO3" - Syntax `proto3`.
282	Syntax string `json:"syntax,omitempty"`
283
284	// Version: A version string for this interface. If specified, must have
285	// the form
286	// `major-version.minor-version`, as in `1.10`. If the minor version
287	// is
288	// omitted, it defaults to zero. If the entire version field is empty,
289	// the
290	// major version is derived from the package name, as outlined below. If
291	// the
292	// field is not empty, the version in the package name will be verified
293	// to be
294	// consistent with what is provided here.
295	//
296	// The versioning schema uses [semantic
297	// versioning](http://semver.org) where the major version
298	// number
299	// indicates a breaking change and the minor version an
300	// additive,
301	// non-breaking change. Both version numbers are signals to users
302	// what to expect from different versions, and should be
303	// carefully
304	// chosen based on the product plan.
305	//
306	// The major version is also reflected in the package name of
307	// the
308	// interface, which must end in `v<major-version>`, as
309	// in
310	// `google.feature.v1`. For major versions 0 and 1, the suffix can
311	// be omitted. Zero major versions must only be used for
312	// experimental, non-GA interfaces.
313	//
314	Version string `json:"version,omitempty"`
315
316	// ForceSendFields is a list of field names (e.g. "Methods") to
317	// unconditionally include in API requests. By default, fields with
318	// empty values are omitted from API requests. However, any non-pointer,
319	// non-interface field appearing in ForceSendFields will be sent to the
320	// server regardless of whether the field is empty or not. This may be
321	// used to include empty fields in Patch requests.
322	ForceSendFields []string `json:"-"`
323
324	// NullFields is a list of field names (e.g. "Methods") to include in
325	// API requests with the JSON null value. By default, fields with empty
326	// values are omitted from API requests. However, any field with an
327	// empty value appearing in NullFields will be sent to the server as
328	// null. It is an error if a field in this list has a non-empty value.
329	// This may be used to include null fields in Patch requests.
330	NullFields []string `json:"-"`
331}
332
333func (s *Api) MarshalJSON() ([]byte, error) {
334	type NoMethod Api
335	raw := NoMethod(*s)
336	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
337}
338
339// AuditConfig: Specifies the audit configuration for a service.
340// The configuration determines which permission types are logged, and
341// what
342// identities, if any, are exempted from logging.
343// An AuditConfig must have one or more AuditLogConfigs.
344//
345// If there are AuditConfigs for both `allServices` and a specific
346// service,
347// the union of the two AuditConfigs is used for that service: the
348// log_types
349// specified in each AuditConfig are enabled, and the exempted_members
350// in each
351// AuditLogConfig are exempted.
352//
353// Example Policy with multiple AuditConfigs:
354//
355//     {
356//       "audit_configs": [
357//         {
358//           "service": "allServices"
359//           "audit_log_configs": [
360//             {
361//               "log_type": "DATA_READ",
362//               "exempted_members": [
363//                 "user:jose@example.com"
364//               ]
365//             },
366//             {
367//               "log_type": "DATA_WRITE",
368//             },
369//             {
370//               "log_type": "ADMIN_READ",
371//             }
372//           ]
373//         },
374//         {
375//           "service": "sampleservice.googleapis.com"
376//           "audit_log_configs": [
377//             {
378//               "log_type": "DATA_READ",
379//             },
380//             {
381//               "log_type": "DATA_WRITE",
382//               "exempted_members": [
383//                 "user:aliya@example.com"
384//               ]
385//             }
386//           ]
387//         }
388//       ]
389//     }
390//
391// For sampleservice, this policy enables DATA_READ, DATA_WRITE and
392// ADMIN_READ
393// logging. It also exempts jose@example.com from DATA_READ logging,
394// and
395// aliya@example.com from DATA_WRITE logging.
396type AuditConfig struct {
397	// AuditLogConfigs: The configuration for logging of each type of
398	// permission.
399	AuditLogConfigs []*AuditLogConfig `json:"auditLogConfigs,omitempty"`
400
401	// Service: Specifies a service that will be enabled for audit
402	// logging.
403	// For example, `storage.googleapis.com`,
404	// `cloudsql.googleapis.com`.
405	// `allServices` is a special value that covers all services.
406	Service string `json:"service,omitempty"`
407
408	// ForceSendFields is a list of field names (e.g. "AuditLogConfigs") to
409	// unconditionally include in API requests. By default, fields with
410	// empty values are omitted from API requests. However, any non-pointer,
411	// non-interface field appearing in ForceSendFields will be sent to the
412	// server regardless of whether the field is empty or not. This may be
413	// used to include empty fields in Patch requests.
414	ForceSendFields []string `json:"-"`
415
416	// NullFields is a list of field names (e.g. "AuditLogConfigs") to
417	// include in API requests with the JSON null value. By default, fields
418	// with empty values are omitted from API requests. However, any field
419	// with an empty value appearing in NullFields will be sent to the
420	// server as null. It is an error if a field in this list has a
421	// non-empty value. This may be used to include null fields in Patch
422	// requests.
423	NullFields []string `json:"-"`
424}
425
426func (s *AuditConfig) MarshalJSON() ([]byte, error) {
427	type NoMethod AuditConfig
428	raw := NoMethod(*s)
429	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
430}
431
432// AuditLogConfig: Provides the configuration for logging a type of
433// permissions.
434// Example:
435//
436//     {
437//       "audit_log_configs": [
438//         {
439//           "log_type": "DATA_READ",
440//           "exempted_members": [
441//             "user:jose@example.com"
442//           ]
443//         },
444//         {
445//           "log_type": "DATA_WRITE",
446//         }
447//       ]
448//     }
449//
450// This enables 'DATA_READ' and 'DATA_WRITE' logging, while
451// exempting
452// jose@example.com from DATA_READ logging.
453type AuditLogConfig struct {
454	// ExemptedMembers: Specifies the identities that do not cause logging
455	// for this type of
456	// permission.
457	// Follows the same format of Binding.members.
458	ExemptedMembers []string `json:"exemptedMembers,omitempty"`
459
460	// LogType: The log type that this config enables.
461	//
462	// Possible values:
463	//   "LOG_TYPE_UNSPECIFIED" - Default case. Should never be this.
464	//   "ADMIN_READ" - Admin reads. Example: CloudIAM getIamPolicy
465	//   "DATA_WRITE" - Data writes. Example: CloudSQL Users create
466	//   "DATA_READ" - Data reads. Example: CloudSQL Users list
467	LogType string `json:"logType,omitempty"`
468
469	// ForceSendFields is a list of field names (e.g. "ExemptedMembers") to
470	// unconditionally include in API requests. By default, fields with
471	// empty values are omitted from API requests. However, any non-pointer,
472	// non-interface field appearing in ForceSendFields will be sent to the
473	// server regardless of whether the field is empty or not. This may be
474	// used to include empty fields in Patch requests.
475	ForceSendFields []string `json:"-"`
476
477	// NullFields is a list of field names (e.g. "ExemptedMembers") to
478	// include in API requests with the JSON null value. By default, fields
479	// with empty values are omitted from API requests. However, any field
480	// with an empty value appearing in NullFields will be sent to the
481	// server as null. It is an error if a field in this list has a
482	// non-empty value. This may be used to include null fields in Patch
483	// requests.
484	NullFields []string `json:"-"`
485}
486
487func (s *AuditLogConfig) MarshalJSON() ([]byte, error) {
488	type NoMethod AuditLogConfig
489	raw := NoMethod(*s)
490	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
491}
492
493// AuthProvider: Configuration for an authentication provider, including
494// support for
495// [JSON Web
496// Token
497// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-tok
498// en-32).
499type AuthProvider struct {
500	// Audiences: The list of
501	// JWT
502	// [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-
503	// token-32#section-4.1.3).
504	// that are allowed to access. A JWT containing any of these audiences
505	// will
506	// be accepted. When this setting is absent, only JWTs with
507	// audience
508	// "https://Service_name/API_name"
509	// will be accepted. For example, if no audiences are in the
510	// setting,
511	// LibraryService API will only accept JWTs with the following
512	// audience
513	// "https://library-example.googleapis.com/google.example.librar
514	// y.v1.LibraryService".
515	//
516	// Example:
517	//
518	//     audiences: bookstore_android.apps.googleusercontent.com,
519	//                bookstore_web.apps.googleusercontent.com
520	Audiences string `json:"audiences,omitempty"`
521
522	// AuthorizationUrl: Redirect URL if JWT token is required but not
523	// present or is expired.
524	// Implement authorizationUrl of securityDefinitions in OpenAPI spec.
525	AuthorizationUrl string `json:"authorizationUrl,omitempty"`
526
527	// Id: The unique identifier of the auth provider. It will be referred
528	// to by
529	// `AuthRequirement.provider_id`.
530	//
531	// Example: "bookstore_auth".
532	Id string `json:"id,omitempty"`
533
534	// Issuer: Identifies the principal that issued the JWT.
535	// See
536	// https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#sec
537	// tion-4.1.1
538	// Usually a URL or an email address.
539	//
540	// Example: https://securetoken.google.com
541	// Example: 1234567-compute@developer.gserviceaccount.com
542	Issuer string `json:"issuer,omitempty"`
543
544	// JwksUri: URL of the provider's public key set to validate signature
545	// of the JWT.
546	// See
547	// [OpenID
548	// Discovery](https://openid.net/specs/openid-connect-discove
549	// ry-1_0.html#ProviderMetadata).
550	// Optional if the key set document:
551	//  - can be retrieved from
552	//    [OpenID
553	//
554	// Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html
555	// of
556	//    the issuer.
557	//  - can be inferred from the email domain of the issuer (e.g. a
558	// Google
559	//  service account).
560	//
561	// Example: https://www.googleapis.com/oauth2/v1/certs
562	JwksUri string `json:"jwksUri,omitempty"`
563
564	// ForceSendFields is a list of field names (e.g. "Audiences") to
565	// unconditionally include in API requests. By default, fields with
566	// empty values are omitted from API requests. However, any non-pointer,
567	// non-interface field appearing in ForceSendFields will be sent to the
568	// server regardless of whether the field is empty or not. This may be
569	// used to include empty fields in Patch requests.
570	ForceSendFields []string `json:"-"`
571
572	// NullFields is a list of field names (e.g. "Audiences") to include in
573	// API requests with the JSON null value. By default, fields with empty
574	// values are omitted from API requests. However, any field with an
575	// empty value appearing in NullFields will be sent to the server as
576	// null. It is an error if a field in this list has a non-empty value.
577	// This may be used to include null fields in Patch requests.
578	NullFields []string `json:"-"`
579}
580
581func (s *AuthProvider) MarshalJSON() ([]byte, error) {
582	type NoMethod AuthProvider
583	raw := NoMethod(*s)
584	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
585}
586
587// AuthRequirement: User-defined authentication requirements, including
588// support for
589// [JSON Web
590// Token
591// (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-tok
592// en-32).
593type AuthRequirement struct {
594	// Audiences: NOTE: This will be deprecated soon, once
595	// AuthProvider.audiences is
596	// implemented and accepted in all the runtime components.
597	//
598	// The list of
599	// JWT
600	// [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-
601	// token-32#section-4.1.3).
602	// that are allowed to access. A JWT containing any of these audiences
603	// will
604	// be accepted. When this setting is absent, only JWTs with
605	// audience
606	// "https://Service_name/API_name"
607	// will be accepted. For example, if no audiences are in the
608	// setting,
609	// LibraryService API will only accept JWTs with the following
610	// audience
611	// "https://library-example.googleapis.com/google.example.librar
612	// y.v1.LibraryService".
613	//
614	// Example:
615	//
616	//     audiences: bookstore_android.apps.googleusercontent.com,
617	//                bookstore_web.apps.googleusercontent.com
618	Audiences string `json:"audiences,omitempty"`
619
620	// ProviderId: id from authentication provider.
621	//
622	// Example:
623	//
624	//     provider_id: bookstore_auth
625	ProviderId string `json:"providerId,omitempty"`
626
627	// ForceSendFields is a list of field names (e.g. "Audiences") to
628	// unconditionally include in API requests. By default, fields with
629	// empty values are omitted from API requests. However, any non-pointer,
630	// non-interface field appearing in ForceSendFields will be sent to the
631	// server regardless of whether the field is empty or not. This may be
632	// used to include empty fields in Patch requests.
633	ForceSendFields []string `json:"-"`
634
635	// NullFields is a list of field names (e.g. "Audiences") to include in
636	// API requests with the JSON null value. By default, fields with empty
637	// values are omitted from API requests. However, any field with an
638	// empty value appearing in NullFields will be sent to the server as
639	// null. It is an error if a field in this list has a non-empty value.
640	// This may be used to include null fields in Patch requests.
641	NullFields []string `json:"-"`
642}
643
644func (s *AuthRequirement) MarshalJSON() ([]byte, error) {
645	type NoMethod AuthRequirement
646	raw := NoMethod(*s)
647	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
648}
649
650// Authentication: `Authentication` defines the authentication
651// configuration for an API.
652//
653// Example for an API targeted for external use:
654//
655//     name: calendar.googleapis.com
656//     authentication:
657//       providers:
658//       - id: google_calendar_auth
659//         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
660//         issuer: https://securetoken.google.com
661//       rules:
662//       - selector: "*"
663//         requirements:
664//           provider_id: google_calendar_auth
665type Authentication struct {
666	// Providers: Defines a set of authentication providers that a service
667	// supports.
668	Providers []*AuthProvider `json:"providers,omitempty"`
669
670	// Rules: A list of authentication rules that apply to individual API
671	// methods.
672	//
673	// **NOTE:** All service configuration rules follow "last one wins"
674	// order.
675	Rules []*AuthenticationRule `json:"rules,omitempty"`
676
677	// ForceSendFields is a list of field names (e.g. "Providers") to
678	// unconditionally include in API requests. By default, fields with
679	// empty values are omitted from API requests. However, any non-pointer,
680	// non-interface field appearing in ForceSendFields will be sent to the
681	// server regardless of whether the field is empty or not. This may be
682	// used to include empty fields in Patch requests.
683	ForceSendFields []string `json:"-"`
684
685	// NullFields is a list of field names (e.g. "Providers") to include in
686	// API requests with the JSON null value. By default, fields with empty
687	// values are omitted from API requests. However, any field with an
688	// empty value appearing in NullFields will be sent to the server as
689	// null. It is an error if a field in this list has a non-empty value.
690	// This may be used to include null fields in Patch requests.
691	NullFields []string `json:"-"`
692}
693
694func (s *Authentication) MarshalJSON() ([]byte, error) {
695	type NoMethod Authentication
696	raw := NoMethod(*s)
697	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
698}
699
700// AuthenticationRule: Authentication rules for the service.
701//
702// By default, if a method has any authentication requirements, every
703// request
704// must include a valid credential matching one of the
705// requirements.
706// It's an error to include more than one kind of credential in a
707// single
708// request.
709//
710// If a method doesn't have any auth requirements, request credentials
711// will be
712// ignored.
713type AuthenticationRule struct {
714	// AllowWithoutCredential: If true, the service accepts API keys without
715	// any other credential.
716	AllowWithoutCredential bool `json:"allowWithoutCredential,omitempty"`
717
718	// Oauth: The requirements for OAuth credentials.
719	Oauth *OAuthRequirements `json:"oauth,omitempty"`
720
721	// Requirements: Requirements for additional authentication providers.
722	Requirements []*AuthRequirement `json:"requirements,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.
730	// "AllowWithoutCredential") to unconditionally include in API requests.
731	// By default, fields with empty values are omitted from API requests.
732	// However, any non-pointer, non-interface field appearing in
733	// ForceSendFields will be sent to the server regardless of whether the
734	// field is empty or not. This may be used to include empty fields in
735	// Patch requests.
736	ForceSendFields []string `json:"-"`
737
738	// NullFields is a list of field names (e.g. "AllowWithoutCredential")
739	// to include in API requests with the JSON null value. By default,
740	// fields with empty values are omitted from API requests. However, any
741	// field with an empty value appearing in NullFields will be sent to the
742	// server as null. It is an error if a field in this list has a
743	// non-empty value. This may be used to include null fields in Patch
744	// requests.
745	NullFields []string `json:"-"`
746}
747
748func (s *AuthenticationRule) MarshalJSON() ([]byte, error) {
749	type NoMethod AuthenticationRule
750	raw := NoMethod(*s)
751	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
752}
753
754// Backend: `Backend` defines the backend configuration for a service.
755type Backend struct {
756	// Rules: A list of API backend rules that apply to individual API
757	// methods.
758	//
759	// **NOTE:** All service configuration rules follow "last one wins"
760	// order.
761	Rules []*BackendRule `json:"rules,omitempty"`
762
763	// ForceSendFields is a list of field names (e.g. "Rules") to
764	// unconditionally include in API requests. By default, fields with
765	// empty values are omitted from API requests. However, any non-pointer,
766	// non-interface field appearing in ForceSendFields will be sent to the
767	// server regardless of whether the field is empty or not. This may be
768	// used to include empty fields in Patch requests.
769	ForceSendFields []string `json:"-"`
770
771	// NullFields is a list of field names (e.g. "Rules") to include in API
772	// requests with the JSON null value. By default, fields with empty
773	// values are omitted from API requests. However, any field with an
774	// empty value appearing in NullFields will be sent to the server as
775	// null. It is an error if a field in this list has a non-empty value.
776	// This may be used to include null fields in Patch requests.
777	NullFields []string `json:"-"`
778}
779
780func (s *Backend) MarshalJSON() ([]byte, error) {
781	type NoMethod Backend
782	raw := NoMethod(*s)
783	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
784}
785
786// BackendRule: A backend rule provides configuration for an individual
787// API element.
788type BackendRule struct {
789	// Address: The address of the API backend.
790	//
791	// The scheme is used to determine the backend protocol and
792	// security.
793	// The following schemes are accepted:
794	//
795	//    SCHEME        PROTOCOL    SECURITY
796	//    http://       HTTP        None
797	//    https://      HTTP        TLS
798	//    grpc://       gRPC        None
799	//    grpcs://      gRPC        TLS
800	//
801	// It is recommended to explicitly include a scheme. Leaving out the
802	// scheme
803	// may cause constrasting behaviors across platforms.
804	//
805	// If the port is unspecified, the default is:
806	// - 80 for schemes without TLS
807	// - 443 for schemes with TLS
808	//
809	// For HTTP backends, use protocol
810	// to specify the protocol version.
811	Address string `json:"address,omitempty"`
812
813	// Deadline: The number of seconds to wait for a response from a
814	// request. The default
815	// varies based on the request protocol and deployment environment.
816	Deadline float64 `json:"deadline,omitempty"`
817
818	// DisableAuth: When disable_auth is true, a JWT ID token won't be
819	// generated and the
820	// original "Authorization" HTTP header will be preserved. If the header
821	// is
822	// used to carry the original token and is expected by the backend,
823	// this
824	// field must be set to true to preserve the header.
825	DisableAuth bool `json:"disableAuth,omitempty"`
826
827	// JwtAudience: The JWT audience is used when generating a JWT ID token
828	// for the backend.
829	// This ID token will be added in the HTTP "authorization" header, and
830	// sent
831	// to the backend.
832	JwtAudience string `json:"jwtAudience,omitempty"`
833
834	// MinDeadline: Minimum deadline in seconds needed for this method.
835	// Calls having deadline
836	// value lower than this will be rejected.
837	MinDeadline float64 `json:"minDeadline,omitempty"`
838
839	// OperationDeadline: The number of seconds to wait for the completion
840	// of a long running
841	// operation. The default is no deadline.
842	OperationDeadline float64 `json:"operationDeadline,omitempty"`
843
844	// Possible values:
845	//   "PATH_TRANSLATION_UNSPECIFIED"
846	//   "CONSTANT_ADDRESS" - Use the backend address as-is, with no
847	// modification to the path. If the
848	// URL pattern contains variables, the variable names and values will
849	// be
850	// appended to the query string. If a query string parameter and a
851	// URL
852	// pattern variable have the same name, this may result in duplicate
853	// keys in
854	// the query string.
855	//
856	// # Examples
857	//
858	// Given the following operation config:
859	//
860	//     Method path:        /api/company/{cid}/user/{uid}
861	//     Backend address:
862	// https://example.cloudfunctions.net/getUser
863	//
864	// Requests to the following request paths will call the backend at
865	// the
866	// translated path:
867	//
868	//     Request path: /api/company/widgetworks/user/johndoe
869	//     Translated:
870	//
871	// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
872	//
873	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
874	//     Translated:
875	//
876	// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
877	//   "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the
878	// backend address.
879	//
880	// # Examples
881	//
882	// Given the following operation config:
883	//
884	//     Method path:        /api/company/{cid}/user/{uid}
885	//     Backend address:    https://example.appspot.com
886	//
887	// Requests to the following request paths will call the backend at
888	// the
889	// translated path:
890	//
891	//     Request path: /api/company/widgetworks/user/johndoe
892	//     Translated:
893	//
894	// https://example.appspot.com/api/company/widgetworks/user/johndoe
895	//
896	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
897	//     Translated:
898	//
899	// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
900	PathTranslation string `json:"pathTranslation,omitempty"`
901
902	// Protocol: The protocol used for sending a request to the backend.
903	// The supported values are "http/1.1" and "h2".
904	//
905	// The default value is inferred from the scheme in the
906	// address field:
907	//
908	//    SCHEME        PROTOCOL
909	//    http://       http/1.1
910	//    https://      http/1.1
911	//    grpc://       h2
912	//    grpcs://      h2
913	//
914	// For secure HTTP backends (https://) that support HTTP/2, set this
915	// field
916	// to "h2" for improved performance.
917	//
918	// Configuring this field to non-default values is only supported for
919	// secure
920	// HTTP backends. This field will be ignored for all other
921	// backends.
922	//
923	// See
924	// https://www.iana.org/assignments/tls-extensiontype-valu
925	// es/tls-extensiontype-values.xhtml#alpn-protocol-ids
926	// for more details on the supported values.
927	Protocol string `json:"protocol,omitempty"`
928
929	// Selector: Selects the methods to which this rule applies.
930	//
931	// Refer to selector for syntax details.
932	Selector string `json:"selector,omitempty"`
933
934	// ForceSendFields is a list of field names (e.g. "Address") to
935	// unconditionally include in API requests. By default, fields with
936	// empty values are omitted from API requests. However, any non-pointer,
937	// non-interface field appearing in ForceSendFields will be sent to the
938	// server regardless of whether the field is empty or not. This may be
939	// used to include empty fields in Patch requests.
940	ForceSendFields []string `json:"-"`
941
942	// NullFields is a list of field names (e.g. "Address") to include in
943	// API requests with the JSON null value. By default, fields with empty
944	// values are omitted from API requests. However, any field with an
945	// empty value appearing in NullFields will be sent to the server as
946	// null. It is an error if a field in this list has a non-empty value.
947	// This may be used to include null fields in Patch requests.
948	NullFields []string `json:"-"`
949}
950
951func (s *BackendRule) MarshalJSON() ([]byte, error) {
952	type NoMethod BackendRule
953	raw := NoMethod(*s)
954	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
955}
956
957func (s *BackendRule) UnmarshalJSON(data []byte) error {
958	type NoMethod BackendRule
959	var s1 struct {
960		Deadline          gensupport.JSONFloat64 `json:"deadline"`
961		MinDeadline       gensupport.JSONFloat64 `json:"minDeadline"`
962		OperationDeadline gensupport.JSONFloat64 `json:"operationDeadline"`
963		*NoMethod
964	}
965	s1.NoMethod = (*NoMethod)(s)
966	if err := json.Unmarshal(data, &s1); err != nil {
967		return err
968	}
969	s.Deadline = float64(s1.Deadline)
970	s.MinDeadline = float64(s1.MinDeadline)
971	s.OperationDeadline = float64(s1.OperationDeadline)
972	return nil
973}
974
975// Billing: Billing related configuration of the service.
976//
977// The following example shows how to configure monitored resources and
978// metrics
979// for billing:
980//
981//     monitored_resources:
982//     - type: library.googleapis.com/branch
983//       labels:
984//       - key: /city
985//         description: The city where the library branch is located
986// in.
987//       - key: /name
988//         description: The name of the branch.
989//     metrics:
990//     - name: library.googleapis.com/book/borrowed_count
991//       metric_kind: DELTA
992//       value_type: INT64
993//     billing:
994//       consumer_destinations:
995//       - monitored_resource: library.googleapis.com/branch
996//         metrics:
997//         - library.googleapis.com/book/borrowed_count
998type Billing struct {
999	// ConsumerDestinations: Billing configurations for sending metrics to
1000	// the consumer project.
1001	// There can be multiple consumer destinations per service, each one
1002	// must have
1003	// a different monitored resource type. A metric can be used in at
1004	// most
1005	// one consumer destination.
1006	ConsumerDestinations []*BillingDestination `json:"consumerDestinations,omitempty"`
1007
1008	// ForceSendFields is a list of field names (e.g.
1009	// "ConsumerDestinations") to unconditionally include in API requests.
1010	// By default, fields with empty values are omitted from API requests.
1011	// However, any non-pointer, non-interface field appearing in
1012	// ForceSendFields will be sent to the server regardless of whether the
1013	// field is empty or not. This may be used to include empty fields in
1014	// Patch requests.
1015	ForceSendFields []string `json:"-"`
1016
1017	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
1018	// include in API requests with the JSON null value. By default, fields
1019	// with empty values are omitted from API requests. However, any field
1020	// with an empty value appearing in NullFields will be sent to the
1021	// server as null. It is an error if a field in this list has a
1022	// non-empty value. This may be used to include null fields in Patch
1023	// requests.
1024	NullFields []string `json:"-"`
1025}
1026
1027func (s *Billing) MarshalJSON() ([]byte, error) {
1028	type NoMethod Billing
1029	raw := NoMethod(*s)
1030	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1031}
1032
1033// BillingDestination: Configuration of a specific billing destination
1034// (Currently only support
1035// bill against consumer project).
1036type BillingDestination struct {
1037	// Metrics: Names of the metrics to report to this billing
1038	// destination.
1039	// Each name must be defined in Service.metrics section.
1040	Metrics []string `json:"metrics,omitempty"`
1041
1042	// MonitoredResource: The monitored resource type. The type must be
1043	// defined in
1044	// Service.monitored_resources section.
1045	MonitoredResource string `json:"monitoredResource,omitempty"`
1046
1047	// ForceSendFields is a list of field names (e.g. "Metrics") to
1048	// unconditionally include in API requests. By default, fields with
1049	// empty values are omitted from API requests. However, any non-pointer,
1050	// non-interface field appearing in ForceSendFields will be sent to the
1051	// server regardless of whether the field is empty or not. This may be
1052	// used to include empty fields in Patch requests.
1053	ForceSendFields []string `json:"-"`
1054
1055	// NullFields is a list of field names (e.g. "Metrics") to include in
1056	// API requests with the JSON null value. By default, fields with empty
1057	// values are omitted from API requests. However, any field with an
1058	// empty value appearing in NullFields will be sent to the server as
1059	// null. It is an error if a field in this list has a non-empty value.
1060	// This may be used to include null fields in Patch requests.
1061	NullFields []string `json:"-"`
1062}
1063
1064func (s *BillingDestination) MarshalJSON() ([]byte, error) {
1065	type NoMethod BillingDestination
1066	raw := NoMethod(*s)
1067	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1068}
1069
1070// Binding: Associates `members` with a `role`.
1071type Binding struct {
1072	// Condition: The condition that is associated with this binding.
1073	// NOTE: An unsatisfied condition will not allow user access via
1074	// current
1075	// binding. Different bindings, including their conditions, are
1076	// examined
1077	// independently.
1078	Condition *Expr `json:"condition,omitempty"`
1079
1080	// Members: Specifies the identities requesting access for a Cloud
1081	// Platform resource.
1082	// `members` can have the following values:
1083	//
1084	// * `allUsers`: A special identifier that represents anyone who is
1085	//    on the internet; with or without a Google account.
1086	//
1087	// * `allAuthenticatedUsers`: A special identifier that represents
1088	// anyone
1089	//    who is authenticated with a Google account or a service
1090	// account.
1091	//
1092	// * `user:{emailid}`: An email address that represents a specific
1093	// Google
1094	//    account. For example, `alice@example.com` .
1095	//
1096	//
1097	// * `serviceAccount:{emailid}`: An email address that represents a
1098	// service
1099	//    account. For example,
1100	// `my-other-app@appspot.gserviceaccount.com`.
1101	//
1102	// * `group:{emailid}`: An email address that represents a Google
1103	// group.
1104	//    For example, `admins@example.com`.
1105	//
1106	// * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus
1107	// unique
1108	//    identifier) representing a user that has been recently deleted.
1109	// For
1110	//    example, `alice@example.com?uid=123456789012345678901`. If the
1111	// user is
1112	//    recovered, this value reverts to `user:{emailid}` and the
1113	// recovered user
1114	//    retains the role in the binding.
1115	//
1116	// * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address
1117	// (plus
1118	//    unique identifier) representing a service account that has been
1119	// recently
1120	//    deleted. For example,
1121	//
1122	// `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
1123	//
1124	//    If the service account is undeleted, this value reverts to
1125	//    `serviceAccount:{emailid}` and the undeleted service account
1126	// retains the
1127	//    role in the binding.
1128	//
1129	// * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus
1130	// unique
1131	//    identifier) representing a Google group that has been recently
1132	//    deleted. For example,
1133	// `admins@example.com?uid=123456789012345678901`. If
1134	//    the group is recovered, this value reverts to `group:{emailid}`
1135	// and the
1136	//    recovered group retains the role in the binding.
1137	//
1138	//
1139	// * `domain:{domain}`: The G Suite domain (primary) that represents all
1140	// the
1141	//    users of that domain. For example, `google.com` or
1142	// `example.com`.
1143	//
1144	//
1145	Members []string `json:"members,omitempty"`
1146
1147	// Role: Role that is assigned to `members`.
1148	// For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
1149	Role string `json:"role,omitempty"`
1150
1151	// ForceSendFields is a list of field names (e.g. "Condition") to
1152	// unconditionally include in API requests. By default, fields with
1153	// empty values are omitted from API requests. However, any non-pointer,
1154	// non-interface field appearing in ForceSendFields will be sent to the
1155	// server regardless of whether the field is empty or not. This may be
1156	// used to include empty fields in Patch requests.
1157	ForceSendFields []string `json:"-"`
1158
1159	// NullFields is a list of field names (e.g. "Condition") to include in
1160	// API requests with the JSON null value. By default, fields with empty
1161	// values are omitted from API requests. However, any field with an
1162	// empty value appearing in NullFields will be sent to the server as
1163	// null. It is an error if a field in this list has a non-empty value.
1164	// This may be used to include null fields in Patch requests.
1165	NullFields []string `json:"-"`
1166}
1167
1168func (s *Binding) MarshalJSON() ([]byte, error) {
1169	type NoMethod Binding
1170	raw := NoMethod(*s)
1171	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1172}
1173
1174// ChangeReport: Change report associated with a particular service
1175// configuration.
1176//
1177// It contains a list of ConfigChanges based on the comparison
1178// between
1179// two service configurations.
1180type ChangeReport struct {
1181	// ConfigChanges: List of changes between two service
1182	// configurations.
1183	// The changes will be alphabetically sorted based on the identifier
1184	// of each change.
1185	// A ConfigChange identifier is a dot separated path to the
1186	// configuration.
1187	// Example:
1188	// visibility.rules[selector='LibraryService.CreateBook'].restriction
1189	ConfigChanges []*ConfigChange `json:"configChanges,omitempty"`
1190
1191	// ForceSendFields is a list of field names (e.g. "ConfigChanges") to
1192	// unconditionally include in API requests. By default, fields with
1193	// empty values are omitted from API requests. However, any non-pointer,
1194	// non-interface field appearing in ForceSendFields will be sent to the
1195	// server regardless of whether the field is empty or not. This may be
1196	// used to include empty fields in Patch requests.
1197	ForceSendFields []string `json:"-"`
1198
1199	// NullFields is a list of field names (e.g. "ConfigChanges") to include
1200	// in API requests with the JSON null value. By default, fields with
1201	// empty values are omitted from API requests. However, any field with
1202	// an empty value appearing in NullFields will be sent to the server as
1203	// null. It is an error if a field in this list has a non-empty value.
1204	// This may be used to include null fields in Patch requests.
1205	NullFields []string `json:"-"`
1206}
1207
1208func (s *ChangeReport) MarshalJSON() ([]byte, error) {
1209	type NoMethod ChangeReport
1210	raw := NoMethod(*s)
1211	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1212}
1213
1214// ConfigChange: Output generated from semantically comparing two
1215// versions of a service
1216// configuration.
1217//
1218// Includes detailed information about a field that have changed
1219// with
1220// applicable advice about potential consequences for the change, such
1221// as
1222// backwards-incompatibility.
1223type ConfigChange struct {
1224	// Advices: Collection of advice provided for this change, useful for
1225	// determining the
1226	// possible impact of this change.
1227	Advices []*Advice `json:"advices,omitempty"`
1228
1229	// ChangeType: The type for this change, either ADDED, REMOVED, or
1230	// MODIFIED.
1231	//
1232	// Possible values:
1233	//   "CHANGE_TYPE_UNSPECIFIED" - No value was provided.
1234	//   "ADDED" - The changed object exists in the 'new' service
1235	// configuration, but not
1236	// in the 'old' service configuration.
1237	//   "REMOVED" - The changed object exists in the 'old' service
1238	// configuration, but not
1239	// in the 'new' service configuration.
1240	//   "MODIFIED" - The changed object exists in both service
1241	// configurations, but its value
1242	// is different.
1243	ChangeType string `json:"changeType,omitempty"`
1244
1245	// Element: Object hierarchy path to the change, with levels separated
1246	// by a '.'
1247	// character. For repeated fields, an applicable unique identifier field
1248	// is
1249	// used for the index (usually selector, name, or id). For maps, the
1250	// term
1251	// 'key' is used. If the field has no unique identifier, the numeric
1252	// index
1253	// is used.
1254	// Examples:
1255	// -
1256	// visibility.rules[selector=="google.LibraryService.ListBooks"].restrict
1257	// ion
1258	// -
1259	// quota.metric_rules[selector=="google"].metric_costs[key=="reads"].valu
1260	// e
1261	// - logging.producer_destinations[0]
1262	Element string `json:"element,omitempty"`
1263
1264	// NewValue: Value of the changed object in the new Service
1265	// configuration,
1266	// in JSON format. This field will not be populated if ChangeType ==
1267	// REMOVED.
1268	NewValue string `json:"newValue,omitempty"`
1269
1270	// OldValue: Value of the changed object in the old Service
1271	// configuration,
1272	// in JSON format. This field will not be populated if ChangeType ==
1273	// ADDED.
1274	OldValue string `json:"oldValue,omitempty"`
1275
1276	// ForceSendFields is a list of field names (e.g. "Advices") to
1277	// unconditionally include in API requests. By default, fields with
1278	// empty values are omitted from API requests. However, any non-pointer,
1279	// non-interface field appearing in ForceSendFields will be sent to the
1280	// server regardless of whether the field is empty or not. This may be
1281	// used to include empty fields in Patch requests.
1282	ForceSendFields []string `json:"-"`
1283
1284	// NullFields is a list of field names (e.g. "Advices") to include in
1285	// API requests with the JSON null value. By default, fields with empty
1286	// values are omitted from API requests. However, any field with an
1287	// empty value appearing in NullFields will be sent to the server as
1288	// null. It is an error if a field in this list has a non-empty value.
1289	// This may be used to include null fields in Patch requests.
1290	NullFields []string `json:"-"`
1291}
1292
1293func (s *ConfigChange) MarshalJSON() ([]byte, error) {
1294	type NoMethod ConfigChange
1295	raw := NoMethod(*s)
1296	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1297}
1298
1299// ConfigFile: Generic specification of a source configuration file
1300type ConfigFile struct {
1301	// FileContents: The bytes that constitute the file.
1302	FileContents string `json:"fileContents,omitempty"`
1303
1304	// FilePath: The file name of the configuration file (full or relative
1305	// path).
1306	FilePath string `json:"filePath,omitempty"`
1307
1308	// FileType: The type of configuration file this represents.
1309	//
1310	// Possible values:
1311	//   "FILE_TYPE_UNSPECIFIED" - Unknown file type.
1312	//   "SERVICE_CONFIG_YAML" - YAML-specification of service.
1313	//   "OPEN_API_JSON" - OpenAPI specification, serialized in JSON.
1314	//   "OPEN_API_YAML" - OpenAPI specification, serialized in YAML.
1315	//   "FILE_DESCRIPTOR_SET_PROTO" - FileDescriptorSet, generated by
1316	// protoc.
1317	//
1318	// To generate, use protoc with imports and source info included.
1319	// For an example test.proto file, the following command would put the
1320	// value
1321	// in a new file named out.pb.
1322	//
1323	// $protoc --include_imports --include_source_info test.proto -o out.pb
1324	//   "PROTO_FILE" - Uncompiled Proto file. Used for storage and display
1325	// purposes only,
1326	// currently server-side compilation is not supported. Should match
1327	// the
1328	// inputs to 'protoc' command used to generated
1329	// FILE_DESCRIPTOR_SET_PROTO. A
1330	// file of this type can only be included if at least one file of
1331	// type
1332	// FILE_DESCRIPTOR_SET_PROTO is included.
1333	FileType string `json:"fileType,omitempty"`
1334
1335	// ForceSendFields is a list of field names (e.g. "FileContents") to
1336	// unconditionally include in API requests. By default, fields with
1337	// empty values are omitted from API requests. However, any non-pointer,
1338	// non-interface field appearing in ForceSendFields will be sent to the
1339	// server regardless of whether the field is empty or not. This may be
1340	// used to include empty fields in Patch requests.
1341	ForceSendFields []string `json:"-"`
1342
1343	// NullFields is a list of field names (e.g. "FileContents") to include
1344	// in API requests with the JSON null value. By default, fields with
1345	// empty values are omitted from API requests. However, any field with
1346	// an empty value appearing in NullFields will be sent to the server as
1347	// null. It is an error if a field in this list has a non-empty value.
1348	// This may be used to include null fields in Patch requests.
1349	NullFields []string `json:"-"`
1350}
1351
1352func (s *ConfigFile) MarshalJSON() ([]byte, error) {
1353	type NoMethod ConfigFile
1354	raw := NoMethod(*s)
1355	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1356}
1357
1358// ConfigRef: Represents a service configuration with its name and id.
1359type ConfigRef struct {
1360	// Name: Resource name of a service config. It must have the
1361	// following
1362	// format: "services/{service name}/configs/{config id}".
1363	Name string `json:"name,omitempty"`
1364
1365	// ForceSendFields is a list of field names (e.g. "Name") to
1366	// unconditionally include in API requests. By default, fields with
1367	// empty values are omitted from API requests. However, any non-pointer,
1368	// non-interface field appearing in ForceSendFields will be sent to the
1369	// server regardless of whether the field is empty or not. This may be
1370	// used to include empty fields in Patch requests.
1371	ForceSendFields []string `json:"-"`
1372
1373	// NullFields is a list of field names (e.g. "Name") to include in API
1374	// requests with the JSON null value. By default, fields with empty
1375	// values are omitted from API requests. However, any field with an
1376	// empty value appearing in NullFields will be sent to the server as
1377	// null. It is an error if a field in this list has a non-empty value.
1378	// This may be used to include null fields in Patch requests.
1379	NullFields []string `json:"-"`
1380}
1381
1382func (s *ConfigRef) MarshalJSON() ([]byte, error) {
1383	type NoMethod ConfigRef
1384	raw := NoMethod(*s)
1385	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1386}
1387
1388// ConfigSource: Represents a source file which is used to generate the
1389// service configuration
1390// defined by `google.api.Service`.
1391type ConfigSource struct {
1392	// Files: Set of source configuration files that are used to generate a
1393	// service
1394	// configuration (`google.api.Service`).
1395	Files []*ConfigFile `json:"files,omitempty"`
1396
1397	// Id: A unique ID for a specific instance of this message, typically
1398	// assigned
1399	// by the client for tracking purpose. If empty, the server may choose
1400	// to
1401	// generate one instead.
1402	Id string `json:"id,omitempty"`
1403
1404	// ForceSendFields is a list of field names (e.g. "Files") to
1405	// unconditionally include in API requests. By default, fields with
1406	// empty values are omitted from API requests. However, any non-pointer,
1407	// non-interface field appearing in ForceSendFields will be sent to the
1408	// server regardless of whether the field is empty or not. This may be
1409	// used to include empty fields in Patch requests.
1410	ForceSendFields []string `json:"-"`
1411
1412	// NullFields is a list of field names (e.g. "Files") to include in API
1413	// requests with the JSON null value. By default, fields with empty
1414	// values are omitted from API requests. However, any field with an
1415	// empty value appearing in NullFields will be sent to the server as
1416	// null. It is an error if a field in this list has a non-empty value.
1417	// This may be used to include null fields in Patch requests.
1418	NullFields []string `json:"-"`
1419}
1420
1421func (s *ConfigSource) MarshalJSON() ([]byte, error) {
1422	type NoMethod ConfigSource
1423	raw := NoMethod(*s)
1424	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1425}
1426
1427// Context: `Context` defines which contexts an API
1428// requests.
1429//
1430// Example:
1431//
1432//     context:
1433//       rules:
1434//       - selector: "*"
1435//         requested:
1436//         - google.rpc.context.ProjectContext
1437//         - google.rpc.context.OriginContext
1438//
1439// The above specifies that all methods in the API
1440// request
1441// `google.rpc.context.ProjectContext`
1442// and
1443// `google.rpc.context.OriginContext`.
1444//
1445// Available context types are defined in
1446// package
1447// `google.rpc.context`.
1448//
1449// This also provides mechanism to whitelist any protobuf message
1450// extension that
1451// can be sent in grpc metadata using
1452// “x-goog-ext-<extension_id>-bin”
1453// and
1454// “x-goog-ext-<extension_id>-jspb” format. For example, list any
1455// service
1456// specific protobuf types that can appear in grpc metadata as follows
1457// in your
1458// yaml file:
1459//
1460// Example:
1461//
1462//     context:
1463//       rules:
1464//        - selector:
1465// "google.example.library.v1.LibraryService.CreateBook"
1466//          allowed_request_extensions:
1467//          - google.foo.v1.NewExtension
1468//          allowed_response_extensions:
1469//          - google.foo.v1.NewExtension
1470//
1471// You can also specify extension ID instead of fully qualified
1472// extension name
1473// here.
1474type Context struct {
1475	// Rules: A list of RPC context rules that apply to individual API
1476	// methods.
1477	//
1478	// **NOTE:** All service configuration rules follow "last one wins"
1479	// order.
1480	Rules []*ContextRule `json:"rules,omitempty"`
1481
1482	// ForceSendFields is a list of field names (e.g. "Rules") to
1483	// unconditionally include in API requests. By default, fields with
1484	// empty values are omitted from API requests. However, any non-pointer,
1485	// non-interface field appearing in ForceSendFields will be sent to the
1486	// server regardless of whether the field is empty or not. This may be
1487	// used to include empty fields in Patch requests.
1488	ForceSendFields []string `json:"-"`
1489
1490	// NullFields is a list of field names (e.g. "Rules") to include in API
1491	// requests with the JSON null value. By default, fields with empty
1492	// values are omitted from API requests. However, any field with an
1493	// empty value appearing in NullFields will be sent to the server as
1494	// null. It is an error if a field in this list has a non-empty value.
1495	// This may be used to include null fields in Patch requests.
1496	NullFields []string `json:"-"`
1497}
1498
1499func (s *Context) MarshalJSON() ([]byte, error) {
1500	type NoMethod Context
1501	raw := NoMethod(*s)
1502	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1503}
1504
1505// ContextRule: A context rule provides information about the context
1506// for an individual API
1507// element.
1508type ContextRule struct {
1509	// AllowedRequestExtensions: A list of full type names or extension IDs
1510	// of extensions allowed in grpc
1511	// side channel from client to backend.
1512	AllowedRequestExtensions []string `json:"allowedRequestExtensions,omitempty"`
1513
1514	// AllowedResponseExtensions: A list of full type names or extension IDs
1515	// of extensions allowed in grpc
1516	// side channel from backend to client.
1517	AllowedResponseExtensions []string `json:"allowedResponseExtensions,omitempty"`
1518
1519	// Provided: A list of full type names of provided contexts.
1520	Provided []string `json:"provided,omitempty"`
1521
1522	// Requested: A list of full type names of requested contexts.
1523	Requested []string `json:"requested,omitempty"`
1524
1525	// Selector: Selects the methods to which this rule applies.
1526	//
1527	// Refer to selector for syntax details.
1528	Selector string `json:"selector,omitempty"`
1529
1530	// ForceSendFields is a list of field names (e.g.
1531	// "AllowedRequestExtensions") to unconditionally include in API
1532	// requests. By default, fields with empty values are omitted from API
1533	// requests. However, any non-pointer, non-interface field appearing in
1534	// ForceSendFields will be sent to the server regardless of whether the
1535	// field is empty or not. This may be used to include empty fields in
1536	// Patch requests.
1537	ForceSendFields []string `json:"-"`
1538
1539	// NullFields is a list of field names (e.g. "AllowedRequestExtensions")
1540	// to include in API requests with the JSON null value. By default,
1541	// fields with empty values are omitted from API requests. However, any
1542	// field with an empty value appearing in NullFields will be sent to the
1543	// server as null. It is an error if a field in this list has a
1544	// non-empty value. This may be used to include null fields in Patch
1545	// requests.
1546	NullFields []string `json:"-"`
1547}
1548
1549func (s *ContextRule) MarshalJSON() ([]byte, error) {
1550	type NoMethod ContextRule
1551	raw := NoMethod(*s)
1552	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1553}
1554
1555// Control: Selects and configures the service controller used by the
1556// service.  The
1557// service controller handles features like abuse, quota, billing,
1558// logging,
1559// monitoring, etc.
1560type Control struct {
1561	// Environment: The service control environment to use. If empty, no
1562	// control plane
1563	// feature (like quota and billing) will be enabled.
1564	Environment string `json:"environment,omitempty"`
1565
1566	// ForceSendFields is a list of field names (e.g. "Environment") to
1567	// unconditionally include in API requests. By default, fields with
1568	// empty values are omitted from API requests. However, any non-pointer,
1569	// non-interface field appearing in ForceSendFields will be sent to the
1570	// server regardless of whether the field is empty or not. This may be
1571	// used to include empty fields in Patch requests.
1572	ForceSendFields []string `json:"-"`
1573
1574	// NullFields is a list of field names (e.g. "Environment") to include
1575	// in API requests with the JSON null value. By default, fields with
1576	// empty values are omitted from API requests. However, any field with
1577	// an empty value appearing in NullFields will be sent to the server as
1578	// null. It is an error if a field in this list has a non-empty value.
1579	// This may be used to include null fields in Patch requests.
1580	NullFields []string `json:"-"`
1581}
1582
1583func (s *Control) MarshalJSON() ([]byte, error) {
1584	type NoMethod Control
1585	raw := NoMethod(*s)
1586	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1587}
1588
1589// CustomError: Customize service error responses.  For example, list
1590// any service
1591// specific protobuf types that can appear in error detail lists
1592// of
1593// error responses.
1594//
1595// Example:
1596//
1597//     custom_error:
1598//       types:
1599//       - google.foo.v1.CustomError
1600//       - google.foo.v1.AnotherError
1601type CustomError struct {
1602	// Rules: The list of custom error rules that apply to individual API
1603	// messages.
1604	//
1605	// **NOTE:** All service configuration rules follow "last one wins"
1606	// order.
1607	Rules []*CustomErrorRule `json:"rules,omitempty"`
1608
1609	// Types: The list of custom error detail types, e.g.
1610	// 'google.foo.v1.CustomError'.
1611	Types []string `json:"types,omitempty"`
1612
1613	// ForceSendFields is a list of field names (e.g. "Rules") to
1614	// unconditionally include in API requests. By default, fields with
1615	// empty values are omitted from API requests. However, any non-pointer,
1616	// non-interface field appearing in ForceSendFields will be sent to the
1617	// server regardless of whether the field is empty or not. This may be
1618	// used to include empty fields in Patch requests.
1619	ForceSendFields []string `json:"-"`
1620
1621	// NullFields is a list of field names (e.g. "Rules") to include in API
1622	// requests with the JSON null value. By default, fields with empty
1623	// values are omitted from API requests. However, any field with an
1624	// empty value appearing in NullFields will be sent to the server as
1625	// null. It is an error if a field in this list has a non-empty value.
1626	// This may be used to include null fields in Patch requests.
1627	NullFields []string `json:"-"`
1628}
1629
1630func (s *CustomError) MarshalJSON() ([]byte, error) {
1631	type NoMethod CustomError
1632	raw := NoMethod(*s)
1633	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1634}
1635
1636// CustomErrorRule: A custom error rule.
1637type CustomErrorRule struct {
1638	// IsErrorType: Mark this message as possible payload in error response.
1639	//  Otherwise,
1640	// objects of this type will be filtered when they appear in error
1641	// payload.
1642	IsErrorType bool `json:"isErrorType,omitempty"`
1643
1644	// Selector: Selects messages to which this rule applies.
1645	//
1646	// Refer to selector for syntax details.
1647	Selector string `json:"selector,omitempty"`
1648
1649	// ForceSendFields is a list of field names (e.g. "IsErrorType") 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. "IsErrorType") to include
1658	// in API requests with the JSON null value. By default, fields with
1659	// empty values are omitted from API requests. However, any field with
1660	// an 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 *CustomErrorRule) MarshalJSON() ([]byte, error) {
1667	type NoMethod CustomErrorRule
1668	raw := NoMethod(*s)
1669	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1670}
1671
1672// CustomHttpPattern: A custom pattern is used for defining custom HTTP
1673// verb.
1674type CustomHttpPattern struct {
1675	// Kind: The name of this custom HTTP verb.
1676	Kind string `json:"kind,omitempty"`
1677
1678	// Path: The path matched by this custom verb.
1679	Path string `json:"path,omitempty"`
1680
1681	// ForceSendFields is a list of field names (e.g. "Kind") to
1682	// unconditionally include in API requests. By default, fields with
1683	// empty values are omitted from API requests. However, any non-pointer,
1684	// non-interface field appearing in ForceSendFields will be sent to the
1685	// server regardless of whether the field is empty or not. This may be
1686	// used to include empty fields in Patch requests.
1687	ForceSendFields []string `json:"-"`
1688
1689	// NullFields is a list of field names (e.g. "Kind") to include in API
1690	// requests with the JSON null value. By default, fields with empty
1691	// values are omitted from API requests. However, any field with an
1692	// empty value appearing in NullFields will be sent to the server as
1693	// null. It is an error if a field in this list has a non-empty value.
1694	// This may be used to include null fields in Patch requests.
1695	NullFields []string `json:"-"`
1696}
1697
1698func (s *CustomHttpPattern) MarshalJSON() ([]byte, error) {
1699	type NoMethod CustomHttpPattern
1700	raw := NoMethod(*s)
1701	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1702}
1703
1704// DeleteServiceStrategy: Strategy used to delete a service. This
1705// strategy is a placeholder only
1706// used by the system generated rollout to delete a service.
1707type DeleteServiceStrategy struct {
1708}
1709
1710// Diagnostic: Represents a diagnostic message (error or warning)
1711type Diagnostic struct {
1712	// Kind: The kind of diagnostic information provided.
1713	//
1714	// Possible values:
1715	//   "WARNING" - Warnings and errors
1716	//   "ERROR" - Only errors
1717	Kind string `json:"kind,omitempty"`
1718
1719	// Location: File name and line number of the error or warning.
1720	Location string `json:"location,omitempty"`
1721
1722	// Message: Message describing the error or warning.
1723	Message string `json:"message,omitempty"`
1724
1725	// ForceSendFields is a list of field names (e.g. "Kind") to
1726	// unconditionally include in API requests. By default, fields with
1727	// empty values are omitted from API requests. However, any non-pointer,
1728	// non-interface field appearing in ForceSendFields will be sent to the
1729	// server regardless of whether the field is empty or not. This may be
1730	// used to include empty fields in Patch requests.
1731	ForceSendFields []string `json:"-"`
1732
1733	// NullFields is a list of field names (e.g. "Kind") to include in API
1734	// requests with the JSON null value. By default, fields with empty
1735	// values are omitted from API requests. However, any field with an
1736	// empty value appearing in NullFields will be sent to the server as
1737	// null. It is an error if a field in this list has a non-empty value.
1738	// This may be used to include null fields in Patch requests.
1739	NullFields []string `json:"-"`
1740}
1741
1742func (s *Diagnostic) MarshalJSON() ([]byte, error) {
1743	type NoMethod Diagnostic
1744	raw := NoMethod(*s)
1745	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1746}
1747
1748// DisableServiceRequest: Request message for DisableService method.
1749type DisableServiceRequest struct {
1750	// ConsumerId: Required. The identity of consumer resource which service
1751	// disablement will be
1752	// applied to.
1753	//
1754	// The Google Service Management implementation accepts the
1755	// following
1756	// forms:
1757	// - "project:<project_id>"
1758	//
1759	// Note: this is made compatible
1760	// with
1761	// google.api.servicecontrol.v1.Operation.consumer_id.
1762	ConsumerId string `json:"consumerId,omitempty"`
1763
1764	// ForceSendFields is a list of field names (e.g. "ConsumerId") to
1765	// unconditionally include in API requests. By default, fields with
1766	// empty values are omitted from API requests. However, any non-pointer,
1767	// non-interface field appearing in ForceSendFields will be sent to the
1768	// server regardless of whether the field is empty or not. This may be
1769	// used to include empty fields in Patch requests.
1770	ForceSendFields []string `json:"-"`
1771
1772	// NullFields is a list of field names (e.g. "ConsumerId") to include in
1773	// API requests with the JSON null value. By default, fields with empty
1774	// values are omitted from API requests. However, any field with an
1775	// empty value appearing in NullFields will be sent to the server as
1776	// null. It is an error if a field in this list has a non-empty value.
1777	// This may be used to include null fields in Patch requests.
1778	NullFields []string `json:"-"`
1779}
1780
1781func (s *DisableServiceRequest) MarshalJSON() ([]byte, error) {
1782	type NoMethod DisableServiceRequest
1783	raw := NoMethod(*s)
1784	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1785}
1786
1787// DisableServiceResponse: Operation payload for DisableService method.
1788type DisableServiceResponse struct {
1789}
1790
1791// Documentation: `Documentation` provides the information for
1792// describing a service.
1793//
1794// Example:
1795// <pre><code>documentation:
1796//   summary: >
1797//     The Google Calendar API gives access
1798//     to most calendar features.
1799//   pages:
1800//   - name: Overview
1801//     content: &#40;== include google/foo/overview.md ==&#41;
1802//   - name: Tutorial
1803//     content: &#40;== include google/foo/tutorial.md ==&#41;
1804//     subpages;
1805//     - name: Java
1806//       content: &#40;== include google/foo/tutorial_java.md ==&#41;
1807//   rules:
1808//   - selector: google.calendar.Calendar.Get
1809//     description: >
1810//       ...
1811//   - selector: google.calendar.Calendar.Put
1812//     description: >
1813//       ...
1814// </code></pre>
1815// Documentation is provided in markdown syntax. In addition to
1816// standard markdown features, definition lists, tables and fenced
1817// code blocks are supported. Section headers can be provided and
1818// are
1819// interpreted relative to the section nesting of the context where
1820// a documentation fragment is embedded.
1821//
1822// Documentation from the IDL is merged with documentation defined
1823// via the config at normalization time, where documentation provided
1824// by config rules overrides IDL provided.
1825//
1826// A number of constructs specific to the API platform are supported
1827// in documentation text.
1828//
1829// In order to reference a proto element, the following
1830// notation can be
1831// used:
1832// <pre><code>&#91;fully.qualified.proto.name]&#91;]</code></pre>
1833// T
1834// o override the display text used for the link, this can be
1835// used:
1836// <pre><code>&#91;display
1837// text]&#91;fully.qualified.proto.name]</code></pre>
1838// Text can be excluded from doc using the following
1839// notation:
1840// <pre><code>&#40;-- internal comment --&#41;</code></pre>
1841//
1842// A few directives are available in documentation. Note that
1843// directives must appear on a single line to be properly
1844// identified. The `include` directive includes a markdown file from
1845// an external source:
1846// <pre><code>&#40;== include path/to/file ==&#41;</code></pre>
1847// The `resource_for` directive marks a message to be the resource of
1848// a collection in REST view. If it is not specified, tools attempt
1849// to infer the resource from the operations in a
1850// collection:
1851// <pre><code>&#40;== resource_for v1.shelves.books
1852// ==&#41;</code></pre>
1853// The directive `suppress_warning` does not directly affect
1854// documentation
1855// and is documented together with service config validation.
1856type Documentation struct {
1857	// DocumentationRootUrl: The URL to the root of documentation.
1858	DocumentationRootUrl string `json:"documentationRootUrl,omitempty"`
1859
1860	// Overview: Declares a single overview page. For
1861	// example:
1862	// <pre><code>documentation:
1863	//   summary: ...
1864	//   overview: &#40;== include overview.md ==&#41;
1865	// </code></pre>
1866	// This is a shortcut for the following declaration (using pages
1867	// style):
1868	// <pre><code>documentation:
1869	//   summary: ...
1870	//   pages:
1871	//   - name: Overview
1872	//     content: &#40;== include overview.md ==&#41;
1873	// </code></pre>
1874	// Note: you cannot specify both `overview` field and `pages` field.
1875	Overview string `json:"overview,omitempty"`
1876
1877	// Pages: The top level pages for the documentation set.
1878	Pages []*Page `json:"pages,omitempty"`
1879
1880	// Rules: A list of documentation rules that apply to individual API
1881	// elements.
1882	//
1883	// **NOTE:** All service configuration rules follow "last one wins"
1884	// order.
1885	Rules []*DocumentationRule `json:"rules,omitempty"`
1886
1887	// ServiceRootUrl: Specifies the service root url if the default one
1888	// (the service name
1889	// from the yaml file) is not suitable. This can be seen in any
1890	// fully
1891	// specified service urls as well as sections that show a base that
1892	// other
1893	// urls are relative to.
1894	ServiceRootUrl string `json:"serviceRootUrl,omitempty"`
1895
1896	// Summary: A short summary of what the service does. Can only be
1897	// provided by
1898	// plain text.
1899	Summary string `json:"summary,omitempty"`
1900
1901	// ForceSendFields is a list of field names (e.g.
1902	// "DocumentationRootUrl") to unconditionally include in API requests.
1903	// By default, fields with empty values are omitted from API requests.
1904	// However, any non-pointer, non-interface field appearing in
1905	// ForceSendFields will be sent to the server regardless of whether the
1906	// field is empty or not. This may be used to include empty fields in
1907	// Patch requests.
1908	ForceSendFields []string `json:"-"`
1909
1910	// NullFields is a list of field names (e.g. "DocumentationRootUrl") to
1911	// include in API requests with the JSON null value. By default, fields
1912	// with empty values are omitted from API requests. However, any field
1913	// with an empty value appearing in NullFields will be sent to the
1914	// server as null. It is an error if a field in this list has a
1915	// non-empty value. This may be used to include null fields in Patch
1916	// requests.
1917	NullFields []string `json:"-"`
1918}
1919
1920func (s *Documentation) MarshalJSON() ([]byte, error) {
1921	type NoMethod Documentation
1922	raw := NoMethod(*s)
1923	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1924}
1925
1926// DocumentationRule: A documentation rule provides information about
1927// individual API elements.
1928type DocumentationRule struct {
1929	// DeprecationDescription: Deprecation description of the selected
1930	// element(s). It can be provided if
1931	// an element is marked as `deprecated`.
1932	DeprecationDescription string `json:"deprecationDescription,omitempty"`
1933
1934	// Description: Description of the selected API(s).
1935	Description string `json:"description,omitempty"`
1936
1937	// Selector: The selector is a comma-separated list of patterns. Each
1938	// pattern is a
1939	// qualified name of the element which may end in "*", indicating a
1940	// wildcard.
1941	// Wildcards are only allowed at the end and for a whole component of
1942	// the
1943	// qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar".
1944	// A
1945	// wildcard will match one or more components. To specify a default for
1946	// all
1947	// applicable elements, the whole pattern "*" is used.
1948	Selector string `json:"selector,omitempty"`
1949
1950	// ForceSendFields is a list of field names (e.g.
1951	// "DeprecationDescription") to unconditionally include in API requests.
1952	// By default, fields with empty values are omitted from API requests.
1953	// However, any non-pointer, non-interface field appearing in
1954	// ForceSendFields will be sent to the server regardless of whether the
1955	// field is empty or not. This may be used to include empty fields in
1956	// Patch requests.
1957	ForceSendFields []string `json:"-"`
1958
1959	// NullFields is a list of field names (e.g. "DeprecationDescription")
1960	// to include in API requests with the JSON null value. By default,
1961	// fields with empty values are omitted from API requests. However, any
1962	// field with an empty value appearing in NullFields will be sent to the
1963	// server as null. It is an error if a field in this list has a
1964	// non-empty value. This may be used to include null fields in Patch
1965	// requests.
1966	NullFields []string `json:"-"`
1967}
1968
1969func (s *DocumentationRule) MarshalJSON() ([]byte, error) {
1970	type NoMethod DocumentationRule
1971	raw := NoMethod(*s)
1972	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1973}
1974
1975// EnableServiceRequest: Request message for EnableService method.
1976type EnableServiceRequest struct {
1977	// ConsumerId: Required. The identity of consumer resource which service
1978	// enablement will be
1979	// applied to.
1980	//
1981	// The Google Service Management implementation accepts the
1982	// following
1983	// forms:
1984	// - "project:<project_id>"
1985	//
1986	// Note: this is made compatible
1987	// with
1988	// google.api.servicecontrol.v1.Operation.consumer_id.
1989	ConsumerId string `json:"consumerId,omitempty"`
1990
1991	// ForceSendFields is a list of field names (e.g. "ConsumerId") to
1992	// unconditionally include in API requests. By default, fields with
1993	// empty values are omitted from API requests. However, any non-pointer,
1994	// non-interface field appearing in ForceSendFields will be sent to the
1995	// server regardless of whether the field is empty or not. This may be
1996	// used to include empty fields in Patch requests.
1997	ForceSendFields []string `json:"-"`
1998
1999	// NullFields is a list of field names (e.g. "ConsumerId") to include in
2000	// API requests with the JSON null value. By default, fields with empty
2001	// values are omitted from API requests. However, any field with an
2002	// empty value appearing in NullFields will be sent to the server as
2003	// null. It is an error if a field in this list has a non-empty value.
2004	// This may be used to include null fields in Patch requests.
2005	NullFields []string `json:"-"`
2006}
2007
2008func (s *EnableServiceRequest) MarshalJSON() ([]byte, error) {
2009	type NoMethod EnableServiceRequest
2010	raw := NoMethod(*s)
2011	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2012}
2013
2014// EnableServiceResponse: Operation payload for EnableService method.
2015type EnableServiceResponse struct {
2016}
2017
2018// Endpoint: `Endpoint` describes a network endpoint that serves a set
2019// of APIs.
2020// A service may expose any number of endpoints, and all endpoints share
2021// the
2022// same service configuration, such as quota configuration and
2023// monitoring
2024// configuration.
2025//
2026// Example service configuration:
2027//
2028//     name: library-example.googleapis.com
2029//     endpoints:
2030//       # Below entry makes 'google.example.library.v1.Library'
2031//       # API be served from endpoint address
2032// library-example.googleapis.com.
2033//       # It also allows HTTP OPTIONS calls to be passed to the
2034// backend, for
2035//       # it to decide whether the subsequent cross-origin request is
2036//       # allowed to proceed.
2037//     - name: library-example.googleapis.com
2038//       allow_cors: true
2039type Endpoint struct {
2040	// Aliases: DEPRECATED: This field is no longer supported. Instead of
2041	// using aliases,
2042	// please specify multiple google.api.Endpoint for each of the
2043	// intended
2044	// aliases.
2045	//
2046	// Additional names that this endpoint will be hosted on.
2047	Aliases []string `json:"aliases,omitempty"`
2048
2049	// AllowCors:
2050	// Allowing
2051	// [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sh
2052	// aring), aka
2053	// cross-domain traffic, would allow the backends served from this
2054	// endpoint to
2055	// receive and respond to HTTP OPTIONS requests. The response will be
2056	// used by
2057	// the browser to determine whether the subsequent cross-origin request
2058	// is
2059	// allowed to proceed.
2060	AllowCors bool `json:"allowCors,omitempty"`
2061
2062	// Features: The list of features enabled on this endpoint.
2063	Features []string `json:"features,omitempty"`
2064
2065	// Name: The canonical name of this endpoint.
2066	Name string `json:"name,omitempty"`
2067
2068	// Target: The specification of an Internet routable address of API
2069	// frontend that will
2070	// handle requests to this
2071	// [API
2072	// Endpoint](https://cloud.google.com/apis/design/glossary). It should
2073	// be
2074	// either a valid IPv4 address or a fully-qualified domain name. For
2075	// example,
2076	// "8.8.8.8" or "myservice.appspot.com".
2077	Target string `json:"target,omitempty"`
2078
2079	// ForceSendFields is a list of field names (e.g. "Aliases") to
2080	// unconditionally include in API requests. By default, fields with
2081	// empty values are omitted from API requests. However, any non-pointer,
2082	// non-interface field appearing in ForceSendFields will be sent to the
2083	// server regardless of whether the field is empty or not. This may be
2084	// used to include empty fields in Patch requests.
2085	ForceSendFields []string `json:"-"`
2086
2087	// NullFields is a list of field names (e.g. "Aliases") to include in
2088	// API requests with the JSON null value. By default, fields with empty
2089	// values are omitted from API requests. However, any field with an
2090	// empty value appearing in NullFields will be sent to the server as
2091	// null. It is an error if a field in this list has a non-empty value.
2092	// This may be used to include null fields in Patch requests.
2093	NullFields []string `json:"-"`
2094}
2095
2096func (s *Endpoint) MarshalJSON() ([]byte, error) {
2097	type NoMethod Endpoint
2098	raw := NoMethod(*s)
2099	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2100}
2101
2102// Enum: Enum type definition.
2103type Enum struct {
2104	// Enumvalue: Enum value definitions.
2105	Enumvalue []*EnumValue `json:"enumvalue,omitempty"`
2106
2107	// Name: Enum type name.
2108	Name string `json:"name,omitempty"`
2109
2110	// Options: Protocol buffer options.
2111	Options []*Option `json:"options,omitempty"`
2112
2113	// SourceContext: The source context.
2114	SourceContext *SourceContext `json:"sourceContext,omitempty"`
2115
2116	// Syntax: The source syntax.
2117	//
2118	// Possible values:
2119	//   "SYNTAX_PROTO2" - Syntax `proto2`.
2120	//   "SYNTAX_PROTO3" - Syntax `proto3`.
2121	Syntax string `json:"syntax,omitempty"`
2122
2123	// ForceSendFields is a list of field names (e.g. "Enumvalue") to
2124	// unconditionally include in API requests. By default, fields with
2125	// empty values are omitted from API requests. However, any non-pointer,
2126	// non-interface field appearing in ForceSendFields will be sent to the
2127	// server regardless of whether the field is empty or not. This may be
2128	// used to include empty fields in Patch requests.
2129	ForceSendFields []string `json:"-"`
2130
2131	// NullFields is a list of field names (e.g. "Enumvalue") to include in
2132	// API requests with the JSON null value. By default, fields with empty
2133	// values are omitted from API requests. However, any field with an
2134	// empty value appearing in NullFields will be sent to the server as
2135	// null. It is an error if a field in this list has a non-empty value.
2136	// This may be used to include null fields in Patch requests.
2137	NullFields []string `json:"-"`
2138}
2139
2140func (s *Enum) MarshalJSON() ([]byte, error) {
2141	type NoMethod Enum
2142	raw := NoMethod(*s)
2143	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2144}
2145
2146// EnumValue: Enum value definition.
2147type EnumValue struct {
2148	// Name: Enum value name.
2149	Name string `json:"name,omitempty"`
2150
2151	// Number: Enum value number.
2152	Number int64 `json:"number,omitempty"`
2153
2154	// Options: Protocol buffer options.
2155	Options []*Option `json:"options,omitempty"`
2156
2157	// ForceSendFields is a list of field names (e.g. "Name") to
2158	// unconditionally include in API requests. By default, fields with
2159	// empty values are omitted from API requests. However, any non-pointer,
2160	// non-interface field appearing in ForceSendFields will be sent to the
2161	// server regardless of whether the field is empty or not. This may be
2162	// used to include empty fields in Patch requests.
2163	ForceSendFields []string `json:"-"`
2164
2165	// NullFields is a list of field names (e.g. "Name") to include in API
2166	// requests with the JSON null value. By default, fields with empty
2167	// values are omitted from API requests. However, any field with an
2168	// empty value appearing in NullFields will be sent to the server as
2169	// null. It is an error if a field in this list has a non-empty value.
2170	// This may be used to include null fields in Patch requests.
2171	NullFields []string `json:"-"`
2172}
2173
2174func (s *EnumValue) MarshalJSON() ([]byte, error) {
2175	type NoMethod EnumValue
2176	raw := NoMethod(*s)
2177	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2178}
2179
2180// Expr: Represents a textual expression in the Common Expression
2181// Language (CEL)
2182// syntax. CEL is a C-like expression language. The syntax and semantics
2183// of CEL
2184// are documented at https://github.com/google/cel-spec.
2185//
2186// Example (Comparison):
2187//
2188//     title: "Summary size limit"
2189//     description: "Determines if a summary is less than 100 chars"
2190//     expression: "document.summary.size() < 100"
2191//
2192// Example (Equality):
2193//
2194//     title: "Requestor is owner"
2195//     description: "Determines if requestor is the document owner"
2196//     expression: "document.owner ==
2197// request.auth.claims.email"
2198//
2199// Example (Logic):
2200//
2201//     title: "Public documents"
2202//     description: "Determine whether the document should be publicly
2203// visible"
2204//     expression: "document.type != 'private' && document.type !=
2205// 'internal'"
2206//
2207// Example (Data Manipulation):
2208//
2209//     title: "Notification string"
2210//     description: "Create a notification string with a timestamp."
2211//     expression: "'New message received at ' +
2212// string(document.create_time)"
2213//
2214// The exact variables and functions that may be referenced within an
2215// expression
2216// are determined by the service that evaluates it. See the
2217// service
2218// documentation for additional information.
2219type Expr struct {
2220	// Description: Optional. Description of the expression. This is a
2221	// longer text which
2222	// describes the expression, e.g. when hovered over it in a UI.
2223	Description string `json:"description,omitempty"`
2224
2225	// Expression: Textual representation of an expression in Common
2226	// Expression Language
2227	// syntax.
2228	Expression string `json:"expression,omitempty"`
2229
2230	// Location: Optional. String indicating the location of the expression
2231	// for error
2232	// reporting, e.g. a file name and a position in the file.
2233	Location string `json:"location,omitempty"`
2234
2235	// Title: Optional. Title for the expression, i.e. a short string
2236	// describing
2237	// its purpose. This can be used e.g. in UIs which allow to enter
2238	// the
2239	// expression.
2240	Title string `json:"title,omitempty"`
2241
2242	// ForceSendFields is a list of field names (e.g. "Description") to
2243	// unconditionally include in API requests. By default, fields with
2244	// empty values are omitted from API requests. However, any non-pointer,
2245	// non-interface field appearing in ForceSendFields will be sent to the
2246	// server regardless of whether the field is empty or not. This may be
2247	// used to include empty fields in Patch requests.
2248	ForceSendFields []string `json:"-"`
2249
2250	// NullFields is a list of field names (e.g. "Description") to include
2251	// in API requests with the JSON null value. By default, fields with
2252	// empty values are omitted from API requests. However, any field with
2253	// an empty value appearing in NullFields will be sent to the server as
2254	// null. It is an error if a field in this list has a non-empty value.
2255	// This may be used to include null fields in Patch requests.
2256	NullFields []string `json:"-"`
2257}
2258
2259func (s *Expr) MarshalJSON() ([]byte, error) {
2260	type NoMethod Expr
2261	raw := NoMethod(*s)
2262	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2263}
2264
2265// Field: A single field of a message type.
2266type Field struct {
2267	// Cardinality: The field cardinality.
2268	//
2269	// Possible values:
2270	//   "CARDINALITY_UNKNOWN" - For fields with unknown cardinality.
2271	//   "CARDINALITY_OPTIONAL" - For optional fields.
2272	//   "CARDINALITY_REQUIRED" - For required fields. Proto2 syntax only.
2273	//   "CARDINALITY_REPEATED" - For repeated fields.
2274	Cardinality string `json:"cardinality,omitempty"`
2275
2276	// DefaultValue: The string value of the default value of this field.
2277	// Proto2 syntax only.
2278	DefaultValue string `json:"defaultValue,omitempty"`
2279
2280	// JsonName: The field JSON name.
2281	JsonName string `json:"jsonName,omitempty"`
2282
2283	// Kind: The field type.
2284	//
2285	// Possible values:
2286	//   "TYPE_UNKNOWN" - Field type unknown.
2287	//   "TYPE_DOUBLE" - Field type double.
2288	//   "TYPE_FLOAT" - Field type float.
2289	//   "TYPE_INT64" - Field type int64.
2290	//   "TYPE_UINT64" - Field type uint64.
2291	//   "TYPE_INT32" - Field type int32.
2292	//   "TYPE_FIXED64" - Field type fixed64.
2293	//   "TYPE_FIXED32" - Field type fixed32.
2294	//   "TYPE_BOOL" - Field type bool.
2295	//   "TYPE_STRING" - Field type string.
2296	//   "TYPE_GROUP" - Field type group. Proto2 syntax only, and
2297	// deprecated.
2298	//   "TYPE_MESSAGE" - Field type message.
2299	//   "TYPE_BYTES" - Field type bytes.
2300	//   "TYPE_UINT32" - Field type uint32.
2301	//   "TYPE_ENUM" - Field type enum.
2302	//   "TYPE_SFIXED32" - Field type sfixed32.
2303	//   "TYPE_SFIXED64" - Field type sfixed64.
2304	//   "TYPE_SINT32" - Field type sint32.
2305	//   "TYPE_SINT64" - Field type sint64.
2306	Kind string `json:"kind,omitempty"`
2307
2308	// Name: The field name.
2309	Name string `json:"name,omitempty"`
2310
2311	// Number: The field number.
2312	Number int64 `json:"number,omitempty"`
2313
2314	// OneofIndex: The index of the field type in `Type.oneofs`, for message
2315	// or enumeration
2316	// types. The first type has index 1; zero means the type is not in the
2317	// list.
2318	OneofIndex int64 `json:"oneofIndex,omitempty"`
2319
2320	// Options: The protocol buffer options.
2321	Options []*Option `json:"options,omitempty"`
2322
2323	// Packed: Whether to use alternative packed wire representation.
2324	Packed bool `json:"packed,omitempty"`
2325
2326	// TypeUrl: The field type URL, without the scheme, for message or
2327	// enumeration
2328	// types. Example: "type.googleapis.com/google.protobuf.Timestamp".
2329	TypeUrl string `json:"typeUrl,omitempty"`
2330
2331	// ForceSendFields is a list of field names (e.g. "Cardinality") to
2332	// unconditionally include in API requests. By default, fields with
2333	// empty values are omitted from API requests. However, any non-pointer,
2334	// non-interface field appearing in ForceSendFields will be sent to the
2335	// server regardless of whether the field is empty or not. This may be
2336	// used to include empty fields in Patch requests.
2337	ForceSendFields []string `json:"-"`
2338
2339	// NullFields is a list of field names (e.g. "Cardinality") to include
2340	// in API requests with the JSON null value. By default, fields with
2341	// empty values are omitted from API requests. However, any field with
2342	// an empty value appearing in NullFields will be sent to the server as
2343	// null. It is an error if a field in this list has a non-empty value.
2344	// This may be used to include null fields in Patch requests.
2345	NullFields []string `json:"-"`
2346}
2347
2348func (s *Field) MarshalJSON() ([]byte, error) {
2349	type NoMethod Field
2350	raw := NoMethod(*s)
2351	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2352}
2353
2354// FlowErrorDetails: Encapsulation of flow-specific error details for
2355// debugging.
2356// Used as a details field on an error Status, not intended for external
2357// use.
2358type FlowErrorDetails struct {
2359	// ExceptionType: The type of exception (as a class name).
2360	ExceptionType string `json:"exceptionType,omitempty"`
2361
2362	// FlowStepId: The step that failed.
2363	FlowStepId string `json:"flowStepId,omitempty"`
2364
2365	// ForceSendFields is a list of field names (e.g. "ExceptionType") to
2366	// unconditionally include in API requests. By default, fields with
2367	// empty values are omitted from API requests. However, any non-pointer,
2368	// non-interface field appearing in ForceSendFields will be sent to the
2369	// server regardless of whether the field is empty or not. This may be
2370	// used to include empty fields in Patch requests.
2371	ForceSendFields []string `json:"-"`
2372
2373	// NullFields is a list of field names (e.g. "ExceptionType") to include
2374	// in API requests with the JSON null value. By default, fields with
2375	// empty values are omitted from API requests. However, any field with
2376	// an empty value appearing in NullFields will be sent to the server as
2377	// null. It is an error if a field in this list has a non-empty value.
2378	// This may be used to include null fields in Patch requests.
2379	NullFields []string `json:"-"`
2380}
2381
2382func (s *FlowErrorDetails) MarshalJSON() ([]byte, error) {
2383	type NoMethod FlowErrorDetails
2384	raw := NoMethod(*s)
2385	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2386}
2387
2388// GenerateConfigReportRequest: Request message for GenerateConfigReport
2389// method.
2390type GenerateConfigReportRequest struct {
2391	// NewConfig: Required. Service configuration for which we want to
2392	// generate the report.
2393	// For this version of API, the supported types
2394	// are
2395	// google.api.servicemanagement.v1.ConfigRef,
2396	// google.api.servicemanag
2397	// ement.v1.ConfigSource,
2398	// and google.api.Service
2399	NewConfig googleapi.RawMessage `json:"newConfig,omitempty"`
2400
2401	// OldConfig: Optional. Service configuration against which the
2402	// comparison will be done.
2403	// For this version of API, the supported types
2404	// are
2405	// google.api.servicemanagement.v1.ConfigRef,
2406	// google.api.servicemanag
2407	// ement.v1.ConfigSource,
2408	// and google.api.Service
2409	OldConfig googleapi.RawMessage `json:"oldConfig,omitempty"`
2410
2411	// ForceSendFields is a list of field names (e.g. "NewConfig") to
2412	// unconditionally include in API requests. By default, fields with
2413	// empty values are omitted from API requests. However, any non-pointer,
2414	// non-interface field appearing in ForceSendFields will be sent to the
2415	// server regardless of whether the field is empty or not. This may be
2416	// used to include empty fields in Patch requests.
2417	ForceSendFields []string `json:"-"`
2418
2419	// NullFields is a list of field names (e.g. "NewConfig") to include in
2420	// API requests with the JSON null value. By default, fields with empty
2421	// values are omitted from API requests. However, any field with an
2422	// empty value appearing in NullFields will be sent to the server as
2423	// null. It is an error if a field in this list has a non-empty value.
2424	// This may be used to include null fields in Patch requests.
2425	NullFields []string `json:"-"`
2426}
2427
2428func (s *GenerateConfigReportRequest) MarshalJSON() ([]byte, error) {
2429	type NoMethod GenerateConfigReportRequest
2430	raw := NoMethod(*s)
2431	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2432}
2433
2434// GenerateConfigReportResponse: Response message for
2435// GenerateConfigReport method.
2436type GenerateConfigReportResponse struct {
2437	// ChangeReports: list of ChangeReport, each corresponding to comparison
2438	// between two
2439	// service configurations.
2440	ChangeReports []*ChangeReport `json:"changeReports,omitempty"`
2441
2442	// Diagnostics: Errors / Linter warnings associated with the service
2443	// definition this
2444	// report
2445	// belongs to.
2446	Diagnostics []*Diagnostic `json:"diagnostics,omitempty"`
2447
2448	// Id: ID of the service configuration this report belongs to.
2449	Id string `json:"id,omitempty"`
2450
2451	// ServiceName: Name of the service this report belongs to.
2452	ServiceName string `json:"serviceName,omitempty"`
2453
2454	// ServerResponse contains the HTTP response code and headers from the
2455	// server.
2456	googleapi.ServerResponse `json:"-"`
2457
2458	// ForceSendFields is a list of field names (e.g. "ChangeReports") to
2459	// unconditionally include in API requests. By default, fields with
2460	// empty values are omitted from API requests. However, any non-pointer,
2461	// non-interface field appearing in ForceSendFields will be sent to the
2462	// server regardless of whether the field is empty or not. This may be
2463	// used to include empty fields in Patch requests.
2464	ForceSendFields []string `json:"-"`
2465
2466	// NullFields is a list of field names (e.g. "ChangeReports") to include
2467	// in API requests with the JSON null value. By default, fields with
2468	// empty values are omitted from API requests. However, any field with
2469	// an empty value appearing in NullFields will be sent to the server as
2470	// null. It is an error if a field in this list has a non-empty value.
2471	// This may be used to include null fields in Patch requests.
2472	NullFields []string `json:"-"`
2473}
2474
2475func (s *GenerateConfigReportResponse) MarshalJSON() ([]byte, error) {
2476	type NoMethod GenerateConfigReportResponse
2477	raw := NoMethod(*s)
2478	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2479}
2480
2481// GetIamPolicyRequest: Request message for `GetIamPolicy` method.
2482type GetIamPolicyRequest struct {
2483	// Options: OPTIONAL: A `GetPolicyOptions` object for specifying options
2484	// to
2485	// `GetIamPolicy`. This field is only used by Cloud IAM.
2486	Options *GetPolicyOptions `json:"options,omitempty"`
2487
2488	// ForceSendFields is a list of field names (e.g. "Options") to
2489	// unconditionally include in API requests. By default, fields with
2490	// empty values are omitted from API requests. However, any non-pointer,
2491	// non-interface field appearing in ForceSendFields will be sent to the
2492	// server regardless of whether the field is empty or not. This may be
2493	// used to include empty fields in Patch requests.
2494	ForceSendFields []string `json:"-"`
2495
2496	// NullFields is a list of field names (e.g. "Options") to include in
2497	// API requests with the JSON null value. By default, fields with empty
2498	// values are omitted from API requests. However, any field with an
2499	// empty value appearing in NullFields will be sent to the server as
2500	// null. It is an error if a field in this list has a non-empty value.
2501	// This may be used to include null fields in Patch requests.
2502	NullFields []string `json:"-"`
2503}
2504
2505func (s *GetIamPolicyRequest) MarshalJSON() ([]byte, error) {
2506	type NoMethod GetIamPolicyRequest
2507	raw := NoMethod(*s)
2508	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2509}
2510
2511// GetPolicyOptions: Encapsulates settings provided to GetIamPolicy.
2512type GetPolicyOptions struct {
2513	// RequestedPolicyVersion: Optional. The policy format version to be
2514	// returned.
2515	//
2516	// Valid values are 0, 1, and 3. Requests specifying an invalid value
2517	// will be
2518	// rejected.
2519	//
2520	// Requests for policies with any conditional bindings must specify
2521	// version 3.
2522	// Policies without any conditional bindings may specify any valid value
2523	// or
2524	// leave the field unset.
2525	RequestedPolicyVersion int64 `json:"requestedPolicyVersion,omitempty"`
2526
2527	// ForceSendFields is a list of field names (e.g.
2528	// "RequestedPolicyVersion") to unconditionally include in API requests.
2529	// By default, fields with empty values are omitted from API requests.
2530	// However, any non-pointer, non-interface field appearing in
2531	// ForceSendFields will be sent to the server regardless of whether the
2532	// field is empty or not. This may be used to include empty fields in
2533	// Patch requests.
2534	ForceSendFields []string `json:"-"`
2535
2536	// NullFields is a list of field names (e.g. "RequestedPolicyVersion")
2537	// to include in API requests with the JSON null value. By default,
2538	// fields with empty values are omitted from API requests. However, any
2539	// field with an empty value appearing in NullFields will be sent to the
2540	// server as null. It is an error if a field in this list has a
2541	// non-empty value. This may be used to include null fields in Patch
2542	// requests.
2543	NullFields []string `json:"-"`
2544}
2545
2546func (s *GetPolicyOptions) MarshalJSON() ([]byte, error) {
2547	type NoMethod GetPolicyOptions
2548	raw := NoMethod(*s)
2549	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2550}
2551
2552// Http: Defines the HTTP configuration for an API service. It contains
2553// a list of
2554// HttpRule, each specifying the mapping of an RPC method
2555// to one or more HTTP REST API methods.
2556type Http struct {
2557	// FullyDecodeReservedExpansion: When set to true, URL path parameters
2558	// will be fully URI-decoded except in
2559	// cases of single segment matches in reserved expansion, where "%2F"
2560	// will be
2561	// left encoded.
2562	//
2563	// The default behavior is to not decode RFC 6570 reserved characters in
2564	// multi
2565	// segment matches.
2566	FullyDecodeReservedExpansion bool `json:"fullyDecodeReservedExpansion,omitempty"`
2567
2568	// Rules: A list of HTTP configuration rules that apply to individual
2569	// API methods.
2570	//
2571	// **NOTE:** All service configuration rules follow "last one wins"
2572	// order.
2573	Rules []*HttpRule `json:"rules,omitempty"`
2574
2575	// ForceSendFields is a list of field names (e.g.
2576	// "FullyDecodeReservedExpansion") to unconditionally include in API
2577	// requests. By default, fields with empty values are omitted from API
2578	// requests. However, any non-pointer, non-interface field appearing in
2579	// ForceSendFields will be sent to the server regardless of whether the
2580	// field is empty or not. This may be used to include empty fields in
2581	// Patch requests.
2582	ForceSendFields []string `json:"-"`
2583
2584	// NullFields is a list of field names (e.g.
2585	// "FullyDecodeReservedExpansion") to include in API requests with the
2586	// JSON null value. By default, fields with empty values are omitted
2587	// from API requests. However, any field with an empty value appearing
2588	// in NullFields will be sent to the server as null. It is an error if a
2589	// field in this list has a non-empty value. This may be used to include
2590	// null fields in Patch requests.
2591	NullFields []string `json:"-"`
2592}
2593
2594func (s *Http) MarshalJSON() ([]byte, error) {
2595	type NoMethod Http
2596	raw := NoMethod(*s)
2597	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2598}
2599
2600// HttpRule: # gRPC Transcoding
2601//
2602// gRPC Transcoding is a feature for mapping between a gRPC method and
2603// one or
2604// more HTTP REST endpoints. It allows developers to build a single API
2605// service
2606// that supports both gRPC APIs and REST APIs. Many systems, including
2607// [Google
2608// APIs](https://github.com/googleapis/googleapis),
2609// [Cloud Endpoints](https://cloud.google.com/endpoints),
2610// [gRPC
2611// Gateway](https://github.com/grpc-ecosystem/grpc-gateway),
2612// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this
2613// feature
2614// and use it for large scale production services.
2615//
2616// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping
2617// specifies
2618// how different portions of the gRPC request message are mapped to the
2619// URL
2620// path, URL query parameters, and HTTP request body. It also controls
2621// how the
2622// gRPC response message is mapped to the HTTP response body. `HttpRule`
2623// is
2624// typically specified as an `google.api.http` annotation on the gRPC
2625// method.
2626//
2627// Each mapping specifies a URL path template and an HTTP method. The
2628// path
2629// template may refer to one or more fields in the gRPC request message,
2630// as long
2631// as each field is a non-repeated field with a primitive (non-message)
2632// type.
2633// The path template controls how fields of the request message are
2634// mapped to
2635// the URL path.
2636//
2637// Example:
2638//
2639//     service Messaging {
2640//       rpc GetMessage(GetMessageRequest) returns (Message) {
2641//         option (google.api.http) = {
2642//             get: "/v1/{name=messages/*}"
2643//         };
2644//       }
2645//     }
2646//     message GetMessageRequest {
2647//       string name = 1; // Mapped to URL path.
2648//     }
2649//     message Message {
2650//       string text = 1; // The resource content.
2651//     }
2652//
2653// This enables an HTTP REST to gRPC mapping as below:
2654//
2655// HTTP | gRPC
2656// -----|-----
2657// `GET /v1/messages/123456`  | `GetMessage(name:
2658// "messages/123456")`
2659//
2660// Any fields in the request message which are not bound by the path
2661// template
2662// automatically become HTTP query parameters if there is no HTTP
2663// request body.
2664// For example:
2665//
2666//     service Messaging {
2667//       rpc GetMessage(GetMessageRequest) returns (Message) {
2668//         option (google.api.http) = {
2669//             get:"/v1/messages/{message_id}"
2670//         };
2671//       }
2672//     }
2673//     message GetMessageRequest {
2674//       message SubMessage {
2675//         string subfield = 1;
2676//       }
2677//       string message_id = 1; // Mapped to URL path.
2678//       int64 revision = 2;    // Mapped to URL query parameter
2679// `revision`.
2680//       SubMessage sub = 3;    // Mapped to URL query parameter
2681// `sub.subfield`.
2682//     }
2683//
2684// This enables a HTTP JSON to RPC mapping as below:
2685//
2686// HTTP | gRPC
2687// -----|-----
2688// `GET /v1/messages/123456?revision=2&sub.subfield=foo`
2689// |
2690// `GetMessage(message_id: "123456" revision: 2 sub:
2691// SubMessage(subfield:
2692// "foo"))`
2693//
2694// Note that fields which are mapped to URL query parameters must have
2695// a
2696// primitive type or a repeated primitive type or a non-repeated message
2697// type.
2698// In the case of a repeated type, the parameter can be repeated in the
2699// URL
2700// as `...?param=A&param=B`. In the case of a message type, each field
2701// of the
2702// message is mapped to a separate parameter, such
2703// as
2704// `...?foo.a=A&foo.b=B&foo.c=C`.
2705//
2706// For HTTP methods that allow a request body, the `body`
2707// field
2708// specifies the mapping. Consider a REST update method on the
2709// message resource collection:
2710//
2711//     service Messaging {
2712//       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
2713//         option (google.api.http) = {
2714//           patch: "/v1/messages/{message_id}"
2715//           body: "message"
2716//         };
2717//       }
2718//     }
2719//     message UpdateMessageRequest {
2720//       string message_id = 1; // mapped to the URL
2721//       Message message = 2;   // mapped to the body
2722//     }
2723//
2724// The following HTTP JSON to RPC mapping is enabled, where
2725// the
2726// representation of the JSON in the request body is determined
2727// by
2728// protos JSON encoding:
2729//
2730// HTTP | gRPC
2731// -----|-----
2732// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
2733// `UpdateMessage(message_id:
2734// "123456" message { text: "Hi!" })`
2735//
2736// The special name `*` can be used in the body mapping to define
2737// that
2738// every field not bound by the path template should be mapped to
2739// the
2740// request body.  This enables the following alternative definition
2741// of
2742// the update method:
2743//
2744//     service Messaging {
2745//       rpc UpdateMessage(Message) returns (Message) {
2746//         option (google.api.http) = {
2747//           patch: "/v1/messages/{message_id}"
2748//           body: "*"
2749//         };
2750//       }
2751//     }
2752//     message Message {
2753//       string message_id = 1;
2754//       string text = 2;
2755//     }
2756//
2757//
2758// The following HTTP JSON to RPC mapping is enabled:
2759//
2760// HTTP | gRPC
2761// -----|-----
2762// `PATCH /v1/messages/123456 { "text": "Hi!" }` |
2763// `UpdateMessage(message_id:
2764// "123456" text: "Hi!")`
2765//
2766// Note that when using `*` in the body mapping, it is not possible
2767// to
2768// have HTTP parameters, as all fields not bound by the path end in
2769// the body. This makes this option more rarely used in practice
2770// when
2771// defining REST APIs. The common usage of `*` is in custom
2772// methods
2773// which don't use the URL at all for transferring data.
2774//
2775// It is possible to define multiple HTTP methods for one RPC by
2776// using
2777// the `additional_bindings` option. Example:
2778//
2779//     service Messaging {
2780//       rpc GetMessage(GetMessageRequest) returns (Message) {
2781//         option (google.api.http) = {
2782//           get: "/v1/messages/{message_id}"
2783//           additional_bindings {
2784//             get: "/v1/users/{user_id}/messages/{message_id}"
2785//           }
2786//         };
2787//       }
2788//     }
2789//     message GetMessageRequest {
2790//       string message_id = 1;
2791//       string user_id = 2;
2792//     }
2793//
2794// This enables the following two alternative HTTP JSON to RPC
2795// mappings:
2796//
2797// HTTP | gRPC
2798// -----|-----
2799// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
2800// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me"
2801// message_id:
2802// "123456")`
2803//
2804// ## Rules for HTTP mapping
2805//
2806// 1. Leaf request fields (recursive expansion nested messages in the
2807// request
2808//    message) are classified into three categories:
2809//    - Fields referred by the path template. They are passed via the
2810// URL path.
2811//    - Fields referred by the HttpRule.body. They are passed via the
2812// HTTP
2813//      request body.
2814//    - All other fields are passed via the URL query parameters, and
2815// the
2816//      parameter name is the field path in the request message. A
2817// repeated
2818//      field can be represented as multiple query parameters under the
2819// same
2820//      name.
2821//  2. If HttpRule.body is "*", there is no URL query parameter, all
2822// fields
2823//     are passed via URL path and HTTP request body.
2824//  3. If HttpRule.body is omitted, there is no HTTP request body, all
2825//     fields are passed via URL path and URL query parameters.
2826//
2827// ### Path template syntax
2828//
2829//     Template = "/" Segments [ Verb ] ;
2830//     Segments = Segment { "/" Segment } ;
2831//     Segment  = "*" | "**" | LITERAL | Variable ;
2832//     Variable = "{" FieldPath [ "=" Segments ] "}" ;
2833//     FieldPath = IDENT { "." IDENT } ;
2834//     Verb     = ":" LITERAL ;
2835//
2836// The syntax `*` matches a single URL path segment. The syntax `**`
2837// matches
2838// zero or more URL path segments, which must be the last part of the
2839// URL path
2840// except the `Verb`.
2841//
2842// The syntax `Variable` matches part of the URL path as specified by
2843// its
2844// template. A variable template must not contain other variables. If a
2845// variable
2846// matches a single path segment, its template may be omitted, e.g.
2847// `{var}`
2848// is equivalent to `{var=*}`.
2849//
2850// The syntax `LITERAL` matches literal text in the URL path. If the
2851// `LITERAL`
2852// contains any reserved character, such characters should be
2853// percent-encoded
2854// before the matching.
2855//
2856// If a variable contains exactly one path segment, such as "{var}"
2857// or
2858// "{var=*}", when such a variable is expanded into a URL path on the
2859// client
2860// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded.
2861// The
2862// server side does the reverse decoding. Such variables show up in
2863// the
2864// [Discovery
2865// Document](https://developers.google.com/discovery/v1/re
2866// ference/apis) as
2867// `{var}`.
2868//
2869// If a variable contains multiple path segments, such as
2870// "{var=foo/*}"
2871// or "{var=**}", when such a variable is expanded into a URL path on
2872// the
2873// client side, all characters except `[-_.~/0-9a-zA-Z]` are
2874// percent-encoded.
2875// The server side does the reverse decoding, except "%2F" and "%2f" are
2876// left
2877// unchanged. Such variables show up in
2878// the
2879// [Discovery
2880// Document](https://developers.google.com/discovery/v1/re
2881// ference/apis) as
2882// `{+var}`.
2883//
2884// ## Using gRPC API Service Configuration
2885//
2886// gRPC API Service Configuration (service config) is a configuration
2887// language
2888// for configuring a gRPC service to become a user-facing product.
2889// The
2890// service config is simply the YAML representation of the
2891// `google.api.Service`
2892// proto message.
2893//
2894// As an alternative to annotating your proto file, you can configure
2895// gRPC
2896// transcoding in your service config YAML files. You do this by
2897// specifying a
2898// `HttpRule` that maps the gRPC method to a REST endpoint, achieving
2899// the same
2900// effect as the proto annotation. This can be particularly useful if
2901// you
2902// have a proto that is reused in multiple services. Note that any
2903// transcoding
2904// specified in the service config will override any matching
2905// transcoding
2906// configuration in the proto.
2907//
2908// Example:
2909//
2910//     http:
2911//       rules:
2912//         # Selects a gRPC method and applies HttpRule to it.
2913//         - selector: example.v1.Messaging.GetMessage
2914//           get: /v1/messages/{message_id}/{sub.subfield}
2915//
2916// ## Special notes
2917//
2918// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints,
2919// the
2920// proto to JSON conversion must follow the
2921// [proto3
2922// specification](https://developers.google.com/protocol-buffers/
2923// docs/proto3#json).
2924//
2925// While the single segment variable follows the semantics of
2926// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple
2927// String
2928// Expansion, the multi segment variable **does not** follow RFC 6570
2929// Section
2930// 3.2.3 Reserved Expansion. The reason is that the Reserved
2931// Expansion
2932// does not expand special characters like `?` and `#`, which would
2933// lead
2934// to invalid URLs. As the result, gRPC Transcoding uses a custom
2935// encoding
2936// for multi segment variables.
2937//
2938// The path variables **must not** refer to any repeated or mapped
2939// field,
2940// because client libraries are not capable of handling such variable
2941// expansion.
2942//
2943// The path variables **must not** capture the leading "/" character.
2944// The reason
2945// is that the most common use case "{var}" does not capture the leading
2946// "/"
2947// character. For consistency, all path variables must share the same
2948// behavior.
2949//
2950// Repeated message fields must not be mapped to URL query parameters,
2951// because
2952// no client library can support such complicated mapping.
2953//
2954// If an API needs to use a JSON array for request or response body, it
2955// can map
2956// the request or response body to a repeated field. However, some
2957// gRPC
2958// Transcoding implementations may not support this feature.
2959type HttpRule struct {
2960	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
2961	// bindings must
2962	// not contain an `additional_bindings` field themselves (that is,
2963	// the nesting may only be one level deep).
2964	AdditionalBindings []*HttpRule `json:"additionalBindings,omitempty"`
2965
2966	// AllowHalfDuplex: When this flag is set to true, HTTP requests will be
2967	// allowed to invoke a
2968	// half-duplex streaming method.
2969	AllowHalfDuplex bool `json:"allowHalfDuplex,omitempty"`
2970
2971	// Body: The name of the request field whose value is mapped to the HTTP
2972	// request
2973	// body, or `*` for mapping all request fields not captured by the
2974	// path
2975	// pattern to the HTTP body, or omitted for not having any HTTP request
2976	// body.
2977	//
2978	// NOTE: the referred field must be present at the top-level of the
2979	// request
2980	// message type.
2981	Body string `json:"body,omitempty"`
2982
2983	// Custom: The custom pattern is used for specifying an HTTP method that
2984	// is not
2985	// included in the `pattern` field, such as HEAD, or "*" to leave
2986	// the
2987	// HTTP method unspecified for this rule. The wild-card rule is
2988	// useful
2989	// for services that provide content to Web (HTML) clients.
2990	Custom *CustomHttpPattern `json:"custom,omitempty"`
2991
2992	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
2993	Delete string `json:"delete,omitempty"`
2994
2995	// Get: Maps to HTTP GET. Used for listing and getting information
2996	// about
2997	// resources.
2998	Get string `json:"get,omitempty"`
2999
3000	// Patch: Maps to HTTP PATCH. Used for updating a resource.
3001	Patch string `json:"patch,omitempty"`
3002
3003	// Post: Maps to HTTP POST. Used for creating a resource or performing
3004	// an action.
3005	Post string `json:"post,omitempty"`
3006
3007	// Put: Maps to HTTP PUT. Used for replacing a resource.
3008	Put string `json:"put,omitempty"`
3009
3010	// ResponseBody: Optional. The name of the response field whose value is
3011	// mapped to the HTTP
3012	// response body. When omitted, the entire response message will be
3013	// used
3014	// as the HTTP response body.
3015	//
3016	// NOTE: The referred field must be present at the top-level of the
3017	// response
3018	// message type.
3019	ResponseBody string `json:"responseBody,omitempty"`
3020
3021	// Selector: Selects a method to which this rule applies.
3022	//
3023	// Refer to selector for syntax details.
3024	Selector string `json:"selector,omitempty"`
3025
3026	// ForceSendFields is a list of field names (e.g. "AdditionalBindings")
3027	// to unconditionally include in API requests. By default, fields with
3028	// empty values are omitted from API requests. However, any non-pointer,
3029	// non-interface field appearing in ForceSendFields will be sent to the
3030	// server regardless of whether the field is empty or not. This may be
3031	// used to include empty fields in Patch requests.
3032	ForceSendFields []string `json:"-"`
3033
3034	// NullFields is a list of field names (e.g. "AdditionalBindings") to
3035	// include in API requests with the JSON null value. By default, fields
3036	// with empty values are omitted from API requests. However, any field
3037	// with an empty value appearing in NullFields will be sent to the
3038	// server as null. It is an error if a field in this list has a
3039	// non-empty value. This may be used to include null fields in Patch
3040	// requests.
3041	NullFields []string `json:"-"`
3042}
3043
3044func (s *HttpRule) MarshalJSON() ([]byte, error) {
3045	type NoMethod HttpRule
3046	raw := NoMethod(*s)
3047	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3048}
3049
3050// LabelDescriptor: A description of a label.
3051type LabelDescriptor struct {
3052	// Description: A human-readable description for the label.
3053	Description string `json:"description,omitempty"`
3054
3055	// Key: The label key.
3056	Key string `json:"key,omitempty"`
3057
3058	// ValueType: The type of data that can be assigned to the label.
3059	//
3060	// Possible values:
3061	//   "STRING" - A variable-length string. This is the default.
3062	//   "BOOL" - Boolean; true or false.
3063	//   "INT64" - A 64-bit signed integer.
3064	ValueType string `json:"valueType,omitempty"`
3065
3066	// ForceSendFields is a list of field names (e.g. "Description") to
3067	// unconditionally include in API requests. By default, fields with
3068	// empty values are omitted from API requests. However, any non-pointer,
3069	// non-interface field appearing in ForceSendFields will be sent to the
3070	// server regardless of whether the field is empty or not. This may be
3071	// used to include empty fields in Patch requests.
3072	ForceSendFields []string `json:"-"`
3073
3074	// NullFields is a list of field names (e.g. "Description") to include
3075	// in API requests with the JSON null value. By default, fields with
3076	// empty values are omitted from API requests. However, any field with
3077	// an empty value appearing in NullFields will be sent to the server as
3078	// null. It is an error if a field in this list has a non-empty value.
3079	// This may be used to include null fields in Patch requests.
3080	NullFields []string `json:"-"`
3081}
3082
3083func (s *LabelDescriptor) MarshalJSON() ([]byte, error) {
3084	type NoMethod LabelDescriptor
3085	raw := NoMethod(*s)
3086	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3087}
3088
3089// ListOperationsResponse: The response message for
3090// Operations.ListOperations.
3091type ListOperationsResponse struct {
3092	// NextPageToken: The standard List next-page token.
3093	NextPageToken string `json:"nextPageToken,omitempty"`
3094
3095	// Operations: A list of operations that matches the specified filter in
3096	// the request.
3097	Operations []*Operation `json:"operations,omitempty"`
3098
3099	// ServerResponse contains the HTTP response code and headers from the
3100	// server.
3101	googleapi.ServerResponse `json:"-"`
3102
3103	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
3104	// unconditionally include in API requests. By default, fields with
3105	// empty values are omitted from API requests. However, any non-pointer,
3106	// non-interface field appearing in ForceSendFields will be sent to the
3107	// server regardless of whether the field is empty or not. This may be
3108	// used to include empty fields in Patch requests.
3109	ForceSendFields []string `json:"-"`
3110
3111	// NullFields is a list of field names (e.g. "NextPageToken") to include
3112	// in API requests with the JSON null value. By default, fields with
3113	// empty values are omitted from API requests. However, any field with
3114	// an empty value appearing in NullFields will be sent to the server as
3115	// null. It is an error if a field in this list has a non-empty value.
3116	// This may be used to include null fields in Patch requests.
3117	NullFields []string `json:"-"`
3118}
3119
3120func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) {
3121	type NoMethod ListOperationsResponse
3122	raw := NoMethod(*s)
3123	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3124}
3125
3126// ListServiceConfigsResponse: Response message for ListServiceConfigs
3127// method.
3128type ListServiceConfigsResponse struct {
3129	// NextPageToken: The token of the next page of results.
3130	NextPageToken string `json:"nextPageToken,omitempty"`
3131
3132	// ServiceConfigs: The list of service configuration resources.
3133	ServiceConfigs []*Service `json:"serviceConfigs,omitempty"`
3134
3135	// ServerResponse contains the HTTP response code and headers from the
3136	// server.
3137	googleapi.ServerResponse `json:"-"`
3138
3139	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
3140	// unconditionally include in API requests. By default, fields with
3141	// empty values are omitted from API requests. However, any non-pointer,
3142	// non-interface field appearing in ForceSendFields will be sent to the
3143	// server regardless of whether the field is empty or not. This may be
3144	// used to include empty fields in Patch requests.
3145	ForceSendFields []string `json:"-"`
3146
3147	// NullFields is a list of field names (e.g. "NextPageToken") to include
3148	// in API requests with the JSON null value. By default, fields with
3149	// empty values are omitted from API requests. However, any field with
3150	// an empty value appearing in NullFields will be sent to the server as
3151	// null. It is an error if a field in this list has a non-empty value.
3152	// This may be used to include null fields in Patch requests.
3153	NullFields []string `json:"-"`
3154}
3155
3156func (s *ListServiceConfigsResponse) MarshalJSON() ([]byte, error) {
3157	type NoMethod ListServiceConfigsResponse
3158	raw := NoMethod(*s)
3159	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3160}
3161
3162// ListServiceRolloutsResponse: Response message for ListServiceRollouts
3163// method.
3164type ListServiceRolloutsResponse struct {
3165	// NextPageToken: The token of the next page of results.
3166	NextPageToken string `json:"nextPageToken,omitempty"`
3167
3168	// Rollouts: The list of rollout resources.
3169	Rollouts []*Rollout `json:"rollouts,omitempty"`
3170
3171	// ServerResponse contains the HTTP response code and headers from the
3172	// server.
3173	googleapi.ServerResponse `json:"-"`
3174
3175	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
3176	// unconditionally include in API requests. By default, fields with
3177	// empty values are omitted from API requests. However, any non-pointer,
3178	// non-interface field appearing in ForceSendFields will be sent to the
3179	// server regardless of whether the field is empty or not. This may be
3180	// used to include empty fields in Patch requests.
3181	ForceSendFields []string `json:"-"`
3182
3183	// NullFields is a list of field names (e.g. "NextPageToken") to include
3184	// in API requests with the JSON null value. By default, fields with
3185	// empty values are omitted from API requests. However, any field with
3186	// an empty value appearing in NullFields will be sent to the server as
3187	// null. It is an error if a field in this list has a non-empty value.
3188	// This may be used to include null fields in Patch requests.
3189	NullFields []string `json:"-"`
3190}
3191
3192func (s *ListServiceRolloutsResponse) MarshalJSON() ([]byte, error) {
3193	type NoMethod ListServiceRolloutsResponse
3194	raw := NoMethod(*s)
3195	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3196}
3197
3198// ListServicesResponse: Response message for `ListServices` method.
3199type ListServicesResponse struct {
3200	// NextPageToken: Token that can be passed to `ListServices` to resume a
3201	// paginated query.
3202	NextPageToken string `json:"nextPageToken,omitempty"`
3203
3204	// Services: The returned services will only have the name field set.
3205	Services []*ManagedService `json:"services,omitempty"`
3206
3207	// ServerResponse contains the HTTP response code and headers from the
3208	// server.
3209	googleapi.ServerResponse `json:"-"`
3210
3211	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
3212	// unconditionally include in API requests. By default, fields with
3213	// empty values are omitted from API requests. However, any non-pointer,
3214	// non-interface field appearing in ForceSendFields will be sent to the
3215	// server regardless of whether the field is empty or not. This may be
3216	// used to include empty fields in Patch requests.
3217	ForceSendFields []string `json:"-"`
3218
3219	// NullFields is a list of field names (e.g. "NextPageToken") to include
3220	// in API requests with the JSON null value. By default, fields with
3221	// empty values are omitted from API requests. However, any field with
3222	// an empty value appearing in NullFields will be sent to the server as
3223	// null. It is an error if a field in this list has a non-empty value.
3224	// This may be used to include null fields in Patch requests.
3225	NullFields []string `json:"-"`
3226}
3227
3228func (s *ListServicesResponse) MarshalJSON() ([]byte, error) {
3229	type NoMethod ListServicesResponse
3230	raw := NoMethod(*s)
3231	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3232}
3233
3234// LogDescriptor: A description of a log type. Example in YAML format:
3235//
3236//     - name: library.googleapis.com/activity_history
3237//       description: The history of borrowing and returning library
3238// items.
3239//       display_name: Activity
3240//       labels:
3241//       - key: /customer_id
3242//         description: Identifier of a library customer
3243type LogDescriptor struct {
3244	// Description: A human-readable description of this log. This
3245	// information appears in
3246	// the documentation and can contain details.
3247	Description string `json:"description,omitempty"`
3248
3249	// DisplayName: The human-readable name for this log. This information
3250	// appears on
3251	// the user interface and should be concise.
3252	DisplayName string `json:"displayName,omitempty"`
3253
3254	// Labels: The set of labels that are available to describe a specific
3255	// log entry.
3256	// Runtime requests that contain labels not specified here
3257	// are
3258	// considered invalid.
3259	Labels []*LabelDescriptor `json:"labels,omitempty"`
3260
3261	// Name: The name of the log. It must be less than 512 characters long
3262	// and can
3263	// include the following characters: upper- and lower-case
3264	// alphanumeric
3265	// characters [A-Za-z0-9], and punctuation characters including
3266	// slash, underscore, hyphen, period [/_-.].
3267	Name string `json:"name,omitempty"`
3268
3269	// ForceSendFields is a list of field names (e.g. "Description") to
3270	// unconditionally include in API requests. By default, fields with
3271	// empty values are omitted from API requests. However, any non-pointer,
3272	// non-interface field appearing in ForceSendFields will be sent to the
3273	// server regardless of whether the field is empty or not. This may be
3274	// used to include empty fields in Patch requests.
3275	ForceSendFields []string `json:"-"`
3276
3277	// NullFields is a list of field names (e.g. "Description") to include
3278	// in API requests with the JSON null value. By default, fields with
3279	// empty values are omitted from API requests. However, any field with
3280	// an empty value appearing in NullFields will be sent to the server as
3281	// null. It is an error if a field in this list has a non-empty value.
3282	// This may be used to include null fields in Patch requests.
3283	NullFields []string `json:"-"`
3284}
3285
3286func (s *LogDescriptor) MarshalJSON() ([]byte, error) {
3287	type NoMethod LogDescriptor
3288	raw := NoMethod(*s)
3289	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3290}
3291
3292// Logging: Logging configuration of the service.
3293//
3294// The following example shows how to configure logs to be sent to
3295// the
3296// producer and consumer projects. In the example, the
3297// `activity_history`
3298// log is sent to both the producer and consumer projects, whereas
3299// the
3300// `purchase_history` log is only sent to the producer project.
3301//
3302//     monitored_resources:
3303//     - type: library.googleapis.com/branch
3304//       labels:
3305//       - key: /city
3306//         description: The city where the library branch is located
3307// in.
3308//       - key: /name
3309//         description: The name of the branch.
3310//     logs:
3311//     - name: activity_history
3312//       labels:
3313//       - key: /customer_id
3314//     - name: purchase_history
3315//     logging:
3316//       producer_destinations:
3317//       - monitored_resource: library.googleapis.com/branch
3318//         logs:
3319//         - activity_history
3320//         - purchase_history
3321//       consumer_destinations:
3322//       - monitored_resource: library.googleapis.com/branch
3323//         logs:
3324//         - activity_history
3325type Logging struct {
3326	// ConsumerDestinations: Logging configurations for sending logs to the
3327	// consumer project.
3328	// There can be multiple consumer destinations, each one must have
3329	// a
3330	// different monitored resource type. A log can be used in at most
3331	// one consumer destination.
3332	ConsumerDestinations []*LoggingDestination `json:"consumerDestinations,omitempty"`
3333
3334	// ProducerDestinations: Logging configurations for sending logs to the
3335	// producer project.
3336	// There can be multiple producer destinations, each one must have
3337	// a
3338	// different monitored resource type. A log can be used in at most
3339	// one producer destination.
3340	ProducerDestinations []*LoggingDestination `json:"producerDestinations,omitempty"`
3341
3342	// ForceSendFields is a list of field names (e.g.
3343	// "ConsumerDestinations") to unconditionally include in API requests.
3344	// By default, fields with empty values are omitted from API requests.
3345	// However, any non-pointer, non-interface field appearing in
3346	// ForceSendFields will be sent to the server regardless of whether the
3347	// field is empty or not. This may be used to include empty fields in
3348	// Patch requests.
3349	ForceSendFields []string `json:"-"`
3350
3351	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
3352	// include in API requests with the JSON null value. By default, fields
3353	// with empty values are omitted from API requests. However, any field
3354	// with an empty value appearing in NullFields will be sent to the
3355	// server as null. It is an error if a field in this list has a
3356	// non-empty value. This may be used to include null fields in Patch
3357	// requests.
3358	NullFields []string `json:"-"`
3359}
3360
3361func (s *Logging) MarshalJSON() ([]byte, error) {
3362	type NoMethod Logging
3363	raw := NoMethod(*s)
3364	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3365}
3366
3367// LoggingDestination: Configuration of a specific logging destination
3368// (the producer project
3369// or the consumer project).
3370type LoggingDestination struct {
3371	// Logs: Names of the logs to be sent to this destination. Each name
3372	// must
3373	// be defined in the Service.logs section. If the log name is
3374	// not a domain scoped name, it will be automatically prefixed with
3375	// the service name followed by "/".
3376	Logs []string `json:"logs,omitempty"`
3377
3378	// MonitoredResource: The monitored resource type. The type must be
3379	// defined in the
3380	// Service.monitored_resources section.
3381	MonitoredResource string `json:"monitoredResource,omitempty"`
3382
3383	// ForceSendFields is a list of field names (e.g. "Logs") to
3384	// unconditionally include in API requests. By default, fields with
3385	// empty values are omitted from API requests. However, any non-pointer,
3386	// non-interface field appearing in ForceSendFields will be sent to the
3387	// server regardless of whether the field is empty or not. This may be
3388	// used to include empty fields in Patch requests.
3389	ForceSendFields []string `json:"-"`
3390
3391	// NullFields is a list of field names (e.g. "Logs") to include in API
3392	// requests with the JSON null value. By default, fields with empty
3393	// values are omitted from API requests. However, any field with an
3394	// empty value appearing in NullFields will be sent to the server as
3395	// null. It is an error if a field in this list has a non-empty value.
3396	// This may be used to include null fields in Patch requests.
3397	NullFields []string `json:"-"`
3398}
3399
3400func (s *LoggingDestination) MarshalJSON() ([]byte, error) {
3401	type NoMethod LoggingDestination
3402	raw := NoMethod(*s)
3403	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3404}
3405
3406// ManagedService: The full representation of a Service that is managed
3407// by
3408// Google Service Management.
3409type ManagedService struct {
3410	// ProducerProjectId: ID of the project that produces and owns this
3411	// service.
3412	ProducerProjectId string `json:"producerProjectId,omitempty"`
3413
3414	// ServiceName: The name of the service. See the
3415	// [overview](/service-management/overview)
3416	// for naming requirements.
3417	ServiceName string `json:"serviceName,omitempty"`
3418
3419	// ServerResponse contains the HTTP response code and headers from the
3420	// server.
3421	googleapi.ServerResponse `json:"-"`
3422
3423	// ForceSendFields is a list of field names (e.g. "ProducerProjectId")
3424	// to unconditionally include in API requests. By default, fields with
3425	// empty values are omitted from API requests. However, any non-pointer,
3426	// non-interface field appearing in ForceSendFields will be sent to the
3427	// server regardless of whether the field is empty or not. This may be
3428	// used to include empty fields in Patch requests.
3429	ForceSendFields []string `json:"-"`
3430
3431	// NullFields is a list of field names (e.g. "ProducerProjectId") to
3432	// include in API requests with the JSON null value. By default, fields
3433	// with empty values are omitted from API requests. However, any field
3434	// with an empty value appearing in NullFields will be sent to the
3435	// server as null. It is an error if a field in this list has a
3436	// non-empty value. This may be used to include null fields in Patch
3437	// requests.
3438	NullFields []string `json:"-"`
3439}
3440
3441func (s *ManagedService) MarshalJSON() ([]byte, error) {
3442	type NoMethod ManagedService
3443	raw := NoMethod(*s)
3444	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3445}
3446
3447// Method: Method represents a method of an API interface.
3448type Method struct {
3449	// Name: The simple name of this method.
3450	Name string `json:"name,omitempty"`
3451
3452	// Options: Any metadata attached to the method.
3453	Options []*Option `json:"options,omitempty"`
3454
3455	// RequestStreaming: If true, the request is streamed.
3456	RequestStreaming bool `json:"requestStreaming,omitempty"`
3457
3458	// RequestTypeUrl: A URL of the input message type.
3459	RequestTypeUrl string `json:"requestTypeUrl,omitempty"`
3460
3461	// ResponseStreaming: If true, the response is streamed.
3462	ResponseStreaming bool `json:"responseStreaming,omitempty"`
3463
3464	// ResponseTypeUrl: The URL of the output message type.
3465	ResponseTypeUrl string `json:"responseTypeUrl,omitempty"`
3466
3467	// Syntax: The source syntax of this method.
3468	//
3469	// Possible values:
3470	//   "SYNTAX_PROTO2" - Syntax `proto2`.
3471	//   "SYNTAX_PROTO3" - Syntax `proto3`.
3472	Syntax string `json:"syntax,omitempty"`
3473
3474	// ForceSendFields is a list of field names (e.g. "Name") to
3475	// unconditionally include in API requests. By default, fields with
3476	// empty values are omitted from API requests. However, any non-pointer,
3477	// non-interface field appearing in ForceSendFields will be sent to the
3478	// server regardless of whether the field is empty or not. This may be
3479	// used to include empty fields in Patch requests.
3480	ForceSendFields []string `json:"-"`
3481
3482	// NullFields is a list of field names (e.g. "Name") to include in API
3483	// requests with the JSON null value. By default, fields with empty
3484	// values are omitted from API requests. However, any field with an
3485	// empty value appearing in NullFields will be sent to the server as
3486	// null. It is an error if a field in this list has a non-empty value.
3487	// This may be used to include null fields in Patch requests.
3488	NullFields []string `json:"-"`
3489}
3490
3491func (s *Method) MarshalJSON() ([]byte, error) {
3492	type NoMethod Method
3493	raw := NoMethod(*s)
3494	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3495}
3496
3497// MetricDescriptor: Defines a metric type and its schema. Once a metric
3498// descriptor is created,
3499// deleting or altering it stops data collection and makes the metric
3500// type's
3501// existing data unusable.
3502type MetricDescriptor struct {
3503	// Description: A detailed description of the metric, which can be used
3504	// in documentation.
3505	Description string `json:"description,omitempty"`
3506
3507	// DisplayName: A concise name for the metric, which can be displayed in
3508	// user interfaces.
3509	// Use sentence case without an ending period, for example "Request
3510	// count".
3511	// This field is optional but it is recommended to be set for any
3512	// metrics
3513	// associated with user-visible concepts, such as Quota.
3514	DisplayName string `json:"displayName,omitempty"`
3515
3516	// Labels: The set of labels that can be used to describe a
3517	// specific
3518	// instance of this metric type. For example,
3519	// the
3520	// `appengine.googleapis.com/http/server/response_latencies` metric
3521	// type has a label for the HTTP response code, `response_code`, so
3522	// you can look at latencies for successful responses or just
3523	// for responses that failed.
3524	Labels []*LabelDescriptor `json:"labels,omitempty"`
3525
3526	// LaunchStage: Optional. The launch stage of the metric definition.
3527	//
3528	// Possible values:
3529	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
3530	//   "EARLY_ACCESS" - Early Access features are limited to a closed
3531	// group of testers. To use
3532	// these features, you must sign up in advance and sign a Trusted
3533	// Tester
3534	// agreement (which includes confidentiality provisions). These features
3535	// may
3536	// be unstable, changed in backward-incompatible ways, and are
3537	// not
3538	// guaranteed to be released.
3539	//   "ALPHA" - Alpha is a limited availability test for releases before
3540	// they are cleared
3541	// for widespread use. By Alpha, all significant design issues are
3542	// resolved
3543	// and we are in the process of verifying functionality. Alpha
3544	// customers
3545	// need to apply for access, agree to applicable terms, and have
3546	// their
3547	// projects whitelisted. Alpha releases don’t have to be feature
3548	// complete,
3549	// no SLAs are provided, and there are no technical support obligations,
3550	// but
3551	// they will be far enough along that customers can actually use them
3552	// in
3553	// test environments or for limited-use tests -- just like they would
3554	// in
3555	// normal production cases.
3556	//   "BETA" - Beta is the point at which we are ready to open a release
3557	// for any
3558	// customer to use. There are no SLA or technical support obligations in
3559	// a
3560	// Beta release. Products will be complete from a feature perspective,
3561	// but
3562	// may have some open outstanding issues. Beta releases are suitable
3563	// for
3564	// limited production use cases.
3565	//   "GA" - GA features are open to all developers and are considered
3566	// stable and
3567	// fully qualified for production use.
3568	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
3569	// and removed. For more
3570	// information, see the “Deprecation Policy” section of our [Terms
3571	// of
3572	// Service](https://cloud.google.com/terms/)
3573	// and the [Google Cloud Platform Subject to the
3574	// Deprecation
3575	// Policy](https://cloud.google.com/terms/deprecation) documentation.
3576	LaunchStage string `json:"launchStage,omitempty"`
3577
3578	// Metadata: Optional. Metadata which can be used to guide usage of the
3579	// metric.
3580	Metadata *MetricDescriptorMetadata `json:"metadata,omitempty"`
3581
3582	// MetricKind: Whether the metric records instantaneous values, changes
3583	// to a value, etc.
3584	// Some combinations of `metric_kind` and `value_type` might not be
3585	// supported.
3586	//
3587	// Possible values:
3588	//   "METRIC_KIND_UNSPECIFIED" - Do not use this default value.
3589	//   "GAUGE" - An instantaneous measurement of a value.
3590	//   "DELTA" - The change in a value during a time interval.
3591	//   "CUMULATIVE" - A value accumulated over a time interval.
3592	// Cumulative
3593	// measurements in a time series should have the same start time
3594	// and increasing end times, until an event resets the cumulative
3595	// value to zero and sets a new start time for the following
3596	// points.
3597	MetricKind string `json:"metricKind,omitempty"`
3598
3599	// MonitoredResourceTypes: Read-only. If present, then a time
3600	// series, which is identified partially by
3601	// a metric type and a MonitoredResourceDescriptor, that is
3602	// associated
3603	// with this metric type can only be associated with one of the
3604	// monitored
3605	// resource types listed here.
3606	MonitoredResourceTypes []string `json:"monitoredResourceTypes,omitempty"`
3607
3608	// Name: The resource name of the metric descriptor.
3609	Name string `json:"name,omitempty"`
3610
3611	// Type: The metric type, including its DNS name prefix. The type is
3612	// not
3613	// URL-encoded.  All user-defined metric types have the DNS
3614	// name
3615	// `custom.googleapis.com` or `external.googleapis.com`.  Metric types
3616	// should
3617	// use a natural hierarchical grouping. For example:
3618	//
3619	//     "custom.googleapis.com/invoice/paid/amount"
3620	//     "external.googleapis.com/prometheus/up"
3621	//     "appengine.googleapis.com/http/server/response_latencies"
3622	Type string `json:"type,omitempty"`
3623
3624	// Unit: The units in which the metric value is reported. It is only
3625	// applicable
3626	// if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
3627	// `unit`
3628	// defines the representation of the stored metric values.
3629	//
3630	// Different systems may scale the values to be more easily displayed
3631	// (so a
3632	// value of `0.02KBy` _might_ be displayed as `20By`, and a value
3633	// of
3634	// `3523KBy` _might_ be displayed as `3.5MBy`). However, if the `unit`
3635	// is
3636	// `KBy`, then the value of the metric is always in thousands of bytes,
3637	// no
3638	// matter how it may be displayed..
3639	//
3640	// If you want a custom metric to record the exact number of CPU-seconds
3641	// used
3642	// by a job, you can create an `INT64 CUMULATIVE` metric whose `unit`
3643	// is
3644	// `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses
3645	// 12,005
3646	// CPU-seconds, then the value is written as `12005`.
3647	//
3648	// Alternatively, if you want a custom metric to record data in a
3649	// more
3650	// granular way, you can create a `DOUBLE CUMULATIVE` metric whose
3651	// `unit` is
3652	// `ks{CPU}`, and then write the value `12.005` (which is
3653	// `12005/1000`),
3654	// or use `Kis{CPU}` and write `11.723` (which is `12005/1024`).
3655	//
3656	// The supported units are a subset of [The Unified Code for Units
3657	// of
3658	// Measure](http://unitsofmeasure.org/ucum.html) standard:
3659	//
3660	// **Basic units (UNIT)**
3661	//
3662	// * `bit`   bit
3663	// * `By`    byte
3664	// * `s`     second
3665	// * `min`   minute
3666	// * `h`     hour
3667	// * `d`     day
3668	//
3669	// **Prefixes (PREFIX)**
3670	//
3671	// * `k`     kilo    (10^3)
3672	// * `M`     mega    (10^6)
3673	// * `G`     giga    (10^9)
3674	// * `T`     tera    (10^12)
3675	// * `P`     peta    (10^15)
3676	// * `E`     exa     (10^18)
3677	// * `Z`     zetta   (10^21)
3678	// * `Y`     yotta   (10^24)
3679	//
3680	// * `m`     milli   (10^-3)
3681	// * `u`     micro   (10^-6)
3682	// * `n`     nano    (10^-9)
3683	// * `p`     pico    (10^-12)
3684	// * `f`     femto   (10^-15)
3685	// * `a`     atto    (10^-18)
3686	// * `z`     zepto   (10^-21)
3687	// * `y`     yocto   (10^-24)
3688	//
3689	// * `Ki`    kibi    (2^10)
3690	// * `Mi`    mebi    (2^20)
3691	// * `Gi`    gibi    (2^30)
3692	// * `Ti`    tebi    (2^40)
3693	// * `Pi`    pebi    (2^50)
3694	//
3695	// **Grammar**
3696	//
3697	// The grammar also includes these connectors:
3698	//
3699	// * `/`    division or ratio (as an infix operator). For examples,
3700	//          `kBy/{email}` or `MiBy/10ms` (although you should almost
3701	// never
3702	//          have `/s` in a metric `unit`; rates should always be
3703	// computed at
3704	//          query time from the underlying cumulative or delta value).
3705	// * `.`    multiplication or composition (as an infix operator). For
3706	//          examples, `GBy.d` or `k{watt}.h`.
3707	//
3708	// The grammar for a unit is as follows:
3709	//
3710	//     Expression = Component { "." Component } { "/" Component } ;
3711	//
3712	//     Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ]
3713	//               | Annotation
3714	//               | "1"
3715	//               ;
3716	//
3717	//     Annotation = "{" NAME "}" ;
3718	//
3719	// Notes:
3720	//
3721	// * `Annotation` is just a comment if it follows a `UNIT`. If the
3722	// annotation
3723	//    is used alone, then the unit is equivalent to `1`. For examples,
3724	//    `{request}/s == 1/s`, `By{transmitted}/s == By/s`.
3725	// * `NAME` is a sequence of non-blank printable ASCII characters not
3726	//    containing `{` or `}`.
3727	// * `1` represents a unitary [dimensionless
3728	//    unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1,
3729	// such
3730	//    as in `1/s`. It is typically used when none of the basic units
3731	// are
3732	//    appropriate. For example, "new users per day" can be represented
3733	// as
3734	//    `1/d` or `{new-users}/d` (and a metric value `5` would mean "5
3735	// new
3736	//    users). Alternatively, "thousands of page views per day" would be
3737	//    represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a
3738	// metric
3739	//    value of `5.3` would mean "5300 page views per day").
3740	// * `%` represents dimensionless value of 1/100, and annotates values
3741	// giving
3742	//    a percentage (so the metric values are typically in the range of
3743	// 0..100,
3744	//    and a metric value `3` means "3 percent").
3745	// * `10^2.%` indicates a metric contains a ratio, typically in the
3746	// range
3747	//    0..1, that will be multiplied by 100 and displayed as a
3748	// percentage
3749	//    (so a metric value `0.03` means "3 percent").
3750	Unit string `json:"unit,omitempty"`
3751
3752	// ValueType: Whether the measurement is an integer, a floating-point
3753	// number, etc.
3754	// Some combinations of `metric_kind` and `value_type` might not be
3755	// supported.
3756	//
3757	// Possible values:
3758	//   "VALUE_TYPE_UNSPECIFIED" - Do not use this default value.
3759	//   "BOOL" - The value is a boolean.
3760	// This value type can be used only if the metric kind is `GAUGE`.
3761	//   "INT64" - The value is a signed 64-bit integer.
3762	//   "DOUBLE" - The value is a double precision floating point number.
3763	//   "STRING" - The value is a text string.
3764	// This value type can be used only if the metric kind is `GAUGE`.
3765	//   "DISTRIBUTION" - The value is a `Distribution`.
3766	//   "MONEY" - The value is money.
3767	ValueType string `json:"valueType,omitempty"`
3768
3769	// ForceSendFields is a list of field names (e.g. "Description") to
3770	// unconditionally include in API requests. By default, fields with
3771	// empty values are omitted from API requests. However, any non-pointer,
3772	// non-interface field appearing in ForceSendFields will be sent to the
3773	// server regardless of whether the field is empty or not. This may be
3774	// used to include empty fields in Patch requests.
3775	ForceSendFields []string `json:"-"`
3776
3777	// NullFields is a list of field names (e.g. "Description") to include
3778	// in API requests with the JSON null value. By default, fields with
3779	// empty values are omitted from API requests. However, any field with
3780	// an empty value appearing in NullFields will be sent to the server as
3781	// null. It is an error if a field in this list has a non-empty value.
3782	// This may be used to include null fields in Patch requests.
3783	NullFields []string `json:"-"`
3784}
3785
3786func (s *MetricDescriptor) MarshalJSON() ([]byte, error) {
3787	type NoMethod MetricDescriptor
3788	raw := NoMethod(*s)
3789	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3790}
3791
3792// MetricDescriptorMetadata: Additional annotations that can be used to
3793// guide the usage of a metric.
3794type MetricDescriptorMetadata struct {
3795	// IngestDelay: The delay of data points caused by ingestion. Data
3796	// points older than this
3797	// age are guaranteed to be ingested and available to be read,
3798	// excluding
3799	// data loss due to errors.
3800	IngestDelay string `json:"ingestDelay,omitempty"`
3801
3802	// LaunchStage: Deprecated. Must use the MetricDescriptor.launch_stage
3803	// instead.
3804	//
3805	// Possible values:
3806	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
3807	//   "EARLY_ACCESS" - Early Access features are limited to a closed
3808	// group of testers. To use
3809	// these features, you must sign up in advance and sign a Trusted
3810	// Tester
3811	// agreement (which includes confidentiality provisions). These features
3812	// may
3813	// be unstable, changed in backward-incompatible ways, and are
3814	// not
3815	// guaranteed to be released.
3816	//   "ALPHA" - Alpha is a limited availability test for releases before
3817	// they are cleared
3818	// for widespread use. By Alpha, all significant design issues are
3819	// resolved
3820	// and we are in the process of verifying functionality. Alpha
3821	// customers
3822	// need to apply for access, agree to applicable terms, and have
3823	// their
3824	// projects whitelisted. Alpha releases don’t have to be feature
3825	// complete,
3826	// no SLAs are provided, and there are no technical support obligations,
3827	// but
3828	// they will be far enough along that customers can actually use them
3829	// in
3830	// test environments or for limited-use tests -- just like they would
3831	// in
3832	// normal production cases.
3833	//   "BETA" - Beta is the point at which we are ready to open a release
3834	// for any
3835	// customer to use. There are no SLA or technical support obligations in
3836	// a
3837	// Beta release. Products will be complete from a feature perspective,
3838	// but
3839	// may have some open outstanding issues. Beta releases are suitable
3840	// for
3841	// limited production use cases.
3842	//   "GA" - GA features are open to all developers and are considered
3843	// stable and
3844	// fully qualified for production use.
3845	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
3846	// and removed. For more
3847	// information, see the “Deprecation Policy” section of our [Terms
3848	// of
3849	// Service](https://cloud.google.com/terms/)
3850	// and the [Google Cloud Platform Subject to the
3851	// Deprecation
3852	// Policy](https://cloud.google.com/terms/deprecation) documentation.
3853	LaunchStage string `json:"launchStage,omitempty"`
3854
3855	// SamplePeriod: The sampling period of metric data points. For metrics
3856	// which are written
3857	// periodically, consecutive data points are stored at this time
3858	// interval,
3859	// excluding data loss due to errors. Metrics with a higher granularity
3860	// have
3861	// a smaller sampling period.
3862	SamplePeriod string `json:"samplePeriod,omitempty"`
3863
3864	// ForceSendFields is a list of field names (e.g. "IngestDelay") to
3865	// unconditionally include in API requests. By default, fields with
3866	// empty values are omitted from API requests. However, any non-pointer,
3867	// non-interface field appearing in ForceSendFields will be sent to the
3868	// server regardless of whether the field is empty or not. This may be
3869	// used to include empty fields in Patch requests.
3870	ForceSendFields []string `json:"-"`
3871
3872	// NullFields is a list of field names (e.g. "IngestDelay") to include
3873	// in API requests with the JSON null value. By default, fields with
3874	// empty values are omitted from API requests. However, any field with
3875	// an empty value appearing in NullFields will be sent to the server as
3876	// null. It is an error if a field in this list has a non-empty value.
3877	// This may be used to include null fields in Patch requests.
3878	NullFields []string `json:"-"`
3879}
3880
3881func (s *MetricDescriptorMetadata) MarshalJSON() ([]byte, error) {
3882	type NoMethod MetricDescriptorMetadata
3883	raw := NoMethod(*s)
3884	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3885}
3886
3887// MetricRule: Bind API methods to metrics. Binding a method to a metric
3888// causes that
3889// metric's configured quota behaviors to apply to the method call.
3890type MetricRule struct {
3891	// MetricCosts: Metrics to update when the selected methods are called,
3892	// and the associated
3893	// cost applied to each metric.
3894	//
3895	// The key of the map is the metric name, and the values are the
3896	// amount
3897	// increased for the metric against which the quota limits are
3898	// defined.
3899	// The value must not be negative.
3900	MetricCosts map[string]string `json:"metricCosts,omitempty"`
3901
3902	// Selector: Selects the methods to which this rule applies.
3903	//
3904	// Refer to selector for syntax details.
3905	Selector string `json:"selector,omitempty"`
3906
3907	// ForceSendFields is a list of field names (e.g. "MetricCosts") to
3908	// unconditionally include in API requests. By default, fields with
3909	// empty values are omitted from API requests. However, any non-pointer,
3910	// non-interface field appearing in ForceSendFields will be sent to the
3911	// server regardless of whether the field is empty or not. This may be
3912	// used to include empty fields in Patch requests.
3913	ForceSendFields []string `json:"-"`
3914
3915	// NullFields is a list of field names (e.g. "MetricCosts") to include
3916	// in API requests with the JSON null value. By default, fields with
3917	// empty values are omitted from API requests. However, any field with
3918	// an empty value appearing in NullFields will be sent to the server as
3919	// null. It is an error if a field in this list has a non-empty value.
3920	// This may be used to include null fields in Patch requests.
3921	NullFields []string `json:"-"`
3922}
3923
3924func (s *MetricRule) MarshalJSON() ([]byte, error) {
3925	type NoMethod MetricRule
3926	raw := NoMethod(*s)
3927	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3928}
3929
3930// Mixin: Declares an API Interface to be included in this interface.
3931// The including
3932// interface must redeclare all the methods from the included interface,
3933// but
3934// documentation and options are inherited as follows:
3935//
3936// - If after comment and whitespace stripping, the documentation
3937//   string of the redeclared method is empty, it will be inherited
3938//   from the original method.
3939//
3940// - Each annotation belonging to the service config (http,
3941//   visibility) which is not set in the redeclared method will be
3942//   inherited.
3943//
3944// - If an http annotation is inherited, the path pattern will be
3945//   modified as follows. Any version prefix will be replaced by the
3946//   version of the including interface plus the root path if
3947//   specified.
3948//
3949// Example of a simple mixin:
3950//
3951//     package google.acl.v1;
3952//     service AccessControl {
3953//       // Get the underlying ACL object.
3954//       rpc GetAcl(GetAclRequest) returns (Acl) {
3955//         option (google.api.http).get = "/v1/{resource=**}:getAcl";
3956//       }
3957//     }
3958//
3959//     package google.storage.v2;
3960//     service Storage {
3961//       //       rpc GetAcl(GetAclRequest) returns (Acl);
3962//
3963//       // Get a data record.
3964//       rpc GetData(GetDataRequest) returns (Data) {
3965//         option (google.api.http).get = "/v2/{resource=**}";
3966//       }
3967//     }
3968//
3969// Example of a mixin configuration:
3970//
3971//     apis:
3972//     - name: google.storage.v2.Storage
3973//       mixins:
3974//       - name: google.acl.v1.AccessControl
3975//
3976// The mixin construct implies that all methods in `AccessControl`
3977// are
3978// also declared with same name and request/response types in
3979// `Storage`. A documentation generator or annotation processor will
3980// see the effective `Storage.GetAcl` method after
3981// inherting
3982// documentation and annotations as follows:
3983//
3984//     service Storage {
3985//       // Get the underlying ACL object.
3986//       rpc GetAcl(GetAclRequest) returns (Acl) {
3987//         option (google.api.http).get = "/v2/{resource=**}:getAcl";
3988//       }
3989//       ...
3990//     }
3991//
3992// Note how the version in the path pattern changed from `v1` to
3993// `v2`.
3994//
3995// If the `root` field in the mixin is specified, it should be
3996// a
3997// relative path under which inherited HTTP paths are placed. Example:
3998//
3999//     apis:
4000//     - name: google.storage.v2.Storage
4001//       mixins:
4002//       - name: google.acl.v1.AccessControl
4003//         root: acls
4004//
4005// This implies the following inherited HTTP annotation:
4006//
4007//     service Storage {
4008//       // Get the underlying ACL object.
4009//       rpc GetAcl(GetAclRequest) returns (Acl) {
4010//         option (google.api.http).get =
4011// "/v2/acls/{resource=**}:getAcl";
4012//       }
4013//       ...
4014//     }
4015type Mixin struct {
4016	// Name: The fully qualified name of the interface which is included.
4017	Name string `json:"name,omitempty"`
4018
4019	// Root: If non-empty specifies a path under which inherited HTTP
4020	// paths
4021	// are rooted.
4022	Root string `json:"root,omitempty"`
4023
4024	// ForceSendFields is a list of field names (e.g. "Name") to
4025	// unconditionally include in API requests. By default, fields with
4026	// empty values are omitted from API requests. However, any non-pointer,
4027	// non-interface field appearing in ForceSendFields will be sent to the
4028	// server regardless of whether the field is empty or not. This may be
4029	// used to include empty fields in Patch requests.
4030	ForceSendFields []string `json:"-"`
4031
4032	// NullFields is a list of field names (e.g. "Name") to include in API
4033	// requests with the JSON null value. By default, fields with empty
4034	// values are omitted from API requests. However, any field with an
4035	// empty value appearing in NullFields will be sent to the server as
4036	// null. It is an error if a field in this list has a non-empty value.
4037	// This may be used to include null fields in Patch requests.
4038	NullFields []string `json:"-"`
4039}
4040
4041func (s *Mixin) MarshalJSON() ([]byte, error) {
4042	type NoMethod Mixin
4043	raw := NoMethod(*s)
4044	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4045}
4046
4047// MonitoredResourceDescriptor: An object that describes the schema of a
4048// MonitoredResource object using a
4049// type name and a set of labels.  For example, the monitored
4050// resource
4051// descriptor for Google Compute Engine VM instances has a type
4052// of
4053// "gce_instance" and specifies the use of the labels "instance_id"
4054// and
4055// "zone" to identify particular VM instances.
4056//
4057// Different APIs can support different monitored resource types. APIs
4058// generally
4059// provide a `list` method that returns the monitored resource
4060// descriptors used
4061// by the API.
4062type MonitoredResourceDescriptor struct {
4063	// Description: Optional. A detailed description of the monitored
4064	// resource type that might
4065	// be used in documentation.
4066	Description string `json:"description,omitempty"`
4067
4068	// DisplayName: Optional. A concise name for the monitored resource type
4069	// that might be
4070	// displayed in user interfaces. It should be a Title Cased Noun
4071	// Phrase,
4072	// without any article or other determiners. For example,
4073	// "Google Cloud SQL Database".
4074	DisplayName string `json:"displayName,omitempty"`
4075
4076	// Labels: Required. A set of labels used to describe instances of this
4077	// monitored
4078	// resource type. For example, an individual Google Cloud SQL database
4079	// is
4080	// identified by values for the labels "database_id" and "zone".
4081	Labels []*LabelDescriptor `json:"labels,omitempty"`
4082
4083	// LaunchStage: Optional. The launch stage of the monitored resource
4084	// definition.
4085	//
4086	// Possible values:
4087	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
4088	//   "EARLY_ACCESS" - Early Access features are limited to a closed
4089	// group of testers. To use
4090	// these features, you must sign up in advance and sign a Trusted
4091	// Tester
4092	// agreement (which includes confidentiality provisions). These features
4093	// may
4094	// be unstable, changed in backward-incompatible ways, and are
4095	// not
4096	// guaranteed to be released.
4097	//   "ALPHA" - Alpha is a limited availability test for releases before
4098	// they are cleared
4099	// for widespread use. By Alpha, all significant design issues are
4100	// resolved
4101	// and we are in the process of verifying functionality. Alpha
4102	// customers
4103	// need to apply for access, agree to applicable terms, and have
4104	// their
4105	// projects whitelisted. Alpha releases don’t have to be feature
4106	// complete,
4107	// no SLAs are provided, and there are no technical support obligations,
4108	// but
4109	// they will be far enough along that customers can actually use them
4110	// in
4111	// test environments or for limited-use tests -- just like they would
4112	// in
4113	// normal production cases.
4114	//   "BETA" - Beta is the point at which we are ready to open a release
4115	// for any
4116	// customer to use. There are no SLA or technical support obligations in
4117	// a
4118	// Beta release. Products will be complete from a feature perspective,
4119	// but
4120	// may have some open outstanding issues. Beta releases are suitable
4121	// for
4122	// limited production use cases.
4123	//   "GA" - GA features are open to all developers and are considered
4124	// stable and
4125	// fully qualified for production use.
4126	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
4127	// and removed. For more
4128	// information, see the “Deprecation Policy” section of our [Terms
4129	// of
4130	// Service](https://cloud.google.com/terms/)
4131	// and the [Google Cloud Platform Subject to the
4132	// Deprecation
4133	// Policy](https://cloud.google.com/terms/deprecation) documentation.
4134	LaunchStage string `json:"launchStage,omitempty"`
4135
4136	// Name: Optional. The resource name of the monitored resource
4137	// descriptor:
4138	// "projects/{project_id}/monitoredResourceDescriptors/{type
4139	// }" where
4140	// {type} is the value of the `type` field in this object
4141	// and
4142	// {project_id} is a project ID that provides API-specific context
4143	// for
4144	// accessing the type.  APIs that do not use project information can use
4145	// the
4146	// resource name format "monitoredResourceDescriptors/{type}".
4147	Name string `json:"name,omitempty"`
4148
4149	// Type: Required. The monitored resource type. For example, the
4150	// type
4151	// "cloudsql_database" represents databases in Google Cloud SQL.
4152	// The maximum length of this value is 256 characters.
4153	Type string `json:"type,omitempty"`
4154
4155	// ForceSendFields is a list of field names (e.g. "Description") to
4156	// unconditionally include in API requests. By default, fields with
4157	// empty values are omitted from API requests. However, any non-pointer,
4158	// non-interface field appearing in ForceSendFields will be sent to the
4159	// server regardless of whether the field is empty or not. This may be
4160	// used to include empty fields in Patch requests.
4161	ForceSendFields []string `json:"-"`
4162
4163	// NullFields is a list of field names (e.g. "Description") to include
4164	// in API requests with the JSON null value. By default, fields with
4165	// empty values are omitted from API requests. However, any field with
4166	// an empty value appearing in NullFields will be sent to the server as
4167	// null. It is an error if a field in this list has a non-empty value.
4168	// This may be used to include null fields in Patch requests.
4169	NullFields []string `json:"-"`
4170}
4171
4172func (s *MonitoredResourceDescriptor) MarshalJSON() ([]byte, error) {
4173	type NoMethod MonitoredResourceDescriptor
4174	raw := NoMethod(*s)
4175	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4176}
4177
4178// Monitoring: Monitoring configuration of the service.
4179//
4180// The example below shows how to configure monitored resources and
4181// metrics
4182// for monitoring. In the example, a monitored resource and two metrics
4183// are
4184// defined. The `library.googleapis.com/book/returned_count` metric is
4185// sent
4186// to both producer and consumer projects, whereas
4187// the
4188// `library.googleapis.com/book/overdue_count` metric is only sent to
4189// the
4190// consumer project.
4191//
4192//     monitored_resources:
4193//     - type: library.googleapis.com/branch
4194//       labels:
4195//       - key: /city
4196//         description: The city where the library branch is located
4197// in.
4198//       - key: /name
4199//         description: The name of the branch.
4200//     metrics:
4201//     - name: library.googleapis.com/book/returned_count
4202//       metric_kind: DELTA
4203//       value_type: INT64
4204//       labels:
4205//       - key: /customer_id
4206//     - name: library.googleapis.com/book/overdue_count
4207//       metric_kind: GAUGE
4208//       value_type: INT64
4209//       labels:
4210//       - key: /customer_id
4211//     monitoring:
4212//       producer_destinations:
4213//       - monitored_resource: library.googleapis.com/branch
4214//         metrics:
4215//         - library.googleapis.com/book/returned_count
4216//       consumer_destinations:
4217//       - monitored_resource: library.googleapis.com/branch
4218//         metrics:
4219//         - library.googleapis.com/book/returned_count
4220//         - library.googleapis.com/book/overdue_count
4221type Monitoring struct {
4222	// ConsumerDestinations: Monitoring configurations for sending metrics
4223	// to the consumer project.
4224	// There can be multiple consumer destinations. A monitored resouce type
4225	// may
4226	// appear in multiple monitoring destinations if different aggregations
4227	// are
4228	// needed for different sets of metrics associated with that
4229	// monitored
4230	// resource type. A monitored resource and metric pair may only be used
4231	// once
4232	// in the Monitoring configuration.
4233	ConsumerDestinations []*MonitoringDestination `json:"consumerDestinations,omitempty"`
4234
4235	// ProducerDestinations: Monitoring configurations for sending metrics
4236	// to the producer project.
4237	// There can be multiple producer destinations. A monitored resouce type
4238	// may
4239	// appear in multiple monitoring destinations if different aggregations
4240	// are
4241	// needed for different sets of metrics associated with that
4242	// monitored
4243	// resource type. A monitored resource and metric pair may only be used
4244	// once
4245	// in the Monitoring configuration.
4246	ProducerDestinations []*MonitoringDestination `json:"producerDestinations,omitempty"`
4247
4248	// ForceSendFields is a list of field names (e.g.
4249	// "ConsumerDestinations") to unconditionally include in API requests.
4250	// By default, fields with empty values are omitted from API requests.
4251	// However, any non-pointer, non-interface field appearing in
4252	// ForceSendFields will be sent to the server regardless of whether the
4253	// field is empty or not. This may be used to include empty fields in
4254	// Patch requests.
4255	ForceSendFields []string `json:"-"`
4256
4257	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
4258	// include in API requests with the JSON null value. By default, fields
4259	// with empty values are omitted from API requests. However, any field
4260	// with an empty value appearing in NullFields will be sent to the
4261	// server as null. It is an error if a field in this list has a
4262	// non-empty value. This may be used to include null fields in Patch
4263	// requests.
4264	NullFields []string `json:"-"`
4265}
4266
4267func (s *Monitoring) MarshalJSON() ([]byte, error) {
4268	type NoMethod Monitoring
4269	raw := NoMethod(*s)
4270	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4271}
4272
4273// MonitoringDestination: Configuration of a specific monitoring
4274// destination (the producer project
4275// or the consumer project).
4276type MonitoringDestination struct {
4277	// Metrics: Types of the metrics to report to this monitoring
4278	// destination.
4279	// Each type must be defined in Service.metrics section.
4280	Metrics []string `json:"metrics,omitempty"`
4281
4282	// MonitoredResource: The monitored resource type. The type must be
4283	// defined in
4284	// Service.monitored_resources section.
4285	MonitoredResource string `json:"monitoredResource,omitempty"`
4286
4287	// ForceSendFields is a list of field names (e.g. "Metrics") to
4288	// unconditionally include in API requests. By default, fields with
4289	// empty values are omitted from API requests. However, any non-pointer,
4290	// non-interface field appearing in ForceSendFields will be sent to the
4291	// server regardless of whether the field is empty or not. This may be
4292	// used to include empty fields in Patch requests.
4293	ForceSendFields []string `json:"-"`
4294
4295	// NullFields is a list of field names (e.g. "Metrics") to include in
4296	// API requests with the JSON null value. By default, fields with empty
4297	// values are omitted from API requests. However, any field with an
4298	// empty value appearing in NullFields will be sent to the server as
4299	// null. It is an error if a field in this list has a non-empty value.
4300	// This may be used to include null fields in Patch requests.
4301	NullFields []string `json:"-"`
4302}
4303
4304func (s *MonitoringDestination) MarshalJSON() ([]byte, error) {
4305	type NoMethod MonitoringDestination
4306	raw := NoMethod(*s)
4307	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4308}
4309
4310// OAuthRequirements: OAuth scopes are a way to define data and
4311// permissions on data. For example,
4312// there are scopes defined for "Read-only access to Google Calendar"
4313// and
4314// "Access to Cloud Platform". Users can consent to a scope for an
4315// application,
4316// giving it permission to access that data on their behalf.
4317//
4318// OAuth scope specifications should be fairly coarse grained; a user
4319// will need
4320// to see and understand the text description of what your scope
4321// means.
4322//
4323// In most cases: use one or at most two OAuth scopes for an entire
4324// family of
4325// products. If your product has multiple APIs, you should probably be
4326// sharing
4327// the OAuth scope across all of those APIs.
4328//
4329// When you need finer grained OAuth consent screens: talk with your
4330// product
4331// management about how developers will use them in practice.
4332//
4333// Please note that even though each of the canonical scopes is enough
4334// for a
4335// request to be accepted and passed to the backend, a request can still
4336// fail
4337// due to the backend requiring additional scopes or permissions.
4338type OAuthRequirements struct {
4339	// CanonicalScopes: The list of publicly documented OAuth scopes that
4340	// are allowed access. An
4341	// OAuth token containing any of these scopes will be
4342	// accepted.
4343	//
4344	// Example:
4345	//
4346	//      canonical_scopes: https://www.googleapis.com/auth/calendar,
4347	//                        https://www.googleapis.com/auth/calendar.read
4348	CanonicalScopes string `json:"canonicalScopes,omitempty"`
4349
4350	// ForceSendFields is a list of field names (e.g. "CanonicalScopes") to
4351	// unconditionally include in API requests. By default, fields with
4352	// empty values are omitted from API requests. However, any non-pointer,
4353	// non-interface field appearing in ForceSendFields will be sent to the
4354	// server regardless of whether the field is empty or not. This may be
4355	// used to include empty fields in Patch requests.
4356	ForceSendFields []string `json:"-"`
4357
4358	// NullFields is a list of field names (e.g. "CanonicalScopes") to
4359	// include in API requests with the JSON null value. By default, fields
4360	// with empty values are omitted from API requests. However, any field
4361	// with an empty value appearing in NullFields will be sent to the
4362	// server as null. It is an error if a field in this list has a
4363	// non-empty value. This may be used to include null fields in Patch
4364	// requests.
4365	NullFields []string `json:"-"`
4366}
4367
4368func (s *OAuthRequirements) MarshalJSON() ([]byte, error) {
4369	type NoMethod OAuthRequirements
4370	raw := NoMethod(*s)
4371	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4372}
4373
4374// Operation: This resource represents a long-running operation that is
4375// the result of a
4376// network API call.
4377type Operation struct {
4378	// Done: If the value is `false`, it means the operation is still in
4379	// progress.
4380	// If `true`, the operation is completed, and either `error` or
4381	// `response` is
4382	// available.
4383	Done bool `json:"done,omitempty"`
4384
4385	// Error: The error result of the operation in case of failure or
4386	// cancellation.
4387	Error *Status `json:"error,omitempty"`
4388
4389	// Metadata: Service-specific metadata associated with the operation.
4390	// It typically
4391	// contains progress information and common metadata such as create
4392	// time.
4393	// Some services might not provide such metadata.  Any method that
4394	// returns a
4395	// long-running operation should document the metadata type, if any.
4396	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
4397
4398	// Name: The server-assigned name, which is only unique within the same
4399	// service that
4400	// originally returns it. If you use the default HTTP mapping,
4401	// the
4402	// `name` should be a resource name ending with
4403	// `operations/{unique_id}`.
4404	Name string `json:"name,omitempty"`
4405
4406	// Response: The normal response of the operation in case of success.
4407	// If the original
4408	// method returns no data on success, such as `Delete`, the response
4409	// is
4410	// `google.protobuf.Empty`.  If the original method is
4411	// standard
4412	// `Get`/`Create`/`Update`, the response should be the resource.  For
4413	// other
4414	// methods, the response should have the type `XxxResponse`, where
4415	// `Xxx`
4416	// is the original method name.  For example, if the original method
4417	// name
4418	// is `TakeSnapshot()`, the inferred response type
4419	// is
4420	// `TakeSnapshotResponse`.
4421	Response googleapi.RawMessage `json:"response,omitempty"`
4422
4423	// ServerResponse contains the HTTP response code and headers from the
4424	// server.
4425	googleapi.ServerResponse `json:"-"`
4426
4427	// ForceSendFields is a list of field names (e.g. "Done") to
4428	// unconditionally include in API requests. By default, fields with
4429	// empty values are omitted from API requests. However, any non-pointer,
4430	// non-interface field appearing in ForceSendFields will be sent to the
4431	// server regardless of whether the field is empty or not. This may be
4432	// used to include empty fields in Patch requests.
4433	ForceSendFields []string `json:"-"`
4434
4435	// NullFields is a list of field names (e.g. "Done") to include in API
4436	// requests with the JSON null value. By default, fields with empty
4437	// values are omitted from API requests. However, any field with an
4438	// empty value appearing in NullFields will be sent to the server as
4439	// null. It is an error if a field in this list has a non-empty value.
4440	// This may be used to include null fields in Patch requests.
4441	NullFields []string `json:"-"`
4442}
4443
4444func (s *Operation) MarshalJSON() ([]byte, error) {
4445	type NoMethod Operation
4446	raw := NoMethod(*s)
4447	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4448}
4449
4450// OperationMetadata: The metadata associated with a long running
4451// operation resource.
4452type OperationMetadata struct {
4453	// ProgressPercentage: Percentage of completion of this operation,
4454	// ranging from 0 to 100.
4455	ProgressPercentage int64 `json:"progressPercentage,omitempty"`
4456
4457	// ResourceNames: The full name of the resources that this operation is
4458	// directly
4459	// associated with.
4460	ResourceNames []string `json:"resourceNames,omitempty"`
4461
4462	// StartTime: The start time of the operation.
4463	StartTime string `json:"startTime,omitempty"`
4464
4465	// Steps: Detailed status information for each step. The order is
4466	// undetermined.
4467	Steps []*Step `json:"steps,omitempty"`
4468
4469	// ForceSendFields is a list of field names (e.g. "ProgressPercentage")
4470	// to unconditionally include in API requests. By default, fields with
4471	// empty values are omitted from API requests. However, any non-pointer,
4472	// non-interface field appearing in ForceSendFields will be sent to the
4473	// server regardless of whether the field is empty or not. This may be
4474	// used to include empty fields in Patch requests.
4475	ForceSendFields []string `json:"-"`
4476
4477	// NullFields is a list of field names (e.g. "ProgressPercentage") to
4478	// include in API requests with the JSON null value. By default, fields
4479	// with empty values are omitted from API requests. However, any field
4480	// with an empty value appearing in NullFields will be sent to the
4481	// server as null. It is an error if a field in this list has a
4482	// non-empty value. This may be used to include null fields in Patch
4483	// requests.
4484	NullFields []string `json:"-"`
4485}
4486
4487func (s *OperationMetadata) MarshalJSON() ([]byte, error) {
4488	type NoMethod OperationMetadata
4489	raw := NoMethod(*s)
4490	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4491}
4492
4493// Option: A protocol buffer option, which can be attached to a message,
4494// field,
4495// enumeration, etc.
4496type Option struct {
4497	// Name: The option's name. For protobuf built-in options (options
4498	// defined in
4499	// descriptor.proto), this is the short name. For example,
4500	// "map_entry".
4501	// For custom options, it should be the fully-qualified name. For
4502	// example,
4503	// "google.api.http".
4504	Name string `json:"name,omitempty"`
4505
4506	// Value: The option's value packed in an Any message. If the value is a
4507	// primitive,
4508	// the corresponding wrapper type defined in
4509	// google/protobuf/wrappers.proto
4510	// should be used. If the value is an enum, it should be stored as an
4511	// int32
4512	// value using the google.protobuf.Int32Value type.
4513	Value googleapi.RawMessage `json:"value,omitempty"`
4514
4515	// ForceSendFields is a list of field names (e.g. "Name") to
4516	// unconditionally include in API requests. By default, fields with
4517	// empty values are omitted from API requests. However, any non-pointer,
4518	// non-interface field appearing in ForceSendFields will be sent to the
4519	// server regardless of whether the field is empty or not. This may be
4520	// used to include empty fields in Patch requests.
4521	ForceSendFields []string `json:"-"`
4522
4523	// NullFields is a list of field names (e.g. "Name") to include in API
4524	// requests with the JSON null value. By default, fields with empty
4525	// values are omitted from API requests. However, any field with an
4526	// empty value appearing in NullFields will be sent to the server as
4527	// null. It is an error if a field in this list has a non-empty value.
4528	// This may be used to include null fields in Patch requests.
4529	NullFields []string `json:"-"`
4530}
4531
4532func (s *Option) MarshalJSON() ([]byte, error) {
4533	type NoMethod Option
4534	raw := NoMethod(*s)
4535	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4536}
4537
4538// Page: Represents a documentation page. A page can contain subpages to
4539// represent
4540// nested documentation set structure.
4541type Page struct {
4542	// Content: The Markdown content of the page. You can use <code>&#40;==
4543	// include {path}
4544	// ==&#41;</code> to include content from a Markdown file.
4545	Content string `json:"content,omitempty"`
4546
4547	// Name: The name of the page. It will be used as an identity of the
4548	// page to
4549	// generate URI of the page, text of the link to this page in
4550	// navigation,
4551	// etc. The full page name (start from the root page name to this
4552	// page
4553	// concatenated with `.`) can be used as reference to the page in
4554	// your
4555	// documentation. For example:
4556	// <pre><code>pages:
4557	// - name: Tutorial
4558	//   content: &#40;== include tutorial.md ==&#41;
4559	//   subpages:
4560	//   - name: Java
4561	//     content: &#40;== include tutorial_java.md
4562	// ==&#41;
4563	// </code></pre>
4564	// You can reference `Java` page using Markdown reference link
4565	// syntax:
4566	// `Java`.
4567	Name string `json:"name,omitempty"`
4568
4569	// Subpages: Subpages of this page. The order of subpages specified here
4570	// will be
4571	// honored in the generated docset.
4572	Subpages []*Page `json:"subpages,omitempty"`
4573
4574	// ForceSendFields is a list of field names (e.g. "Content") to
4575	// unconditionally include in API requests. By default, fields with
4576	// empty values are omitted from API requests. However, any non-pointer,
4577	// non-interface field appearing in ForceSendFields will be sent to the
4578	// server regardless of whether the field is empty or not. This may be
4579	// used to include empty fields in Patch requests.
4580	ForceSendFields []string `json:"-"`
4581
4582	// NullFields is a list of field names (e.g. "Content") to include in
4583	// API requests with the JSON null value. By default, fields with empty
4584	// values are omitted from API requests. However, any field with an
4585	// empty value appearing in NullFields will be sent to the server as
4586	// null. It is an error if a field in this list has a non-empty value.
4587	// This may be used to include null fields in Patch requests.
4588	NullFields []string `json:"-"`
4589}
4590
4591func (s *Page) MarshalJSON() ([]byte, error) {
4592	type NoMethod Page
4593	raw := NoMethod(*s)
4594	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4595}
4596
4597// Policy: An Identity and Access Management (IAM) policy, which
4598// specifies access
4599// controls for Google Cloud resources.
4600//
4601//
4602// A `Policy` is a collection of `bindings`. A `binding` binds one or
4603// more
4604// `members` to a single `role`. Members can be user accounts, service
4605// accounts,
4606// Google groups, and domains (such as G Suite). A `role` is a named
4607// list of
4608// permissions; each `role` can be an IAM predefined role or a
4609// user-created
4610// custom role.
4611//
4612// Optionally, a `binding` can specify a `condition`, which is a
4613// logical
4614// expression that allows access to a resource only if the expression
4615// evaluates
4616// to `true`. A condition can add constraints based on attributes of
4617// the
4618// request, the resource, or both.
4619//
4620// **JSON example:**
4621//
4622//     {
4623//       "bindings": [
4624//         {
4625//           "role": "roles/resourcemanager.organizationAdmin",
4626//           "members": [
4627//             "user:mike@example.com",
4628//             "group:admins@example.com",
4629//             "domain:google.com",
4630//
4631// "serviceAccount:my-project-id@appspot.gserviceaccount.com"
4632//           ]
4633//         },
4634//         {
4635//           "role": "roles/resourcemanager.organizationViewer",
4636//           "members": ["user:eve@example.com"],
4637//           "condition": {
4638//             "title": "expirable access",
4639//             "description": "Does not grant access after Sep 2020",
4640//             "expression": "request.time <
4641// timestamp('2020-10-01T00:00:00.000Z')",
4642//           }
4643//         }
4644//       ],
4645//       "etag": "BwWWja0YfJA=",
4646//       "version": 3
4647//     }
4648//
4649// **YAML example:**
4650//
4651//     bindings:
4652//     - members:
4653//       - user:mike@example.com
4654//       - group:admins@example.com
4655//       - domain:google.com
4656//       - serviceAccount:my-project-id@appspot.gserviceaccount.com
4657//       role: roles/resourcemanager.organizationAdmin
4658//     - members:
4659//       - user:eve@example.com
4660//       role: roles/resourcemanager.organizationViewer
4661//       condition:
4662//         title: expirable access
4663//         description: Does not grant access after Sep 2020
4664//         expression: request.time <
4665// timestamp('2020-10-01T00:00:00.000Z')
4666//     - etag: BwWWja0YfJA=
4667//     - version: 3
4668//
4669// For a description of IAM and its features, see the
4670// [IAM documentation](https://cloud.google.com/iam/docs/).
4671type Policy struct {
4672	// AuditConfigs: Specifies cloud audit logging configuration for this
4673	// policy.
4674	AuditConfigs []*AuditConfig `json:"auditConfigs,omitempty"`
4675
4676	// Bindings: Associates a list of `members` to a `role`. Optionally, may
4677	// specify a
4678	// `condition` that determines how and when the `bindings` are applied.
4679	// Each
4680	// of the `bindings` must contain at least one member.
4681	Bindings []*Binding `json:"bindings,omitempty"`
4682
4683	// Etag: `etag` is used for optimistic concurrency control as a way to
4684	// help
4685	// prevent simultaneous updates of a policy from overwriting each
4686	// other.
4687	// It is strongly suggested that systems make use of the `etag` in
4688	// the
4689	// read-modify-write cycle to perform policy updates in order to avoid
4690	// race
4691	// conditions: An `etag` is returned in the response to `getIamPolicy`,
4692	// and
4693	// systems are expected to put that etag in the request to
4694	// `setIamPolicy` to
4695	// ensure that their change will be applied to the same version of the
4696	// policy.
4697	//
4698	// **Important:** If you use IAM Conditions, you must include the `etag`
4699	// field
4700	// whenever you call `setIamPolicy`. If you omit this field, then IAM
4701	// allows
4702	// you to overwrite a version `3` policy with a version `1` policy, and
4703	// all of
4704	// the conditions in the version `3` policy are lost.
4705	Etag string `json:"etag,omitempty"`
4706
4707	// Version: Specifies the format of the policy.
4708	//
4709	// Valid values are `0`, `1`, and `3`. Requests that specify an invalid
4710	// value
4711	// are rejected.
4712	//
4713	// Any operation that affects conditional role bindings must specify
4714	// version
4715	// `3`. This requirement applies to the following operations:
4716	//
4717	// * Getting a policy that includes a conditional role binding
4718	// * Adding a conditional role binding to a policy
4719	// * Changing a conditional role binding in a policy
4720	// * Removing any role binding, with or without a condition, from a
4721	// policy
4722	//   that includes conditions
4723	//
4724	// **Important:** If you use IAM Conditions, you must include the `etag`
4725	// field
4726	// whenever you call `setIamPolicy`. If you omit this field, then IAM
4727	// allows
4728	// you to overwrite a version `3` policy with a version `1` policy, and
4729	// all of
4730	// the conditions in the version `3` policy are lost.
4731	//
4732	// If a policy does not include any conditions, operations on that
4733	// policy may
4734	// specify any valid version or leave the field unset.
4735	Version int64 `json:"version,omitempty"`
4736
4737	// ServerResponse contains the HTTP response code and headers from the
4738	// server.
4739	googleapi.ServerResponse `json:"-"`
4740
4741	// ForceSendFields is a list of field names (e.g. "AuditConfigs") to
4742	// unconditionally include in API requests. By default, fields with
4743	// empty values are omitted from API requests. However, any non-pointer,
4744	// non-interface field appearing in ForceSendFields will be sent to the
4745	// server regardless of whether the field is empty or not. This may be
4746	// used to include empty fields in Patch requests.
4747	ForceSendFields []string `json:"-"`
4748
4749	// NullFields is a list of field names (e.g. "AuditConfigs") to include
4750	// in API requests with the JSON null value. By default, fields with
4751	// empty values are omitted from API requests. However, any field with
4752	// an empty value appearing in NullFields will be sent to the server as
4753	// null. It is an error if a field in this list has a non-empty value.
4754	// This may be used to include null fields in Patch requests.
4755	NullFields []string `json:"-"`
4756}
4757
4758func (s *Policy) MarshalJSON() ([]byte, error) {
4759	type NoMethod Policy
4760	raw := NoMethod(*s)
4761	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4762}
4763
4764// Quota: Quota configuration helps to achieve fairness and budgeting in
4765// service
4766// usage.
4767//
4768// The metric based quota configuration works this way:
4769// - The service configuration defines a set of metrics.
4770// - For API calls, the quota.metric_rules maps methods to metrics with
4771//   corresponding costs.
4772// - The quota.limits defines limits on the metrics, which will be used
4773// for
4774//   quota checks at runtime.
4775//
4776// An example quota configuration in yaml format:
4777//
4778//    quota:
4779//      limits:
4780//
4781//      - name: apiWriteQpsPerProject
4782//        metric: library.googleapis.com/write_calls
4783//        unit: "1/min/{project}"  # rate limit for consumer projects
4784//        values:
4785//          STANDARD: 10000
4786//
4787//
4788//      # The metric rules bind all methods to the read_calls metric,
4789//      # except for the UpdateBook and DeleteBook methods. These two
4790// methods
4791//      # are mapped to the write_calls metric, with the UpdateBook
4792// method
4793//      # consuming at twice rate as the DeleteBook method.
4794//      metric_rules:
4795//      - selector: "*"
4796//        metric_costs:
4797//          library.googleapis.com/read_calls: 1
4798//      - selector: google.example.library.v1.LibraryService.UpdateBook
4799//        metric_costs:
4800//          library.googleapis.com/write_calls: 2
4801//      - selector: google.example.library.v1.LibraryService.DeleteBook
4802//        metric_costs:
4803//          library.googleapis.com/write_calls: 1
4804//
4805//  Corresponding Metric definition:
4806//
4807//      metrics:
4808//      - name: library.googleapis.com/read_calls
4809//        display_name: Read requests
4810//        metric_kind: DELTA
4811//        value_type: INT64
4812//
4813//      - name: library.googleapis.com/write_calls
4814//        display_name: Write requests
4815//        metric_kind: DELTA
4816//        value_type: INT64
4817//
4818//
4819type Quota struct {
4820	// Limits: List of `QuotaLimit` definitions for the service.
4821	Limits []*QuotaLimit `json:"limits,omitempty"`
4822
4823	// MetricRules: List of `MetricRule` definitions, each one mapping a
4824	// selected method to one
4825	// or more metrics.
4826	MetricRules []*MetricRule `json:"metricRules,omitempty"`
4827
4828	// ForceSendFields is a list of field names (e.g. "Limits") to
4829	// unconditionally include in API requests. By default, fields with
4830	// empty values are omitted from API requests. However, any non-pointer,
4831	// non-interface field appearing in ForceSendFields will be sent to the
4832	// server regardless of whether the field is empty or not. This may be
4833	// used to include empty fields in Patch requests.
4834	ForceSendFields []string `json:"-"`
4835
4836	// NullFields is a list of field names (e.g. "Limits") to include in API
4837	// requests with the JSON null value. By default, fields with empty
4838	// values are omitted from API requests. However, any field with an
4839	// empty value appearing in NullFields will be sent to the server as
4840	// null. It is an error if a field in this list has a non-empty value.
4841	// This may be used to include null fields in Patch requests.
4842	NullFields []string `json:"-"`
4843}
4844
4845func (s *Quota) MarshalJSON() ([]byte, error) {
4846	type NoMethod Quota
4847	raw := NoMethod(*s)
4848	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4849}
4850
4851// QuotaLimit: `QuotaLimit` defines a specific limit that applies over a
4852// specified duration
4853// for a limit type. There can be at most one limit for a duration and
4854// limit
4855// type combination defined within a `QuotaGroup`.
4856type QuotaLimit struct {
4857	// DefaultLimit: Default number of tokens that can be consumed during
4858	// the specified
4859	// duration. This is the number of tokens assigned when a
4860	// client
4861	// application developer activates the service for his/her
4862	// project.
4863	//
4864	// Specifying a value of 0 will block all requests. This can be used if
4865	// you
4866	// are provisioning quota to selected consumers and blocking
4867	// others.
4868	// Similarly, a value of -1 will indicate an unlimited quota. No
4869	// other
4870	// negative values are allowed.
4871	//
4872	// Used by group-based quotas only.
4873	DefaultLimit int64 `json:"defaultLimit,omitempty,string"`
4874
4875	// Description: Optional. User-visible, extended description for this
4876	// quota limit.
4877	// Should be used only when more context is needed to understand this
4878	// limit
4879	// than provided by the limit's display name (see: `display_name`).
4880	Description string `json:"description,omitempty"`
4881
4882	// DisplayName: User-visible display name for this limit.
4883	// Optional. If not set, the UI will provide a default display name
4884	// based on
4885	// the quota configuration. This field can be used to override the
4886	// default
4887	// display name generated from the configuration.
4888	DisplayName string `json:"displayName,omitempty"`
4889
4890	// Duration: Duration of this limit in textual notation. Must be "100s"
4891	// or "1d".
4892	//
4893	// Used by group-based quotas only.
4894	Duration string `json:"duration,omitempty"`
4895
4896	// FreeTier: Free tier value displayed in the Developers Console for
4897	// this limit.
4898	// The free tier is the number of tokens that will be subtracted from
4899	// the
4900	// billed amount when billing is enabled.
4901	// This field can only be set on a limit with duration "1d", in a
4902	// billable
4903	// group; it is invalid on any other limit. If this field is not set,
4904	// it
4905	// defaults to 0, indicating that there is no free tier for this
4906	// service.
4907	//
4908	// Used by group-based quotas only.
4909	FreeTier int64 `json:"freeTier,omitempty,string"`
4910
4911	// MaxLimit: Maximum number of tokens that can be consumed during the
4912	// specified
4913	// duration. Client application developers can override the default
4914	// limit up
4915	// to this maximum. If specified, this value cannot be set to a value
4916	// less
4917	// than the default limit. If not specified, it is set to the default
4918	// limit.
4919	//
4920	// To allow clients to apply overrides with no upper bound, set this to
4921	// -1,
4922	// indicating unlimited maximum quota.
4923	//
4924	// Used by group-based quotas only.
4925	MaxLimit int64 `json:"maxLimit,omitempty,string"`
4926
4927	// Metric: The name of the metric this quota limit applies to. The quota
4928	// limits with
4929	// the same metric will be checked together during runtime. The metric
4930	// must be
4931	// defined within the service config.
4932	Metric string `json:"metric,omitempty"`
4933
4934	// Name: Name of the quota limit.
4935	//
4936	// The name must be provided, and it must be unique within the service.
4937	// The
4938	// name can only include alphanumeric characters as well as '-'.
4939	//
4940	// The maximum length of the limit name is 64 characters.
4941	Name string `json:"name,omitempty"`
4942
4943	// Unit: Specify the unit of the quota limit. It uses the same syntax
4944	// as
4945	// Metric.unit. The supported unit kinds are determined by the
4946	// quota
4947	// backend system.
4948	//
4949	// Here are some examples:
4950	// * "1/min/{project}" for quota per minute per project.
4951	//
4952	// Note: the order of unit components is insignificant.
4953	// The "1" at the beginning is required to follow the metric unit
4954	// syntax.
4955	Unit string `json:"unit,omitempty"`
4956
4957	// Values: Tiered limit values. You must specify this as a key:value
4958	// pair, with an
4959	// integer value that is the maximum number of requests allowed for
4960	// the
4961	// specified unit. Currently only STANDARD is supported.
4962	Values map[string]string `json:"values,omitempty"`
4963
4964	// ForceSendFields is a list of field names (e.g. "DefaultLimit") to
4965	// unconditionally include in API requests. By default, fields with
4966	// empty values are omitted from API requests. However, any non-pointer,
4967	// non-interface field appearing in ForceSendFields will be sent to the
4968	// server regardless of whether the field is empty or not. This may be
4969	// used to include empty fields in Patch requests.
4970	ForceSendFields []string `json:"-"`
4971
4972	// NullFields is a list of field names (e.g. "DefaultLimit") to include
4973	// in API requests with the JSON null value. By default, fields with
4974	// empty values are omitted from API requests. However, any field with
4975	// an empty value appearing in NullFields will be sent to the server as
4976	// null. It is an error if a field in this list has a non-empty value.
4977	// This may be used to include null fields in Patch requests.
4978	NullFields []string `json:"-"`
4979}
4980
4981func (s *QuotaLimit) MarshalJSON() ([]byte, error) {
4982	type NoMethod QuotaLimit
4983	raw := NoMethod(*s)
4984	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4985}
4986
4987// Rollout: A rollout resource that defines how service configuration
4988// versions are pushed
4989// to control plane systems. Typically, you create a new version of
4990// the
4991// service config, and then create a Rollout to push the service config.
4992type Rollout struct {
4993	// CreateTime: Creation time of the rollout. Readonly.
4994	CreateTime string `json:"createTime,omitempty"`
4995
4996	// CreatedBy: The user who created the Rollout. Readonly.
4997	CreatedBy string `json:"createdBy,omitempty"`
4998
4999	// DeleteServiceStrategy: The strategy associated with a rollout to
5000	// delete a `ManagedService`.
5001	// Readonly.
5002	DeleteServiceStrategy *DeleteServiceStrategy `json:"deleteServiceStrategy,omitempty"`
5003
5004	// RolloutId: Optional. Unique identifier of this Rollout. Must be no
5005	// longer than 63 characters
5006	// and only lower case letters, digits, '.', '_' and '-' are
5007	// allowed.
5008	//
5009	// If not specified by client, the server will generate one. The
5010	// generated id
5011	// will have the form of <date><revision number>, where "date" is the
5012	// create
5013	// date in ISO 8601 format.  "revision number" is a monotonically
5014	// increasing
5015	// positive number that is reset every day for each service.
5016	// An example of the generated rollout_id is '2016-02-16r1'
5017	RolloutId string `json:"rolloutId,omitempty"`
5018
5019	// ServiceName: The name of the service associated with this Rollout.
5020	ServiceName string `json:"serviceName,omitempty"`
5021
5022	// Status: The status of this rollout. Readonly. In case of a failed
5023	// rollout,
5024	// the system will automatically rollback to the current
5025	// Rollout
5026	// version. Readonly.
5027	//
5028	// Possible values:
5029	//   "ROLLOUT_STATUS_UNSPECIFIED" - No status specified.
5030	//   "IN_PROGRESS" - The Rollout is in progress.
5031	//   "SUCCESS" - The Rollout has completed successfully.
5032	//   "CANCELLED" - The Rollout has been cancelled. This can happen if
5033	// you have overlapping
5034	// Rollout pushes, and the previous ones will be cancelled.
5035	//   "FAILED" - The Rollout has failed and the rollback attempt has
5036	// failed too.
5037	//   "PENDING" - The Rollout has not started yet and is pending for
5038	// execution.
5039	//   "FAILED_ROLLED_BACK" - The Rollout has failed and rolled back to
5040	// the previous successful
5041	// Rollout.
5042	Status string `json:"status,omitempty"`
5043
5044	// TrafficPercentStrategy: Google Service Control selects service
5045	// configurations based on
5046	// traffic percentage.
5047	TrafficPercentStrategy *TrafficPercentStrategy `json:"trafficPercentStrategy,omitempty"`
5048
5049	// ServerResponse contains the HTTP response code and headers from the
5050	// server.
5051	googleapi.ServerResponse `json:"-"`
5052
5053	// ForceSendFields is a list of field names (e.g. "CreateTime") to
5054	// unconditionally include in API requests. By default, fields with
5055	// empty values are omitted from API requests. However, any non-pointer,
5056	// non-interface field appearing in ForceSendFields will be sent to the
5057	// server regardless of whether the field is empty or not. This may be
5058	// used to include empty fields in Patch requests.
5059	ForceSendFields []string `json:"-"`
5060
5061	// NullFields is a list of field names (e.g. "CreateTime") to include in
5062	// API requests with the JSON null value. By default, fields with empty
5063	// values are omitted from API requests. However, any field with an
5064	// empty value appearing in NullFields will be sent to the server as
5065	// null. It is an error if a field in this list has a non-empty value.
5066	// This may be used to include null fields in Patch requests.
5067	NullFields []string `json:"-"`
5068}
5069
5070func (s *Rollout) MarshalJSON() ([]byte, error) {
5071	type NoMethod Rollout
5072	raw := NoMethod(*s)
5073	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5074}
5075
5076// Service: `Service` is the root object of Google service configuration
5077// schema. It
5078// describes basic information about a service, such as the name and
5079// the
5080// title, and delegates other aspects to sub-sections. Each sub-section
5081// is
5082// either a proto message or a repeated proto message that configures
5083// a
5084// specific aspect, such as auth. See each proto message definition for
5085// details.
5086//
5087// Example:
5088//
5089//     type: google.api.Service
5090//     config_version: 3
5091//     name: calendar.googleapis.com
5092//     title: Google Calendar API
5093//     apis:
5094//     - name: google.calendar.v3.Calendar
5095//     authentication:
5096//       providers:
5097//       - id: google_calendar_auth
5098//         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
5099//         issuer: https://securetoken.google.com
5100//       rules:
5101//       - selector: "*"
5102//         requirements:
5103//           provider_id: google_calendar_auth
5104type Service struct {
5105	// Apis: A list of API interfaces exported by this service. Only the
5106	// `name` field
5107	// of the google.protobuf.Api needs to be provided by the
5108	// configuration
5109	// author, as the remaining fields will be derived from the IDL during
5110	// the
5111	// normalization process. It is an error to specify an API interface
5112	// here
5113	// which cannot be resolved against the associated IDL files.
5114	Apis []*Api `json:"apis,omitempty"`
5115
5116	// Authentication: Auth configuration.
5117	Authentication *Authentication `json:"authentication,omitempty"`
5118
5119	// Backend: API backend configuration.
5120	Backend *Backend `json:"backend,omitempty"`
5121
5122	// Billing: Billing configuration.
5123	Billing *Billing `json:"billing,omitempty"`
5124
5125	// ConfigVersion: The semantic version of the service configuration. The
5126	// config version
5127	// affects the interpretation of the service configuration. For
5128	// example,
5129	// certain features are enabled by default for certain config
5130	// versions.
5131	// The latest config version is `3`.
5132	ConfigVersion int64 `json:"configVersion,omitempty"`
5133
5134	// Context: Context configuration.
5135	Context *Context `json:"context,omitempty"`
5136
5137	// Control: Configuration for the service control plane.
5138	Control *Control `json:"control,omitempty"`
5139
5140	// CustomError: Custom error configuration.
5141	CustomError *CustomError `json:"customError,omitempty"`
5142
5143	// Documentation: Additional API documentation.
5144	Documentation *Documentation `json:"documentation,omitempty"`
5145
5146	// Endpoints: Configuration for network endpoints.  If this is empty,
5147	// then an endpoint
5148	// with the same name as the service is automatically generated to
5149	// service all
5150	// defined APIs.
5151	Endpoints []*Endpoint `json:"endpoints,omitempty"`
5152
5153	// Enums: A list of all enum types included in this API service.
5154	// Enums
5155	// referenced directly or indirectly by the `apis` are
5156	// automatically
5157	// included.  Enums which are not referenced but shall be
5158	// included
5159	// should be listed here by name. Example:
5160	//
5161	//     enums:
5162	//     - name: google.someapi.v1.SomeEnum
5163	Enums []*Enum `json:"enums,omitempty"`
5164
5165	// Http: HTTP configuration.
5166	Http *Http `json:"http,omitempty"`
5167
5168	// Id: A unique ID for a specific instance of this message, typically
5169	// assigned
5170	// by the client for tracking purpose. Must be no longer than 63
5171	// characters
5172	// and only lower case letters, digits, '.', '_' and '-' are allowed.
5173	// If
5174	// empty, the server may choose to generate one instead.
5175	Id string `json:"id,omitempty"`
5176
5177	// Logging: Logging configuration.
5178	Logging *Logging `json:"logging,omitempty"`
5179
5180	// Logs: Defines the logs used by this service.
5181	Logs []*LogDescriptor `json:"logs,omitempty"`
5182
5183	// Metrics: Defines the metrics used by this service.
5184	Metrics []*MetricDescriptor `json:"metrics,omitempty"`
5185
5186	// MonitoredResources: Defines the monitored resources used by this
5187	// service. This is required
5188	// by the Service.monitoring and Service.logging configurations.
5189	MonitoredResources []*MonitoredResourceDescriptor `json:"monitoredResources,omitempty"`
5190
5191	// Monitoring: Monitoring configuration.
5192	Monitoring *Monitoring `json:"monitoring,omitempty"`
5193
5194	// Name: The service name, which is a DNS-like logical identifier for
5195	// the
5196	// service, such as `calendar.googleapis.com`. The service
5197	// name
5198	// typically goes through DNS verification to make sure the owner
5199	// of the service also owns the DNS name.
5200	Name string `json:"name,omitempty"`
5201
5202	// ProducerProjectId: The Google project that owns this service.
5203	ProducerProjectId string `json:"producerProjectId,omitempty"`
5204
5205	// Quota: Quota configuration.
5206	Quota *Quota `json:"quota,omitempty"`
5207
5208	// SourceInfo: Output only. The source information for this
5209	// configuration if available.
5210	SourceInfo *SourceInfo `json:"sourceInfo,omitempty"`
5211
5212	// SystemParameters: System parameter configuration.
5213	SystemParameters *SystemParameters `json:"systemParameters,omitempty"`
5214
5215	// SystemTypes: A list of all proto message types included in this API
5216	// service.
5217	// It serves similar purpose as [google.api.Service.types], except
5218	// that
5219	// these types are not needed by user-defined APIs. Therefore, they will
5220	// not
5221	// show up in the generated discovery doc. This field should only be
5222	// used
5223	// to define system APIs in ESF.
5224	SystemTypes []*Type `json:"systemTypes,omitempty"`
5225
5226	// Title: The product title for this service.
5227	Title string `json:"title,omitempty"`
5228
5229	// Types: A list of all proto message types included in this API
5230	// service.
5231	// Types referenced directly or indirectly by the `apis`
5232	// are
5233	// automatically included.  Messages which are not referenced but
5234	// shall be included, such as types used by the `google.protobuf.Any`
5235	// type,
5236	// should be listed here by name. Example:
5237	//
5238	//     types:
5239	//     - name: google.protobuf.Int32
5240	Types []*Type `json:"types,omitempty"`
5241
5242	// Usage: Configuration controlling usage of this service.
5243	Usage *Usage `json:"usage,omitempty"`
5244
5245	// ServerResponse contains the HTTP response code and headers from the
5246	// server.
5247	googleapi.ServerResponse `json:"-"`
5248
5249	// ForceSendFields is a list of field names (e.g. "Apis") to
5250	// unconditionally include in API requests. By default, fields with
5251	// empty values are omitted from API requests. However, any non-pointer,
5252	// non-interface field appearing in ForceSendFields will be sent to the
5253	// server regardless of whether the field is empty or not. This may be
5254	// used to include empty fields in Patch requests.
5255	ForceSendFields []string `json:"-"`
5256
5257	// NullFields is a list of field names (e.g. "Apis") to include in API
5258	// requests with the JSON null value. By default, fields with empty
5259	// values are omitted from API requests. However, any field with an
5260	// empty value appearing in NullFields will be sent to the server as
5261	// null. It is an error if a field in this list has a non-empty value.
5262	// This may be used to include null fields in Patch requests.
5263	NullFields []string `json:"-"`
5264}
5265
5266func (s *Service) MarshalJSON() ([]byte, error) {
5267	type NoMethod Service
5268	raw := NoMethod(*s)
5269	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5270}
5271
5272// ServiceIdentity: The per-product per-project service identity for a
5273// service.
5274//
5275//
5276// Use this field to configure per-product per-project service
5277// identity.
5278// Example of a service identity configuration.
5279//
5280//     usage:
5281//       service_identity:
5282//       - service_account_parent: "projects/123456789"
5283//         display_name: "Cloud XXX Service Agent"
5284//         description: "Used as the identity of Cloud XXX to access
5285// resources"
5286type ServiceIdentity struct {
5287	// Description: Optional. A user-specified opaque description of the
5288	// service account.
5289	// Must be less than or equal to 256 UTF-8 bytes.
5290	Description string `json:"description,omitempty"`
5291
5292	// DisplayName: Optional. A user-specified name for the service
5293	// account.
5294	// Must be less than or equal to 100 UTF-8 bytes.
5295	DisplayName string `json:"displayName,omitempty"`
5296
5297	// ServiceAccountParent: A service account project that hosts the
5298	// service accounts.
5299	//
5300	// An example name would be:
5301	// `projects/123456789`
5302	ServiceAccountParent string `json:"serviceAccountParent,omitempty"`
5303
5304	// ForceSendFields is a list of field names (e.g. "Description") to
5305	// unconditionally include in API requests. By default, fields with
5306	// empty values are omitted from API requests. However, any non-pointer,
5307	// non-interface field appearing in ForceSendFields will be sent to the
5308	// server regardless of whether the field is empty or not. This may be
5309	// used to include empty fields in Patch requests.
5310	ForceSendFields []string `json:"-"`
5311
5312	// NullFields is a list of field names (e.g. "Description") to include
5313	// in API requests with the JSON null value. By default, fields with
5314	// empty values are omitted from API requests. However, any field with
5315	// an empty value appearing in NullFields will be sent to the server as
5316	// null. It is an error if a field in this list has a non-empty value.
5317	// This may be used to include null fields in Patch requests.
5318	NullFields []string `json:"-"`
5319}
5320
5321func (s *ServiceIdentity) MarshalJSON() ([]byte, error) {
5322	type NoMethod ServiceIdentity
5323	raw := NoMethod(*s)
5324	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5325}
5326
5327// SetIamPolicyRequest: Request message for `SetIamPolicy` method.
5328type SetIamPolicyRequest struct {
5329	// Policy: REQUIRED: The complete policy to be applied to the
5330	// `resource`. The size of
5331	// the policy is limited to a few 10s of KB. An empty policy is a
5332	// valid policy but certain Cloud Platform services (such as
5333	// Projects)
5334	// might reject them.
5335	Policy *Policy `json:"policy,omitempty"`
5336
5337	// UpdateMask: OPTIONAL: A FieldMask specifying which fields of the
5338	// policy to modify. Only
5339	// the fields in the mask will be modified. If no mask is provided,
5340	// the
5341	// following default mask is used:
5342	// paths: "bindings, etag"
5343	// This field is only used by Cloud IAM.
5344	UpdateMask string `json:"updateMask,omitempty"`
5345
5346	// ForceSendFields is a list of field names (e.g. "Policy") to
5347	// unconditionally include in API requests. By default, fields with
5348	// empty values are omitted from API requests. However, any non-pointer,
5349	// non-interface field appearing in ForceSendFields will be sent to the
5350	// server regardless of whether the field is empty or not. This may be
5351	// used to include empty fields in Patch requests.
5352	ForceSendFields []string `json:"-"`
5353
5354	// NullFields is a list of field names (e.g. "Policy") to include in API
5355	// requests with the JSON null value. By default, fields with empty
5356	// values are omitted from API requests. However, any field with an
5357	// empty value appearing in NullFields will be sent to the server as
5358	// null. It is an error if a field in this list has a non-empty value.
5359	// This may be used to include null fields in Patch requests.
5360	NullFields []string `json:"-"`
5361}
5362
5363func (s *SetIamPolicyRequest) MarshalJSON() ([]byte, error) {
5364	type NoMethod SetIamPolicyRequest
5365	raw := NoMethod(*s)
5366	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5367}
5368
5369// SourceContext: `SourceContext` represents information about the
5370// source of a
5371// protobuf element, like the file in which it is defined.
5372type SourceContext struct {
5373	// FileName: The path-qualified name of the .proto file that contained
5374	// the associated
5375	// protobuf element.  For example:
5376	// "google/protobuf/source_context.proto".
5377	FileName string `json:"fileName,omitempty"`
5378
5379	// ForceSendFields is a list of field names (e.g. "FileName") to
5380	// unconditionally include in API requests. By default, fields with
5381	// empty values are omitted from API requests. However, any non-pointer,
5382	// non-interface field appearing in ForceSendFields will be sent to the
5383	// server regardless of whether the field is empty or not. This may be
5384	// used to include empty fields in Patch requests.
5385	ForceSendFields []string `json:"-"`
5386
5387	// NullFields is a list of field names (e.g. "FileName") to include in
5388	// API requests with the JSON null value. By default, fields with empty
5389	// values are omitted from API requests. However, any field with an
5390	// empty value appearing in NullFields will be sent to the server as
5391	// null. It is an error if a field in this list has a non-empty value.
5392	// This may be used to include null fields in Patch requests.
5393	NullFields []string `json:"-"`
5394}
5395
5396func (s *SourceContext) MarshalJSON() ([]byte, error) {
5397	type NoMethod SourceContext
5398	raw := NoMethod(*s)
5399	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5400}
5401
5402// SourceInfo: Source information used to create a Service Config
5403type SourceInfo struct {
5404	// SourceFiles: All files used during config generation.
5405	SourceFiles []googleapi.RawMessage `json:"sourceFiles,omitempty"`
5406
5407	// ForceSendFields is a list of field names (e.g. "SourceFiles") to
5408	// unconditionally include in API requests. By default, fields with
5409	// empty values are omitted from API requests. However, any non-pointer,
5410	// non-interface field appearing in ForceSendFields will be sent to the
5411	// server regardless of whether the field is empty or not. This may be
5412	// used to include empty fields in Patch requests.
5413	ForceSendFields []string `json:"-"`
5414
5415	// NullFields is a list of field names (e.g. "SourceFiles") to include
5416	// in API requests with the JSON null value. By default, fields with
5417	// empty values are omitted from API requests. However, any field with
5418	// an empty value appearing in NullFields will be sent to the server as
5419	// null. It is an error if a field in this list has a non-empty value.
5420	// This may be used to include null fields in Patch requests.
5421	NullFields []string `json:"-"`
5422}
5423
5424func (s *SourceInfo) MarshalJSON() ([]byte, error) {
5425	type NoMethod SourceInfo
5426	raw := NoMethod(*s)
5427	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5428}
5429
5430// Status: The `Status` type defines a logical error model that is
5431// suitable for
5432// different programming environments, including REST APIs and RPC APIs.
5433// It is
5434// used by [gRPC](https://github.com/grpc). Each `Status` message
5435// contains
5436// three pieces of data: error code, error message, and error
5437// details.
5438//
5439// You can find out more about this error model and how to work with it
5440// in the
5441// [API Design Guide](https://cloud.google.com/apis/design/errors).
5442type Status struct {
5443	// Code: The status code, which should be an enum value of
5444	// google.rpc.Code.
5445	Code int64 `json:"code,omitempty"`
5446
5447	// Details: A list of messages that carry the error details.  There is a
5448	// common set of
5449	// message types for APIs to use.
5450	Details []googleapi.RawMessage `json:"details,omitempty"`
5451
5452	// Message: A developer-facing error message, which should be in
5453	// English. Any
5454	// user-facing error message should be localized and sent in
5455	// the
5456	// google.rpc.Status.details field, or localized by the client.
5457	Message string `json:"message,omitempty"`
5458
5459	// ForceSendFields is a list of field names (e.g. "Code") to
5460	// unconditionally include in API requests. By default, fields with
5461	// empty values are omitted from API requests. However, any non-pointer,
5462	// non-interface field appearing in ForceSendFields will be sent to the
5463	// server regardless of whether the field is empty or not. This may be
5464	// used to include empty fields in Patch requests.
5465	ForceSendFields []string `json:"-"`
5466
5467	// NullFields is a list of field names (e.g. "Code") to include in API
5468	// requests with the JSON null value. By default, fields with empty
5469	// values are omitted from API requests. However, any field with an
5470	// empty value appearing in NullFields will be sent to the server as
5471	// null. It is an error if a field in this list has a non-empty value.
5472	// This may be used to include null fields in Patch requests.
5473	NullFields []string `json:"-"`
5474}
5475
5476func (s *Status) MarshalJSON() ([]byte, error) {
5477	type NoMethod Status
5478	raw := NoMethod(*s)
5479	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5480}
5481
5482// Step: Represents the status of one operation step.
5483type Step struct {
5484	// Description: The short description of the step.
5485	Description string `json:"description,omitempty"`
5486
5487	// Status: The status code.
5488	//
5489	// Possible values:
5490	//   "STATUS_UNSPECIFIED" - Unspecifed code.
5491	//   "DONE" - The operation or step has completed without errors.
5492	//   "NOT_STARTED" - The operation or step has not started yet.
5493	//   "IN_PROGRESS" - The operation or step is in progress.
5494	//   "FAILED" - The operation or step has completed with errors. If the
5495	// operation is
5496	// rollbackable, the rollback completed with errors too.
5497	//   "CANCELLED" - The operation or step has completed with
5498	// cancellation.
5499	Status string `json:"status,omitempty"`
5500
5501	// ForceSendFields is a list of field names (e.g. "Description") to
5502	// unconditionally include in API requests. By default, fields with
5503	// empty values are omitted from API requests. However, any non-pointer,
5504	// non-interface field appearing in ForceSendFields will be sent to the
5505	// server regardless of whether the field is empty or not. This may be
5506	// used to include empty fields in Patch requests.
5507	ForceSendFields []string `json:"-"`
5508
5509	// NullFields is a list of field names (e.g. "Description") to include
5510	// in API requests with the JSON null value. By default, fields with
5511	// empty values are omitted from API requests. However, any field with
5512	// an empty value appearing in NullFields will be sent to the server as
5513	// null. It is an error if a field in this list has a non-empty value.
5514	// This may be used to include null fields in Patch requests.
5515	NullFields []string `json:"-"`
5516}
5517
5518func (s *Step) MarshalJSON() ([]byte, error) {
5519	type NoMethod Step
5520	raw := NoMethod(*s)
5521	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5522}
5523
5524// SubmitConfigSourceRequest: Request message for SubmitConfigSource
5525// method.
5526type SubmitConfigSourceRequest struct {
5527	// ConfigSource: Required. The source configuration for the service.
5528	ConfigSource *ConfigSource `json:"configSource,omitempty"`
5529
5530	// ValidateOnly: Optional. If set, this will result in the generation of
5531	// a
5532	// `google.api.Service` configuration based on the `ConfigSource`
5533	// provided,
5534	// but the generated config and the sources will NOT be persisted.
5535	ValidateOnly bool `json:"validateOnly,omitempty"`
5536
5537	// ForceSendFields is a list of field names (e.g. "ConfigSource") to
5538	// unconditionally include in API requests. By default, fields with
5539	// empty values are omitted from API requests. However, any non-pointer,
5540	// non-interface field appearing in ForceSendFields will be sent to the
5541	// server regardless of whether the field is empty or not. This may be
5542	// used to include empty fields in Patch requests.
5543	ForceSendFields []string `json:"-"`
5544
5545	// NullFields is a list of field names (e.g. "ConfigSource") to include
5546	// in API requests with the JSON null value. By default, fields with
5547	// empty values are omitted from API requests. However, any field with
5548	// an empty value appearing in NullFields will be sent to the server as
5549	// null. It is an error if a field in this list has a non-empty value.
5550	// This may be used to include null fields in Patch requests.
5551	NullFields []string `json:"-"`
5552}
5553
5554func (s *SubmitConfigSourceRequest) MarshalJSON() ([]byte, error) {
5555	type NoMethod SubmitConfigSourceRequest
5556	raw := NoMethod(*s)
5557	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5558}
5559
5560// SubmitConfigSourceResponse: Response message for SubmitConfigSource
5561// method.
5562type SubmitConfigSourceResponse struct {
5563	// ServiceConfig: The generated service configuration.
5564	ServiceConfig *Service `json:"serviceConfig,omitempty"`
5565
5566	// ForceSendFields is a list of field names (e.g. "ServiceConfig") to
5567	// unconditionally include in API requests. By default, fields with
5568	// empty values are omitted from API requests. However, any non-pointer,
5569	// non-interface field appearing in ForceSendFields will be sent to the
5570	// server regardless of whether the field is empty or not. This may be
5571	// used to include empty fields in Patch requests.
5572	ForceSendFields []string `json:"-"`
5573
5574	// NullFields is a list of field names (e.g. "ServiceConfig") to include
5575	// in API requests with the JSON null value. By default, fields with
5576	// empty values are omitted from API requests. However, any field with
5577	// an empty value appearing in NullFields will be sent to the server as
5578	// null. It is an error if a field in this list has a non-empty value.
5579	// This may be used to include null fields in Patch requests.
5580	NullFields []string `json:"-"`
5581}
5582
5583func (s *SubmitConfigSourceResponse) MarshalJSON() ([]byte, error) {
5584	type NoMethod SubmitConfigSourceResponse
5585	raw := NoMethod(*s)
5586	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5587}
5588
5589// SystemParameter: Define a parameter's name and location. The
5590// parameter may be passed as either
5591// an HTTP header or a URL query parameter, and if both are passed the
5592// behavior
5593// is implementation-dependent.
5594type SystemParameter struct {
5595	// HttpHeader: Define the HTTP header name to use for the parameter. It
5596	// is case
5597	// insensitive.
5598	HttpHeader string `json:"httpHeader,omitempty"`
5599
5600	// Name: Define the name of the parameter, such as "api_key" . It is
5601	// case sensitive.
5602	Name string `json:"name,omitempty"`
5603
5604	// UrlQueryParameter: Define the URL query parameter name to use for the
5605	// parameter. It is case
5606	// sensitive.
5607	UrlQueryParameter string `json:"urlQueryParameter,omitempty"`
5608
5609	// ForceSendFields is a list of field names (e.g. "HttpHeader") to
5610	// unconditionally include in API requests. By default, fields with
5611	// empty values are omitted from API requests. However, any non-pointer,
5612	// non-interface field appearing in ForceSendFields will be sent to the
5613	// server regardless of whether the field is empty or not. This may be
5614	// used to include empty fields in Patch requests.
5615	ForceSendFields []string `json:"-"`
5616
5617	// NullFields is a list of field names (e.g. "HttpHeader") to include in
5618	// API requests with the JSON null value. By default, fields with empty
5619	// values are omitted from API requests. However, any field with an
5620	// empty value appearing in NullFields will be sent to the server as
5621	// null. It is an error if a field in this list has a non-empty value.
5622	// This may be used to include null fields in Patch requests.
5623	NullFields []string `json:"-"`
5624}
5625
5626func (s *SystemParameter) MarshalJSON() ([]byte, error) {
5627	type NoMethod SystemParameter
5628	raw := NoMethod(*s)
5629	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5630}
5631
5632// SystemParameterRule: Define a system parameter rule mapping system
5633// parameter definitions to
5634// methods.
5635type SystemParameterRule struct {
5636	// Parameters: Define parameters. Multiple names may be defined for a
5637	// parameter.
5638	// For a given method call, only one of them should be used. If
5639	// multiple
5640	// names are used the behavior is implementation-dependent.
5641	// If none of the specified names are present the behavior
5642	// is
5643	// parameter-dependent.
5644	Parameters []*SystemParameter `json:"parameters,omitempty"`
5645
5646	// Selector: Selects the methods to which this rule applies. Use '*' to
5647	// indicate all
5648	// methods in all APIs.
5649	//
5650	// Refer to selector for syntax details.
5651	Selector string `json:"selector,omitempty"`
5652
5653	// ForceSendFields is a list of field names (e.g. "Parameters") to
5654	// unconditionally include in API requests. By default, fields with
5655	// empty values are omitted from API requests. However, any non-pointer,
5656	// non-interface field appearing in ForceSendFields will be sent to the
5657	// server regardless of whether the field is empty or not. This may be
5658	// used to include empty fields in Patch requests.
5659	ForceSendFields []string `json:"-"`
5660
5661	// NullFields is a list of field names (e.g. "Parameters") to include in
5662	// API requests with the JSON null value. By default, fields with empty
5663	// values are omitted from API requests. However, any field with an
5664	// empty value appearing in NullFields will be sent to the server as
5665	// null. It is an error if a field in this list has a non-empty value.
5666	// This may be used to include null fields in Patch requests.
5667	NullFields []string `json:"-"`
5668}
5669
5670func (s *SystemParameterRule) MarshalJSON() ([]byte, error) {
5671	type NoMethod SystemParameterRule
5672	raw := NoMethod(*s)
5673	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5674}
5675
5676// SystemParameters: ### System parameter configuration
5677//
5678// A system parameter is a special kind of parameter defined by the
5679// API
5680// system, not by an individual API. It is typically mapped to an HTTP
5681// header
5682// and/or a URL query parameter. This configuration specifies which
5683// methods
5684// change the names of the system parameters.
5685type SystemParameters struct {
5686	// Rules: Define system parameters.
5687	//
5688	// The parameters defined here will override the default
5689	// parameters
5690	// implemented by the system. If this field is missing from the
5691	// service
5692	// config, default system parameters will be used. Default system
5693	// parameters
5694	// and names is implementation-dependent.
5695	//
5696	// Example: define api key for all methods
5697	//
5698	//     system_parameters
5699	//       rules:
5700	//         - selector: "*"
5701	//           parameters:
5702	//             - name: api_key
5703	//               url_query_parameter: api_key
5704	//
5705	//
5706	// Example: define 2 api key names for a specific method.
5707	//
5708	//     system_parameters
5709	//       rules:
5710	//         - selector: "/ListShelves"
5711	//           parameters:
5712	//             - name: api_key
5713	//               http_header: Api-Key1
5714	//             - name: api_key
5715	//               http_header: Api-Key2
5716	//
5717	// **NOTE:** All service configuration rules follow "last one wins"
5718	// order.
5719	Rules []*SystemParameterRule `json:"rules,omitempty"`
5720
5721	// ForceSendFields is a list of field names (e.g. "Rules") to
5722	// unconditionally include in API requests. By default, fields with
5723	// empty values are omitted from API requests. However, any non-pointer,
5724	// non-interface field appearing in ForceSendFields will be sent to the
5725	// server regardless of whether the field is empty or not. This may be
5726	// used to include empty fields in Patch requests.
5727	ForceSendFields []string `json:"-"`
5728
5729	// NullFields is a list of field names (e.g. "Rules") to include in API
5730	// requests with the JSON null value. By default, fields with empty
5731	// values are omitted from API requests. However, any field with an
5732	// empty value appearing in NullFields will be sent to the server as
5733	// null. It is an error if a field in this list has a non-empty value.
5734	// This may be used to include null fields in Patch requests.
5735	NullFields []string `json:"-"`
5736}
5737
5738func (s *SystemParameters) MarshalJSON() ([]byte, error) {
5739	type NoMethod SystemParameters
5740	raw := NoMethod(*s)
5741	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5742}
5743
5744// TestIamPermissionsRequest: Request message for `TestIamPermissions`
5745// method.
5746type TestIamPermissionsRequest struct {
5747	// Permissions: The set of permissions to check for the `resource`.
5748	// Permissions with
5749	// wildcards (such as '*' or 'storage.*') are not allowed. For
5750	// more
5751	// information see
5752	// [IAM
5753	// Overview](https://cloud.google.com/iam/docs/overview#permissions).
5754	Permissions []string `json:"permissions,omitempty"`
5755
5756	// ForceSendFields is a list of field names (e.g. "Permissions") to
5757	// unconditionally include in API requests. By default, fields with
5758	// empty values are omitted from API requests. However, any non-pointer,
5759	// non-interface field appearing in ForceSendFields will be sent to the
5760	// server regardless of whether the field is empty or not. This may be
5761	// used to include empty fields in Patch requests.
5762	ForceSendFields []string `json:"-"`
5763
5764	// NullFields is a list of field names (e.g. "Permissions") to include
5765	// in API requests with the JSON null value. By default, fields with
5766	// empty values are omitted from API requests. However, any field with
5767	// an empty value appearing in NullFields will be sent to the server as
5768	// null. It is an error if a field in this list has a non-empty value.
5769	// This may be used to include null fields in Patch requests.
5770	NullFields []string `json:"-"`
5771}
5772
5773func (s *TestIamPermissionsRequest) MarshalJSON() ([]byte, error) {
5774	type NoMethod TestIamPermissionsRequest
5775	raw := NoMethod(*s)
5776	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5777}
5778
5779// TestIamPermissionsResponse: Response message for `TestIamPermissions`
5780// method.
5781type TestIamPermissionsResponse struct {
5782	// Permissions: A subset of `TestPermissionsRequest.permissions` that
5783	// the caller is
5784	// allowed.
5785	Permissions []string `json:"permissions,omitempty"`
5786
5787	// ServerResponse contains the HTTP response code and headers from the
5788	// server.
5789	googleapi.ServerResponse `json:"-"`
5790
5791	// ForceSendFields is a list of field names (e.g. "Permissions") to
5792	// unconditionally include in API requests. By default, fields with
5793	// empty values are omitted from API requests. However, any non-pointer,
5794	// non-interface field appearing in ForceSendFields will be sent to the
5795	// server regardless of whether the field is empty or not. This may be
5796	// used to include empty fields in Patch requests.
5797	ForceSendFields []string `json:"-"`
5798
5799	// NullFields is a list of field names (e.g. "Permissions") to include
5800	// in API requests with the JSON null value. By default, fields with
5801	// empty values are omitted from API requests. However, any field with
5802	// an empty value appearing in NullFields will be sent to the server as
5803	// null. It is an error if a field in this list has a non-empty value.
5804	// This may be used to include null fields in Patch requests.
5805	NullFields []string `json:"-"`
5806}
5807
5808func (s *TestIamPermissionsResponse) MarshalJSON() ([]byte, error) {
5809	type NoMethod TestIamPermissionsResponse
5810	raw := NoMethod(*s)
5811	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5812}
5813
5814// TrafficPercentStrategy: Strategy that specifies how clients of Google
5815// Service Controller want to
5816// send traffic to use different config versions. This is generally
5817// used by API proxy to split traffic based on your configured
5818// percentage for
5819// each config version.
5820//
5821// One example of how to gradually rollout a new service configuration
5822// using
5823// this
5824// strategy:
5825// Day 1
5826//
5827//     Rollout {
5828//       id: "example.googleapis.com/rollout_20160206"
5829//       traffic_percent_strategy {
5830//         percentages: {
5831//           "example.googleapis.com/20160201": 70.00
5832//           "example.googleapis.com/20160206": 30.00
5833//         }
5834//       }
5835//     }
5836//
5837// Day 2
5838//
5839//     Rollout {
5840//       id: "example.googleapis.com/rollout_20160207"
5841//       traffic_percent_strategy: {
5842//         percentages: {
5843//           "example.googleapis.com/20160206": 100.00
5844//         }
5845//       }
5846//     }
5847type TrafficPercentStrategy struct {
5848	// Percentages: Maps service configuration IDs to their corresponding
5849	// traffic percentage.
5850	// Key is the service configuration ID, Value is the traffic
5851	// percentage
5852	// which must be greater than 0.0 and the sum must equal to 100.0.
5853	Percentages map[string]float64 `json:"percentages,omitempty"`
5854
5855	// ForceSendFields is a list of field names (e.g. "Percentages") to
5856	// unconditionally include in API requests. By default, fields with
5857	// empty values are omitted from API requests. However, any non-pointer,
5858	// non-interface field appearing in ForceSendFields will be sent to the
5859	// server regardless of whether the field is empty or not. This may be
5860	// used to include empty fields in Patch requests.
5861	ForceSendFields []string `json:"-"`
5862
5863	// NullFields is a list of field names (e.g. "Percentages") to include
5864	// in API requests with the JSON null value. By default, fields with
5865	// empty values are omitted from API requests. However, any field with
5866	// an empty value appearing in NullFields will be sent to the server as
5867	// null. It is an error if a field in this list has a non-empty value.
5868	// This may be used to include null fields in Patch requests.
5869	NullFields []string `json:"-"`
5870}
5871
5872func (s *TrafficPercentStrategy) MarshalJSON() ([]byte, error) {
5873	type NoMethod TrafficPercentStrategy
5874	raw := NoMethod(*s)
5875	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5876}
5877
5878// Type: A protocol buffer message type.
5879type Type struct {
5880	// Fields: The list of fields.
5881	Fields []*Field `json:"fields,omitempty"`
5882
5883	// Name: The fully qualified message name.
5884	Name string `json:"name,omitempty"`
5885
5886	// Oneofs: The list of types appearing in `oneof` definitions in this
5887	// type.
5888	Oneofs []string `json:"oneofs,omitempty"`
5889
5890	// Options: The protocol buffer options.
5891	Options []*Option `json:"options,omitempty"`
5892
5893	// SourceContext: The source context.
5894	SourceContext *SourceContext `json:"sourceContext,omitempty"`
5895
5896	// Syntax: The source syntax.
5897	//
5898	// Possible values:
5899	//   "SYNTAX_PROTO2" - Syntax `proto2`.
5900	//   "SYNTAX_PROTO3" - Syntax `proto3`.
5901	Syntax string `json:"syntax,omitempty"`
5902
5903	// ForceSendFields is a list of field names (e.g. "Fields") to
5904	// unconditionally include in API requests. By default, fields with
5905	// empty values are omitted from API requests. However, any non-pointer,
5906	// non-interface field appearing in ForceSendFields will be sent to the
5907	// server regardless of whether the field is empty or not. This may be
5908	// used to include empty fields in Patch requests.
5909	ForceSendFields []string `json:"-"`
5910
5911	// NullFields is a list of field names (e.g. "Fields") to include in API
5912	// requests with the JSON null value. By default, fields with empty
5913	// values are omitted from API requests. However, any field with an
5914	// empty value appearing in NullFields will be sent to the server as
5915	// null. It is an error if a field in this list has a non-empty value.
5916	// This may be used to include null fields in Patch requests.
5917	NullFields []string `json:"-"`
5918}
5919
5920func (s *Type) MarshalJSON() ([]byte, error) {
5921	type NoMethod Type
5922	raw := NoMethod(*s)
5923	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5924}
5925
5926// UndeleteServiceResponse: Response message for UndeleteService method.
5927type UndeleteServiceResponse struct {
5928	// Service: Revived service resource.
5929	Service *ManagedService `json:"service,omitempty"`
5930
5931	// ForceSendFields is a list of field names (e.g. "Service") to
5932	// unconditionally include in API requests. By default, fields with
5933	// empty values are omitted from API requests. However, any non-pointer,
5934	// non-interface field appearing in ForceSendFields will be sent to the
5935	// server regardless of whether the field is empty or not. This may be
5936	// used to include empty fields in Patch requests.
5937	ForceSendFields []string `json:"-"`
5938
5939	// NullFields is a list of field names (e.g. "Service") to include in
5940	// API requests with the JSON null value. By default, fields with empty
5941	// values are omitted from API requests. However, any field with an
5942	// empty value appearing in NullFields will be sent to the server as
5943	// null. It is an error if a field in this list has a non-empty value.
5944	// This may be used to include null fields in Patch requests.
5945	NullFields []string `json:"-"`
5946}
5947
5948func (s *UndeleteServiceResponse) MarshalJSON() ([]byte, error) {
5949	type NoMethod UndeleteServiceResponse
5950	raw := NoMethod(*s)
5951	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
5952}
5953
5954// Usage: Configuration controlling usage of a service.
5955type Usage struct {
5956	// ProducerNotificationChannel: The full resource name of a channel used
5957	// for sending notifications to the
5958	// service producer.
5959	//
5960	// Google Service Management currently only supports
5961	// [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a
5962	// notification
5963	// channel. To use Google Cloud Pub/Sub as the channel, this must be the
5964	// name
5965	// of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name
5966	// format
5967	// documented in https://cloud.google.com/pubsub/docs/overview.
5968	ProducerNotificationChannel string `json:"producerNotificationChannel,omitempty"`
5969
5970	// Requirements: Requirements that must be satisfied before a consumer
5971	// project can use the
5972	// service. Each requirement is of the form
5973	// <service.name>/<requirement-id>;
5974	// for example 'serviceusage.googleapis.com/billing-enabled'.
5975	Requirements []string `json:"requirements,omitempty"`
5976
5977	// Rules: A list of usage rules that apply to individual API
5978	// methods.
5979	//
5980	// **NOTE:** All service configuration rules follow "last one wins"
5981	// order.
5982	Rules []*UsageRule `json:"rules,omitempty"`
5983
5984	// ServiceIdentity: The configuration of a per-product per-project
5985	// service identity.
5986	ServiceIdentity *ServiceIdentity `json:"serviceIdentity,omitempty"`
5987
5988	// ForceSendFields is a list of field names (e.g.
5989	// "ProducerNotificationChannel") to unconditionally include in API
5990	// requests. By default, fields with empty values are omitted from API
5991	// requests. However, any non-pointer, non-interface field appearing in
5992	// ForceSendFields will be sent to the server regardless of whether the
5993	// field is empty or not. This may be used to include empty fields in
5994	// Patch requests.
5995	ForceSendFields []string `json:"-"`
5996
5997	// NullFields is a list of field names (e.g.
5998	// "ProducerNotificationChannel") to include in API requests with the
5999	// JSON null value. By default, fields with empty values are omitted
6000	// from API requests. However, any field with an empty value appearing
6001	// in NullFields will be sent to the server as null. It is an error if a
6002	// field in this list has a non-empty value. This may be used to include
6003	// null fields in Patch requests.
6004	NullFields []string `json:"-"`
6005}
6006
6007func (s *Usage) MarshalJSON() ([]byte, error) {
6008	type NoMethod Usage
6009	raw := NoMethod(*s)
6010	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
6011}
6012
6013// UsageRule: Usage configuration rules for the service.
6014//
6015// NOTE: Under development.
6016//
6017//
6018// Use this rule to configure unregistered calls for the service.
6019// Unregistered
6020// calls are calls that do not contain consumer project
6021// identity.
6022// (Example: calls that do not contain an API key).
6023// By default, API methods do not allow unregistered calls, and each
6024// method call
6025// must be identified by a consumer project identity. Use this rule
6026// to
6027// allow/disallow unregistered calls.
6028//
6029// Example of an API that wants to allow unregistered calls for entire
6030// service.
6031//
6032//     usage:
6033//       rules:
6034//       - selector: "*"
6035//         allow_unregistered_calls: true
6036//
6037// Example of a method that wants to allow unregistered calls.
6038//
6039//     usage:
6040//       rules:
6041//       - selector:
6042// "google.example.library.v1.LibraryService.CreateBook"
6043//         allow_unregistered_calls: true
6044type UsageRule struct {
6045	// AllowUnregisteredCalls: If true, the selected method allows
6046	// unregistered calls, e.g. calls
6047	// that don't identify any user or application.
6048	AllowUnregisteredCalls bool `json:"allowUnregisteredCalls,omitempty"`
6049
6050	// Selector: Selects the methods to which this rule applies. Use '*' to
6051	// indicate all
6052	// methods in all APIs.
6053	//
6054	// Refer to selector for syntax details.
6055	Selector string `json:"selector,omitempty"`
6056
6057	// SkipServiceControl: If true, the selected method should skip service
6058	// control and the control
6059	// plane features, such as quota and billing, will not be
6060	// available.
6061	// This flag is used by Google Cloud Endpoints to bypass checks for
6062	// internal
6063	// methods, such as service health check methods.
6064	SkipServiceControl bool `json:"skipServiceControl,omitempty"`
6065
6066	// ForceSendFields is a list of field names (e.g.
6067	// "AllowUnregisteredCalls") to unconditionally include in API requests.
6068	// By default, fields with empty values are omitted from API requests.
6069	// However, any non-pointer, non-interface field appearing in
6070	// ForceSendFields will be sent to the server regardless of whether the
6071	// field is empty or not. This may be used to include empty fields in
6072	// Patch requests.
6073	ForceSendFields []string `json:"-"`
6074
6075	// NullFields is a list of field names (e.g. "AllowUnregisteredCalls")
6076	// to include in API requests with the JSON null value. By default,
6077	// fields with empty values are omitted from API requests. However, any
6078	// field with an empty value appearing in NullFields will be sent to the
6079	// server as null. It is an error if a field in this list has a
6080	// non-empty value. This may be used to include null fields in Patch
6081	// requests.
6082	NullFields []string `json:"-"`
6083}
6084
6085func (s *UsageRule) MarshalJSON() ([]byte, error) {
6086	type NoMethod UsageRule
6087	raw := NoMethod(*s)
6088	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
6089}
6090
6091// method id "servicemanagement.operations.get":
6092
6093type OperationsGetCall struct {
6094	s            *APIService
6095	name         string
6096	urlParams_   gensupport.URLParams
6097	ifNoneMatch_ string
6098	ctx_         context.Context
6099	header_      http.Header
6100}
6101
6102// Get: Gets the latest state of a long-running operation.  Clients can
6103// use this
6104// method to poll the operation result at intervals as recommended by
6105// the API
6106// service.
6107func (r *OperationsService) Get(name string) *OperationsGetCall {
6108	c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6109	c.name = name
6110	return c
6111}
6112
6113// Fields allows partial responses to be retrieved. See
6114// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6115// for more information.
6116func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall {
6117	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6118	return c
6119}
6120
6121// IfNoneMatch sets the optional parameter which makes the operation
6122// fail if the object's ETag matches the given value. This is useful for
6123// getting updates only after the object has changed since the last
6124// request. Use googleapi.IsNotModified to check whether the response
6125// error from Do is the result of In-None-Match.
6126func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall {
6127	c.ifNoneMatch_ = entityTag
6128	return c
6129}
6130
6131// Context sets the context to be used in this call's Do method. Any
6132// pending HTTP request will be aborted if the provided context is
6133// canceled.
6134func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall {
6135	c.ctx_ = ctx
6136	return c
6137}
6138
6139// Header returns an http.Header that can be modified by the caller to
6140// add HTTP headers to the request.
6141func (c *OperationsGetCall) Header() http.Header {
6142	if c.header_ == nil {
6143		c.header_ = make(http.Header)
6144	}
6145	return c.header_
6146}
6147
6148func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
6149	reqHeaders := make(http.Header)
6150	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
6151	for k, v := range c.header_ {
6152		reqHeaders[k] = v
6153	}
6154	reqHeaders.Set("User-Agent", c.s.userAgent())
6155	if c.ifNoneMatch_ != "" {
6156		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
6157	}
6158	var body io.Reader = nil
6159	c.urlParams_.Set("alt", alt)
6160	c.urlParams_.Set("prettyPrint", "false")
6161	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
6162	urls += "?" + c.urlParams_.Encode()
6163	req, err := http.NewRequest("GET", urls, body)
6164	if err != nil {
6165		return nil, err
6166	}
6167	req.Header = reqHeaders
6168	googleapi.Expand(req.URL, map[string]string{
6169		"name": c.name,
6170	})
6171	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6172}
6173
6174// Do executes the "servicemanagement.operations.get" call.
6175// Exactly one of *Operation or error will be non-nil. Any non-2xx
6176// status code is an error. Response headers are in either
6177// *Operation.ServerResponse.Header or (if a response was returned at
6178// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6179// to check whether the returned error was because
6180// http.StatusNotModified was returned.
6181func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6182	gensupport.SetOptions(c.urlParams_, opts...)
6183	res, err := c.doRequest("json")
6184	if res != nil && res.StatusCode == http.StatusNotModified {
6185		if res.Body != nil {
6186			res.Body.Close()
6187		}
6188		return nil, &googleapi.Error{
6189			Code:   res.StatusCode,
6190			Header: res.Header,
6191		}
6192	}
6193	if err != nil {
6194		return nil, err
6195	}
6196	defer googleapi.CloseBody(res)
6197	if err := googleapi.CheckResponse(res); err != nil {
6198		return nil, err
6199	}
6200	ret := &Operation{
6201		ServerResponse: googleapi.ServerResponse{
6202			Header:         res.Header,
6203			HTTPStatusCode: res.StatusCode,
6204		},
6205	}
6206	target := &ret
6207	if err := gensupport.DecodeResponse(target, res); err != nil {
6208		return nil, err
6209	}
6210	return ret, nil
6211	// {
6212	//   "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.",
6213	//   "flatPath": "v1/operations/{operationsId}",
6214	//   "httpMethod": "GET",
6215	//   "id": "servicemanagement.operations.get",
6216	//   "parameterOrder": [
6217	//     "name"
6218	//   ],
6219	//   "parameters": {
6220	//     "name": {
6221	//       "description": "The name of the operation resource.",
6222	//       "location": "path",
6223	//       "pattern": "^operations/.*$",
6224	//       "required": true,
6225	//       "type": "string"
6226	//     }
6227	//   },
6228	//   "path": "v1/{+name}",
6229	//   "response": {
6230	//     "$ref": "Operation"
6231	//   },
6232	//   "scopes": [
6233	//     "https://www.googleapis.com/auth/cloud-platform",
6234	//     "https://www.googleapis.com/auth/service.management"
6235	//   ]
6236	// }
6237
6238}
6239
6240// method id "servicemanagement.operations.list":
6241
6242type OperationsListCall struct {
6243	s            *APIService
6244	urlParams_   gensupport.URLParams
6245	ifNoneMatch_ string
6246	ctx_         context.Context
6247	header_      http.Header
6248}
6249
6250// List: Lists service operations that match the specified filter in the
6251// request.
6252func (r *OperationsService) List() *OperationsListCall {
6253	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6254	return c
6255}
6256
6257// Filter sets the optional parameter "filter": A string for filtering
6258// Operations.
6259//   The following filter fields are supported&#58;
6260//
6261//   * serviceName&#58; Required. Only `=` operator is allowed.
6262//   * startTime&#58; The time this job was started, in ISO 8601
6263// format.
6264//     Allowed operators are `>=`,  `>`, `<=`, and `<`.
6265//   * status&#58; Can be `done`, `in_progress`, or `failed`. Allowed
6266//     operators are `=`, and `!=`.
6267//
6268//   Filter expression supports conjunction (AND) and disjunction (OR)
6269//   logical operators. However, the serviceName restriction must be at
6270// the
6271//   top-level and can only be combined with other restrictions via the
6272// AND
6273//   logical operator.
6274//
6275//   Examples&#58;
6276//
6277//   * `serviceName={some-service}.googleapis.com`
6278//   * `serviceName={some-service}.googleapis.com AND
6279// startTime>="2017-02-01"
6280//   * `serviceName={some-service}.googleapis.com AND status=done`
6281//   * `serviceName={some-service}.googleapis.com AND (status=done OR
6282// startTime>="2017-02-01")`
6283func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
6284	c.urlParams_.Set("filter", filter)
6285	return c
6286}
6287
6288// Name sets the optional parameter "name": Not used.
6289func (c *OperationsListCall) Name(name string) *OperationsListCall {
6290	c.urlParams_.Set("name", name)
6291	return c
6292}
6293
6294// PageSize sets the optional parameter "pageSize": The maximum number
6295// of operations to return. If unspecified, defaults to
6296// 50. The maximum value is 100.
6297func (c *OperationsListCall) PageSize(pageSize int64) *OperationsListCall {
6298	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
6299	return c
6300}
6301
6302// PageToken sets the optional parameter "pageToken": The standard list
6303// page token.
6304func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
6305	c.urlParams_.Set("pageToken", pageToken)
6306	return c
6307}
6308
6309// Fields allows partial responses to be retrieved. See
6310// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6311// for more information.
6312func (c *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
6313	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6314	return c
6315}
6316
6317// IfNoneMatch sets the optional parameter which makes the operation
6318// fail if the object's ETag matches the given value. This is useful for
6319// getting updates only after the object has changed since the last
6320// request. Use googleapi.IsNotModified to check whether the response
6321// error from Do is the result of In-None-Match.
6322func (c *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
6323	c.ifNoneMatch_ = entityTag
6324	return c
6325}
6326
6327// Context sets the context to be used in this call's Do method. Any
6328// pending HTTP request will be aborted if the provided context is
6329// canceled.
6330func (c *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
6331	c.ctx_ = ctx
6332	return c
6333}
6334
6335// Header returns an http.Header that can be modified by the caller to
6336// add HTTP headers to the request.
6337func (c *OperationsListCall) Header() http.Header {
6338	if c.header_ == nil {
6339		c.header_ = make(http.Header)
6340	}
6341	return c.header_
6342}
6343
6344func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
6345	reqHeaders := make(http.Header)
6346	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
6347	for k, v := range c.header_ {
6348		reqHeaders[k] = v
6349	}
6350	reqHeaders.Set("User-Agent", c.s.userAgent())
6351	if c.ifNoneMatch_ != "" {
6352		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
6353	}
6354	var body io.Reader = nil
6355	c.urlParams_.Set("alt", alt)
6356	c.urlParams_.Set("prettyPrint", "false")
6357	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/operations")
6358	urls += "?" + c.urlParams_.Encode()
6359	req, err := http.NewRequest("GET", urls, body)
6360	if err != nil {
6361		return nil, err
6362	}
6363	req.Header = reqHeaders
6364	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6365}
6366
6367// Do executes the "servicemanagement.operations.list" call.
6368// Exactly one of *ListOperationsResponse or error will be non-nil. Any
6369// non-2xx status code is an error. Response headers are in either
6370// *ListOperationsResponse.ServerResponse.Header or (if a response was
6371// returned at all) in error.(*googleapi.Error).Header. Use
6372// googleapi.IsNotModified to check whether the returned error was
6373// because http.StatusNotModified was returned.
6374func (c *OperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
6375	gensupport.SetOptions(c.urlParams_, opts...)
6376	res, err := c.doRequest("json")
6377	if res != nil && res.StatusCode == http.StatusNotModified {
6378		if res.Body != nil {
6379			res.Body.Close()
6380		}
6381		return nil, &googleapi.Error{
6382			Code:   res.StatusCode,
6383			Header: res.Header,
6384		}
6385	}
6386	if err != nil {
6387		return nil, err
6388	}
6389	defer googleapi.CloseBody(res)
6390	if err := googleapi.CheckResponse(res); err != nil {
6391		return nil, err
6392	}
6393	ret := &ListOperationsResponse{
6394		ServerResponse: googleapi.ServerResponse{
6395			Header:         res.Header,
6396			HTTPStatusCode: res.StatusCode,
6397		},
6398	}
6399	target := &ret
6400	if err := gensupport.DecodeResponse(target, res); err != nil {
6401		return nil, err
6402	}
6403	return ret, nil
6404	// {
6405	//   "description": "Lists service operations that match the specified filter in the request.",
6406	//   "flatPath": "v1/operations",
6407	//   "httpMethod": "GET",
6408	//   "id": "servicemanagement.operations.list",
6409	//   "parameterOrder": [],
6410	//   "parameters": {
6411	//     "filter": {
6412	//       "description": "A string for filtering Operations.\n  The following filter fields are supported\u0026#58;\n\n  * serviceName\u0026#58; Required. Only `=` operator is allowed.\n  * startTime\u0026#58; The time this job was started, in ISO 8601 format.\n    Allowed operators are `\u003e=`,  `\u003e`, `\u003c=`, and `\u003c`.\n  * status\u0026#58; Can be `done`, `in_progress`, or `failed`. Allowed\n    operators are `=`, and `!=`.\n\n  Filter expression supports conjunction (AND) and disjunction (OR)\n  logical operators. However, the serviceName restriction must be at the\n  top-level and can only be combined with other restrictions via the AND\n  logical operator.\n\n  Examples\u0026#58;\n\n  * `serviceName={some-service}.googleapis.com`\n  * `serviceName={some-service}.googleapis.com AND startTime\u003e=\"2017-02-01\"`\n  * `serviceName={some-service}.googleapis.com AND status=done`\n  * `serviceName={some-service}.googleapis.com AND (status=done OR startTime\u003e=\"2017-02-01\")`",
6413	//       "location": "query",
6414	//       "type": "string"
6415	//     },
6416	//     "name": {
6417	//       "description": "Not used.",
6418	//       "location": "query",
6419	//       "type": "string"
6420	//     },
6421	//     "pageSize": {
6422	//       "description": "The maximum number of operations to return. If unspecified, defaults to\n50. The maximum value is 100.",
6423	//       "format": "int32",
6424	//       "location": "query",
6425	//       "type": "integer"
6426	//     },
6427	//     "pageToken": {
6428	//       "description": "The standard list page token.",
6429	//       "location": "query",
6430	//       "type": "string"
6431	//     }
6432	//   },
6433	//   "path": "v1/operations",
6434	//   "response": {
6435	//     "$ref": "ListOperationsResponse"
6436	//   },
6437	//   "scopes": [
6438	//     "https://www.googleapis.com/auth/cloud-platform",
6439	//     "https://www.googleapis.com/auth/service.management"
6440	//   ]
6441	// }
6442
6443}
6444
6445// Pages invokes f for each page of results.
6446// A non-nil error returned from f will halt the iteration.
6447// The provided context supersedes any context provided to the Context method.
6448func (c *OperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
6449	c.ctx_ = ctx
6450	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
6451	for {
6452		x, err := c.Do()
6453		if err != nil {
6454			return err
6455		}
6456		if err := f(x); err != nil {
6457			return err
6458		}
6459		if x.NextPageToken == "" {
6460			return nil
6461		}
6462		c.PageToken(x.NextPageToken)
6463	}
6464}
6465
6466// method id "servicemanagement.services.create":
6467
6468type ServicesCreateCall struct {
6469	s              *APIService
6470	managedservice *ManagedService
6471	urlParams_     gensupport.URLParams
6472	ctx_           context.Context
6473	header_        http.Header
6474}
6475
6476// Create: Creates a new managed service.
6477// Please note one producer project can own no more than 20
6478// services.
6479//
6480// Operation<response: ManagedService>
6481func (r *ServicesService) Create(managedservice *ManagedService) *ServicesCreateCall {
6482	c := &ServicesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6483	c.managedservice = managedservice
6484	return c
6485}
6486
6487// Fields allows partial responses to be retrieved. See
6488// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6489// for more information.
6490func (c *ServicesCreateCall) Fields(s ...googleapi.Field) *ServicesCreateCall {
6491	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6492	return c
6493}
6494
6495// Context sets the context to be used in this call's Do method. Any
6496// pending HTTP request will be aborted if the provided context is
6497// canceled.
6498func (c *ServicesCreateCall) Context(ctx context.Context) *ServicesCreateCall {
6499	c.ctx_ = ctx
6500	return c
6501}
6502
6503// Header returns an http.Header that can be modified by the caller to
6504// add HTTP headers to the request.
6505func (c *ServicesCreateCall) Header() http.Header {
6506	if c.header_ == nil {
6507		c.header_ = make(http.Header)
6508	}
6509	return c.header_
6510}
6511
6512func (c *ServicesCreateCall) doRequest(alt string) (*http.Response, error) {
6513	reqHeaders := make(http.Header)
6514	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
6515	for k, v := range c.header_ {
6516		reqHeaders[k] = v
6517	}
6518	reqHeaders.Set("User-Agent", c.s.userAgent())
6519	var body io.Reader = nil
6520	body, err := googleapi.WithoutDataWrapper.JSONReader(c.managedservice)
6521	if err != nil {
6522		return nil, err
6523	}
6524	reqHeaders.Set("Content-Type", "application/json")
6525	c.urlParams_.Set("alt", alt)
6526	c.urlParams_.Set("prettyPrint", "false")
6527	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services")
6528	urls += "?" + c.urlParams_.Encode()
6529	req, err := http.NewRequest("POST", urls, body)
6530	if err != nil {
6531		return nil, err
6532	}
6533	req.Header = reqHeaders
6534	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6535}
6536
6537// Do executes the "servicemanagement.services.create" call.
6538// Exactly one of *Operation or error will be non-nil. Any non-2xx
6539// status code is an error. Response headers are in either
6540// *Operation.ServerResponse.Header or (if a response was returned at
6541// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6542// to check whether the returned error was because
6543// http.StatusNotModified was returned.
6544func (c *ServicesCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6545	gensupport.SetOptions(c.urlParams_, opts...)
6546	res, err := c.doRequest("json")
6547	if res != nil && res.StatusCode == http.StatusNotModified {
6548		if res.Body != nil {
6549			res.Body.Close()
6550		}
6551		return nil, &googleapi.Error{
6552			Code:   res.StatusCode,
6553			Header: res.Header,
6554		}
6555	}
6556	if err != nil {
6557		return nil, err
6558	}
6559	defer googleapi.CloseBody(res)
6560	if err := googleapi.CheckResponse(res); err != nil {
6561		return nil, err
6562	}
6563	ret := &Operation{
6564		ServerResponse: googleapi.ServerResponse{
6565			Header:         res.Header,
6566			HTTPStatusCode: res.StatusCode,
6567		},
6568	}
6569	target := &ret
6570	if err := gensupport.DecodeResponse(target, res); err != nil {
6571		return nil, err
6572	}
6573	return ret, nil
6574	// {
6575	//   "description": "Creates a new managed service.\nPlease note one producer project can own no more than 20 services.\n\nOperation\u003cresponse: ManagedService\u003e",
6576	//   "flatPath": "v1/services",
6577	//   "httpMethod": "POST",
6578	//   "id": "servicemanagement.services.create",
6579	//   "parameterOrder": [],
6580	//   "parameters": {},
6581	//   "path": "v1/services",
6582	//   "request": {
6583	//     "$ref": "ManagedService"
6584	//   },
6585	//   "response": {
6586	//     "$ref": "Operation"
6587	//   },
6588	//   "scopes": [
6589	//     "https://www.googleapis.com/auth/cloud-platform",
6590	//     "https://www.googleapis.com/auth/service.management"
6591	//   ]
6592	// }
6593
6594}
6595
6596// method id "servicemanagement.services.delete":
6597
6598type ServicesDeleteCall struct {
6599	s           *APIService
6600	serviceName string
6601	urlParams_  gensupport.URLParams
6602	ctx_        context.Context
6603	header_     http.Header
6604}
6605
6606// Delete: Deletes a managed service. This method will change the
6607// service to the
6608// `Soft-Delete` state for 30 days. Within this period, service
6609// producers may
6610// call UndeleteService to restore the service.
6611// After 30 days, the service will be permanently
6612// deleted.
6613//
6614// Operation<response: google.protobuf.Empty>
6615func (r *ServicesService) Delete(serviceName string) *ServicesDeleteCall {
6616	c := &ServicesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6617	c.serviceName = serviceName
6618	return c
6619}
6620
6621// Fields allows partial responses to be retrieved. See
6622// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6623// for more information.
6624func (c *ServicesDeleteCall) Fields(s ...googleapi.Field) *ServicesDeleteCall {
6625	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6626	return c
6627}
6628
6629// Context sets the context to be used in this call's Do method. Any
6630// pending HTTP request will be aborted if the provided context is
6631// canceled.
6632func (c *ServicesDeleteCall) Context(ctx context.Context) *ServicesDeleteCall {
6633	c.ctx_ = ctx
6634	return c
6635}
6636
6637// Header returns an http.Header that can be modified by the caller to
6638// add HTTP headers to the request.
6639func (c *ServicesDeleteCall) Header() http.Header {
6640	if c.header_ == nil {
6641		c.header_ = make(http.Header)
6642	}
6643	return c.header_
6644}
6645
6646func (c *ServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
6647	reqHeaders := make(http.Header)
6648	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
6649	for k, v := range c.header_ {
6650		reqHeaders[k] = v
6651	}
6652	reqHeaders.Set("User-Agent", c.s.userAgent())
6653	var body io.Reader = nil
6654	c.urlParams_.Set("alt", alt)
6655	c.urlParams_.Set("prettyPrint", "false")
6656	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}")
6657	urls += "?" + c.urlParams_.Encode()
6658	req, err := http.NewRequest("DELETE", urls, body)
6659	if err != nil {
6660		return nil, err
6661	}
6662	req.Header = reqHeaders
6663	googleapi.Expand(req.URL, map[string]string{
6664		"serviceName": c.serviceName,
6665	})
6666	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6667}
6668
6669// Do executes the "servicemanagement.services.delete" call.
6670// Exactly one of *Operation or error will be non-nil. Any non-2xx
6671// status code is an error. Response headers are in either
6672// *Operation.ServerResponse.Header or (if a response was returned at
6673// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6674// to check whether the returned error was because
6675// http.StatusNotModified was returned.
6676func (c *ServicesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6677	gensupport.SetOptions(c.urlParams_, opts...)
6678	res, err := c.doRequest("json")
6679	if res != nil && res.StatusCode == http.StatusNotModified {
6680		if res.Body != nil {
6681			res.Body.Close()
6682		}
6683		return nil, &googleapi.Error{
6684			Code:   res.StatusCode,
6685			Header: res.Header,
6686		}
6687	}
6688	if err != nil {
6689		return nil, err
6690	}
6691	defer googleapi.CloseBody(res)
6692	if err := googleapi.CheckResponse(res); err != nil {
6693		return nil, err
6694	}
6695	ret := &Operation{
6696		ServerResponse: googleapi.ServerResponse{
6697			Header:         res.Header,
6698			HTTPStatusCode: res.StatusCode,
6699		},
6700	}
6701	target := &ret
6702	if err := gensupport.DecodeResponse(target, res); err != nil {
6703		return nil, err
6704	}
6705	return ret, nil
6706	// {
6707	//   "description": "Deletes a managed service. This method will change the service to the\n`Soft-Delete` state for 30 days. Within this period, service producers may\ncall UndeleteService to restore the service.\nAfter 30 days, the service will be permanently deleted.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e",
6708	//   "flatPath": "v1/services/{serviceName}",
6709	//   "httpMethod": "DELETE",
6710	//   "id": "servicemanagement.services.delete",
6711	//   "parameterOrder": [
6712	//     "serviceName"
6713	//   ],
6714	//   "parameters": {
6715	//     "serviceName": {
6716	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
6717	//       "location": "path",
6718	//       "required": true,
6719	//       "type": "string"
6720	//     }
6721	//   },
6722	//   "path": "v1/services/{serviceName}",
6723	//   "response": {
6724	//     "$ref": "Operation"
6725	//   },
6726	//   "scopes": [
6727	//     "https://www.googleapis.com/auth/cloud-platform",
6728	//     "https://www.googleapis.com/auth/service.management"
6729	//   ]
6730	// }
6731
6732}
6733
6734// method id "servicemanagement.services.disable":
6735
6736type ServicesDisableCall struct {
6737	s                     *APIService
6738	serviceName           string
6739	disableservicerequest *DisableServiceRequest
6740	urlParams_            gensupport.URLParams
6741	ctx_                  context.Context
6742	header_               http.Header
6743}
6744
6745// Disable: Disables a service for a project, so it can no longer be
6746// be used for the project. It prevents accidental usage that may
6747// cause
6748// unexpected billing charges or security leaks.
6749//
6750// Operation<response: DisableServiceResponse>
6751func (r *ServicesService) Disable(serviceName string, disableservicerequest *DisableServiceRequest) *ServicesDisableCall {
6752	c := &ServicesDisableCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6753	c.serviceName = serviceName
6754	c.disableservicerequest = disableservicerequest
6755	return c
6756}
6757
6758// Fields allows partial responses to be retrieved. See
6759// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6760// for more information.
6761func (c *ServicesDisableCall) Fields(s ...googleapi.Field) *ServicesDisableCall {
6762	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6763	return c
6764}
6765
6766// Context sets the context to be used in this call's Do method. Any
6767// pending HTTP request will be aborted if the provided context is
6768// canceled.
6769func (c *ServicesDisableCall) Context(ctx context.Context) *ServicesDisableCall {
6770	c.ctx_ = ctx
6771	return c
6772}
6773
6774// Header returns an http.Header that can be modified by the caller to
6775// add HTTP headers to the request.
6776func (c *ServicesDisableCall) Header() http.Header {
6777	if c.header_ == nil {
6778		c.header_ = make(http.Header)
6779	}
6780	return c.header_
6781}
6782
6783func (c *ServicesDisableCall) doRequest(alt string) (*http.Response, error) {
6784	reqHeaders := make(http.Header)
6785	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
6786	for k, v := range c.header_ {
6787		reqHeaders[k] = v
6788	}
6789	reqHeaders.Set("User-Agent", c.s.userAgent())
6790	var body io.Reader = nil
6791	body, err := googleapi.WithoutDataWrapper.JSONReader(c.disableservicerequest)
6792	if err != nil {
6793		return nil, err
6794	}
6795	reqHeaders.Set("Content-Type", "application/json")
6796	c.urlParams_.Set("alt", alt)
6797	c.urlParams_.Set("prettyPrint", "false")
6798	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}:disable")
6799	urls += "?" + c.urlParams_.Encode()
6800	req, err := http.NewRequest("POST", urls, body)
6801	if err != nil {
6802		return nil, err
6803	}
6804	req.Header = reqHeaders
6805	googleapi.Expand(req.URL, map[string]string{
6806		"serviceName": c.serviceName,
6807	})
6808	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6809}
6810
6811// Do executes the "servicemanagement.services.disable" call.
6812// Exactly one of *Operation or error will be non-nil. Any non-2xx
6813// status code is an error. Response headers are in either
6814// *Operation.ServerResponse.Header or (if a response was returned at
6815// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6816// to check whether the returned error was because
6817// http.StatusNotModified was returned.
6818func (c *ServicesDisableCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6819	gensupport.SetOptions(c.urlParams_, opts...)
6820	res, err := c.doRequest("json")
6821	if res != nil && res.StatusCode == http.StatusNotModified {
6822		if res.Body != nil {
6823			res.Body.Close()
6824		}
6825		return nil, &googleapi.Error{
6826			Code:   res.StatusCode,
6827			Header: res.Header,
6828		}
6829	}
6830	if err != nil {
6831		return nil, err
6832	}
6833	defer googleapi.CloseBody(res)
6834	if err := googleapi.CheckResponse(res); err != nil {
6835		return nil, err
6836	}
6837	ret := &Operation{
6838		ServerResponse: googleapi.ServerResponse{
6839			Header:         res.Header,
6840			HTTPStatusCode: res.StatusCode,
6841		},
6842	}
6843	target := &ret
6844	if err := gensupport.DecodeResponse(target, res); err != nil {
6845		return nil, err
6846	}
6847	return ret, nil
6848	// {
6849	//   "description": "Disables a service for a project, so it can no longer be\nbe used for the project. It prevents accidental usage that may cause\nunexpected billing charges or security leaks.\n\nOperation\u003cresponse: DisableServiceResponse\u003e",
6850	//   "flatPath": "v1/services/{serviceName}:disable",
6851	//   "httpMethod": "POST",
6852	//   "id": "servicemanagement.services.disable",
6853	//   "parameterOrder": [
6854	//     "serviceName"
6855	//   ],
6856	//   "parameters": {
6857	//     "serviceName": {
6858	//       "description": "Required. Name of the service to disable. Specifying an unknown service name\nwill cause the request to fail.",
6859	//       "location": "path",
6860	//       "required": true,
6861	//       "type": "string"
6862	//     }
6863	//   },
6864	//   "path": "v1/services/{serviceName}:disable",
6865	//   "request": {
6866	//     "$ref": "DisableServiceRequest"
6867	//   },
6868	//   "response": {
6869	//     "$ref": "Operation"
6870	//   },
6871	//   "scopes": [
6872	//     "https://www.googleapis.com/auth/cloud-platform",
6873	//     "https://www.googleapis.com/auth/service.management"
6874	//   ]
6875	// }
6876
6877}
6878
6879// method id "servicemanagement.services.enable":
6880
6881type ServicesEnableCall struct {
6882	s                    *APIService
6883	serviceName          string
6884	enableservicerequest *EnableServiceRequest
6885	urlParams_           gensupport.URLParams
6886	ctx_                 context.Context
6887	header_              http.Header
6888}
6889
6890// Enable: Enables a service for a project, so it can be used
6891// for the project. See
6892// [Cloud Auth Guide](https://cloud.google.com/docs/authentication)
6893// for
6894// more information.
6895//
6896// Operation<response: EnableServiceResponse>
6897func (r *ServicesService) Enable(serviceName string, enableservicerequest *EnableServiceRequest) *ServicesEnableCall {
6898	c := &ServicesEnableCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6899	c.serviceName = serviceName
6900	c.enableservicerequest = enableservicerequest
6901	return c
6902}
6903
6904// Fields allows partial responses to be retrieved. See
6905// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6906// for more information.
6907func (c *ServicesEnableCall) Fields(s ...googleapi.Field) *ServicesEnableCall {
6908	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6909	return c
6910}
6911
6912// Context sets the context to be used in this call's Do method. Any
6913// pending HTTP request will be aborted if the provided context is
6914// canceled.
6915func (c *ServicesEnableCall) Context(ctx context.Context) *ServicesEnableCall {
6916	c.ctx_ = ctx
6917	return c
6918}
6919
6920// Header returns an http.Header that can be modified by the caller to
6921// add HTTP headers to the request.
6922func (c *ServicesEnableCall) Header() http.Header {
6923	if c.header_ == nil {
6924		c.header_ = make(http.Header)
6925	}
6926	return c.header_
6927}
6928
6929func (c *ServicesEnableCall) doRequest(alt string) (*http.Response, error) {
6930	reqHeaders := make(http.Header)
6931	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
6932	for k, v := range c.header_ {
6933		reqHeaders[k] = v
6934	}
6935	reqHeaders.Set("User-Agent", c.s.userAgent())
6936	var body io.Reader = nil
6937	body, err := googleapi.WithoutDataWrapper.JSONReader(c.enableservicerequest)
6938	if err != nil {
6939		return nil, err
6940	}
6941	reqHeaders.Set("Content-Type", "application/json")
6942	c.urlParams_.Set("alt", alt)
6943	c.urlParams_.Set("prettyPrint", "false")
6944	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}:enable")
6945	urls += "?" + c.urlParams_.Encode()
6946	req, err := http.NewRequest("POST", urls, body)
6947	if err != nil {
6948		return nil, err
6949	}
6950	req.Header = reqHeaders
6951	googleapi.Expand(req.URL, map[string]string{
6952		"serviceName": c.serviceName,
6953	})
6954	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6955}
6956
6957// Do executes the "servicemanagement.services.enable" call.
6958// Exactly one of *Operation or error will be non-nil. Any non-2xx
6959// status code is an error. Response headers are in either
6960// *Operation.ServerResponse.Header or (if a response was returned at
6961// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6962// to check whether the returned error was because
6963// http.StatusNotModified was returned.
6964func (c *ServicesEnableCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6965	gensupport.SetOptions(c.urlParams_, opts...)
6966	res, err := c.doRequest("json")
6967	if res != nil && res.StatusCode == http.StatusNotModified {
6968		if res.Body != nil {
6969			res.Body.Close()
6970		}
6971		return nil, &googleapi.Error{
6972			Code:   res.StatusCode,
6973			Header: res.Header,
6974		}
6975	}
6976	if err != nil {
6977		return nil, err
6978	}
6979	defer googleapi.CloseBody(res)
6980	if err := googleapi.CheckResponse(res); err != nil {
6981		return nil, err
6982	}
6983	ret := &Operation{
6984		ServerResponse: googleapi.ServerResponse{
6985			Header:         res.Header,
6986			HTTPStatusCode: res.StatusCode,
6987		},
6988	}
6989	target := &ret
6990	if err := gensupport.DecodeResponse(target, res); err != nil {
6991		return nil, err
6992	}
6993	return ret, nil
6994	// {
6995	//   "description": "Enables a service for a project, so it can be used\nfor the project. See\n[Cloud Auth Guide](https://cloud.google.com/docs/authentication) for\nmore information.\n\nOperation\u003cresponse: EnableServiceResponse\u003e",
6996	//   "flatPath": "v1/services/{serviceName}:enable",
6997	//   "httpMethod": "POST",
6998	//   "id": "servicemanagement.services.enable",
6999	//   "parameterOrder": [
7000	//     "serviceName"
7001	//   ],
7002	//   "parameters": {
7003	//     "serviceName": {
7004	//       "description": "Required. Name of the service to enable. Specifying an unknown service name will\ncause the request to fail.",
7005	//       "location": "path",
7006	//       "required": true,
7007	//       "type": "string"
7008	//     }
7009	//   },
7010	//   "path": "v1/services/{serviceName}:enable",
7011	//   "request": {
7012	//     "$ref": "EnableServiceRequest"
7013	//   },
7014	//   "response": {
7015	//     "$ref": "Operation"
7016	//   },
7017	//   "scopes": [
7018	//     "https://www.googleapis.com/auth/cloud-platform",
7019	//     "https://www.googleapis.com/auth/service.management"
7020	//   ]
7021	// }
7022
7023}
7024
7025// method id "servicemanagement.services.generateConfigReport":
7026
7027type ServicesGenerateConfigReportCall struct {
7028	s                           *APIService
7029	generateconfigreportrequest *GenerateConfigReportRequest
7030	urlParams_                  gensupport.URLParams
7031	ctx_                        context.Context
7032	header_                     http.Header
7033}
7034
7035// GenerateConfigReport: Generates and returns a report (errors,
7036// warnings and changes from
7037// existing configurations) associated
7038// with
7039// GenerateConfigReportRequest.new_value
7040//
7041// If GenerateConfigReportRequest.old_value is
7042// specified,
7043// GenerateConfigReportRequest will contain a single ChangeReport based
7044// on the
7045// comparison between GenerateConfigReportRequest.new_value
7046// and
7047// GenerateConfigReportRequest.old_value.
7048// If GenerateConfigReportRequest.old_value is not specified, this
7049// method
7050// will compare GenerateConfigReportRequest.new_value with the last
7051// pushed
7052// service configuration.
7053func (r *ServicesService) GenerateConfigReport(generateconfigreportrequest *GenerateConfigReportRequest) *ServicesGenerateConfigReportCall {
7054	c := &ServicesGenerateConfigReportCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7055	c.generateconfigreportrequest = generateconfigreportrequest
7056	return c
7057}
7058
7059// Fields allows partial responses to be retrieved. See
7060// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7061// for more information.
7062func (c *ServicesGenerateConfigReportCall) Fields(s ...googleapi.Field) *ServicesGenerateConfigReportCall {
7063	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7064	return c
7065}
7066
7067// Context sets the context to be used in this call's Do method. Any
7068// pending HTTP request will be aborted if the provided context is
7069// canceled.
7070func (c *ServicesGenerateConfigReportCall) Context(ctx context.Context) *ServicesGenerateConfigReportCall {
7071	c.ctx_ = ctx
7072	return c
7073}
7074
7075// Header returns an http.Header that can be modified by the caller to
7076// add HTTP headers to the request.
7077func (c *ServicesGenerateConfigReportCall) Header() http.Header {
7078	if c.header_ == nil {
7079		c.header_ = make(http.Header)
7080	}
7081	return c.header_
7082}
7083
7084func (c *ServicesGenerateConfigReportCall) doRequest(alt string) (*http.Response, error) {
7085	reqHeaders := make(http.Header)
7086	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
7087	for k, v := range c.header_ {
7088		reqHeaders[k] = v
7089	}
7090	reqHeaders.Set("User-Agent", c.s.userAgent())
7091	var body io.Reader = nil
7092	body, err := googleapi.WithoutDataWrapper.JSONReader(c.generateconfigreportrequest)
7093	if err != nil {
7094		return nil, err
7095	}
7096	reqHeaders.Set("Content-Type", "application/json")
7097	c.urlParams_.Set("alt", alt)
7098	c.urlParams_.Set("prettyPrint", "false")
7099	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services:generateConfigReport")
7100	urls += "?" + c.urlParams_.Encode()
7101	req, err := http.NewRequest("POST", urls, body)
7102	if err != nil {
7103		return nil, err
7104	}
7105	req.Header = reqHeaders
7106	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7107}
7108
7109// Do executes the "servicemanagement.services.generateConfigReport" call.
7110// Exactly one of *GenerateConfigReportResponse or error will be
7111// non-nil. Any non-2xx status code is an error. Response headers are in
7112// either *GenerateConfigReportResponse.ServerResponse.Header or (if a
7113// response was returned at all) in error.(*googleapi.Error).Header. Use
7114// googleapi.IsNotModified to check whether the returned error was
7115// because http.StatusNotModified was returned.
7116func (c *ServicesGenerateConfigReportCall) Do(opts ...googleapi.CallOption) (*GenerateConfigReportResponse, error) {
7117	gensupport.SetOptions(c.urlParams_, opts...)
7118	res, err := c.doRequest("json")
7119	if res != nil && res.StatusCode == http.StatusNotModified {
7120		if res.Body != nil {
7121			res.Body.Close()
7122		}
7123		return nil, &googleapi.Error{
7124			Code:   res.StatusCode,
7125			Header: res.Header,
7126		}
7127	}
7128	if err != nil {
7129		return nil, err
7130	}
7131	defer googleapi.CloseBody(res)
7132	if err := googleapi.CheckResponse(res); err != nil {
7133		return nil, err
7134	}
7135	ret := &GenerateConfigReportResponse{
7136		ServerResponse: googleapi.ServerResponse{
7137			Header:         res.Header,
7138			HTTPStatusCode: res.StatusCode,
7139		},
7140	}
7141	target := &ret
7142	if err := gensupport.DecodeResponse(target, res); err != nil {
7143		return nil, err
7144	}
7145	return ret, nil
7146	// {
7147	//   "description": "Generates and returns a report (errors, warnings and changes from\nexisting configurations) associated with\nGenerateConfigReportRequest.new_value\n\nIf GenerateConfigReportRequest.old_value is specified,\nGenerateConfigReportRequest will contain a single ChangeReport based on the\ncomparison between GenerateConfigReportRequest.new_value and\nGenerateConfigReportRequest.old_value.\nIf GenerateConfigReportRequest.old_value is not specified, this method\nwill compare GenerateConfigReportRequest.new_value with the last pushed\nservice configuration.",
7148	//   "flatPath": "v1/services:generateConfigReport",
7149	//   "httpMethod": "POST",
7150	//   "id": "servicemanagement.services.generateConfigReport",
7151	//   "parameterOrder": [],
7152	//   "parameters": {},
7153	//   "path": "v1/services:generateConfigReport",
7154	//   "request": {
7155	//     "$ref": "GenerateConfigReportRequest"
7156	//   },
7157	//   "response": {
7158	//     "$ref": "GenerateConfigReportResponse"
7159	//   },
7160	//   "scopes": [
7161	//     "https://www.googleapis.com/auth/cloud-platform",
7162	//     "https://www.googleapis.com/auth/service.management"
7163	//   ]
7164	// }
7165
7166}
7167
7168// method id "servicemanagement.services.get":
7169
7170type ServicesGetCall struct {
7171	s            *APIService
7172	serviceName  string
7173	urlParams_   gensupport.URLParams
7174	ifNoneMatch_ string
7175	ctx_         context.Context
7176	header_      http.Header
7177}
7178
7179// Get: Gets a managed service. Authentication is required unless the
7180// service is
7181// public.
7182func (r *ServicesService) Get(serviceName string) *ServicesGetCall {
7183	c := &ServicesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7184	c.serviceName = serviceName
7185	return c
7186}
7187
7188// Fields allows partial responses to be retrieved. See
7189// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7190// for more information.
7191func (c *ServicesGetCall) Fields(s ...googleapi.Field) *ServicesGetCall {
7192	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7193	return c
7194}
7195
7196// IfNoneMatch sets the optional parameter which makes the operation
7197// fail if the object's ETag matches the given value. This is useful for
7198// getting updates only after the object has changed since the last
7199// request. Use googleapi.IsNotModified to check whether the response
7200// error from Do is the result of In-None-Match.
7201func (c *ServicesGetCall) IfNoneMatch(entityTag string) *ServicesGetCall {
7202	c.ifNoneMatch_ = entityTag
7203	return c
7204}
7205
7206// Context sets the context to be used in this call's Do method. Any
7207// pending HTTP request will be aborted if the provided context is
7208// canceled.
7209func (c *ServicesGetCall) Context(ctx context.Context) *ServicesGetCall {
7210	c.ctx_ = ctx
7211	return c
7212}
7213
7214// Header returns an http.Header that can be modified by the caller to
7215// add HTTP headers to the request.
7216func (c *ServicesGetCall) Header() http.Header {
7217	if c.header_ == nil {
7218		c.header_ = make(http.Header)
7219	}
7220	return c.header_
7221}
7222
7223func (c *ServicesGetCall) doRequest(alt string) (*http.Response, error) {
7224	reqHeaders := make(http.Header)
7225	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
7226	for k, v := range c.header_ {
7227		reqHeaders[k] = v
7228	}
7229	reqHeaders.Set("User-Agent", c.s.userAgent())
7230	if c.ifNoneMatch_ != "" {
7231		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
7232	}
7233	var body io.Reader = nil
7234	c.urlParams_.Set("alt", alt)
7235	c.urlParams_.Set("prettyPrint", "false")
7236	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}")
7237	urls += "?" + c.urlParams_.Encode()
7238	req, err := http.NewRequest("GET", urls, body)
7239	if err != nil {
7240		return nil, err
7241	}
7242	req.Header = reqHeaders
7243	googleapi.Expand(req.URL, map[string]string{
7244		"serviceName": c.serviceName,
7245	})
7246	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7247}
7248
7249// Do executes the "servicemanagement.services.get" call.
7250// Exactly one of *ManagedService or error will be non-nil. Any non-2xx
7251// status code is an error. Response headers are in either
7252// *ManagedService.ServerResponse.Header or (if a response was returned
7253// at all) in error.(*googleapi.Error).Header. Use
7254// googleapi.IsNotModified to check whether the returned error was
7255// because http.StatusNotModified was returned.
7256func (c *ServicesGetCall) Do(opts ...googleapi.CallOption) (*ManagedService, error) {
7257	gensupport.SetOptions(c.urlParams_, opts...)
7258	res, err := c.doRequest("json")
7259	if res != nil && res.StatusCode == http.StatusNotModified {
7260		if res.Body != nil {
7261			res.Body.Close()
7262		}
7263		return nil, &googleapi.Error{
7264			Code:   res.StatusCode,
7265			Header: res.Header,
7266		}
7267	}
7268	if err != nil {
7269		return nil, err
7270	}
7271	defer googleapi.CloseBody(res)
7272	if err := googleapi.CheckResponse(res); err != nil {
7273		return nil, err
7274	}
7275	ret := &ManagedService{
7276		ServerResponse: googleapi.ServerResponse{
7277			Header:         res.Header,
7278			HTTPStatusCode: res.StatusCode,
7279		},
7280	}
7281	target := &ret
7282	if err := gensupport.DecodeResponse(target, res); err != nil {
7283		return nil, err
7284	}
7285	return ret, nil
7286	// {
7287	//   "description": "Gets a managed service. Authentication is required unless the service is\npublic.",
7288	//   "flatPath": "v1/services/{serviceName}",
7289	//   "httpMethod": "GET",
7290	//   "id": "servicemanagement.services.get",
7291	//   "parameterOrder": [
7292	//     "serviceName"
7293	//   ],
7294	//   "parameters": {
7295	//     "serviceName": {
7296	//       "description": "Required. The name of the service.  See the `ServiceManager` overview for naming\nrequirements.  For example: `example.googleapis.com`.",
7297	//       "location": "path",
7298	//       "required": true,
7299	//       "type": "string"
7300	//     }
7301	//   },
7302	//   "path": "v1/services/{serviceName}",
7303	//   "response": {
7304	//     "$ref": "ManagedService"
7305	//   },
7306	//   "scopes": [
7307	//     "https://www.googleapis.com/auth/cloud-platform",
7308	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
7309	//     "https://www.googleapis.com/auth/service.management",
7310	//     "https://www.googleapis.com/auth/service.management.readonly"
7311	//   ]
7312	// }
7313
7314}
7315
7316// method id "servicemanagement.services.getConfig":
7317
7318type ServicesGetConfigCall struct {
7319	s            *APIService
7320	serviceName  string
7321	urlParams_   gensupport.URLParams
7322	ifNoneMatch_ string
7323	ctx_         context.Context
7324	header_      http.Header
7325}
7326
7327// GetConfig: Gets a service configuration (version) for a managed
7328// service.
7329func (r *ServicesService) GetConfig(serviceName string) *ServicesGetConfigCall {
7330	c := &ServicesGetConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7331	c.serviceName = serviceName
7332	return c
7333}
7334
7335// ConfigId sets the optional parameter "configId": Required. The id of
7336// the service configuration resource.
7337//
7338// This field must be specified for the server to return all fields,
7339// including
7340// `SourceInfo`.
7341func (c *ServicesGetConfigCall) ConfigId(configId string) *ServicesGetConfigCall {
7342	c.urlParams_.Set("configId", configId)
7343	return c
7344}
7345
7346// View sets the optional parameter "view": Specifies which parts of the
7347// Service Config should be returned in the
7348// response.
7349//
7350// Possible values:
7351//   "BASIC"
7352//   "FULL"
7353func (c *ServicesGetConfigCall) View(view string) *ServicesGetConfigCall {
7354	c.urlParams_.Set("view", view)
7355	return c
7356}
7357
7358// Fields allows partial responses to be retrieved. See
7359// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7360// for more information.
7361func (c *ServicesGetConfigCall) Fields(s ...googleapi.Field) *ServicesGetConfigCall {
7362	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7363	return c
7364}
7365
7366// IfNoneMatch sets the optional parameter which makes the operation
7367// fail if the object's ETag matches the given value. This is useful for
7368// getting updates only after the object has changed since the last
7369// request. Use googleapi.IsNotModified to check whether the response
7370// error from Do is the result of In-None-Match.
7371func (c *ServicesGetConfigCall) IfNoneMatch(entityTag string) *ServicesGetConfigCall {
7372	c.ifNoneMatch_ = entityTag
7373	return c
7374}
7375
7376// Context sets the context to be used in this call's Do method. Any
7377// pending HTTP request will be aborted if the provided context is
7378// canceled.
7379func (c *ServicesGetConfigCall) Context(ctx context.Context) *ServicesGetConfigCall {
7380	c.ctx_ = ctx
7381	return c
7382}
7383
7384// Header returns an http.Header that can be modified by the caller to
7385// add HTTP headers to the request.
7386func (c *ServicesGetConfigCall) Header() http.Header {
7387	if c.header_ == nil {
7388		c.header_ = make(http.Header)
7389	}
7390	return c.header_
7391}
7392
7393func (c *ServicesGetConfigCall) doRequest(alt string) (*http.Response, error) {
7394	reqHeaders := make(http.Header)
7395	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
7396	for k, v := range c.header_ {
7397		reqHeaders[k] = v
7398	}
7399	reqHeaders.Set("User-Agent", c.s.userAgent())
7400	if c.ifNoneMatch_ != "" {
7401		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
7402	}
7403	var body io.Reader = nil
7404	c.urlParams_.Set("alt", alt)
7405	c.urlParams_.Set("prettyPrint", "false")
7406	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/config")
7407	urls += "?" + c.urlParams_.Encode()
7408	req, err := http.NewRequest("GET", urls, body)
7409	if err != nil {
7410		return nil, err
7411	}
7412	req.Header = reqHeaders
7413	googleapi.Expand(req.URL, map[string]string{
7414		"serviceName": c.serviceName,
7415	})
7416	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7417}
7418
7419// Do executes the "servicemanagement.services.getConfig" call.
7420// Exactly one of *Service or error will be non-nil. Any non-2xx status
7421// code is an error. Response headers are in either
7422// *Service.ServerResponse.Header or (if a response was returned at all)
7423// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
7424// check whether the returned error was because http.StatusNotModified
7425// was returned.
7426func (c *ServicesGetConfigCall) Do(opts ...googleapi.CallOption) (*Service, error) {
7427	gensupport.SetOptions(c.urlParams_, opts...)
7428	res, err := c.doRequest("json")
7429	if res != nil && res.StatusCode == http.StatusNotModified {
7430		if res.Body != nil {
7431			res.Body.Close()
7432		}
7433		return nil, &googleapi.Error{
7434			Code:   res.StatusCode,
7435			Header: res.Header,
7436		}
7437	}
7438	if err != nil {
7439		return nil, err
7440	}
7441	defer googleapi.CloseBody(res)
7442	if err := googleapi.CheckResponse(res); err != nil {
7443		return nil, err
7444	}
7445	ret := &Service{
7446		ServerResponse: googleapi.ServerResponse{
7447			Header:         res.Header,
7448			HTTPStatusCode: res.StatusCode,
7449		},
7450	}
7451	target := &ret
7452	if err := gensupport.DecodeResponse(target, res); err != nil {
7453		return nil, err
7454	}
7455	return ret, nil
7456	// {
7457	//   "description": "Gets a service configuration (version) for a managed service.",
7458	//   "flatPath": "v1/services/{serviceName}/config",
7459	//   "httpMethod": "GET",
7460	//   "id": "servicemanagement.services.getConfig",
7461	//   "parameterOrder": [
7462	//     "serviceName"
7463	//   ],
7464	//   "parameters": {
7465	//     "configId": {
7466	//       "description": "Required. The id of the service configuration resource.\n\nThis field must be specified for the server to return all fields, including\n`SourceInfo`.",
7467	//       "location": "query",
7468	//       "type": "string"
7469	//     },
7470	//     "serviceName": {
7471	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
7472	//       "location": "path",
7473	//       "required": true,
7474	//       "type": "string"
7475	//     },
7476	//     "view": {
7477	//       "description": "Specifies which parts of the Service Config should be returned in the\nresponse.",
7478	//       "enum": [
7479	//         "BASIC",
7480	//         "FULL"
7481	//       ],
7482	//       "location": "query",
7483	//       "type": "string"
7484	//     }
7485	//   },
7486	//   "path": "v1/services/{serviceName}/config",
7487	//   "response": {
7488	//     "$ref": "Service"
7489	//   },
7490	//   "scopes": [
7491	//     "https://www.googleapis.com/auth/cloud-platform",
7492	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
7493	//     "https://www.googleapis.com/auth/service.management",
7494	//     "https://www.googleapis.com/auth/service.management.readonly"
7495	//   ]
7496	// }
7497
7498}
7499
7500// method id "servicemanagement.services.getIamPolicy":
7501
7502type ServicesGetIamPolicyCall struct {
7503	s                   *APIService
7504	resource            string
7505	getiampolicyrequest *GetIamPolicyRequest
7506	urlParams_          gensupport.URLParams
7507	ctx_                context.Context
7508	header_             http.Header
7509}
7510
7511// GetIamPolicy: Gets the access control policy for a resource.
7512// Returns an empty policy if the resource exists and does not have a
7513// policy
7514// set.
7515func (r *ServicesService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ServicesGetIamPolicyCall {
7516	c := &ServicesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7517	c.resource = resource
7518	c.getiampolicyrequest = getiampolicyrequest
7519	return c
7520}
7521
7522// Fields allows partial responses to be retrieved. See
7523// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7524// for more information.
7525func (c *ServicesGetIamPolicyCall) Fields(s ...googleapi.Field) *ServicesGetIamPolicyCall {
7526	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7527	return c
7528}
7529
7530// Context sets the context to be used in this call's Do method. Any
7531// pending HTTP request will be aborted if the provided context is
7532// canceled.
7533func (c *ServicesGetIamPolicyCall) Context(ctx context.Context) *ServicesGetIamPolicyCall {
7534	c.ctx_ = ctx
7535	return c
7536}
7537
7538// Header returns an http.Header that can be modified by the caller to
7539// add HTTP headers to the request.
7540func (c *ServicesGetIamPolicyCall) Header() http.Header {
7541	if c.header_ == nil {
7542		c.header_ = make(http.Header)
7543	}
7544	return c.header_
7545}
7546
7547func (c *ServicesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
7548	reqHeaders := make(http.Header)
7549	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
7550	for k, v := range c.header_ {
7551		reqHeaders[k] = v
7552	}
7553	reqHeaders.Set("User-Agent", c.s.userAgent())
7554	var body io.Reader = nil
7555	body, err := googleapi.WithoutDataWrapper.JSONReader(c.getiampolicyrequest)
7556	if err != nil {
7557		return nil, err
7558	}
7559	reqHeaders.Set("Content-Type", "application/json")
7560	c.urlParams_.Set("alt", alt)
7561	c.urlParams_.Set("prettyPrint", "false")
7562	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:getIamPolicy")
7563	urls += "?" + c.urlParams_.Encode()
7564	req, err := http.NewRequest("POST", urls, body)
7565	if err != nil {
7566		return nil, err
7567	}
7568	req.Header = reqHeaders
7569	googleapi.Expand(req.URL, map[string]string{
7570		"resource": c.resource,
7571	})
7572	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7573}
7574
7575// Do executes the "servicemanagement.services.getIamPolicy" call.
7576// Exactly one of *Policy or error will be non-nil. Any non-2xx status
7577// code is an error. Response headers are in either
7578// *Policy.ServerResponse.Header or (if a response was returned at all)
7579// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
7580// check whether the returned error was because http.StatusNotModified
7581// was returned.
7582func (c *ServicesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
7583	gensupport.SetOptions(c.urlParams_, opts...)
7584	res, err := c.doRequest("json")
7585	if res != nil && res.StatusCode == http.StatusNotModified {
7586		if res.Body != nil {
7587			res.Body.Close()
7588		}
7589		return nil, &googleapi.Error{
7590			Code:   res.StatusCode,
7591			Header: res.Header,
7592		}
7593	}
7594	if err != nil {
7595		return nil, err
7596	}
7597	defer googleapi.CloseBody(res)
7598	if err := googleapi.CheckResponse(res); err != nil {
7599		return nil, err
7600	}
7601	ret := &Policy{
7602		ServerResponse: googleapi.ServerResponse{
7603			Header:         res.Header,
7604			HTTPStatusCode: res.StatusCode,
7605		},
7606	}
7607	target := &ret
7608	if err := gensupport.DecodeResponse(target, res); err != nil {
7609		return nil, err
7610	}
7611	return ret, nil
7612	// {
7613	//   "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
7614	//   "flatPath": "v1/services/{servicesId}:getIamPolicy",
7615	//   "httpMethod": "POST",
7616	//   "id": "servicemanagement.services.getIamPolicy",
7617	//   "parameterOrder": [
7618	//     "resource"
7619	//   ],
7620	//   "parameters": {
7621	//     "resource": {
7622	//       "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
7623	//       "location": "path",
7624	//       "pattern": "^services/[^/]+$",
7625	//       "required": true,
7626	//       "type": "string"
7627	//     }
7628	//   },
7629	//   "path": "v1/{+resource}:getIamPolicy",
7630	//   "request": {
7631	//     "$ref": "GetIamPolicyRequest"
7632	//   },
7633	//   "response": {
7634	//     "$ref": "Policy"
7635	//   },
7636	//   "scopes": [
7637	//     "https://www.googleapis.com/auth/cloud-platform",
7638	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
7639	//     "https://www.googleapis.com/auth/service.management",
7640	//     "https://www.googleapis.com/auth/service.management.readonly"
7641	//   ]
7642	// }
7643
7644}
7645
7646// method id "servicemanagement.services.list":
7647
7648type ServicesListCall struct {
7649	s            *APIService
7650	urlParams_   gensupport.URLParams
7651	ifNoneMatch_ string
7652	ctx_         context.Context
7653	header_      http.Header
7654}
7655
7656// List: Lists managed services.
7657//
7658// Returns all public services. For authenticated users, also returns
7659// all
7660// services the calling user has "servicemanagement.services.get"
7661// permission
7662// for.
7663//
7664// **BETA:** If the caller specifies the `consumer_id`, it returns only
7665// the
7666// services enabled on the consumer. The `consumer_id` must have the
7667// format
7668// of "project:{PROJECT-ID}".
7669func (r *ServicesService) List() *ServicesListCall {
7670	c := &ServicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7671	return c
7672}
7673
7674// ConsumerId sets the optional parameter "consumerId": Include services
7675// consumed by the specified consumer.
7676//
7677// The Google Service Management implementation accepts the
7678// following
7679// forms:
7680// - project:<project_id>
7681func (c *ServicesListCall) ConsumerId(consumerId string) *ServicesListCall {
7682	c.urlParams_.Set("consumerId", consumerId)
7683	return c
7684}
7685
7686// PageSize sets the optional parameter "pageSize": The max number of
7687// items to include in the response list. Page size is 50
7688// if not specified. Maximum value is 100.
7689func (c *ServicesListCall) PageSize(pageSize int64) *ServicesListCall {
7690	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
7691	return c
7692}
7693
7694// PageToken sets the optional parameter "pageToken": Token identifying
7695// which result to start with; returned by a previous list
7696// call.
7697func (c *ServicesListCall) PageToken(pageToken string) *ServicesListCall {
7698	c.urlParams_.Set("pageToken", pageToken)
7699	return c
7700}
7701
7702// ProducerProjectId sets the optional parameter "producerProjectId":
7703// Include services produced by the specified project.
7704func (c *ServicesListCall) ProducerProjectId(producerProjectId string) *ServicesListCall {
7705	c.urlParams_.Set("producerProjectId", producerProjectId)
7706	return c
7707}
7708
7709// Fields allows partial responses to be retrieved. See
7710// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7711// for more information.
7712func (c *ServicesListCall) Fields(s ...googleapi.Field) *ServicesListCall {
7713	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7714	return c
7715}
7716
7717// IfNoneMatch sets the optional parameter which makes the operation
7718// fail if the object's ETag matches the given value. This is useful for
7719// getting updates only after the object has changed since the last
7720// request. Use googleapi.IsNotModified to check whether the response
7721// error from Do is the result of In-None-Match.
7722func (c *ServicesListCall) IfNoneMatch(entityTag string) *ServicesListCall {
7723	c.ifNoneMatch_ = entityTag
7724	return c
7725}
7726
7727// Context sets the context to be used in this call's Do method. Any
7728// pending HTTP request will be aborted if the provided context is
7729// canceled.
7730func (c *ServicesListCall) Context(ctx context.Context) *ServicesListCall {
7731	c.ctx_ = ctx
7732	return c
7733}
7734
7735// Header returns an http.Header that can be modified by the caller to
7736// add HTTP headers to the request.
7737func (c *ServicesListCall) Header() http.Header {
7738	if c.header_ == nil {
7739		c.header_ = make(http.Header)
7740	}
7741	return c.header_
7742}
7743
7744func (c *ServicesListCall) doRequest(alt string) (*http.Response, error) {
7745	reqHeaders := make(http.Header)
7746	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
7747	for k, v := range c.header_ {
7748		reqHeaders[k] = v
7749	}
7750	reqHeaders.Set("User-Agent", c.s.userAgent())
7751	if c.ifNoneMatch_ != "" {
7752		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
7753	}
7754	var body io.Reader = nil
7755	c.urlParams_.Set("alt", alt)
7756	c.urlParams_.Set("prettyPrint", "false")
7757	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services")
7758	urls += "?" + c.urlParams_.Encode()
7759	req, err := http.NewRequest("GET", urls, body)
7760	if err != nil {
7761		return nil, err
7762	}
7763	req.Header = reqHeaders
7764	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7765}
7766
7767// Do executes the "servicemanagement.services.list" call.
7768// Exactly one of *ListServicesResponse or error will be non-nil. Any
7769// non-2xx status code is an error. Response headers are in either
7770// *ListServicesResponse.ServerResponse.Header or (if a response was
7771// returned at all) in error.(*googleapi.Error).Header. Use
7772// googleapi.IsNotModified to check whether the returned error was
7773// because http.StatusNotModified was returned.
7774func (c *ServicesListCall) Do(opts ...googleapi.CallOption) (*ListServicesResponse, error) {
7775	gensupport.SetOptions(c.urlParams_, opts...)
7776	res, err := c.doRequest("json")
7777	if res != nil && res.StatusCode == http.StatusNotModified {
7778		if res.Body != nil {
7779			res.Body.Close()
7780		}
7781		return nil, &googleapi.Error{
7782			Code:   res.StatusCode,
7783			Header: res.Header,
7784		}
7785	}
7786	if err != nil {
7787		return nil, err
7788	}
7789	defer googleapi.CloseBody(res)
7790	if err := googleapi.CheckResponse(res); err != nil {
7791		return nil, err
7792	}
7793	ret := &ListServicesResponse{
7794		ServerResponse: googleapi.ServerResponse{
7795			Header:         res.Header,
7796			HTTPStatusCode: res.StatusCode,
7797		},
7798	}
7799	target := &ret
7800	if err := gensupport.DecodeResponse(target, res); err != nil {
7801		return nil, err
7802	}
7803	return ret, nil
7804	// {
7805	//   "description": "Lists managed services.\n\nReturns all public services. For authenticated users, also returns all\nservices the calling user has \"servicemanagement.services.get\" permission\nfor.\n\n**BETA:** If the caller specifies the `consumer_id`, it returns only the\nservices enabled on the consumer. The `consumer_id` must have the format\nof \"project:{PROJECT-ID}\".",
7806	//   "flatPath": "v1/services",
7807	//   "httpMethod": "GET",
7808	//   "id": "servicemanagement.services.list",
7809	//   "parameterOrder": [],
7810	//   "parameters": {
7811	//     "consumerId": {
7812	//       "description": "Include services consumed by the specified consumer.\n\nThe Google Service Management implementation accepts the following\nforms:\n- project:\u003cproject_id\u003e",
7813	//       "location": "query",
7814	//       "type": "string"
7815	//     },
7816	//     "pageSize": {
7817	//       "description": "The max number of items to include in the response list. Page size is 50\nif not specified. Maximum value is 100.",
7818	//       "format": "int32",
7819	//       "location": "query",
7820	//       "type": "integer"
7821	//     },
7822	//     "pageToken": {
7823	//       "description": "Token identifying which result to start with; returned by a previous list\ncall.",
7824	//       "location": "query",
7825	//       "type": "string"
7826	//     },
7827	//     "producerProjectId": {
7828	//       "description": "Include services produced by the specified project.",
7829	//       "location": "query",
7830	//       "type": "string"
7831	//     }
7832	//   },
7833	//   "path": "v1/services",
7834	//   "response": {
7835	//     "$ref": "ListServicesResponse"
7836	//   },
7837	//   "scopes": [
7838	//     "https://www.googleapis.com/auth/cloud-platform",
7839	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
7840	//     "https://www.googleapis.com/auth/service.management",
7841	//     "https://www.googleapis.com/auth/service.management.readonly"
7842	//   ]
7843	// }
7844
7845}
7846
7847// Pages invokes f for each page of results.
7848// A non-nil error returned from f will halt the iteration.
7849// The provided context supersedes any context provided to the Context method.
7850func (c *ServicesListCall) Pages(ctx context.Context, f func(*ListServicesResponse) error) error {
7851	c.ctx_ = ctx
7852	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
7853	for {
7854		x, err := c.Do()
7855		if err != nil {
7856			return err
7857		}
7858		if err := f(x); err != nil {
7859			return err
7860		}
7861		if x.NextPageToken == "" {
7862			return nil
7863		}
7864		c.PageToken(x.NextPageToken)
7865	}
7866}
7867
7868// method id "servicemanagement.services.setIamPolicy":
7869
7870type ServicesSetIamPolicyCall struct {
7871	s                   *APIService
7872	resource            string
7873	setiampolicyrequest *SetIamPolicyRequest
7874	urlParams_          gensupport.URLParams
7875	ctx_                context.Context
7876	header_             http.Header
7877}
7878
7879// SetIamPolicy: Sets the access control policy on the specified
7880// resource. Replaces any
7881// existing policy.
7882//
7883// Can return Public Errors: NOT_FOUND, INVALID_ARGUMENT and
7884// PERMISSION_DENIED
7885func (r *ServicesService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ServicesSetIamPolicyCall {
7886	c := &ServicesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7887	c.resource = resource
7888	c.setiampolicyrequest = setiampolicyrequest
7889	return c
7890}
7891
7892// Fields allows partial responses to be retrieved. See
7893// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7894// for more information.
7895func (c *ServicesSetIamPolicyCall) Fields(s ...googleapi.Field) *ServicesSetIamPolicyCall {
7896	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7897	return c
7898}
7899
7900// Context sets the context to be used in this call's Do method. Any
7901// pending HTTP request will be aborted if the provided context is
7902// canceled.
7903func (c *ServicesSetIamPolicyCall) Context(ctx context.Context) *ServicesSetIamPolicyCall {
7904	c.ctx_ = ctx
7905	return c
7906}
7907
7908// Header returns an http.Header that can be modified by the caller to
7909// add HTTP headers to the request.
7910func (c *ServicesSetIamPolicyCall) Header() http.Header {
7911	if c.header_ == nil {
7912		c.header_ = make(http.Header)
7913	}
7914	return c.header_
7915}
7916
7917func (c *ServicesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
7918	reqHeaders := make(http.Header)
7919	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
7920	for k, v := range c.header_ {
7921		reqHeaders[k] = v
7922	}
7923	reqHeaders.Set("User-Agent", c.s.userAgent())
7924	var body io.Reader = nil
7925	body, err := googleapi.WithoutDataWrapper.JSONReader(c.setiampolicyrequest)
7926	if err != nil {
7927		return nil, err
7928	}
7929	reqHeaders.Set("Content-Type", "application/json")
7930	c.urlParams_.Set("alt", alt)
7931	c.urlParams_.Set("prettyPrint", "false")
7932	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:setIamPolicy")
7933	urls += "?" + c.urlParams_.Encode()
7934	req, err := http.NewRequest("POST", urls, body)
7935	if err != nil {
7936		return nil, err
7937	}
7938	req.Header = reqHeaders
7939	googleapi.Expand(req.URL, map[string]string{
7940		"resource": c.resource,
7941	})
7942	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7943}
7944
7945// Do executes the "servicemanagement.services.setIamPolicy" call.
7946// Exactly one of *Policy or error will be non-nil. Any non-2xx status
7947// code is an error. Response headers are in either
7948// *Policy.ServerResponse.Header or (if a response was returned at all)
7949// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
7950// check whether the returned error was because http.StatusNotModified
7951// was returned.
7952func (c *ServicesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
7953	gensupport.SetOptions(c.urlParams_, opts...)
7954	res, err := c.doRequest("json")
7955	if res != nil && res.StatusCode == http.StatusNotModified {
7956		if res.Body != nil {
7957			res.Body.Close()
7958		}
7959		return nil, &googleapi.Error{
7960			Code:   res.StatusCode,
7961			Header: res.Header,
7962		}
7963	}
7964	if err != nil {
7965		return nil, err
7966	}
7967	defer googleapi.CloseBody(res)
7968	if err := googleapi.CheckResponse(res); err != nil {
7969		return nil, err
7970	}
7971	ret := &Policy{
7972		ServerResponse: googleapi.ServerResponse{
7973			Header:         res.Header,
7974			HTTPStatusCode: res.StatusCode,
7975		},
7976	}
7977	target := &ret
7978	if err := gensupport.DecodeResponse(target, res); err != nil {
7979		return nil, err
7980	}
7981	return ret, nil
7982	// {
7983	//   "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.\n\nCan return Public Errors: NOT_FOUND, INVALID_ARGUMENT and PERMISSION_DENIED",
7984	//   "flatPath": "v1/services/{servicesId}:setIamPolicy",
7985	//   "httpMethod": "POST",
7986	//   "id": "servicemanagement.services.setIamPolicy",
7987	//   "parameterOrder": [
7988	//     "resource"
7989	//   ],
7990	//   "parameters": {
7991	//     "resource": {
7992	//       "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
7993	//       "location": "path",
7994	//       "pattern": "^services/[^/]+$",
7995	//       "required": true,
7996	//       "type": "string"
7997	//     }
7998	//   },
7999	//   "path": "v1/{+resource}:setIamPolicy",
8000	//   "request": {
8001	//     "$ref": "SetIamPolicyRequest"
8002	//   },
8003	//   "response": {
8004	//     "$ref": "Policy"
8005	//   },
8006	//   "scopes": [
8007	//     "https://www.googleapis.com/auth/cloud-platform",
8008	//     "https://www.googleapis.com/auth/service.management"
8009	//   ]
8010	// }
8011
8012}
8013
8014// method id "servicemanagement.services.testIamPermissions":
8015
8016type ServicesTestIamPermissionsCall struct {
8017	s                         *APIService
8018	resource                  string
8019	testiampermissionsrequest *TestIamPermissionsRequest
8020	urlParams_                gensupport.URLParams
8021	ctx_                      context.Context
8022	header_                   http.Header
8023}
8024
8025// TestIamPermissions: Returns permissions that a caller has on the
8026// specified resource.
8027// If the resource does not exist, this will return an empty set
8028// of
8029// permissions, not a NOT_FOUND error.
8030//
8031// Note: This operation is designed to be used for building
8032// permission-aware
8033// UIs and command-line tools, not for authorization checking. This
8034// operation
8035// may "fail open" without warning.
8036func (r *ServicesService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ServicesTestIamPermissionsCall {
8037	c := &ServicesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
8038	c.resource = resource
8039	c.testiampermissionsrequest = testiampermissionsrequest
8040	return c
8041}
8042
8043// Fields allows partial responses to be retrieved. See
8044// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
8045// for more information.
8046func (c *ServicesTestIamPermissionsCall) Fields(s ...googleapi.Field) *ServicesTestIamPermissionsCall {
8047	c.urlParams_.Set("fields", googleapi.CombineFields(s))
8048	return c
8049}
8050
8051// Context sets the context to be used in this call's Do method. Any
8052// pending HTTP request will be aborted if the provided context is
8053// canceled.
8054func (c *ServicesTestIamPermissionsCall) Context(ctx context.Context) *ServicesTestIamPermissionsCall {
8055	c.ctx_ = ctx
8056	return c
8057}
8058
8059// Header returns an http.Header that can be modified by the caller to
8060// add HTTP headers to the request.
8061func (c *ServicesTestIamPermissionsCall) Header() http.Header {
8062	if c.header_ == nil {
8063		c.header_ = make(http.Header)
8064	}
8065	return c.header_
8066}
8067
8068func (c *ServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
8069	reqHeaders := make(http.Header)
8070	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
8071	for k, v := range c.header_ {
8072		reqHeaders[k] = v
8073	}
8074	reqHeaders.Set("User-Agent", c.s.userAgent())
8075	var body io.Reader = nil
8076	body, err := googleapi.WithoutDataWrapper.JSONReader(c.testiampermissionsrequest)
8077	if err != nil {
8078		return nil, err
8079	}
8080	reqHeaders.Set("Content-Type", "application/json")
8081	c.urlParams_.Set("alt", alt)
8082	c.urlParams_.Set("prettyPrint", "false")
8083	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:testIamPermissions")
8084	urls += "?" + c.urlParams_.Encode()
8085	req, err := http.NewRequest("POST", urls, body)
8086	if err != nil {
8087		return nil, err
8088	}
8089	req.Header = reqHeaders
8090	googleapi.Expand(req.URL, map[string]string{
8091		"resource": c.resource,
8092	})
8093	return gensupport.SendRequest(c.ctx_, c.s.client, req)
8094}
8095
8096// Do executes the "servicemanagement.services.testIamPermissions" call.
8097// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
8098// Any non-2xx status code is an error. Response headers are in either
8099// *TestIamPermissionsResponse.ServerResponse.Header or (if a response
8100// was returned at all) in error.(*googleapi.Error).Header. Use
8101// googleapi.IsNotModified to check whether the returned error was
8102// because http.StatusNotModified was returned.
8103func (c *ServicesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, error) {
8104	gensupport.SetOptions(c.urlParams_, opts...)
8105	res, err := c.doRequest("json")
8106	if res != nil && res.StatusCode == http.StatusNotModified {
8107		if res.Body != nil {
8108			res.Body.Close()
8109		}
8110		return nil, &googleapi.Error{
8111			Code:   res.StatusCode,
8112			Header: res.Header,
8113		}
8114	}
8115	if err != nil {
8116		return nil, err
8117	}
8118	defer googleapi.CloseBody(res)
8119	if err := googleapi.CheckResponse(res); err != nil {
8120		return nil, err
8121	}
8122	ret := &TestIamPermissionsResponse{
8123		ServerResponse: googleapi.ServerResponse{
8124			Header:         res.Header,
8125			HTTPStatusCode: res.StatusCode,
8126		},
8127	}
8128	target := &ret
8129	if err := gensupport.DecodeResponse(target, res); err != nil {
8130		return nil, err
8131	}
8132	return ret, nil
8133	// {
8134	//   "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
8135	//   "flatPath": "v1/services/{servicesId}:testIamPermissions",
8136	//   "httpMethod": "POST",
8137	//   "id": "servicemanagement.services.testIamPermissions",
8138	//   "parameterOrder": [
8139	//     "resource"
8140	//   ],
8141	//   "parameters": {
8142	//     "resource": {
8143	//       "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
8144	//       "location": "path",
8145	//       "pattern": "^services/[^/]+$",
8146	//       "required": true,
8147	//       "type": "string"
8148	//     }
8149	//   },
8150	//   "path": "v1/{+resource}:testIamPermissions",
8151	//   "request": {
8152	//     "$ref": "TestIamPermissionsRequest"
8153	//   },
8154	//   "response": {
8155	//     "$ref": "TestIamPermissionsResponse"
8156	//   },
8157	//   "scopes": [
8158	//     "https://www.googleapis.com/auth/cloud-platform",
8159	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
8160	//     "https://www.googleapis.com/auth/service.management",
8161	//     "https://www.googleapis.com/auth/service.management.readonly"
8162	//   ]
8163	// }
8164
8165}
8166
8167// method id "servicemanagement.services.undelete":
8168
8169type ServicesUndeleteCall struct {
8170	s           *APIService
8171	serviceName string
8172	urlParams_  gensupport.URLParams
8173	ctx_        context.Context
8174	header_     http.Header
8175}
8176
8177// Undelete: Revives a previously deleted managed service. The method
8178// restores the
8179// service using the configuration at the time the service was
8180// deleted.
8181// The target service must exist and must have been deleted within
8182// the
8183// last 30 days.
8184//
8185// Operation<response: UndeleteServiceResponse>
8186func (r *ServicesService) Undelete(serviceName string) *ServicesUndeleteCall {
8187	c := &ServicesUndeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
8188	c.serviceName = serviceName
8189	return c
8190}
8191
8192// Fields allows partial responses to be retrieved. See
8193// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
8194// for more information.
8195func (c *ServicesUndeleteCall) Fields(s ...googleapi.Field) *ServicesUndeleteCall {
8196	c.urlParams_.Set("fields", googleapi.CombineFields(s))
8197	return c
8198}
8199
8200// Context sets the context to be used in this call's Do method. Any
8201// pending HTTP request will be aborted if the provided context is
8202// canceled.
8203func (c *ServicesUndeleteCall) Context(ctx context.Context) *ServicesUndeleteCall {
8204	c.ctx_ = ctx
8205	return c
8206}
8207
8208// Header returns an http.Header that can be modified by the caller to
8209// add HTTP headers to the request.
8210func (c *ServicesUndeleteCall) Header() http.Header {
8211	if c.header_ == nil {
8212		c.header_ = make(http.Header)
8213	}
8214	return c.header_
8215}
8216
8217func (c *ServicesUndeleteCall) doRequest(alt string) (*http.Response, error) {
8218	reqHeaders := make(http.Header)
8219	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
8220	for k, v := range c.header_ {
8221		reqHeaders[k] = v
8222	}
8223	reqHeaders.Set("User-Agent", c.s.userAgent())
8224	var body io.Reader = nil
8225	c.urlParams_.Set("alt", alt)
8226	c.urlParams_.Set("prettyPrint", "false")
8227	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}:undelete")
8228	urls += "?" + c.urlParams_.Encode()
8229	req, err := http.NewRequest("POST", urls, body)
8230	if err != nil {
8231		return nil, err
8232	}
8233	req.Header = reqHeaders
8234	googleapi.Expand(req.URL, map[string]string{
8235		"serviceName": c.serviceName,
8236	})
8237	return gensupport.SendRequest(c.ctx_, c.s.client, req)
8238}
8239
8240// Do executes the "servicemanagement.services.undelete" call.
8241// Exactly one of *Operation or error will be non-nil. Any non-2xx
8242// status code is an error. Response headers are in either
8243// *Operation.ServerResponse.Header or (if a response was returned at
8244// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
8245// to check whether the returned error was because
8246// http.StatusNotModified was returned.
8247func (c *ServicesUndeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
8248	gensupport.SetOptions(c.urlParams_, opts...)
8249	res, err := c.doRequest("json")
8250	if res != nil && res.StatusCode == http.StatusNotModified {
8251		if res.Body != nil {
8252			res.Body.Close()
8253		}
8254		return nil, &googleapi.Error{
8255			Code:   res.StatusCode,
8256			Header: res.Header,
8257		}
8258	}
8259	if err != nil {
8260		return nil, err
8261	}
8262	defer googleapi.CloseBody(res)
8263	if err := googleapi.CheckResponse(res); err != nil {
8264		return nil, err
8265	}
8266	ret := &Operation{
8267		ServerResponse: googleapi.ServerResponse{
8268			Header:         res.Header,
8269			HTTPStatusCode: res.StatusCode,
8270		},
8271	}
8272	target := &ret
8273	if err := gensupport.DecodeResponse(target, res); err != nil {
8274		return nil, err
8275	}
8276	return ret, nil
8277	// {
8278	//   "description": "Revives a previously deleted managed service. The method restores the\nservice using the configuration at the time the service was deleted.\nThe target service must exist and must have been deleted within the\nlast 30 days.\n\nOperation\u003cresponse: UndeleteServiceResponse\u003e",
8279	//   "flatPath": "v1/services/{serviceName}:undelete",
8280	//   "httpMethod": "POST",
8281	//   "id": "servicemanagement.services.undelete",
8282	//   "parameterOrder": [
8283	//     "serviceName"
8284	//   ],
8285	//   "parameters": {
8286	//     "serviceName": {
8287	//       "description": "Required. The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.",
8288	//       "location": "path",
8289	//       "required": true,
8290	//       "type": "string"
8291	//     }
8292	//   },
8293	//   "path": "v1/services/{serviceName}:undelete",
8294	//   "response": {
8295	//     "$ref": "Operation"
8296	//   },
8297	//   "scopes": [
8298	//     "https://www.googleapis.com/auth/cloud-platform",
8299	//     "https://www.googleapis.com/auth/service.management"
8300	//   ]
8301	// }
8302
8303}
8304
8305// method id "servicemanagement.services.configs.create":
8306
8307type ServicesConfigsCreateCall struct {
8308	s           *APIService
8309	serviceName string
8310	service     *Service
8311	urlParams_  gensupport.URLParams
8312	ctx_        context.Context
8313	header_     http.Header
8314}
8315
8316// Create: Creates a new service configuration (version) for a managed
8317// service.
8318// This method only stores the service configuration. To roll out the
8319// service
8320// configuration to backend systems please
8321// call
8322// CreateServiceRollout.
8323//
8324// Only the 100 most recent service configurations and ones referenced
8325// by
8326// existing rollouts are kept for each service. The rest will be
8327// deleted
8328// eventually.
8329func (r *ServicesConfigsService) Create(serviceName string, service *Service) *ServicesConfigsCreateCall {
8330	c := &ServicesConfigsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
8331	c.serviceName = serviceName
8332	c.service = service
8333	return c
8334}
8335
8336// Fields allows partial responses to be retrieved. See
8337// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
8338// for more information.
8339func (c *ServicesConfigsCreateCall) Fields(s ...googleapi.Field) *ServicesConfigsCreateCall {
8340	c.urlParams_.Set("fields", googleapi.CombineFields(s))
8341	return c
8342}
8343
8344// Context sets the context to be used in this call's Do method. Any
8345// pending HTTP request will be aborted if the provided context is
8346// canceled.
8347func (c *ServicesConfigsCreateCall) Context(ctx context.Context) *ServicesConfigsCreateCall {
8348	c.ctx_ = ctx
8349	return c
8350}
8351
8352// Header returns an http.Header that can be modified by the caller to
8353// add HTTP headers to the request.
8354func (c *ServicesConfigsCreateCall) Header() http.Header {
8355	if c.header_ == nil {
8356		c.header_ = make(http.Header)
8357	}
8358	return c.header_
8359}
8360
8361func (c *ServicesConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
8362	reqHeaders := make(http.Header)
8363	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
8364	for k, v := range c.header_ {
8365		reqHeaders[k] = v
8366	}
8367	reqHeaders.Set("User-Agent", c.s.userAgent())
8368	var body io.Reader = nil
8369	body, err := googleapi.WithoutDataWrapper.JSONReader(c.service)
8370	if err != nil {
8371		return nil, err
8372	}
8373	reqHeaders.Set("Content-Type", "application/json")
8374	c.urlParams_.Set("alt", alt)
8375	c.urlParams_.Set("prettyPrint", "false")
8376	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/configs")
8377	urls += "?" + c.urlParams_.Encode()
8378	req, err := http.NewRequest("POST", urls, body)
8379	if err != nil {
8380		return nil, err
8381	}
8382	req.Header = reqHeaders
8383	googleapi.Expand(req.URL, map[string]string{
8384		"serviceName": c.serviceName,
8385	})
8386	return gensupport.SendRequest(c.ctx_, c.s.client, req)
8387}
8388
8389// Do executes the "servicemanagement.services.configs.create" call.
8390// Exactly one of *Service or error will be non-nil. Any non-2xx status
8391// code is an error. Response headers are in either
8392// *Service.ServerResponse.Header or (if a response was returned at all)
8393// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
8394// check whether the returned error was because http.StatusNotModified
8395// was returned.
8396func (c *ServicesConfigsCreateCall) Do(opts ...googleapi.CallOption) (*Service, error) {
8397	gensupport.SetOptions(c.urlParams_, opts...)
8398	res, err := c.doRequest("json")
8399	if res != nil && res.StatusCode == http.StatusNotModified {
8400		if res.Body != nil {
8401			res.Body.Close()
8402		}
8403		return nil, &googleapi.Error{
8404			Code:   res.StatusCode,
8405			Header: res.Header,
8406		}
8407	}
8408	if err != nil {
8409		return nil, err
8410	}
8411	defer googleapi.CloseBody(res)
8412	if err := googleapi.CheckResponse(res); err != nil {
8413		return nil, err
8414	}
8415	ret := &Service{
8416		ServerResponse: googleapi.ServerResponse{
8417			Header:         res.Header,
8418			HTTPStatusCode: res.StatusCode,
8419		},
8420	}
8421	target := &ret
8422	if err := gensupport.DecodeResponse(target, res); err != nil {
8423		return nil, err
8424	}
8425	return ret, nil
8426	// {
8427	//   "description": "Creates a new service configuration (version) for a managed service.\nThis method only stores the service configuration. To roll out the service\nconfiguration to backend systems please call\nCreateServiceRollout.\n\nOnly the 100 most recent service configurations and ones referenced by\nexisting rollouts are kept for each service. The rest will be deleted\neventually.",
8428	//   "flatPath": "v1/services/{serviceName}/configs",
8429	//   "httpMethod": "POST",
8430	//   "id": "servicemanagement.services.configs.create",
8431	//   "parameterOrder": [
8432	//     "serviceName"
8433	//   ],
8434	//   "parameters": {
8435	//     "serviceName": {
8436	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
8437	//       "location": "path",
8438	//       "required": true,
8439	//       "type": "string"
8440	//     }
8441	//   },
8442	//   "path": "v1/services/{serviceName}/configs",
8443	//   "request": {
8444	//     "$ref": "Service"
8445	//   },
8446	//   "response": {
8447	//     "$ref": "Service"
8448	//   },
8449	//   "scopes": [
8450	//     "https://www.googleapis.com/auth/cloud-platform",
8451	//     "https://www.googleapis.com/auth/service.management"
8452	//   ]
8453	// }
8454
8455}
8456
8457// method id "servicemanagement.services.configs.get":
8458
8459type ServicesConfigsGetCall struct {
8460	s            *APIService
8461	serviceName  string
8462	configId     string
8463	urlParams_   gensupport.URLParams
8464	ifNoneMatch_ string
8465	ctx_         context.Context
8466	header_      http.Header
8467}
8468
8469// Get: Gets a service configuration (version) for a managed service.
8470func (r *ServicesConfigsService) Get(serviceName string, configId string) *ServicesConfigsGetCall {
8471	c := &ServicesConfigsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
8472	c.serviceName = serviceName
8473	c.configId = configId
8474	return c
8475}
8476
8477// View sets the optional parameter "view": Specifies which parts of the
8478// Service Config should be returned in the
8479// response.
8480//
8481// Possible values:
8482//   "BASIC"
8483//   "FULL"
8484func (c *ServicesConfigsGetCall) View(view string) *ServicesConfigsGetCall {
8485	c.urlParams_.Set("view", view)
8486	return c
8487}
8488
8489// Fields allows partial responses to be retrieved. See
8490// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
8491// for more information.
8492func (c *ServicesConfigsGetCall) Fields(s ...googleapi.Field) *ServicesConfigsGetCall {
8493	c.urlParams_.Set("fields", googleapi.CombineFields(s))
8494	return c
8495}
8496
8497// IfNoneMatch sets the optional parameter which makes the operation
8498// fail if the object's ETag matches the given value. This is useful for
8499// getting updates only after the object has changed since the last
8500// request. Use googleapi.IsNotModified to check whether the response
8501// error from Do is the result of In-None-Match.
8502func (c *ServicesConfigsGetCall) IfNoneMatch(entityTag string) *ServicesConfigsGetCall {
8503	c.ifNoneMatch_ = entityTag
8504	return c
8505}
8506
8507// Context sets the context to be used in this call's Do method. Any
8508// pending HTTP request will be aborted if the provided context is
8509// canceled.
8510func (c *ServicesConfigsGetCall) Context(ctx context.Context) *ServicesConfigsGetCall {
8511	c.ctx_ = ctx
8512	return c
8513}
8514
8515// Header returns an http.Header that can be modified by the caller to
8516// add HTTP headers to the request.
8517func (c *ServicesConfigsGetCall) Header() http.Header {
8518	if c.header_ == nil {
8519		c.header_ = make(http.Header)
8520	}
8521	return c.header_
8522}
8523
8524func (c *ServicesConfigsGetCall) doRequest(alt string) (*http.Response, error) {
8525	reqHeaders := make(http.Header)
8526	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
8527	for k, v := range c.header_ {
8528		reqHeaders[k] = v
8529	}
8530	reqHeaders.Set("User-Agent", c.s.userAgent())
8531	if c.ifNoneMatch_ != "" {
8532		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
8533	}
8534	var body io.Reader = nil
8535	c.urlParams_.Set("alt", alt)
8536	c.urlParams_.Set("prettyPrint", "false")
8537	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/configs/{configId}")
8538	urls += "?" + c.urlParams_.Encode()
8539	req, err := http.NewRequest("GET", urls, body)
8540	if err != nil {
8541		return nil, err
8542	}
8543	req.Header = reqHeaders
8544	googleapi.Expand(req.URL, map[string]string{
8545		"serviceName": c.serviceName,
8546		"configId":    c.configId,
8547	})
8548	return gensupport.SendRequest(c.ctx_, c.s.client, req)
8549}
8550
8551// Do executes the "servicemanagement.services.configs.get" call.
8552// Exactly one of *Service or error will be non-nil. Any non-2xx status
8553// code is an error. Response headers are in either
8554// *Service.ServerResponse.Header or (if a response was returned at all)
8555// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
8556// check whether the returned error was because http.StatusNotModified
8557// was returned.
8558func (c *ServicesConfigsGetCall) Do(opts ...googleapi.CallOption) (*Service, error) {
8559	gensupport.SetOptions(c.urlParams_, opts...)
8560	res, err := c.doRequest("json")
8561	if res != nil && res.StatusCode == http.StatusNotModified {
8562		if res.Body != nil {
8563			res.Body.Close()
8564		}
8565		return nil, &googleapi.Error{
8566			Code:   res.StatusCode,
8567			Header: res.Header,
8568		}
8569	}
8570	if err != nil {
8571		return nil, err
8572	}
8573	defer googleapi.CloseBody(res)
8574	if err := googleapi.CheckResponse(res); err != nil {
8575		return nil, err
8576	}
8577	ret := &Service{
8578		ServerResponse: googleapi.ServerResponse{
8579			Header:         res.Header,
8580			HTTPStatusCode: res.StatusCode,
8581		},
8582	}
8583	target := &ret
8584	if err := gensupport.DecodeResponse(target, res); err != nil {
8585		return nil, err
8586	}
8587	return ret, nil
8588	// {
8589	//   "description": "Gets a service configuration (version) for a managed service.",
8590	//   "flatPath": "v1/services/{serviceName}/configs/{configId}",
8591	//   "httpMethod": "GET",
8592	//   "id": "servicemanagement.services.configs.get",
8593	//   "parameterOrder": [
8594	//     "serviceName",
8595	//     "configId"
8596	//   ],
8597	//   "parameters": {
8598	//     "configId": {
8599	//       "description": "Required. The id of the service configuration resource.\n\nThis field must be specified for the server to return all fields, including\n`SourceInfo`.",
8600	//       "location": "path",
8601	//       "required": true,
8602	//       "type": "string"
8603	//     },
8604	//     "serviceName": {
8605	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
8606	//       "location": "path",
8607	//       "required": true,
8608	//       "type": "string"
8609	//     },
8610	//     "view": {
8611	//       "description": "Specifies which parts of the Service Config should be returned in the\nresponse.",
8612	//       "enum": [
8613	//         "BASIC",
8614	//         "FULL"
8615	//       ],
8616	//       "location": "query",
8617	//       "type": "string"
8618	//     }
8619	//   },
8620	//   "path": "v1/services/{serviceName}/configs/{configId}",
8621	//   "response": {
8622	//     "$ref": "Service"
8623	//   },
8624	//   "scopes": [
8625	//     "https://www.googleapis.com/auth/cloud-platform",
8626	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
8627	//     "https://www.googleapis.com/auth/service.management",
8628	//     "https://www.googleapis.com/auth/service.management.readonly"
8629	//   ]
8630	// }
8631
8632}
8633
8634// method id "servicemanagement.services.configs.list":
8635
8636type ServicesConfigsListCall struct {
8637	s            *APIService
8638	serviceName  string
8639	urlParams_   gensupport.URLParams
8640	ifNoneMatch_ string
8641	ctx_         context.Context
8642	header_      http.Header
8643}
8644
8645// List: Lists the history of the service configuration for a managed
8646// service,
8647// from the newest to the oldest.
8648func (r *ServicesConfigsService) List(serviceName string) *ServicesConfigsListCall {
8649	c := &ServicesConfigsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
8650	c.serviceName = serviceName
8651	return c
8652}
8653
8654// PageSize sets the optional parameter "pageSize": The max number of
8655// items to include in the response list. Page size is 50
8656// if not specified. Maximum value is 100.
8657func (c *ServicesConfigsListCall) PageSize(pageSize int64) *ServicesConfigsListCall {
8658	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
8659	return c
8660}
8661
8662// PageToken sets the optional parameter "pageToken": The token of the
8663// page to retrieve.
8664func (c *ServicesConfigsListCall) PageToken(pageToken string) *ServicesConfigsListCall {
8665	c.urlParams_.Set("pageToken", pageToken)
8666	return c
8667}
8668
8669// Fields allows partial responses to be retrieved. See
8670// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
8671// for more information.
8672func (c *ServicesConfigsListCall) Fields(s ...googleapi.Field) *ServicesConfigsListCall {
8673	c.urlParams_.Set("fields", googleapi.CombineFields(s))
8674	return c
8675}
8676
8677// IfNoneMatch sets the optional parameter which makes the operation
8678// fail if the object's ETag matches the given value. This is useful for
8679// getting updates only after the object has changed since the last
8680// request. Use googleapi.IsNotModified to check whether the response
8681// error from Do is the result of In-None-Match.
8682func (c *ServicesConfigsListCall) IfNoneMatch(entityTag string) *ServicesConfigsListCall {
8683	c.ifNoneMatch_ = entityTag
8684	return c
8685}
8686
8687// Context sets the context to be used in this call's Do method. Any
8688// pending HTTP request will be aborted if the provided context is
8689// canceled.
8690func (c *ServicesConfigsListCall) Context(ctx context.Context) *ServicesConfigsListCall {
8691	c.ctx_ = ctx
8692	return c
8693}
8694
8695// Header returns an http.Header that can be modified by the caller to
8696// add HTTP headers to the request.
8697func (c *ServicesConfigsListCall) Header() http.Header {
8698	if c.header_ == nil {
8699		c.header_ = make(http.Header)
8700	}
8701	return c.header_
8702}
8703
8704func (c *ServicesConfigsListCall) doRequest(alt string) (*http.Response, error) {
8705	reqHeaders := make(http.Header)
8706	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
8707	for k, v := range c.header_ {
8708		reqHeaders[k] = v
8709	}
8710	reqHeaders.Set("User-Agent", c.s.userAgent())
8711	if c.ifNoneMatch_ != "" {
8712		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
8713	}
8714	var body io.Reader = nil
8715	c.urlParams_.Set("alt", alt)
8716	c.urlParams_.Set("prettyPrint", "false")
8717	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/configs")
8718	urls += "?" + c.urlParams_.Encode()
8719	req, err := http.NewRequest("GET", urls, body)
8720	if err != nil {
8721		return nil, err
8722	}
8723	req.Header = reqHeaders
8724	googleapi.Expand(req.URL, map[string]string{
8725		"serviceName": c.serviceName,
8726	})
8727	return gensupport.SendRequest(c.ctx_, c.s.client, req)
8728}
8729
8730// Do executes the "servicemanagement.services.configs.list" call.
8731// Exactly one of *ListServiceConfigsResponse or error will be non-nil.
8732// Any non-2xx status code is an error. Response headers are in either
8733// *ListServiceConfigsResponse.ServerResponse.Header or (if a response
8734// was returned at all) in error.(*googleapi.Error).Header. Use
8735// googleapi.IsNotModified to check whether the returned error was
8736// because http.StatusNotModified was returned.
8737func (c *ServicesConfigsListCall) Do(opts ...googleapi.CallOption) (*ListServiceConfigsResponse, error) {
8738	gensupport.SetOptions(c.urlParams_, opts...)
8739	res, err := c.doRequest("json")
8740	if res != nil && res.StatusCode == http.StatusNotModified {
8741		if res.Body != nil {
8742			res.Body.Close()
8743		}
8744		return nil, &googleapi.Error{
8745			Code:   res.StatusCode,
8746			Header: res.Header,
8747		}
8748	}
8749	if err != nil {
8750		return nil, err
8751	}
8752	defer googleapi.CloseBody(res)
8753	if err := googleapi.CheckResponse(res); err != nil {
8754		return nil, err
8755	}
8756	ret := &ListServiceConfigsResponse{
8757		ServerResponse: googleapi.ServerResponse{
8758			Header:         res.Header,
8759			HTTPStatusCode: res.StatusCode,
8760		},
8761	}
8762	target := &ret
8763	if err := gensupport.DecodeResponse(target, res); err != nil {
8764		return nil, err
8765	}
8766	return ret, nil
8767	// {
8768	//   "description": "Lists the history of the service configuration for a managed service,\nfrom the newest to the oldest.",
8769	//   "flatPath": "v1/services/{serviceName}/configs",
8770	//   "httpMethod": "GET",
8771	//   "id": "servicemanagement.services.configs.list",
8772	//   "parameterOrder": [
8773	//     "serviceName"
8774	//   ],
8775	//   "parameters": {
8776	//     "pageSize": {
8777	//       "description": "The max number of items to include in the response list. Page size is 50\nif not specified. Maximum value is 100.",
8778	//       "format": "int32",
8779	//       "location": "query",
8780	//       "type": "integer"
8781	//     },
8782	//     "pageToken": {
8783	//       "description": "The token of the page to retrieve.",
8784	//       "location": "query",
8785	//       "type": "string"
8786	//     },
8787	//     "serviceName": {
8788	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
8789	//       "location": "path",
8790	//       "required": true,
8791	//       "type": "string"
8792	//     }
8793	//   },
8794	//   "path": "v1/services/{serviceName}/configs",
8795	//   "response": {
8796	//     "$ref": "ListServiceConfigsResponse"
8797	//   },
8798	//   "scopes": [
8799	//     "https://www.googleapis.com/auth/cloud-platform",
8800	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
8801	//     "https://www.googleapis.com/auth/service.management",
8802	//     "https://www.googleapis.com/auth/service.management.readonly"
8803	//   ]
8804	// }
8805
8806}
8807
8808// Pages invokes f for each page of results.
8809// A non-nil error returned from f will halt the iteration.
8810// The provided context supersedes any context provided to the Context method.
8811func (c *ServicesConfigsListCall) Pages(ctx context.Context, f func(*ListServiceConfigsResponse) error) error {
8812	c.ctx_ = ctx
8813	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
8814	for {
8815		x, err := c.Do()
8816		if err != nil {
8817			return err
8818		}
8819		if err := f(x); err != nil {
8820			return err
8821		}
8822		if x.NextPageToken == "" {
8823			return nil
8824		}
8825		c.PageToken(x.NextPageToken)
8826	}
8827}
8828
8829// method id "servicemanagement.services.configs.submit":
8830
8831type ServicesConfigsSubmitCall struct {
8832	s                         *APIService
8833	serviceName               string
8834	submitconfigsourcerequest *SubmitConfigSourceRequest
8835	urlParams_                gensupport.URLParams
8836	ctx_                      context.Context
8837	header_                   http.Header
8838}
8839
8840// Submit: Creates a new service configuration (version) for a managed
8841// service based
8842// on
8843// user-supplied configuration source files (for example:
8844// OpenAPI
8845// Specification). This method stores the source configurations as well
8846// as the
8847// generated service configuration. To rollout the service configuration
8848// to
8849// other services,
8850// please call CreateServiceRollout.
8851//
8852// Only the 100 most recent configuration sources and ones referenced
8853// by
8854// existing service configurtions are kept for each service. The rest
8855// will be
8856// deleted eventually.
8857//
8858// Operation<response: SubmitConfigSourceResponse>
8859func (r *ServicesConfigsService) Submit(serviceName string, submitconfigsourcerequest *SubmitConfigSourceRequest) *ServicesConfigsSubmitCall {
8860	c := &ServicesConfigsSubmitCall{s: r.s, urlParams_: make(gensupport.URLParams)}
8861	c.serviceName = serviceName
8862	c.submitconfigsourcerequest = submitconfigsourcerequest
8863	return c
8864}
8865
8866// Fields allows partial responses to be retrieved. See
8867// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
8868// for more information.
8869func (c *ServicesConfigsSubmitCall) Fields(s ...googleapi.Field) *ServicesConfigsSubmitCall {
8870	c.urlParams_.Set("fields", googleapi.CombineFields(s))
8871	return c
8872}
8873
8874// Context sets the context to be used in this call's Do method. Any
8875// pending HTTP request will be aborted if the provided context is
8876// canceled.
8877func (c *ServicesConfigsSubmitCall) Context(ctx context.Context) *ServicesConfigsSubmitCall {
8878	c.ctx_ = ctx
8879	return c
8880}
8881
8882// Header returns an http.Header that can be modified by the caller to
8883// add HTTP headers to the request.
8884func (c *ServicesConfigsSubmitCall) Header() http.Header {
8885	if c.header_ == nil {
8886		c.header_ = make(http.Header)
8887	}
8888	return c.header_
8889}
8890
8891func (c *ServicesConfigsSubmitCall) doRequest(alt string) (*http.Response, error) {
8892	reqHeaders := make(http.Header)
8893	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
8894	for k, v := range c.header_ {
8895		reqHeaders[k] = v
8896	}
8897	reqHeaders.Set("User-Agent", c.s.userAgent())
8898	var body io.Reader = nil
8899	body, err := googleapi.WithoutDataWrapper.JSONReader(c.submitconfigsourcerequest)
8900	if err != nil {
8901		return nil, err
8902	}
8903	reqHeaders.Set("Content-Type", "application/json")
8904	c.urlParams_.Set("alt", alt)
8905	c.urlParams_.Set("prettyPrint", "false")
8906	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/configs:submit")
8907	urls += "?" + c.urlParams_.Encode()
8908	req, err := http.NewRequest("POST", urls, body)
8909	if err != nil {
8910		return nil, err
8911	}
8912	req.Header = reqHeaders
8913	googleapi.Expand(req.URL, map[string]string{
8914		"serviceName": c.serviceName,
8915	})
8916	return gensupport.SendRequest(c.ctx_, c.s.client, req)
8917}
8918
8919// Do executes the "servicemanagement.services.configs.submit" call.
8920// Exactly one of *Operation or error will be non-nil. Any non-2xx
8921// status code is an error. Response headers are in either
8922// *Operation.ServerResponse.Header or (if a response was returned at
8923// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
8924// to check whether the returned error was because
8925// http.StatusNotModified was returned.
8926func (c *ServicesConfigsSubmitCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
8927	gensupport.SetOptions(c.urlParams_, opts...)
8928	res, err := c.doRequest("json")
8929	if res != nil && res.StatusCode == http.StatusNotModified {
8930		if res.Body != nil {
8931			res.Body.Close()
8932		}
8933		return nil, &googleapi.Error{
8934			Code:   res.StatusCode,
8935			Header: res.Header,
8936		}
8937	}
8938	if err != nil {
8939		return nil, err
8940	}
8941	defer googleapi.CloseBody(res)
8942	if err := googleapi.CheckResponse(res); err != nil {
8943		return nil, err
8944	}
8945	ret := &Operation{
8946		ServerResponse: googleapi.ServerResponse{
8947			Header:         res.Header,
8948			HTTPStatusCode: res.StatusCode,
8949		},
8950	}
8951	target := &ret
8952	if err := gensupport.DecodeResponse(target, res); err != nil {
8953		return nil, err
8954	}
8955	return ret, nil
8956	// {
8957	//   "description": "Creates a new service configuration (version) for a managed service based\non\nuser-supplied configuration source files (for example: OpenAPI\nSpecification). This method stores the source configurations as well as the\ngenerated service configuration. To rollout the service configuration to\nother services,\nplease call CreateServiceRollout.\n\nOnly the 100 most recent configuration sources and ones referenced by\nexisting service configurtions are kept for each service. The rest will be\ndeleted eventually.\n\nOperation\u003cresponse: SubmitConfigSourceResponse\u003e",
8958	//   "flatPath": "v1/services/{serviceName}/configs:submit",
8959	//   "httpMethod": "POST",
8960	//   "id": "servicemanagement.services.configs.submit",
8961	//   "parameterOrder": [
8962	//     "serviceName"
8963	//   ],
8964	//   "parameters": {
8965	//     "serviceName": {
8966	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
8967	//       "location": "path",
8968	//       "required": true,
8969	//       "type": "string"
8970	//     }
8971	//   },
8972	//   "path": "v1/services/{serviceName}/configs:submit",
8973	//   "request": {
8974	//     "$ref": "SubmitConfigSourceRequest"
8975	//   },
8976	//   "response": {
8977	//     "$ref": "Operation"
8978	//   },
8979	//   "scopes": [
8980	//     "https://www.googleapis.com/auth/cloud-platform",
8981	//     "https://www.googleapis.com/auth/service.management"
8982	//   ]
8983	// }
8984
8985}
8986
8987// method id "servicemanagement.services.consumers.getIamPolicy":
8988
8989type ServicesConsumersGetIamPolicyCall struct {
8990	s                   *APIService
8991	resource            string
8992	getiampolicyrequest *GetIamPolicyRequest
8993	urlParams_          gensupport.URLParams
8994	ctx_                context.Context
8995	header_             http.Header
8996}
8997
8998// GetIamPolicy: Gets the access control policy for a resource.
8999// Returns an empty policy if the resource exists and does not have a
9000// policy
9001// set.
9002func (r *ServicesConsumersService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ServicesConsumersGetIamPolicyCall {
9003	c := &ServicesConsumersGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
9004	c.resource = resource
9005	c.getiampolicyrequest = getiampolicyrequest
9006	return c
9007}
9008
9009// Fields allows partial responses to be retrieved. See
9010// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
9011// for more information.
9012func (c *ServicesConsumersGetIamPolicyCall) Fields(s ...googleapi.Field) *ServicesConsumersGetIamPolicyCall {
9013	c.urlParams_.Set("fields", googleapi.CombineFields(s))
9014	return c
9015}
9016
9017// Context sets the context to be used in this call's Do method. Any
9018// pending HTTP request will be aborted if the provided context is
9019// canceled.
9020func (c *ServicesConsumersGetIamPolicyCall) Context(ctx context.Context) *ServicesConsumersGetIamPolicyCall {
9021	c.ctx_ = ctx
9022	return c
9023}
9024
9025// Header returns an http.Header that can be modified by the caller to
9026// add HTTP headers to the request.
9027func (c *ServicesConsumersGetIamPolicyCall) Header() http.Header {
9028	if c.header_ == nil {
9029		c.header_ = make(http.Header)
9030	}
9031	return c.header_
9032}
9033
9034func (c *ServicesConsumersGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
9035	reqHeaders := make(http.Header)
9036	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
9037	for k, v := range c.header_ {
9038		reqHeaders[k] = v
9039	}
9040	reqHeaders.Set("User-Agent", c.s.userAgent())
9041	var body io.Reader = nil
9042	body, err := googleapi.WithoutDataWrapper.JSONReader(c.getiampolicyrequest)
9043	if err != nil {
9044		return nil, err
9045	}
9046	reqHeaders.Set("Content-Type", "application/json")
9047	c.urlParams_.Set("alt", alt)
9048	c.urlParams_.Set("prettyPrint", "false")
9049	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:getIamPolicy")
9050	urls += "?" + c.urlParams_.Encode()
9051	req, err := http.NewRequest("POST", urls, body)
9052	if err != nil {
9053		return nil, err
9054	}
9055	req.Header = reqHeaders
9056	googleapi.Expand(req.URL, map[string]string{
9057		"resource": c.resource,
9058	})
9059	return gensupport.SendRequest(c.ctx_, c.s.client, req)
9060}
9061
9062// Do executes the "servicemanagement.services.consumers.getIamPolicy" call.
9063// Exactly one of *Policy or error will be non-nil. Any non-2xx status
9064// code is an error. Response headers are in either
9065// *Policy.ServerResponse.Header or (if a response was returned at all)
9066// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
9067// check whether the returned error was because http.StatusNotModified
9068// was returned.
9069func (c *ServicesConsumersGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
9070	gensupport.SetOptions(c.urlParams_, opts...)
9071	res, err := c.doRequest("json")
9072	if res != nil && res.StatusCode == http.StatusNotModified {
9073		if res.Body != nil {
9074			res.Body.Close()
9075		}
9076		return nil, &googleapi.Error{
9077			Code:   res.StatusCode,
9078			Header: res.Header,
9079		}
9080	}
9081	if err != nil {
9082		return nil, err
9083	}
9084	defer googleapi.CloseBody(res)
9085	if err := googleapi.CheckResponse(res); err != nil {
9086		return nil, err
9087	}
9088	ret := &Policy{
9089		ServerResponse: googleapi.ServerResponse{
9090			Header:         res.Header,
9091			HTTPStatusCode: res.StatusCode,
9092		},
9093	}
9094	target := &ret
9095	if err := gensupport.DecodeResponse(target, res); err != nil {
9096		return nil, err
9097	}
9098	return ret, nil
9099	// {
9100	//   "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.",
9101	//   "flatPath": "v1/services/{servicesId}/consumers/{consumersId}:getIamPolicy",
9102	//   "httpMethod": "POST",
9103	//   "id": "servicemanagement.services.consumers.getIamPolicy",
9104	//   "parameterOrder": [
9105	//     "resource"
9106	//   ],
9107	//   "parameters": {
9108	//     "resource": {
9109	//       "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.",
9110	//       "location": "path",
9111	//       "pattern": "^services/[^/]+/consumers/[^/]+$",
9112	//       "required": true,
9113	//       "type": "string"
9114	//     }
9115	//   },
9116	//   "path": "v1/{+resource}:getIamPolicy",
9117	//   "request": {
9118	//     "$ref": "GetIamPolicyRequest"
9119	//   },
9120	//   "response": {
9121	//     "$ref": "Policy"
9122	//   },
9123	//   "scopes": [
9124	//     "https://www.googleapis.com/auth/cloud-platform",
9125	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
9126	//     "https://www.googleapis.com/auth/service.management",
9127	//     "https://www.googleapis.com/auth/service.management.readonly"
9128	//   ]
9129	// }
9130
9131}
9132
9133// method id "servicemanagement.services.consumers.setIamPolicy":
9134
9135type ServicesConsumersSetIamPolicyCall struct {
9136	s                   *APIService
9137	resource            string
9138	setiampolicyrequest *SetIamPolicyRequest
9139	urlParams_          gensupport.URLParams
9140	ctx_                context.Context
9141	header_             http.Header
9142}
9143
9144// SetIamPolicy: Sets the access control policy on the specified
9145// resource. Replaces any
9146// existing policy.
9147//
9148// Can return Public Errors: NOT_FOUND, INVALID_ARGUMENT and
9149// PERMISSION_DENIED
9150func (r *ServicesConsumersService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ServicesConsumersSetIamPolicyCall {
9151	c := &ServicesConsumersSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
9152	c.resource = resource
9153	c.setiampolicyrequest = setiampolicyrequest
9154	return c
9155}
9156
9157// Fields allows partial responses to be retrieved. See
9158// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
9159// for more information.
9160func (c *ServicesConsumersSetIamPolicyCall) Fields(s ...googleapi.Field) *ServicesConsumersSetIamPolicyCall {
9161	c.urlParams_.Set("fields", googleapi.CombineFields(s))
9162	return c
9163}
9164
9165// Context sets the context to be used in this call's Do method. Any
9166// pending HTTP request will be aborted if the provided context is
9167// canceled.
9168func (c *ServicesConsumersSetIamPolicyCall) Context(ctx context.Context) *ServicesConsumersSetIamPolicyCall {
9169	c.ctx_ = ctx
9170	return c
9171}
9172
9173// Header returns an http.Header that can be modified by the caller to
9174// add HTTP headers to the request.
9175func (c *ServicesConsumersSetIamPolicyCall) Header() http.Header {
9176	if c.header_ == nil {
9177		c.header_ = make(http.Header)
9178	}
9179	return c.header_
9180}
9181
9182func (c *ServicesConsumersSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
9183	reqHeaders := make(http.Header)
9184	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
9185	for k, v := range c.header_ {
9186		reqHeaders[k] = v
9187	}
9188	reqHeaders.Set("User-Agent", c.s.userAgent())
9189	var body io.Reader = nil
9190	body, err := googleapi.WithoutDataWrapper.JSONReader(c.setiampolicyrequest)
9191	if err != nil {
9192		return nil, err
9193	}
9194	reqHeaders.Set("Content-Type", "application/json")
9195	c.urlParams_.Set("alt", alt)
9196	c.urlParams_.Set("prettyPrint", "false")
9197	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:setIamPolicy")
9198	urls += "?" + c.urlParams_.Encode()
9199	req, err := http.NewRequest("POST", urls, body)
9200	if err != nil {
9201		return nil, err
9202	}
9203	req.Header = reqHeaders
9204	googleapi.Expand(req.URL, map[string]string{
9205		"resource": c.resource,
9206	})
9207	return gensupport.SendRequest(c.ctx_, c.s.client, req)
9208}
9209
9210// Do executes the "servicemanagement.services.consumers.setIamPolicy" call.
9211// Exactly one of *Policy or error will be non-nil. Any non-2xx status
9212// code is an error. Response headers are in either
9213// *Policy.ServerResponse.Header or (if a response was returned at all)
9214// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
9215// check whether the returned error was because http.StatusNotModified
9216// was returned.
9217func (c *ServicesConsumersSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
9218	gensupport.SetOptions(c.urlParams_, opts...)
9219	res, err := c.doRequest("json")
9220	if res != nil && res.StatusCode == http.StatusNotModified {
9221		if res.Body != nil {
9222			res.Body.Close()
9223		}
9224		return nil, &googleapi.Error{
9225			Code:   res.StatusCode,
9226			Header: res.Header,
9227		}
9228	}
9229	if err != nil {
9230		return nil, err
9231	}
9232	defer googleapi.CloseBody(res)
9233	if err := googleapi.CheckResponse(res); err != nil {
9234		return nil, err
9235	}
9236	ret := &Policy{
9237		ServerResponse: googleapi.ServerResponse{
9238			Header:         res.Header,
9239			HTTPStatusCode: res.StatusCode,
9240		},
9241	}
9242	target := &ret
9243	if err := gensupport.DecodeResponse(target, res); err != nil {
9244		return nil, err
9245	}
9246	return ret, nil
9247	// {
9248	//   "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.\n\nCan return Public Errors: NOT_FOUND, INVALID_ARGUMENT and PERMISSION_DENIED",
9249	//   "flatPath": "v1/services/{servicesId}/consumers/{consumersId}:setIamPolicy",
9250	//   "httpMethod": "POST",
9251	//   "id": "servicemanagement.services.consumers.setIamPolicy",
9252	//   "parameterOrder": [
9253	//     "resource"
9254	//   ],
9255	//   "parameters": {
9256	//     "resource": {
9257	//       "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.",
9258	//       "location": "path",
9259	//       "pattern": "^services/[^/]+/consumers/[^/]+$",
9260	//       "required": true,
9261	//       "type": "string"
9262	//     }
9263	//   },
9264	//   "path": "v1/{+resource}:setIamPolicy",
9265	//   "request": {
9266	//     "$ref": "SetIamPolicyRequest"
9267	//   },
9268	//   "response": {
9269	//     "$ref": "Policy"
9270	//   },
9271	//   "scopes": [
9272	//     "https://www.googleapis.com/auth/cloud-platform",
9273	//     "https://www.googleapis.com/auth/service.management"
9274	//   ]
9275	// }
9276
9277}
9278
9279// method id "servicemanagement.services.consumers.testIamPermissions":
9280
9281type ServicesConsumersTestIamPermissionsCall struct {
9282	s                         *APIService
9283	resource                  string
9284	testiampermissionsrequest *TestIamPermissionsRequest
9285	urlParams_                gensupport.URLParams
9286	ctx_                      context.Context
9287	header_                   http.Header
9288}
9289
9290// TestIamPermissions: Returns permissions that a caller has on the
9291// specified resource.
9292// If the resource does not exist, this will return an empty set
9293// of
9294// permissions, not a NOT_FOUND error.
9295//
9296// Note: This operation is designed to be used for building
9297// permission-aware
9298// UIs and command-line tools, not for authorization checking. This
9299// operation
9300// may "fail open" without warning.
9301func (r *ServicesConsumersService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ServicesConsumersTestIamPermissionsCall {
9302	c := &ServicesConsumersTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
9303	c.resource = resource
9304	c.testiampermissionsrequest = testiampermissionsrequest
9305	return c
9306}
9307
9308// Fields allows partial responses to be retrieved. See
9309// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
9310// for more information.
9311func (c *ServicesConsumersTestIamPermissionsCall) Fields(s ...googleapi.Field) *ServicesConsumersTestIamPermissionsCall {
9312	c.urlParams_.Set("fields", googleapi.CombineFields(s))
9313	return c
9314}
9315
9316// Context sets the context to be used in this call's Do method. Any
9317// pending HTTP request will be aborted if the provided context is
9318// canceled.
9319func (c *ServicesConsumersTestIamPermissionsCall) Context(ctx context.Context) *ServicesConsumersTestIamPermissionsCall {
9320	c.ctx_ = ctx
9321	return c
9322}
9323
9324// Header returns an http.Header that can be modified by the caller to
9325// add HTTP headers to the request.
9326func (c *ServicesConsumersTestIamPermissionsCall) Header() http.Header {
9327	if c.header_ == nil {
9328		c.header_ = make(http.Header)
9329	}
9330	return c.header_
9331}
9332
9333func (c *ServicesConsumersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
9334	reqHeaders := make(http.Header)
9335	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
9336	for k, v := range c.header_ {
9337		reqHeaders[k] = v
9338	}
9339	reqHeaders.Set("User-Agent", c.s.userAgent())
9340	var body io.Reader = nil
9341	body, err := googleapi.WithoutDataWrapper.JSONReader(c.testiampermissionsrequest)
9342	if err != nil {
9343		return nil, err
9344	}
9345	reqHeaders.Set("Content-Type", "application/json")
9346	c.urlParams_.Set("alt", alt)
9347	c.urlParams_.Set("prettyPrint", "false")
9348	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:testIamPermissions")
9349	urls += "?" + c.urlParams_.Encode()
9350	req, err := http.NewRequest("POST", urls, body)
9351	if err != nil {
9352		return nil, err
9353	}
9354	req.Header = reqHeaders
9355	googleapi.Expand(req.URL, map[string]string{
9356		"resource": c.resource,
9357	})
9358	return gensupport.SendRequest(c.ctx_, c.s.client, req)
9359}
9360
9361// Do executes the "servicemanagement.services.consumers.testIamPermissions" call.
9362// Exactly one of *TestIamPermissionsResponse or error will be non-nil.
9363// Any non-2xx status code is an error. Response headers are in either
9364// *TestIamPermissionsResponse.ServerResponse.Header or (if a response
9365// was returned at all) in error.(*googleapi.Error).Header. Use
9366// googleapi.IsNotModified to check whether the returned error was
9367// because http.StatusNotModified was returned.
9368func (c *ServicesConsumersTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, error) {
9369	gensupport.SetOptions(c.urlParams_, opts...)
9370	res, err := c.doRequest("json")
9371	if res != nil && res.StatusCode == http.StatusNotModified {
9372		if res.Body != nil {
9373			res.Body.Close()
9374		}
9375		return nil, &googleapi.Error{
9376			Code:   res.StatusCode,
9377			Header: res.Header,
9378		}
9379	}
9380	if err != nil {
9381		return nil, err
9382	}
9383	defer googleapi.CloseBody(res)
9384	if err := googleapi.CheckResponse(res); err != nil {
9385		return nil, err
9386	}
9387	ret := &TestIamPermissionsResponse{
9388		ServerResponse: googleapi.ServerResponse{
9389			Header:         res.Header,
9390			HTTPStatusCode: res.StatusCode,
9391		},
9392	}
9393	target := &ret
9394	if err := gensupport.DecodeResponse(target, res); err != nil {
9395		return nil, err
9396	}
9397	return ret, nil
9398	// {
9399	//   "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.",
9400	//   "flatPath": "v1/services/{servicesId}/consumers/{consumersId}:testIamPermissions",
9401	//   "httpMethod": "POST",
9402	//   "id": "servicemanagement.services.consumers.testIamPermissions",
9403	//   "parameterOrder": [
9404	//     "resource"
9405	//   ],
9406	//   "parameters": {
9407	//     "resource": {
9408	//       "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.",
9409	//       "location": "path",
9410	//       "pattern": "^services/[^/]+/consumers/[^/]+$",
9411	//       "required": true,
9412	//       "type": "string"
9413	//     }
9414	//   },
9415	//   "path": "v1/{+resource}:testIamPermissions",
9416	//   "request": {
9417	//     "$ref": "TestIamPermissionsRequest"
9418	//   },
9419	//   "response": {
9420	//     "$ref": "TestIamPermissionsResponse"
9421	//   },
9422	//   "scopes": [
9423	//     "https://www.googleapis.com/auth/cloud-platform",
9424	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
9425	//     "https://www.googleapis.com/auth/service.management",
9426	//     "https://www.googleapis.com/auth/service.management.readonly"
9427	//   ]
9428	// }
9429
9430}
9431
9432// method id "servicemanagement.services.rollouts.create":
9433
9434type ServicesRolloutsCreateCall struct {
9435	s           *APIService
9436	serviceName string
9437	rollout     *Rollout
9438	urlParams_  gensupport.URLParams
9439	ctx_        context.Context
9440	header_     http.Header
9441}
9442
9443// Create: Creates a new service configuration rollout. Based on
9444// rollout, the
9445// Google Service Management will roll out the service configurations
9446// to
9447// different backend services. For example, the logging configuration
9448// will be
9449// pushed to Google Cloud Logging.
9450//
9451// Please note that any previous pending and running Rollouts and
9452// associated
9453// Operations will be automatically cancelled so that the latest Rollout
9454// will
9455// not be blocked by previous Rollouts.
9456//
9457// Only the 100 most recent (in any state) and the last 10 successful
9458// (if not
9459// already part of the set of 100 most recent) rollouts are kept for
9460// each
9461// service. The rest will be deleted eventually.
9462//
9463// Operation<response: Rollout>
9464func (r *ServicesRolloutsService) Create(serviceName string, rollout *Rollout) *ServicesRolloutsCreateCall {
9465	c := &ServicesRolloutsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
9466	c.serviceName = serviceName
9467	c.rollout = rollout
9468	return c
9469}
9470
9471// Fields allows partial responses to be retrieved. See
9472// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
9473// for more information.
9474func (c *ServicesRolloutsCreateCall) Fields(s ...googleapi.Field) *ServicesRolloutsCreateCall {
9475	c.urlParams_.Set("fields", googleapi.CombineFields(s))
9476	return c
9477}
9478
9479// Context sets the context to be used in this call's Do method. Any
9480// pending HTTP request will be aborted if the provided context is
9481// canceled.
9482func (c *ServicesRolloutsCreateCall) Context(ctx context.Context) *ServicesRolloutsCreateCall {
9483	c.ctx_ = ctx
9484	return c
9485}
9486
9487// Header returns an http.Header that can be modified by the caller to
9488// add HTTP headers to the request.
9489func (c *ServicesRolloutsCreateCall) Header() http.Header {
9490	if c.header_ == nil {
9491		c.header_ = make(http.Header)
9492	}
9493	return c.header_
9494}
9495
9496func (c *ServicesRolloutsCreateCall) doRequest(alt string) (*http.Response, error) {
9497	reqHeaders := make(http.Header)
9498	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
9499	for k, v := range c.header_ {
9500		reqHeaders[k] = v
9501	}
9502	reqHeaders.Set("User-Agent", c.s.userAgent())
9503	var body io.Reader = nil
9504	body, err := googleapi.WithoutDataWrapper.JSONReader(c.rollout)
9505	if err != nil {
9506		return nil, err
9507	}
9508	reqHeaders.Set("Content-Type", "application/json")
9509	c.urlParams_.Set("alt", alt)
9510	c.urlParams_.Set("prettyPrint", "false")
9511	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/rollouts")
9512	urls += "?" + c.urlParams_.Encode()
9513	req, err := http.NewRequest("POST", urls, body)
9514	if err != nil {
9515		return nil, err
9516	}
9517	req.Header = reqHeaders
9518	googleapi.Expand(req.URL, map[string]string{
9519		"serviceName": c.serviceName,
9520	})
9521	return gensupport.SendRequest(c.ctx_, c.s.client, req)
9522}
9523
9524// Do executes the "servicemanagement.services.rollouts.create" call.
9525// Exactly one of *Operation or error will be non-nil. Any non-2xx
9526// status code is an error. Response headers are in either
9527// *Operation.ServerResponse.Header or (if a response was returned at
9528// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
9529// to check whether the returned error was because
9530// http.StatusNotModified was returned.
9531func (c *ServicesRolloutsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
9532	gensupport.SetOptions(c.urlParams_, opts...)
9533	res, err := c.doRequest("json")
9534	if res != nil && res.StatusCode == http.StatusNotModified {
9535		if res.Body != nil {
9536			res.Body.Close()
9537		}
9538		return nil, &googleapi.Error{
9539			Code:   res.StatusCode,
9540			Header: res.Header,
9541		}
9542	}
9543	if err != nil {
9544		return nil, err
9545	}
9546	defer googleapi.CloseBody(res)
9547	if err := googleapi.CheckResponse(res); err != nil {
9548		return nil, err
9549	}
9550	ret := &Operation{
9551		ServerResponse: googleapi.ServerResponse{
9552			Header:         res.Header,
9553			HTTPStatusCode: res.StatusCode,
9554		},
9555	}
9556	target := &ret
9557	if err := gensupport.DecodeResponse(target, res); err != nil {
9558		return nil, err
9559	}
9560	return ret, nil
9561	// {
9562	//   "description": "Creates a new service configuration rollout. Based on rollout, the\nGoogle Service Management will roll out the service configurations to\ndifferent backend services. For example, the logging configuration will be\npushed to Google Cloud Logging.\n\nPlease note that any previous pending and running Rollouts and associated\nOperations will be automatically cancelled so that the latest Rollout will\nnot be blocked by previous Rollouts.\n\nOnly the 100 most recent (in any state) and the last 10 successful (if not\nalready part of the set of 100 most recent) rollouts are kept for each\nservice. The rest will be deleted eventually.\n\nOperation\u003cresponse: Rollout\u003e",
9563	//   "flatPath": "v1/services/{serviceName}/rollouts",
9564	//   "httpMethod": "POST",
9565	//   "id": "servicemanagement.services.rollouts.create",
9566	//   "parameterOrder": [
9567	//     "serviceName"
9568	//   ],
9569	//   "parameters": {
9570	//     "serviceName": {
9571	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
9572	//       "location": "path",
9573	//       "required": true,
9574	//       "type": "string"
9575	//     }
9576	//   },
9577	//   "path": "v1/services/{serviceName}/rollouts",
9578	//   "request": {
9579	//     "$ref": "Rollout"
9580	//   },
9581	//   "response": {
9582	//     "$ref": "Operation"
9583	//   },
9584	//   "scopes": [
9585	//     "https://www.googleapis.com/auth/cloud-platform",
9586	//     "https://www.googleapis.com/auth/service.management"
9587	//   ]
9588	// }
9589
9590}
9591
9592// method id "servicemanagement.services.rollouts.get":
9593
9594type ServicesRolloutsGetCall struct {
9595	s            *APIService
9596	serviceName  string
9597	rolloutId    string
9598	urlParams_   gensupport.URLParams
9599	ifNoneMatch_ string
9600	ctx_         context.Context
9601	header_      http.Header
9602}
9603
9604// Get: Gets a service configuration rollout.
9605func (r *ServicesRolloutsService) Get(serviceName string, rolloutId string) *ServicesRolloutsGetCall {
9606	c := &ServicesRolloutsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
9607	c.serviceName = serviceName
9608	c.rolloutId = rolloutId
9609	return c
9610}
9611
9612// Fields allows partial responses to be retrieved. See
9613// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
9614// for more information.
9615func (c *ServicesRolloutsGetCall) Fields(s ...googleapi.Field) *ServicesRolloutsGetCall {
9616	c.urlParams_.Set("fields", googleapi.CombineFields(s))
9617	return c
9618}
9619
9620// IfNoneMatch sets the optional parameter which makes the operation
9621// fail if the object's ETag matches the given value. This is useful for
9622// getting updates only after the object has changed since the last
9623// request. Use googleapi.IsNotModified to check whether the response
9624// error from Do is the result of In-None-Match.
9625func (c *ServicesRolloutsGetCall) IfNoneMatch(entityTag string) *ServicesRolloutsGetCall {
9626	c.ifNoneMatch_ = entityTag
9627	return c
9628}
9629
9630// Context sets the context to be used in this call's Do method. Any
9631// pending HTTP request will be aborted if the provided context is
9632// canceled.
9633func (c *ServicesRolloutsGetCall) Context(ctx context.Context) *ServicesRolloutsGetCall {
9634	c.ctx_ = ctx
9635	return c
9636}
9637
9638// Header returns an http.Header that can be modified by the caller to
9639// add HTTP headers to the request.
9640func (c *ServicesRolloutsGetCall) Header() http.Header {
9641	if c.header_ == nil {
9642		c.header_ = make(http.Header)
9643	}
9644	return c.header_
9645}
9646
9647func (c *ServicesRolloutsGetCall) doRequest(alt string) (*http.Response, error) {
9648	reqHeaders := make(http.Header)
9649	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
9650	for k, v := range c.header_ {
9651		reqHeaders[k] = v
9652	}
9653	reqHeaders.Set("User-Agent", c.s.userAgent())
9654	if c.ifNoneMatch_ != "" {
9655		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
9656	}
9657	var body io.Reader = nil
9658	c.urlParams_.Set("alt", alt)
9659	c.urlParams_.Set("prettyPrint", "false")
9660	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/rollouts/{rolloutId}")
9661	urls += "?" + c.urlParams_.Encode()
9662	req, err := http.NewRequest("GET", urls, body)
9663	if err != nil {
9664		return nil, err
9665	}
9666	req.Header = reqHeaders
9667	googleapi.Expand(req.URL, map[string]string{
9668		"serviceName": c.serviceName,
9669		"rolloutId":   c.rolloutId,
9670	})
9671	return gensupport.SendRequest(c.ctx_, c.s.client, req)
9672}
9673
9674// Do executes the "servicemanagement.services.rollouts.get" call.
9675// Exactly one of *Rollout or error will be non-nil. Any non-2xx status
9676// code is an error. Response headers are in either
9677// *Rollout.ServerResponse.Header or (if a response was returned at all)
9678// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
9679// check whether the returned error was because http.StatusNotModified
9680// was returned.
9681func (c *ServicesRolloutsGetCall) Do(opts ...googleapi.CallOption) (*Rollout, error) {
9682	gensupport.SetOptions(c.urlParams_, opts...)
9683	res, err := c.doRequest("json")
9684	if res != nil && res.StatusCode == http.StatusNotModified {
9685		if res.Body != nil {
9686			res.Body.Close()
9687		}
9688		return nil, &googleapi.Error{
9689			Code:   res.StatusCode,
9690			Header: res.Header,
9691		}
9692	}
9693	if err != nil {
9694		return nil, err
9695	}
9696	defer googleapi.CloseBody(res)
9697	if err := googleapi.CheckResponse(res); err != nil {
9698		return nil, err
9699	}
9700	ret := &Rollout{
9701		ServerResponse: googleapi.ServerResponse{
9702			Header:         res.Header,
9703			HTTPStatusCode: res.StatusCode,
9704		},
9705	}
9706	target := &ret
9707	if err := gensupport.DecodeResponse(target, res); err != nil {
9708		return nil, err
9709	}
9710	return ret, nil
9711	// {
9712	//   "description": "Gets a service configuration rollout.",
9713	//   "flatPath": "v1/services/{serviceName}/rollouts/{rolloutId}",
9714	//   "httpMethod": "GET",
9715	//   "id": "servicemanagement.services.rollouts.get",
9716	//   "parameterOrder": [
9717	//     "serviceName",
9718	//     "rolloutId"
9719	//   ],
9720	//   "parameters": {
9721	//     "rolloutId": {
9722	//       "description": "Required. The id of the rollout resource.",
9723	//       "location": "path",
9724	//       "required": true,
9725	//       "type": "string"
9726	//     },
9727	//     "serviceName": {
9728	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
9729	//       "location": "path",
9730	//       "required": true,
9731	//       "type": "string"
9732	//     }
9733	//   },
9734	//   "path": "v1/services/{serviceName}/rollouts/{rolloutId}",
9735	//   "response": {
9736	//     "$ref": "Rollout"
9737	//   },
9738	//   "scopes": [
9739	//     "https://www.googleapis.com/auth/cloud-platform",
9740	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
9741	//     "https://www.googleapis.com/auth/service.management",
9742	//     "https://www.googleapis.com/auth/service.management.readonly"
9743	//   ]
9744	// }
9745
9746}
9747
9748// method id "servicemanagement.services.rollouts.list":
9749
9750type ServicesRolloutsListCall struct {
9751	s            *APIService
9752	serviceName  string
9753	urlParams_   gensupport.URLParams
9754	ifNoneMatch_ string
9755	ctx_         context.Context
9756	header_      http.Header
9757}
9758
9759// List: Lists the history of the service configuration rollouts for a
9760// managed
9761// service, from the newest to the oldest.
9762func (r *ServicesRolloutsService) List(serviceName string) *ServicesRolloutsListCall {
9763	c := &ServicesRolloutsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
9764	c.serviceName = serviceName
9765	return c
9766}
9767
9768// Filter sets the optional parameter "filter": Required. Use `filter`
9769// to return subset of rollouts.
9770// The following filters are supported:
9771//   -- To limit the results to only those in
9772//      [status](google.api.servicemanagement.v1.RolloutStatus)
9773// 'SUCCESS',
9774//      use filter='status=SUCCESS'
9775//   -- To limit the results to those in
9776//      [status](google.api.servicemanagement.v1.RolloutStatus)
9777// 'CANCELLED'
9778//      or 'FAILED', use filter='status=CANCELLED OR status=FAILED'
9779func (c *ServicesRolloutsListCall) Filter(filter string) *ServicesRolloutsListCall {
9780	c.urlParams_.Set("filter", filter)
9781	return c
9782}
9783
9784// PageSize sets the optional parameter "pageSize": The max number of
9785// items to include in the response list. Page size is 50
9786// if not specified. Maximum value is 100.
9787func (c *ServicesRolloutsListCall) PageSize(pageSize int64) *ServicesRolloutsListCall {
9788	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
9789	return c
9790}
9791
9792// PageToken sets the optional parameter "pageToken": The token of the
9793// page to retrieve.
9794func (c *ServicesRolloutsListCall) PageToken(pageToken string) *ServicesRolloutsListCall {
9795	c.urlParams_.Set("pageToken", pageToken)
9796	return c
9797}
9798
9799// Fields allows partial responses to be retrieved. See
9800// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
9801// for more information.
9802func (c *ServicesRolloutsListCall) Fields(s ...googleapi.Field) *ServicesRolloutsListCall {
9803	c.urlParams_.Set("fields", googleapi.CombineFields(s))
9804	return c
9805}
9806
9807// IfNoneMatch sets the optional parameter which makes the operation
9808// fail if the object's ETag matches the given value. This is useful for
9809// getting updates only after the object has changed since the last
9810// request. Use googleapi.IsNotModified to check whether the response
9811// error from Do is the result of In-None-Match.
9812func (c *ServicesRolloutsListCall) IfNoneMatch(entityTag string) *ServicesRolloutsListCall {
9813	c.ifNoneMatch_ = entityTag
9814	return c
9815}
9816
9817// Context sets the context to be used in this call's Do method. Any
9818// pending HTTP request will be aborted if the provided context is
9819// canceled.
9820func (c *ServicesRolloutsListCall) Context(ctx context.Context) *ServicesRolloutsListCall {
9821	c.ctx_ = ctx
9822	return c
9823}
9824
9825// Header returns an http.Header that can be modified by the caller to
9826// add HTTP headers to the request.
9827func (c *ServicesRolloutsListCall) Header() http.Header {
9828	if c.header_ == nil {
9829		c.header_ = make(http.Header)
9830	}
9831	return c.header_
9832}
9833
9834func (c *ServicesRolloutsListCall) doRequest(alt string) (*http.Response, error) {
9835	reqHeaders := make(http.Header)
9836	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200302")
9837	for k, v := range c.header_ {
9838		reqHeaders[k] = v
9839	}
9840	reqHeaders.Set("User-Agent", c.s.userAgent())
9841	if c.ifNoneMatch_ != "" {
9842		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
9843	}
9844	var body io.Reader = nil
9845	c.urlParams_.Set("alt", alt)
9846	c.urlParams_.Set("prettyPrint", "false")
9847	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/rollouts")
9848	urls += "?" + c.urlParams_.Encode()
9849	req, err := http.NewRequest("GET", urls, body)
9850	if err != nil {
9851		return nil, err
9852	}
9853	req.Header = reqHeaders
9854	googleapi.Expand(req.URL, map[string]string{
9855		"serviceName": c.serviceName,
9856	})
9857	return gensupport.SendRequest(c.ctx_, c.s.client, req)
9858}
9859
9860// Do executes the "servicemanagement.services.rollouts.list" call.
9861// Exactly one of *ListServiceRolloutsResponse or error will be non-nil.
9862// Any non-2xx status code is an error. Response headers are in either
9863// *ListServiceRolloutsResponse.ServerResponse.Header or (if a response
9864// was returned at all) in error.(*googleapi.Error).Header. Use
9865// googleapi.IsNotModified to check whether the returned error was
9866// because http.StatusNotModified was returned.
9867func (c *ServicesRolloutsListCall) Do(opts ...googleapi.CallOption) (*ListServiceRolloutsResponse, error) {
9868	gensupport.SetOptions(c.urlParams_, opts...)
9869	res, err := c.doRequest("json")
9870	if res != nil && res.StatusCode == http.StatusNotModified {
9871		if res.Body != nil {
9872			res.Body.Close()
9873		}
9874		return nil, &googleapi.Error{
9875			Code:   res.StatusCode,
9876			Header: res.Header,
9877		}
9878	}
9879	if err != nil {
9880		return nil, err
9881	}
9882	defer googleapi.CloseBody(res)
9883	if err := googleapi.CheckResponse(res); err != nil {
9884		return nil, err
9885	}
9886	ret := &ListServiceRolloutsResponse{
9887		ServerResponse: googleapi.ServerResponse{
9888			Header:         res.Header,
9889			HTTPStatusCode: res.StatusCode,
9890		},
9891	}
9892	target := &ret
9893	if err := gensupport.DecodeResponse(target, res); err != nil {
9894		return nil, err
9895	}
9896	return ret, nil
9897	// {
9898	//   "description": "Lists the history of the service configuration rollouts for a managed\nservice, from the newest to the oldest.",
9899	//   "flatPath": "v1/services/{serviceName}/rollouts",
9900	//   "httpMethod": "GET",
9901	//   "id": "servicemanagement.services.rollouts.list",
9902	//   "parameterOrder": [
9903	//     "serviceName"
9904	//   ],
9905	//   "parameters": {
9906	//     "filter": {
9907	//       "description": "Required. Use `filter` to return subset of rollouts.\nThe following filters are supported:\n  -- To limit the results to only those in\n     [status](google.api.servicemanagement.v1.RolloutStatus) 'SUCCESS',\n     use filter='status=SUCCESS'\n  -- To limit the results to those in\n     [status](google.api.servicemanagement.v1.RolloutStatus) 'CANCELLED'\n     or 'FAILED', use filter='status=CANCELLED OR status=FAILED'",
9908	//       "location": "query",
9909	//       "type": "string"
9910	//     },
9911	//     "pageSize": {
9912	//       "description": "The max number of items to include in the response list. Page size is 50\nif not specified. Maximum value is 100.",
9913	//       "format": "int32",
9914	//       "location": "query",
9915	//       "type": "integer"
9916	//     },
9917	//     "pageToken": {
9918	//       "description": "The token of the page to retrieve.",
9919	//       "location": "query",
9920	//       "type": "string"
9921	//     },
9922	//     "serviceName": {
9923	//       "description": "Required. The name of the service.  See the [overview](/service-management/overview)\nfor naming requirements.  For example: `example.googleapis.com`.",
9924	//       "location": "path",
9925	//       "required": true,
9926	//       "type": "string"
9927	//     }
9928	//   },
9929	//   "path": "v1/services/{serviceName}/rollouts",
9930	//   "response": {
9931	//     "$ref": "ListServiceRolloutsResponse"
9932	//   },
9933	//   "scopes": [
9934	//     "https://www.googleapis.com/auth/cloud-platform",
9935	//     "https://www.googleapis.com/auth/cloud-platform.read-only",
9936	//     "https://www.googleapis.com/auth/service.management",
9937	//     "https://www.googleapis.com/auth/service.management.readonly"
9938	//   ]
9939	// }
9940
9941}
9942
9943// Pages invokes f for each page of results.
9944// A non-nil error returned from f will halt the iteration.
9945// The provided context supersedes any context provided to the Context method.
9946func (c *ServicesRolloutsListCall) Pages(ctx context.Context, f func(*ListServiceRolloutsResponse) error) error {
9947	c.ctx_ = ctx
9948	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
9949	for {
9950		x, err := c.Do()
9951		if err != nil {
9952			return err
9953		}
9954		if err := f(x); err != nil {
9955			return err
9956		}
9957		if x.NextPageToken == "" {
9958			return nil
9959		}
9960		c.PageToken(x.NextPageToken)
9961	}
9962}
9963