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