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