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