1// Copyright 2021 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/v1"
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/v1"
43
44import (
45	"bytes"
46	"context"
47	"encoding/json"
48	"errors"
49	"fmt"
50	"io"
51	"net/http"
52	"net/url"
53	"strconv"
54	"strings"
55
56	googleapi "google.golang.org/api/googleapi"
57	gensupport "google.golang.org/api/internal/gensupport"
58	option "google.golang.org/api/option"
59	internaloption "google.golang.org/api/option/internaloption"
60	htransport "google.golang.org/api/transport/http"
61)
62
63// Always reference these packages, just in case the auto-generated code
64// below doesn't.
65var _ = bytes.NewBuffer
66var _ = strconv.Itoa
67var _ = fmt.Sprintf
68var _ = json.NewDecoder
69var _ = io.Copy
70var _ = url.Parse
71var _ = gensupport.MarshalJSON
72var _ = googleapi.Version
73var _ = errors.New
74var _ = strings.Replace
75var _ = context.Canceled
76var _ = internaloption.WithDefaultEndpoint
77
78const apiId = "servicenetworking:v1"
79const apiName = "servicenetworking"
80const apiVersion = "v1"
81const basePath = "https://servicenetworking.googleapis.com/"
82const mtlsBasePath = "https://servicenetworking.mtls.googleapis.com/"
83
84// OAuth2 scopes used by this API.
85const (
86	// See, edit, configure, and delete your Google Cloud Platform data
87	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
88
89	// Manage your Google API service configuration
90	ServiceManagementScope = "https://www.googleapis.com/auth/service.management"
91)
92
93// NewService creates a new APIService.
94func NewService(ctx context.Context, opts ...option.ClientOption) (*APIService, error) {
95	scopesOption := option.WithScopes(
96		"https://www.googleapis.com/auth/cloud-platform",
97		"https://www.googleapis.com/auth/service.management",
98	)
99	// NOTE: prepend, so we don't override user-specified scopes.
100	opts = append([]option.ClientOption{scopesOption}, opts...)
101	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
102	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
103	client, endpoint, err := htransport.NewClient(ctx, opts...)
104	if err != nil {
105		return nil, err
106	}
107	s, err := New(client)
108	if err != nil {
109		return nil, err
110	}
111	if endpoint != "" {
112		s.BasePath = endpoint
113	}
114	return s, nil
115}
116
117// New creates a new APIService. It uses the provided http.Client for requests.
118//
119// Deprecated: please use NewService instead.
120// To provide a custom HTTP client, use option.WithHTTPClient.
121// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
122func New(client *http.Client) (*APIService, error) {
123	if client == nil {
124		return nil, errors.New("client is nil")
125	}
126	s := &APIService{client: client, BasePath: basePath}
127	s.Operations = NewOperationsService(s)
128	s.Services = NewServicesService(s)
129	return s, nil
130}
131
132type APIService struct {
133	client    *http.Client
134	BasePath  string // API endpoint base URL
135	UserAgent string // optional additional User-Agent fragment
136
137	Operations *OperationsService
138
139	Services *ServicesService
140}
141
142func (s *APIService) userAgent() string {
143	if s.UserAgent == "" {
144		return googleapi.UserAgent
145	}
146	return googleapi.UserAgent + " " + s.UserAgent
147}
148
149func NewOperationsService(s *APIService) *OperationsService {
150	rs := &OperationsService{s: s}
151	return rs
152}
153
154type OperationsService struct {
155	s *APIService
156}
157
158func NewServicesService(s *APIService) *ServicesService {
159	rs := &ServicesService{s: s}
160	rs.Connections = NewServicesConnectionsService(s)
161	rs.DnsRecordSets = NewServicesDnsRecordSetsService(s)
162	rs.DnsZones = NewServicesDnsZonesService(s)
163	rs.Projects = NewServicesProjectsService(s)
164	rs.Roles = NewServicesRolesService(s)
165	return rs
166}
167
168type ServicesService struct {
169	s *APIService
170
171	Connections *ServicesConnectionsService
172
173	DnsRecordSets *ServicesDnsRecordSetsService
174
175	DnsZones *ServicesDnsZonesService
176
177	Projects *ServicesProjectsService
178
179	Roles *ServicesRolesService
180}
181
182func NewServicesConnectionsService(s *APIService) *ServicesConnectionsService {
183	rs := &ServicesConnectionsService{s: s}
184	return rs
185}
186
187type ServicesConnectionsService struct {
188	s *APIService
189}
190
191func NewServicesDnsRecordSetsService(s *APIService) *ServicesDnsRecordSetsService {
192	rs := &ServicesDnsRecordSetsService{s: s}
193	return rs
194}
195
196type ServicesDnsRecordSetsService struct {
197	s *APIService
198}
199
200func NewServicesDnsZonesService(s *APIService) *ServicesDnsZonesService {
201	rs := &ServicesDnsZonesService{s: s}
202	return rs
203}
204
205type ServicesDnsZonesService struct {
206	s *APIService
207}
208
209func NewServicesProjectsService(s *APIService) *ServicesProjectsService {
210	rs := &ServicesProjectsService{s: s}
211	rs.Global = NewServicesProjectsGlobalService(s)
212	return rs
213}
214
215type ServicesProjectsService struct {
216	s *APIService
217
218	Global *ServicesProjectsGlobalService
219}
220
221func NewServicesProjectsGlobalService(s *APIService) *ServicesProjectsGlobalService {
222	rs := &ServicesProjectsGlobalService{s: s}
223	rs.Networks = NewServicesProjectsGlobalNetworksService(s)
224	return rs
225}
226
227type ServicesProjectsGlobalService struct {
228	s *APIService
229
230	Networks *ServicesProjectsGlobalNetworksService
231}
232
233func NewServicesProjectsGlobalNetworksService(s *APIService) *ServicesProjectsGlobalNetworksService {
234	rs := &ServicesProjectsGlobalNetworksService{s: s}
235	rs.PeeredDnsDomains = NewServicesProjectsGlobalNetworksPeeredDnsDomainsService(s)
236	return rs
237}
238
239type ServicesProjectsGlobalNetworksService struct {
240	s *APIService
241
242	PeeredDnsDomains *ServicesProjectsGlobalNetworksPeeredDnsDomainsService
243}
244
245func NewServicesProjectsGlobalNetworksPeeredDnsDomainsService(s *APIService) *ServicesProjectsGlobalNetworksPeeredDnsDomainsService {
246	rs := &ServicesProjectsGlobalNetworksPeeredDnsDomainsService{s: s}
247	return rs
248}
249
250type ServicesProjectsGlobalNetworksPeeredDnsDomainsService struct {
251	s *APIService
252}
253
254func NewServicesRolesService(s *APIService) *ServicesRolesService {
255	rs := &ServicesRolesService{s: s}
256	return rs
257}
258
259type ServicesRolesService struct {
260	s *APIService
261}
262
263// AddDnsRecordSetMetadata: Metadata provided through GetOperation
264// request for the LRO generated by AddDnsRecordSet API
265type AddDnsRecordSetMetadata struct {
266}
267
268// AddDnsRecordSetRequest: Request to add a record set to a private
269// managed DNS zone in the shared producer host project.
270type AddDnsRecordSetRequest struct {
271	// ConsumerNetwork: Required. The network that the consumer is using to
272	// connect with services. Must be in the form of
273	// projects/{project}/global/networks/{network} {project} is the project
274	// number, as in '12345' {network} is the network name.
275	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
276
277	// DnsRecordSet: Required. The DNS record set to add.
278	DnsRecordSet *DnsRecordSet `json:"dnsRecordSet,omitempty"`
279
280	// Zone: Required. The name of the private DNS zone in the shared
281	// producer host project to which the record set will be added.
282	Zone string `json:"zone,omitempty"`
283
284	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
285	// unconditionally include in API requests. By default, fields with
286	// empty values are omitted from API requests. However, any non-pointer,
287	// non-interface field appearing in ForceSendFields will be sent to the
288	// server regardless of whether the field is empty or not. This may be
289	// used to include empty fields in Patch requests.
290	ForceSendFields []string `json:"-"`
291
292	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
293	// include in API requests with the JSON null value. By default, fields
294	// with empty values are omitted from API requests. However, any field
295	// with an empty value appearing in NullFields will be sent to the
296	// server as null. It is an error if a field in this list has a
297	// non-empty value. This may be used to include null fields in Patch
298	// requests.
299	NullFields []string `json:"-"`
300}
301
302func (s *AddDnsRecordSetRequest) MarshalJSON() ([]byte, error) {
303	type NoMethod AddDnsRecordSetRequest
304	raw := NoMethod(*s)
305	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
306}
307
308// AddDnsZoneMetadata: Metadata provided through GetOperation request
309// for the LRO generated by AddDnsZone API
310type AddDnsZoneMetadata struct {
311}
312
313// AddDnsZoneRequest: Request to add a private managed DNS zone in the
314// shared producer host project and a matching DNS peering zone in the
315// consumer project.
316type AddDnsZoneRequest struct {
317	// ConsumerNetwork: Required. The network that the consumer is using to
318	// connect with services. Must be in the form of
319	// projects/{project}/global/networks/{network} {project} is the project
320	// number, as in '12345' {network} is the network name.
321	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
322
323	// DnsSuffix: Required. The DNS name suffix for the zones e.g.
324	// `example.com`.
325	DnsSuffix string `json:"dnsSuffix,omitempty"`
326
327	// Name: Required. The name for both the private zone in the shared
328	// producer host project and the peering zone in the consumer project.
329	// Must be unique within both projects. The name must be 1-63 characters
330	// long, must begin with a letter, end with a letter or digit, and only
331	// contain lowercase letters, digits or dashes.
332	Name string `json:"name,omitempty"`
333
334	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
335	// unconditionally include in API requests. By default, fields with
336	// empty values are omitted from API requests. However, any non-pointer,
337	// non-interface field appearing in ForceSendFields will be sent to the
338	// server regardless of whether the field is empty or not. This may be
339	// used to include empty fields in Patch requests.
340	ForceSendFields []string `json:"-"`
341
342	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
343	// include in API requests with the JSON null value. By default, fields
344	// with empty values are omitted from API requests. However, any field
345	// with an empty value appearing in NullFields will be sent to the
346	// server as null. It is an error if a field in this list has a
347	// non-empty value. This may be used to include null fields in Patch
348	// requests.
349	NullFields []string `json:"-"`
350}
351
352func (s *AddDnsZoneRequest) MarshalJSON() ([]byte, error) {
353	type NoMethod AddDnsZoneRequest
354	raw := NoMethod(*s)
355	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
356}
357
358// AddDnsZoneResponse: Represents managed DNS zones created in the
359// shared producer host and consumer projects.
360type AddDnsZoneResponse struct {
361	// ConsumerPeeringZone: The DNS peering zone created in the consumer
362	// project.
363	ConsumerPeeringZone *DnsZone `json:"consumerPeeringZone,omitempty"`
364
365	// ProducerPrivateZone: The private DNS zone created in the shared
366	// producer host project.
367	ProducerPrivateZone *DnsZone `json:"producerPrivateZone,omitempty"`
368
369	// ForceSendFields is a list of field names (e.g. "ConsumerPeeringZone")
370	// to unconditionally include in API requests. By default, fields with
371	// empty values are omitted from API requests. However, any non-pointer,
372	// non-interface field appearing in ForceSendFields will be sent to the
373	// server regardless of whether the field is empty or not. This may be
374	// used to include empty fields in Patch requests.
375	ForceSendFields []string `json:"-"`
376
377	// NullFields is a list of field names (e.g. "ConsumerPeeringZone") to
378	// include in API requests with the JSON null value. By default, fields
379	// with empty values are omitted from API requests. However, any field
380	// with an empty value appearing in NullFields will be sent to the
381	// server as null. It is an error if a field in this list has a
382	// non-empty value. This may be used to include null fields in Patch
383	// requests.
384	NullFields []string `json:"-"`
385}
386
387func (s *AddDnsZoneResponse) MarshalJSON() ([]byte, error) {
388	type NoMethod AddDnsZoneResponse
389	raw := NoMethod(*s)
390	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
391}
392
393// AddRolesMetadata: Metadata provided through GetOperation request for
394// the LRO generated by AddRoles API
395type AddRolesMetadata struct {
396}
397
398// AddRolesRequest: Request for AddRoles to allow Service Producers to
399// add roles in the shared VPC host project for them to use.
400type AddRolesRequest struct {
401	// ConsumerNetwork: Required. The network that the consumer is using to
402	// connect with services. Must be in the form of
403	// projects/{project}/global/networks/{network} {project} is a project
404	// number, as in '12345' {network} is a network name.
405	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
406
407	// PolicyBinding: Required. List of policy bindings to add to shared VPC
408	// host project.
409	PolicyBinding []*PolicyBinding `json:"policyBinding,omitempty"`
410
411	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
412	// unconditionally include in API requests. By default, fields with
413	// empty values are omitted from API requests. However, any non-pointer,
414	// non-interface field appearing in ForceSendFields will be sent to the
415	// server regardless of whether the field is empty or not. This may be
416	// used to include empty fields in Patch requests.
417	ForceSendFields []string `json:"-"`
418
419	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
420	// include in API requests with the JSON null value. By default, fields
421	// with empty values are omitted from API requests. However, any field
422	// with an empty value appearing in NullFields will be sent to the
423	// server as null. It is an error if a field in this list has a
424	// non-empty value. This may be used to include null fields in Patch
425	// requests.
426	NullFields []string `json:"-"`
427}
428
429func (s *AddRolesRequest) MarshalJSON() ([]byte, error) {
430	type NoMethod AddRolesRequest
431	raw := NoMethod(*s)
432	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
433}
434
435// AddRolesResponse: Represents IAM roles added to the shared VPC host
436// project.
437type AddRolesResponse struct {
438	// PolicyBinding: Required. List of policy bindings that were added to
439	// the shared VPC host project.
440	PolicyBinding []*PolicyBinding `json:"policyBinding,omitempty"`
441
442	// ForceSendFields is a list of field names (e.g. "PolicyBinding") to
443	// unconditionally include in API requests. By default, fields with
444	// empty values are omitted from API requests. However, any non-pointer,
445	// non-interface field appearing in ForceSendFields will be sent to the
446	// server regardless of whether the field is empty or not. This may be
447	// used to include empty fields in Patch requests.
448	ForceSendFields []string `json:"-"`
449
450	// NullFields is a list of field names (e.g. "PolicyBinding") to include
451	// in API requests with the JSON null value. By default, fields with
452	// empty values are omitted from API requests. However, any field with
453	// an empty value appearing in NullFields will be sent to the server as
454	// null. It is an error if a field in this list has a non-empty value.
455	// This may be used to include null fields in Patch requests.
456	NullFields []string `json:"-"`
457}
458
459func (s *AddRolesResponse) MarshalJSON() ([]byte, error) {
460	type NoMethod AddRolesResponse
461	raw := NoMethod(*s)
462	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
463}
464
465// AddSubnetworkRequest: Request to create a subnetwork in a previously
466// peered service network.
467type AddSubnetworkRequest struct {
468	// Consumer: Required. A resource that represents the service consumer,
469	// such as `projects/123456`. The project number can be different from
470	// the value in the consumer network parameter. For example, the network
471	// might be part of a Shared VPC network. In those cases, Service
472	// Networking validates that this resource belongs to that Shared VPC.
473	Consumer string `json:"consumer,omitempty"`
474
475	// ConsumerNetwork: Required. The name of the service consumer's VPC
476	// network. The network must have an existing private connection that
477	// was provisioned through the connections.create method. The name must
478	// be in the following format:
479	// `projects/{project}/global/networks/{network}`, where {project} is a
480	// project number, such as `12345`. {network} is the name of a VPC
481	// network in the project.
482	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
483
484	// Description: Optional. Description of the subnet.
485	Description string `json:"description,omitempty"`
486
487	// IpPrefixLength: Required. The prefix length of the subnet's IP
488	// address range. Use CIDR range notation, such as `30` to provision a
489	// subnet with an `x.x.x.x/30` CIDR range. The IP address range is drawn
490	// from a pool of available ranges in the service consumer's allocated
491	// range.
492	IpPrefixLength int64 `json:"ipPrefixLength,omitempty"`
493
494	// Region: Required. The name of a region (/compute/docs/regions-zones)
495	// for the subnet, such `europe-west1`.
496	Region string `json:"region,omitempty"`
497
498	// RequestedAddress: Optional. The starting address of a range. The
499	// address must be a valid IPv4 address in the x.x.x.x format. This
500	// value combined with the IP prefix range is the CIDR range for the
501	// subnet. The range must be within the allocated range that is assigned
502	// to the private connection. If the CIDR range isn't available, the
503	// call fails.
504	RequestedAddress string `json:"requestedAddress,omitempty"`
505
506	// RequestedRanges: Optional. The name of one or more allocated IP
507	// address ranges associated with this private service access
508	// connection. If no range names are provided all ranges associated with
509	// this connection will be considered. If a CIDR range with the
510	// specified IP prefix length is not available within these ranges, the
511	// call fails.
512	RequestedRanges []string `json:"requestedRanges,omitempty"`
513
514	// SecondaryIpRangeSpecs: Optional. A list of secondary IP ranges to be
515	// created within the new subnetwork.
516	SecondaryIpRangeSpecs []*SecondaryIpRangeSpec `json:"secondaryIpRangeSpecs,omitempty"`
517
518	// Subnetwork: Required. A name for the new subnet. For information
519	// about the naming requirements, see subnetwork
520	// (/compute/docs/reference/rest/v1/subnetworks) in the Compute API
521	// documentation.
522	Subnetwork string `json:"subnetwork,omitempty"`
523
524	// SubnetworkUsers: A list of members that are granted the
525	// `compute.networkUser` role on the subnet.
526	SubnetworkUsers []string `json:"subnetworkUsers,omitempty"`
527
528	// ForceSendFields is a list of field names (e.g. "Consumer") to
529	// unconditionally include in API requests. By default, fields with
530	// empty values are omitted from API requests. However, any non-pointer,
531	// non-interface field appearing in ForceSendFields will be sent to the
532	// server regardless of whether the field is empty or not. This may be
533	// used to include empty fields in Patch requests.
534	ForceSendFields []string `json:"-"`
535
536	// NullFields is a list of field names (e.g. "Consumer") to include in
537	// API requests with the JSON null value. By default, fields with empty
538	// values are omitted from API requests. However, any field with an
539	// empty value appearing in NullFields will be sent to the server as
540	// null. It is an error if a field in this list has a non-empty value.
541	// This may be used to include null fields in Patch requests.
542	NullFields []string `json:"-"`
543}
544
545func (s *AddSubnetworkRequest) MarshalJSON() ([]byte, error) {
546	type NoMethod AddSubnetworkRequest
547	raw := NoMethod(*s)
548	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
549}
550
551// Api: Api is a light-weight descriptor for an API Interface.
552// Interfaces are also described as "protocol buffer services" in some
553// contexts, such as by the "service" keyword in a .proto file, but they
554// are different from API Services, which represent a concrete
555// implementation of an interface as opposed to simply a description of
556// methods and bindings. They are also sometimes simply referred to as
557// "APIs" in other contexts, such as the name of this message itself.
558// See https://cloud.google.com/apis/design/glossary for detailed
559// terminology.
560type Api struct {
561	// Methods: The methods of this interface, in unspecified order.
562	Methods []*Method `json:"methods,omitempty"`
563
564	// Mixins: Included interfaces. See Mixin.
565	Mixins []*Mixin `json:"mixins,omitempty"`
566
567	// Name: The fully qualified name of this interface, including package
568	// name followed by the interface's simple name.
569	Name string `json:"name,omitempty"`
570
571	// Options: Any metadata attached to the interface.
572	Options []*Option `json:"options,omitempty"`
573
574	// SourceContext: Source context for the protocol buffer service
575	// represented by this message.
576	SourceContext *SourceContext `json:"sourceContext,omitempty"`
577
578	// Syntax: The source syntax of the service.
579	//
580	// Possible values:
581	//   "SYNTAX_PROTO2" - Syntax `proto2`.
582	//   "SYNTAX_PROTO3" - Syntax `proto3`.
583	Syntax string `json:"syntax,omitempty"`
584
585	// Version: A version string for this interface. If specified, must have
586	// the form `major-version.minor-version`, as in `1.10`. If the minor
587	// version is omitted, it defaults to zero. If the entire version field
588	// is empty, the major version is derived from the package name, as
589	// outlined below. If the field is not empty, the version in the package
590	// name will be verified to be consistent with what is provided here.
591	// The versioning schema uses semantic versioning (http://semver.org)
592	// where the major version number indicates a breaking change and the
593	// minor version an additive, non-breaking change. Both version numbers
594	// are signals to users what to expect from different versions, and
595	// should be carefully chosen based on the product plan. The major
596	// version is also reflected in the package name of the interface, which
597	// must end in `v`, as in `google.feature.v1`. For major versions 0 and
598	// 1, the suffix can be omitted. Zero major versions must only be used
599	// for experimental, non-GA interfaces.
600	Version string `json:"version,omitempty"`
601
602	// ForceSendFields is a list of field names (e.g. "Methods") to
603	// unconditionally include in API requests. By default, fields with
604	// empty values are omitted from API requests. However, any non-pointer,
605	// non-interface field appearing in ForceSendFields will be sent to the
606	// server regardless of whether the field is empty or not. This may be
607	// used to include empty fields in Patch requests.
608	ForceSendFields []string `json:"-"`
609
610	// NullFields is a list of field names (e.g. "Methods") to include in
611	// API requests with the JSON null value. By default, fields with empty
612	// values are omitted from API requests. However, any field with an
613	// empty value appearing in NullFields will be sent to the server as
614	// null. It is an error if a field in this list has a non-empty value.
615	// This may be used to include null fields in Patch requests.
616	NullFields []string `json:"-"`
617}
618
619func (s *Api) MarshalJSON() ([]byte, error) {
620	type NoMethod Api
621	raw := NoMethod(*s)
622	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
623}
624
625// AuthProvider: Configuration for an authentication provider, including
626// support for JSON Web Token (JWT)
627// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
628type AuthProvider struct {
629	// Audiences: The list of JWT audiences
630	// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
631	// that are allowed to access. A JWT containing any of these audiences
632	// will be accepted. When this setting is absent, JWTs with audiences: -
633	// "https://[service.name]/[google.protobuf.Api.name]" -
634	// "https://[service.name]/" will be accepted. For example, if no
635	// audiences are in the setting, LibraryService API will accept JWTs
636	// with the following audiences: -
637	// https://library-example.googleapis.com/google.example.library.v1.LibraryService
638	// - https://library-example.googleapis.com/ Example: audiences:
639	// bookstore_android.apps.googleusercontent.com,
640	// bookstore_web.apps.googleusercontent.com
641	Audiences string `json:"audiences,omitempty"`
642
643	// AuthorizationUrl: Redirect URL if JWT token is required but not
644	// present or is expired. Implement authorizationUrl of
645	// securityDefinitions in OpenAPI spec.
646	AuthorizationUrl string `json:"authorizationUrl,omitempty"`
647
648	// Id: The unique identifier of the auth provider. It will be referred
649	// to by `AuthRequirement.provider_id`. Example: "bookstore_auth".
650	Id string `json:"id,omitempty"`
651
652	// Issuer: Identifies the principal that issued the JWT. See
653	// https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
654	// Usually a URL or an email address. Example:
655	// https://securetoken.google.com Example:
656	// 1234567-compute@developer.gserviceaccount.com
657	Issuer string `json:"issuer,omitempty"`
658
659	// JwksUri: URL of the provider's public key set to validate signature
660	// of the JWT. See OpenID Discovery
661	// (https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
662	// Optional if the key set document: - can be retrieved from OpenID
663	// Discovery
664	// (https://openid.net/specs/openid-connect-discovery-1_0.html) of the
665	// issuer. - can be inferred from the email domain of the issuer (e.g. a
666	// Google service account). Example:
667	// https://www.googleapis.com/oauth2/v1/certs
668	JwksUri string `json:"jwksUri,omitempty"`
669
670	// JwtLocations: Defines the locations to extract the JWT. JWT locations
671	// can be either from HTTP headers or URL query parameters. The rule is
672	// that the first match wins. The checking order is: checking all
673	// headers first, then URL query parameters. If not specified, default
674	// to use following 3 locations: 1) Authorization: Bearer 2)
675	// x-goog-iap-jwt-assertion 3) access_token query parameter Default
676	// locations can be specified as followings: jwt_locations: - header:
677	// Authorization value_prefix: "Bearer " - header:
678	// x-goog-iap-jwt-assertion - query: access_token
679	JwtLocations []*JwtLocation `json:"jwtLocations,omitempty"`
680
681	// ForceSendFields is a list of field names (e.g. "Audiences") to
682	// unconditionally include in API requests. By default, fields with
683	// empty values are omitted from API requests. However, any non-pointer,
684	// non-interface field appearing in ForceSendFields will be sent to the
685	// server regardless of whether the field is empty or not. This may be
686	// used to include empty fields in Patch requests.
687	ForceSendFields []string `json:"-"`
688
689	// NullFields is a list of field names (e.g. "Audiences") to include in
690	// API requests with the JSON null value. By default, fields with empty
691	// values are omitted from API requests. However, any field with an
692	// empty value appearing in NullFields will be sent to the server as
693	// null. It is an error if a field in this list has a non-empty value.
694	// This may be used to include null fields in Patch requests.
695	NullFields []string `json:"-"`
696}
697
698func (s *AuthProvider) MarshalJSON() ([]byte, error) {
699	type NoMethod AuthProvider
700	raw := NoMethod(*s)
701	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
702}
703
704// AuthRequirement: User-defined authentication requirements, including
705// support for JSON Web Token (JWT)
706// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
707type AuthRequirement struct {
708	// Audiences: NOTE: This will be deprecated soon, once
709	// AuthProvider.audiences is implemented and accepted in all the runtime
710	// components. The list of JWT audiences
711	// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
712	// that are allowed to access. A JWT containing any of these audiences
713	// will be accepted. When this setting is absent, only JWTs with
714	// audience "https://Service_name/API_name" will be accepted. For
715	// example, if no audiences are in the setting, LibraryService API will
716	// only accept JWTs with the following audience
717	// "https://library-example.googleapis.com/google.example.library.v1.Libr
718	// aryService". Example: audiences:
719	// bookstore_android.apps.googleusercontent.com,
720	// bookstore_web.apps.googleusercontent.com
721	Audiences string `json:"audiences,omitempty"`
722
723	// ProviderId: id from authentication provider. Example: provider_id:
724	// bookstore_auth
725	ProviderId string `json:"providerId,omitempty"`
726
727	// ForceSendFields is a list of field names (e.g. "Audiences") to
728	// unconditionally include in API requests. By default, fields with
729	// empty values are omitted from API requests. However, any non-pointer,
730	// non-interface field appearing in ForceSendFields will be sent to the
731	// server regardless of whether the field is empty or not. This may be
732	// used to include empty fields in Patch requests.
733	ForceSendFields []string `json:"-"`
734
735	// NullFields is a list of field names (e.g. "Audiences") to include in
736	// API requests with the JSON null value. By default, fields with empty
737	// values are omitted from API requests. However, any field with an
738	// empty value appearing in NullFields will be sent to the server as
739	// null. It is an error if a field in this list has a non-empty value.
740	// This may be used to include null fields in Patch requests.
741	NullFields []string `json:"-"`
742}
743
744func (s *AuthRequirement) MarshalJSON() ([]byte, error) {
745	type NoMethod AuthRequirement
746	raw := NoMethod(*s)
747	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
748}
749
750// Authentication: `Authentication` defines the authentication
751// configuration for an API. Example for an API targeted for external
752// use: name: calendar.googleapis.com authentication: providers: - id:
753// google_calendar_auth jwks_uri:
754// https://www.googleapis.com/oauth2/v1/certs issuer:
755// https://securetoken.google.com rules: - selector: "*" requirements:
756// provider_id: google_calendar_auth
757type Authentication struct {
758	// Providers: Defines a set of authentication providers that a service
759	// supports.
760	Providers []*AuthProvider `json:"providers,omitempty"`
761
762	// Rules: A list of authentication rules that apply to individual API
763	// methods. **NOTE:** All service configuration rules follow "last one
764	// wins" order.
765	Rules []*AuthenticationRule `json:"rules,omitempty"`
766
767	// ForceSendFields is a list of field names (e.g. "Providers") to
768	// unconditionally include in API requests. By default, fields with
769	// empty values are omitted from API requests. However, any non-pointer,
770	// non-interface field appearing in ForceSendFields will be sent to the
771	// server regardless of whether the field is empty or not. This may be
772	// used to include empty fields in Patch requests.
773	ForceSendFields []string `json:"-"`
774
775	// NullFields is a list of field names (e.g. "Providers") to include in
776	// API requests with the JSON null value. By default, fields with empty
777	// values are omitted from API requests. However, any field with an
778	// empty value appearing in NullFields will be sent to the server as
779	// null. It is an error if a field in this list has a non-empty value.
780	// This may be used to include null fields in Patch requests.
781	NullFields []string `json:"-"`
782}
783
784func (s *Authentication) MarshalJSON() ([]byte, error) {
785	type NoMethod Authentication
786	raw := NoMethod(*s)
787	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
788}
789
790// AuthenticationRule: Authentication rules for the service. By default,
791// if a method has any authentication requirements, every request must
792// include a valid credential matching one of the requirements. It's an
793// error to include more than one kind of credential in a single
794// request. If a method doesn't have any auth requirements, request
795// credentials will be ignored.
796type AuthenticationRule struct {
797	// AllowWithoutCredential: If true, the service accepts API keys without
798	// any other credential. This flag only applies to HTTP and gRPC
799	// requests.
800	AllowWithoutCredential bool `json:"allowWithoutCredential,omitempty"`
801
802	// Oauth: The requirements for OAuth credentials.
803	Oauth *OAuthRequirements `json:"oauth,omitempty"`
804
805	// Requirements: Requirements for additional authentication providers.
806	Requirements []*AuthRequirement `json:"requirements,omitempty"`
807
808	// Selector: Selects the methods to which this rule applies. Refer to
809	// selector for syntax details.
810	Selector string `json:"selector,omitempty"`
811
812	// ForceSendFields is a list of field names (e.g.
813	// "AllowWithoutCredential") to unconditionally include in API requests.
814	// By default, fields with empty values are omitted from API requests.
815	// However, any non-pointer, non-interface field appearing in
816	// ForceSendFields will be sent to the server regardless of whether the
817	// field is empty or not. This may be used to include empty fields in
818	// Patch requests.
819	ForceSendFields []string `json:"-"`
820
821	// NullFields is a list of field names (e.g. "AllowWithoutCredential")
822	// to include in API requests with the JSON null value. By default,
823	// fields with empty values are omitted from API requests. However, any
824	// field with an empty value appearing in NullFields will be sent to the
825	// server as null. It is an error if a field in this list has a
826	// non-empty value. This may be used to include null fields in Patch
827	// requests.
828	NullFields []string `json:"-"`
829}
830
831func (s *AuthenticationRule) MarshalJSON() ([]byte, error) {
832	type NoMethod AuthenticationRule
833	raw := NoMethod(*s)
834	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
835}
836
837// Backend: `Backend` defines the backend configuration for a service.
838type Backend struct {
839	// Rules: A list of API backend rules that apply to individual API
840	// methods. **NOTE:** All service configuration rules follow "last one
841	// wins" order.
842	Rules []*BackendRule `json:"rules,omitempty"`
843
844	// ForceSendFields is a list of field names (e.g. "Rules") to
845	// unconditionally include in API requests. By default, fields with
846	// empty values are omitted from API requests. However, any non-pointer,
847	// non-interface field appearing in ForceSendFields will be sent to the
848	// server regardless of whether the field is empty or not. This may be
849	// used to include empty fields in Patch requests.
850	ForceSendFields []string `json:"-"`
851
852	// NullFields is a list of field names (e.g. "Rules") to include in API
853	// requests with the JSON null value. By default, fields with empty
854	// values are omitted from API requests. However, any field with an
855	// empty value appearing in NullFields will be sent to the server as
856	// null. It is an error if a field in this list has a non-empty value.
857	// This may be used to include null fields in Patch requests.
858	NullFields []string `json:"-"`
859}
860
861func (s *Backend) MarshalJSON() ([]byte, error) {
862	type NoMethod Backend
863	raw := NoMethod(*s)
864	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
865}
866
867// BackendRule: A backend rule provides configuration for an individual
868// API element.
869type BackendRule struct {
870	// Address: The address of the API backend. The scheme is used to
871	// determine the backend protocol and security. The following schemes
872	// are accepted: SCHEME PROTOCOL SECURITY http:// HTTP None https://
873	// HTTP TLS grpc:// gRPC None grpcs:// gRPC TLS It is recommended to
874	// explicitly include a scheme. Leaving out the scheme may cause
875	// constrasting behaviors across platforms. If the port is unspecified,
876	// the default is: - 80 for schemes without TLS - 443 for schemes with
877	// TLS For HTTP backends, use protocol to specify the protocol version.
878	Address string `json:"address,omitempty"`
879
880	// Deadline: The number of seconds to wait for a response from a
881	// request. The default varies based on the request protocol and
882	// deployment environment.
883	Deadline float64 `json:"deadline,omitempty"`
884
885	// DisableAuth: When disable_auth is true, a JWT ID token won't be
886	// generated and the original "Authorization" HTTP header will be
887	// preserved. If the header is used to carry the original token and is
888	// expected by the backend, this field must be set to true to preserve
889	// the header.
890	DisableAuth bool `json:"disableAuth,omitempty"`
891
892	// JwtAudience: The JWT audience is used when generating a JWT ID token
893	// for the backend. This ID token will be added in the HTTP
894	// "authorization" header, and sent to the backend.
895	JwtAudience string `json:"jwtAudience,omitempty"`
896
897	// MinDeadline: Minimum deadline in seconds needed for this method.
898	// Calls having deadline value lower than this will be rejected.
899	MinDeadline float64 `json:"minDeadline,omitempty"`
900
901	// OperationDeadline: The number of seconds to wait for the completion
902	// of a long running operation. The default is no deadline.
903	OperationDeadline float64 `json:"operationDeadline,omitempty"`
904
905	// Possible values:
906	//   "PATH_TRANSLATION_UNSPECIFIED"
907	//   "CONSTANT_ADDRESS" - Use the backend address as-is, with no
908	// modification to the path. If the URL pattern contains variables, the
909	// variable names and values will be appended to the query string. If a
910	// query string parameter and a URL pattern variable have the same name,
911	// this may result in duplicate keys in the query string. # Examples
912	// Given the following operation config: Method path:
913	// /api/company/{cid}/user/{uid} Backend address:
914	// https://example.cloudfunctions.net/getUser Requests to the following
915	// request paths will call the backend at the translated path: Request
916	// path: /api/company/widgetworks/user/johndoe Translated:
917	// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
918	// Request path: /api/company/widgetworks/user/johndoe?timezone=EST
919	// Translated:
920	// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
921	//   "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the
922	// backend address. # Examples Given the following operation config:
923	// Method path: /api/company/{cid}/user/{uid} Backend address:
924	// https://example.appspot.com Requests to the following request paths
925	// will call the backend at the translated path: Request path:
926	// /api/company/widgetworks/user/johndoe Translated:
927	// https://example.appspot.com/api/company/widgetworks/user/johndoe
928	// Request path: /api/company/widgetworks/user/johndoe?timezone=EST
929	// Translated:
930	// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
931	PathTranslation string `json:"pathTranslation,omitempty"`
932
933	// Protocol: The protocol used for sending a request to the backend. The
934	// supported values are "http/1.1" and "h2". The default value is
935	// inferred from the scheme in the address field: SCHEME PROTOCOL
936	// http:// http/1.1 https:// http/1.1 grpc:// h2 grpcs:// h2 For secure
937	// HTTP backends (https://) that support HTTP/2, set this field to "h2"
938	// for improved performance. Configuring this field to non-default
939	// values is only supported for secure HTTP backends. This field will be
940	// ignored for all other backends. See
941	// https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
942	// for more details on the supported values.
943	Protocol string `json:"protocol,omitempty"`
944
945	// Selector: Selects the methods to which this rule applies. Refer to
946	// selector for syntax details.
947	Selector string `json:"selector,omitempty"`
948
949	// ForceSendFields is a list of field names (e.g. "Address") to
950	// unconditionally include in API requests. By default, fields with
951	// empty values are omitted from API requests. However, any non-pointer,
952	// non-interface field appearing in ForceSendFields will be sent to the
953	// server regardless of whether the field is empty or not. This may be
954	// used to include empty fields in Patch requests.
955	ForceSendFields []string `json:"-"`
956
957	// NullFields is a list of field names (e.g. "Address") to include in
958	// API requests with the JSON null value. By default, fields with empty
959	// values are omitted from API requests. However, any field with an
960	// empty value appearing in NullFields will be sent to the server as
961	// null. It is an error if a field in this list has a non-empty value.
962	// This may be used to include null fields in Patch requests.
963	NullFields []string `json:"-"`
964}
965
966func (s *BackendRule) MarshalJSON() ([]byte, error) {
967	type NoMethod BackendRule
968	raw := NoMethod(*s)
969	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
970}
971
972func (s *BackendRule) UnmarshalJSON(data []byte) error {
973	type NoMethod BackendRule
974	var s1 struct {
975		Deadline          gensupport.JSONFloat64 `json:"deadline"`
976		MinDeadline       gensupport.JSONFloat64 `json:"minDeadline"`
977		OperationDeadline gensupport.JSONFloat64 `json:"operationDeadline"`
978		*NoMethod
979	}
980	s1.NoMethod = (*NoMethod)(s)
981	if err := json.Unmarshal(data, &s1); err != nil {
982		return err
983	}
984	s.Deadline = float64(s1.Deadline)
985	s.MinDeadline = float64(s1.MinDeadline)
986	s.OperationDeadline = float64(s1.OperationDeadline)
987	return nil
988}
989
990// Billing: Billing related configuration of the service. The following
991// example shows how to configure monitored resources and metrics for
992// billing, `consumer_destinations` is the only supported destination
993// and the monitored resources need at least one label key
994// `cloud.googleapis.com/location` to indicate the location of the
995// billing usage, using different monitored resources between monitoring
996// and billing is recommended so they can be evolved independently:
997// monitored_resources: - type: library.googleapis.com/billing_branch
998// labels: - key: cloud.googleapis.com/location description: |
999// Predefined label to support billing location restriction. - key: city
1000// description: | Custom label to define the city where the library
1001// branch is located in. - key: name description: Custom label to define
1002// the name of the library branch. metrics: - name:
1003// library.googleapis.com/book/borrowed_count metric_kind: DELTA
1004// value_type: INT64 unit: "1" billing: consumer_destinations: -
1005// monitored_resource: library.googleapis.com/billing_branch metrics: -
1006// library.googleapis.com/book/borrowed_count
1007type Billing struct {
1008	// ConsumerDestinations: Billing configurations for sending metrics to
1009	// the consumer project. There can be multiple consumer destinations per
1010	// service, each one must have a different monitored resource type. A
1011	// metric can be used in at most one consumer destination.
1012	ConsumerDestinations []*BillingDestination `json:"consumerDestinations,omitempty"`
1013
1014	// ForceSendFields is a list of field names (e.g.
1015	// "ConsumerDestinations") to unconditionally include in API requests.
1016	// By default, fields with empty values are omitted from API requests.
1017	// However, any non-pointer, non-interface field appearing in
1018	// ForceSendFields will be sent to the server regardless of whether the
1019	// field is empty or not. This may be used to include empty fields in
1020	// Patch requests.
1021	ForceSendFields []string `json:"-"`
1022
1023	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
1024	// include in API requests with the JSON null value. By default, fields
1025	// with empty values are omitted from API requests. However, any field
1026	// with an empty value appearing in NullFields will be sent to the
1027	// server as null. It is an error if a field in this list has a
1028	// non-empty value. This may be used to include null fields in Patch
1029	// requests.
1030	NullFields []string `json:"-"`
1031}
1032
1033func (s *Billing) MarshalJSON() ([]byte, error) {
1034	type NoMethod Billing
1035	raw := NoMethod(*s)
1036	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1037}
1038
1039// BillingDestination: Configuration of a specific billing destination
1040// (Currently only support bill against consumer project).
1041type BillingDestination struct {
1042	// Metrics: Names of the metrics to report to this billing destination.
1043	// Each name must be defined in Service.metrics section.
1044	Metrics []string `json:"metrics,omitempty"`
1045
1046	// MonitoredResource: The monitored resource type. The type must be
1047	// defined in Service.monitored_resources section.
1048	MonitoredResource string `json:"monitoredResource,omitempty"`
1049
1050	// ForceSendFields is a list of field names (e.g. "Metrics") to
1051	// unconditionally include in API requests. By default, fields with
1052	// empty values are omitted from API requests. However, any non-pointer,
1053	// non-interface field appearing in ForceSendFields will be sent to the
1054	// server regardless of whether the field is empty or not. This may be
1055	// used to include empty fields in Patch requests.
1056	ForceSendFields []string `json:"-"`
1057
1058	// NullFields is a list of field names (e.g. "Metrics") to include in
1059	// API requests with the JSON null value. By default, fields with empty
1060	// values are omitted from API requests. However, any field with an
1061	// empty value appearing in NullFields will be sent to the server as
1062	// null. It is an error if a field in this list has a non-empty value.
1063	// This may be used to include null fields in Patch requests.
1064	NullFields []string `json:"-"`
1065}
1066
1067func (s *BillingDestination) MarshalJSON() ([]byte, error) {
1068	type NoMethod BillingDestination
1069	raw := NoMethod(*s)
1070	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1071}
1072
1073// CancelOperationRequest: The request message for
1074// Operations.CancelOperation.
1075type CancelOperationRequest struct {
1076}
1077
1078// Connection: Represents a private connection resource. A private
1079// connection is implemented as a VPC Network Peering connection between
1080// a service producer's VPC network and a service consumer's VPC
1081// network.
1082type Connection struct {
1083	// Network: The name of service consumer's VPC network that's connected
1084	// with service producer network, in the following format:
1085	// `projects/{project}/global/networks/{network}`. `{project}` is a
1086	// project number, such as in `12345` that includes the VPC service
1087	// consumer's VPC network. `{network}` is the name of the service
1088	// consumer's VPC network.
1089	Network string `json:"network,omitempty"`
1090
1091	// Peering: Output only. The name of the VPC Network Peering connection
1092	// that was created by the service producer.
1093	Peering string `json:"peering,omitempty"`
1094
1095	// ReservedPeeringRanges: The name of one or more allocated IP address
1096	// ranges for this service producer of type `PEERING`. Note that
1097	// invoking CreateConnection method with a different range when
1098	// connection is already established will not modify already provisioned
1099	// service producer subnetworks. If CreateConnection method is invoked
1100	// repeatedly to reconnect when peering connection had been disconnected
1101	// on the consumer side, leaving this field empty will restore
1102	// previously allocated IP ranges.
1103	ReservedPeeringRanges []string `json:"reservedPeeringRanges,omitempty"`
1104
1105	// Service: Output only. The name of the peering service that's
1106	// associated with this connection, in the following format:
1107	// `services/{service name}`.
1108	Service string `json:"service,omitempty"`
1109
1110	// ForceSendFields is a list of field names (e.g. "Network") to
1111	// unconditionally include in API requests. By default, fields with
1112	// empty values are omitted from API requests. However, any non-pointer,
1113	// non-interface field appearing in ForceSendFields will be sent to the
1114	// server regardless of whether the field is empty or not. This may be
1115	// used to include empty fields in Patch requests.
1116	ForceSendFields []string `json:"-"`
1117
1118	// NullFields is a list of field names (e.g. "Network") to include in
1119	// API requests with the JSON null value. By default, fields with empty
1120	// values are omitted from API requests. However, any field with an
1121	// empty value appearing in NullFields will be sent to the server as
1122	// null. It is an error if a field in this list has a non-empty value.
1123	// This may be used to include null fields in Patch requests.
1124	NullFields []string `json:"-"`
1125}
1126
1127func (s *Connection) MarshalJSON() ([]byte, error) {
1128	type NoMethod Connection
1129	raw := NoMethod(*s)
1130	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1131}
1132
1133// ConsumerConfig: Configuration information for a private service
1134// access connection.
1135type ConsumerConfig struct {
1136	// ConsumerExportCustomRoutes: Export custom routes flag value for
1137	// peering from consumer to producer.
1138	ConsumerExportCustomRoutes bool `json:"consumerExportCustomRoutes,omitempty"`
1139
1140	// ConsumerExportSubnetRoutesWithPublicIp: Export subnet routes with
1141	// public ip flag value for peering from consumer to producer.
1142	ConsumerExportSubnetRoutesWithPublicIp bool `json:"consumerExportSubnetRoutesWithPublicIp,omitempty"`
1143
1144	// ConsumerImportCustomRoutes: Import custom routes flag value for
1145	// peering from consumer to producer.
1146	ConsumerImportCustomRoutes bool `json:"consumerImportCustomRoutes,omitempty"`
1147
1148	// ConsumerImportSubnetRoutesWithPublicIp: Import subnet routes with
1149	// public ip flag value for peering from consumer to producer.
1150	ConsumerImportSubnetRoutesWithPublicIp bool `json:"consumerImportSubnetRoutesWithPublicIp,omitempty"`
1151
1152	// ProducerExportCustomRoutes: Export custom routes flag value for
1153	// peering from producer to consumer.
1154	ProducerExportCustomRoutes bool `json:"producerExportCustomRoutes,omitempty"`
1155
1156	// ProducerExportSubnetRoutesWithPublicIp: Export subnet routes with
1157	// public ip flag value for peering from producer to consumer.
1158	ProducerExportSubnetRoutesWithPublicIp bool `json:"producerExportSubnetRoutesWithPublicIp,omitempty"`
1159
1160	// ProducerImportCustomRoutes: Import custom routes flag value for
1161	// peering from producer to consumer.
1162	ProducerImportCustomRoutes bool `json:"producerImportCustomRoutes,omitempty"`
1163
1164	// ProducerImportSubnetRoutesWithPublicIp: Import subnet routes with
1165	// public ip flag value for peering from producer to consumer.
1166	ProducerImportSubnetRoutesWithPublicIp bool `json:"producerImportSubnetRoutesWithPublicIp,omitempty"`
1167
1168	// ProducerNetwork: Output only. The VPC host network that is used to
1169	// host managed service instances. In the format,
1170	// projects/{project}/global/networks/{network} where {project} is the
1171	// project number e.g. '12345' and {network} is the network name.
1172	ProducerNetwork string `json:"producerNetwork,omitempty"`
1173
1174	// ReservedRanges: Output only. The reserved ranges associated with this
1175	// private service access connection.
1176	ReservedRanges []*GoogleCloudServicenetworkingV1ConsumerConfigReservedRange `json:"reservedRanges,omitempty"`
1177
1178	// VpcScReferenceArchitectureEnabled: Output only. Indicates whether the
1179	// VPC Service Controls reference architecture is configured for the
1180	// producer VPC host network.
1181	VpcScReferenceArchitectureEnabled bool `json:"vpcScReferenceArchitectureEnabled,omitempty"`
1182
1183	// ServerResponse contains the HTTP response code and headers from the
1184	// server.
1185	googleapi.ServerResponse `json:"-"`
1186
1187	// ForceSendFields is a list of field names (e.g.
1188	// "ConsumerExportCustomRoutes") to unconditionally include in API
1189	// requests. By default, fields with empty values are omitted from API
1190	// requests. However, any non-pointer, non-interface field appearing in
1191	// ForceSendFields will be sent to the server regardless of whether the
1192	// field is empty or not. This may be used to include empty fields in
1193	// Patch requests.
1194	ForceSendFields []string `json:"-"`
1195
1196	// NullFields is a list of field names (e.g.
1197	// "ConsumerExportCustomRoutes") to include in API requests with the
1198	// JSON null value. By default, fields with empty values are omitted
1199	// from API requests. However, any field with an empty value appearing
1200	// in NullFields will be sent to the server as null. It is an error if a
1201	// field in this list has a non-empty value. This may be used to include
1202	// null fields in Patch requests.
1203	NullFields []string `json:"-"`
1204}
1205
1206func (s *ConsumerConfig) MarshalJSON() ([]byte, error) {
1207	type NoMethod ConsumerConfig
1208	raw := NoMethod(*s)
1209	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1210}
1211
1212// ConsumerConfigMetadata: Metadata provided through GetOperation
1213// request for the LRO generated by UpdateConsumerConfig API.
1214type ConsumerConfigMetadata struct {
1215}
1216
1217// ConsumerProject: Represents a consumer project.
1218type ConsumerProject struct {
1219	// ProjectNum: Required. Project number of the consumer that is
1220	// launching the service instance. It can own the network that is peered
1221	// with Google or, be a service project in an XPN where the host project
1222	// has the network.
1223	ProjectNum int64 `json:"projectNum,omitempty,string"`
1224
1225	// ForceSendFields is a list of field names (e.g. "ProjectNum") to
1226	// unconditionally include in API requests. By default, fields with
1227	// empty values are omitted from API requests. However, any non-pointer,
1228	// non-interface field appearing in ForceSendFields will be sent to the
1229	// server regardless of whether the field is empty or not. This may be
1230	// used to include empty fields in Patch requests.
1231	ForceSendFields []string `json:"-"`
1232
1233	// NullFields is a list of field names (e.g. "ProjectNum") to include in
1234	// API requests with the JSON null value. By default, fields with empty
1235	// values are omitted from API requests. However, any field with an
1236	// empty value appearing in NullFields will be sent to the server as
1237	// null. It is an error if a field in this list has a non-empty value.
1238	// This may be used to include null fields in Patch requests.
1239	NullFields []string `json:"-"`
1240}
1241
1242func (s *ConsumerProject) MarshalJSON() ([]byte, error) {
1243	type NoMethod ConsumerProject
1244	raw := NoMethod(*s)
1245	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1246}
1247
1248// Context: `Context` defines which contexts an API requests. Example:
1249// context: rules: - selector: "*" requested: -
1250// google.rpc.context.ProjectContext - google.rpc.context.OriginContext
1251// The above specifies that all methods in the API request
1252// `google.rpc.context.ProjectContext` and
1253// `google.rpc.context.OriginContext`. Available context types are
1254// defined in package `google.rpc.context`. This also provides mechanism
1255// to allowlist any protobuf message extension that can be sent in grpc
1256// metadata using “x-goog-ext--bin” and “x-goog-ext--jspb”
1257// format. For example, list any service specific protobuf types that
1258// can appear in grpc metadata as follows in your yaml file: Example:
1259// context: rules: - selector:
1260// "google.example.library.v1.LibraryService.CreateBook"
1261// allowed_request_extensions: - google.foo.v1.NewExtension
1262// allowed_response_extensions: - google.foo.v1.NewExtension You can
1263// also specify extension ID instead of fully qualified extension name
1264// here.
1265type Context struct {
1266	// Rules: A list of RPC context rules that apply to individual API
1267	// methods. **NOTE:** All service configuration rules follow "last one
1268	// wins" order.
1269	Rules []*ContextRule `json:"rules,omitempty"`
1270
1271	// ForceSendFields is a list of field names (e.g. "Rules") to
1272	// unconditionally include in API requests. By default, fields with
1273	// empty values are omitted from API requests. However, any non-pointer,
1274	// non-interface field appearing in ForceSendFields will be sent to the
1275	// server regardless of whether the field is empty or not. This may be
1276	// used to include empty fields in Patch requests.
1277	ForceSendFields []string `json:"-"`
1278
1279	// NullFields is a list of field names (e.g. "Rules") to include in API
1280	// requests with the JSON null value. By default, fields with empty
1281	// values are omitted from API requests. However, any field with an
1282	// empty value appearing in NullFields will be sent to the server as
1283	// null. It is an error if a field in this list has a non-empty value.
1284	// This may be used to include null fields in Patch requests.
1285	NullFields []string `json:"-"`
1286}
1287
1288func (s *Context) MarshalJSON() ([]byte, error) {
1289	type NoMethod Context
1290	raw := NoMethod(*s)
1291	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1292}
1293
1294// ContextRule: A context rule provides information about the context
1295// for an individual API element.
1296type ContextRule struct {
1297	// AllowedRequestExtensions: A list of full type names or extension IDs
1298	// of extensions allowed in grpc side channel from client to backend.
1299	AllowedRequestExtensions []string `json:"allowedRequestExtensions,omitempty"`
1300
1301	// AllowedResponseExtensions: A list of full type names or extension IDs
1302	// of extensions allowed in grpc side channel from backend to client.
1303	AllowedResponseExtensions []string `json:"allowedResponseExtensions,omitempty"`
1304
1305	// Provided: A list of full type names of provided contexts.
1306	Provided []string `json:"provided,omitempty"`
1307
1308	// Requested: A list of full type names of requested contexts.
1309	Requested []string `json:"requested,omitempty"`
1310
1311	// Selector: Selects the methods to which this rule applies. Refer to
1312	// selector for syntax details.
1313	Selector string `json:"selector,omitempty"`
1314
1315	// ForceSendFields is a list of field names (e.g.
1316	// "AllowedRequestExtensions") to unconditionally include in API
1317	// requests. By default, fields with empty values are omitted from API
1318	// requests. However, any non-pointer, non-interface field appearing in
1319	// ForceSendFields will be sent to the server regardless of whether the
1320	// field is empty or not. This may be used to include empty fields in
1321	// Patch requests.
1322	ForceSendFields []string `json:"-"`
1323
1324	// NullFields is a list of field names (e.g. "AllowedRequestExtensions")
1325	// to include in API requests with the JSON null value. By default,
1326	// fields with empty values are omitted from API requests. However, any
1327	// field with an empty value appearing in NullFields will be sent to the
1328	// server as null. It is an error if a field in this list has a
1329	// non-empty value. This may be used to include null fields in Patch
1330	// requests.
1331	NullFields []string `json:"-"`
1332}
1333
1334func (s *ContextRule) MarshalJSON() ([]byte, error) {
1335	type NoMethod ContextRule
1336	raw := NoMethod(*s)
1337	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1338}
1339
1340// Control: Selects and configures the service controller used by the
1341// service. The service controller handles features like abuse, quota,
1342// billing, logging, monitoring, etc.
1343type Control struct {
1344	// Environment: The service control environment to use. If empty, no
1345	// control plane feature (like quota and billing) will be enabled.
1346	Environment string `json:"environment,omitempty"`
1347
1348	// ForceSendFields is a list of field names (e.g. "Environment") to
1349	// unconditionally include in API requests. By default, fields with
1350	// empty values are omitted from API requests. However, any non-pointer,
1351	// non-interface field appearing in ForceSendFields will be sent to the
1352	// server regardless of whether the field is empty or not. This may be
1353	// used to include empty fields in Patch requests.
1354	ForceSendFields []string `json:"-"`
1355
1356	// NullFields is a list of field names (e.g. "Environment") to include
1357	// in API requests with the JSON null value. By default, fields with
1358	// empty values are omitted from API requests. However, any field with
1359	// an empty value appearing in NullFields will be sent to the server as
1360	// null. It is an error if a field in this list has a non-empty value.
1361	// This may be used to include null fields in Patch requests.
1362	NullFields []string `json:"-"`
1363}
1364
1365func (s *Control) MarshalJSON() ([]byte, error) {
1366	type NoMethod Control
1367	raw := NoMethod(*s)
1368	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1369}
1370
1371// CustomError: Customize service error responses. For example, list any
1372// service specific protobuf types that can appear in error detail lists
1373// of error responses. Example: custom_error: types: -
1374// google.foo.v1.CustomError - google.foo.v1.AnotherError
1375type CustomError struct {
1376	// Rules: The list of custom error rules that apply to individual API
1377	// messages. **NOTE:** All service configuration rules follow "last one
1378	// wins" order.
1379	Rules []*CustomErrorRule `json:"rules,omitempty"`
1380
1381	// Types: The list of custom error detail types, e.g.
1382	// 'google.foo.v1.CustomError'.
1383	Types []string `json:"types,omitempty"`
1384
1385	// ForceSendFields is a list of field names (e.g. "Rules") to
1386	// unconditionally include in API requests. By default, fields with
1387	// empty values are omitted from API requests. However, any non-pointer,
1388	// non-interface field appearing in ForceSendFields will be sent to the
1389	// server regardless of whether the field is empty or not. This may be
1390	// used to include empty fields in Patch requests.
1391	ForceSendFields []string `json:"-"`
1392
1393	// NullFields is a list of field names (e.g. "Rules") to include in API
1394	// requests with the JSON null value. By default, fields with empty
1395	// values are omitted from API requests. However, any field with an
1396	// empty value appearing in NullFields will be sent to the server as
1397	// null. It is an error if a field in this list has a non-empty value.
1398	// This may be used to include null fields in Patch requests.
1399	NullFields []string `json:"-"`
1400}
1401
1402func (s *CustomError) MarshalJSON() ([]byte, error) {
1403	type NoMethod CustomError
1404	raw := NoMethod(*s)
1405	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1406}
1407
1408// CustomErrorRule: A custom error rule.
1409type CustomErrorRule struct {
1410	// IsErrorType: Mark this message as possible payload in error response.
1411	// Otherwise, objects of this type will be filtered when they appear in
1412	// error payload.
1413	IsErrorType bool `json:"isErrorType,omitempty"`
1414
1415	// Selector: Selects messages to which this rule applies. Refer to
1416	// selector for syntax details.
1417	Selector string `json:"selector,omitempty"`
1418
1419	// ForceSendFields is a list of field names (e.g. "IsErrorType") to
1420	// unconditionally include in API requests. By default, fields with
1421	// empty values are omitted from API requests. However, any non-pointer,
1422	// non-interface field appearing in ForceSendFields will be sent to the
1423	// server regardless of whether the field is empty or not. This may be
1424	// used to include empty fields in Patch requests.
1425	ForceSendFields []string `json:"-"`
1426
1427	// NullFields is a list of field names (e.g. "IsErrorType") to include
1428	// in API requests with the JSON null value. By default, fields with
1429	// empty values are omitted from API requests. However, any field with
1430	// an empty value appearing in NullFields will be sent to the server as
1431	// null. It is an error if a field in this list has a non-empty value.
1432	// This may be used to include null fields in Patch requests.
1433	NullFields []string `json:"-"`
1434}
1435
1436func (s *CustomErrorRule) MarshalJSON() ([]byte, error) {
1437	type NoMethod CustomErrorRule
1438	raw := NoMethod(*s)
1439	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1440}
1441
1442// CustomHttpPattern: A custom pattern is used for defining custom HTTP
1443// verb.
1444type CustomHttpPattern struct {
1445	// Kind: The name of this custom HTTP verb.
1446	Kind string `json:"kind,omitempty"`
1447
1448	// Path: The path matched by this custom verb.
1449	Path string `json:"path,omitempty"`
1450
1451	// ForceSendFields is a list of field names (e.g. "Kind") to
1452	// unconditionally include in API requests. By default, fields with
1453	// empty values are omitted from API requests. However, any non-pointer,
1454	// non-interface field appearing in ForceSendFields will be sent to the
1455	// server regardless of whether the field is empty or not. This may be
1456	// used to include empty fields in Patch requests.
1457	ForceSendFields []string `json:"-"`
1458
1459	// NullFields is a list of field names (e.g. "Kind") to include in API
1460	// requests with the JSON null value. By default, fields with empty
1461	// values are omitted from API requests. However, any field with an
1462	// empty value appearing in NullFields will be sent to the server as
1463	// null. It is an error if a field in this list has a non-empty value.
1464	// This may be used to include null fields in Patch requests.
1465	NullFields []string `json:"-"`
1466}
1467
1468func (s *CustomHttpPattern) MarshalJSON() ([]byte, error) {
1469	type NoMethod CustomHttpPattern
1470	raw := NoMethod(*s)
1471	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1472}
1473
1474// DeleteConnectionMetadata: Metadata provided through GetOperation
1475// request for the LRO generated by Delete Connection API
1476type DeleteConnectionMetadata struct {
1477}
1478
1479// DeletePeeredDnsDomainMetadata: Metadata provided through GetOperation
1480// request for the LRO generated by DeletePeeredDnsDomain API.
1481type DeletePeeredDnsDomainMetadata struct {
1482}
1483
1484// DisableVpcServiceControlsRequest: Request to disable VPC service
1485// controls.
1486type DisableVpcServiceControlsRequest struct {
1487	// ConsumerNetwork: Required. The network that the consumer is using to
1488	// connect with services. Must be in the form of
1489	// projects/{project}/global/networks/{network} {project} is a project
1490	// number, as in '12345' {network} is network name.
1491	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
1492
1493	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
1494	// unconditionally include in API requests. By default, fields with
1495	// empty values are omitted from API requests. However, any non-pointer,
1496	// non-interface field appearing in ForceSendFields will be sent to the
1497	// server regardless of whether the field is empty or not. This may be
1498	// used to include empty fields in Patch requests.
1499	ForceSendFields []string `json:"-"`
1500
1501	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
1502	// include in API requests with the JSON null value. By default, fields
1503	// with empty values are omitted from API requests. However, any field
1504	// with an empty value appearing in NullFields will be sent to the
1505	// server as null. It is an error if a field in this list has a
1506	// non-empty value. This may be used to include null fields in Patch
1507	// requests.
1508	NullFields []string `json:"-"`
1509}
1510
1511func (s *DisableVpcServiceControlsRequest) MarshalJSON() ([]byte, error) {
1512	type NoMethod DisableVpcServiceControlsRequest
1513	raw := NoMethod(*s)
1514	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1515}
1516
1517// DnsRecordSet: Represents a DNS record set resource.
1518type DnsRecordSet struct {
1519	// Data: Required. As defined in RFC 1035 (section 5) and RFC 1034
1520	// (section 3.6.1) for examples see
1521	// https://cloud.google.com/dns/records/json-record.
1522	Data []string `json:"data,omitempty"`
1523
1524	// Domain: Required. The DNS or domain name of the record set, e.g.
1525	// `test.example.com`.
1526	Domain string `json:"domain,omitempty"`
1527
1528	// Ttl: Required. The period of time for which this RecordSet can be
1529	// cached by resolvers.
1530	Ttl string `json:"ttl,omitempty"`
1531
1532	// Type: Required. The identifier of a supported record type.
1533	Type string `json:"type,omitempty"`
1534
1535	// ForceSendFields is a list of field names (e.g. "Data") to
1536	// unconditionally include in API requests. By default, fields with
1537	// empty values are omitted from API requests. However, any non-pointer,
1538	// non-interface field appearing in ForceSendFields will be sent to the
1539	// server regardless of whether the field is empty or not. This may be
1540	// used to include empty fields in Patch requests.
1541	ForceSendFields []string `json:"-"`
1542
1543	// NullFields is a list of field names (e.g. "Data") to include in API
1544	// requests with the JSON null value. By default, fields with empty
1545	// values are omitted from API requests. However, any field with an
1546	// empty value appearing in NullFields will be sent to the server as
1547	// null. It is an error if a field in this list has a non-empty value.
1548	// This may be used to include null fields in Patch requests.
1549	NullFields []string `json:"-"`
1550}
1551
1552func (s *DnsRecordSet) MarshalJSON() ([]byte, error) {
1553	type NoMethod DnsRecordSet
1554	raw := NoMethod(*s)
1555	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1556}
1557
1558// DnsZone: Represents a DNS zone resource.
1559type DnsZone struct {
1560	// DnsSuffix: The DNS name suffix of this zone e.g. `example.com.`.
1561	DnsSuffix string `json:"dnsSuffix,omitempty"`
1562
1563	// Name: User assigned name for this resource. Must be unique within the
1564	// project. The name must be 1-63 characters long, must begin with a
1565	// letter, end with a letter or digit, and only contain lowercase
1566	// letters, digits or dashes.
1567	Name string `json:"name,omitempty"`
1568
1569	// ForceSendFields is a list of field names (e.g. "DnsSuffix") to
1570	// unconditionally include in API requests. By default, fields with
1571	// empty values are omitted from API requests. However, any non-pointer,
1572	// non-interface field appearing in ForceSendFields will be sent to the
1573	// server regardless of whether the field is empty or not. This may be
1574	// used to include empty fields in Patch requests.
1575	ForceSendFields []string `json:"-"`
1576
1577	// NullFields is a list of field names (e.g. "DnsSuffix") to include in
1578	// API requests with the JSON null value. By default, fields with empty
1579	// values are omitted from API requests. However, any field with an
1580	// empty value appearing in NullFields will be sent to the server as
1581	// null. It is an error if a field in this list has a non-empty value.
1582	// This may be used to include null fields in Patch requests.
1583	NullFields []string `json:"-"`
1584}
1585
1586func (s *DnsZone) MarshalJSON() ([]byte, error) {
1587	type NoMethod DnsZone
1588	raw := NoMethod(*s)
1589	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1590}
1591
1592// Documentation: `Documentation` provides the information for
1593// describing a service. Example: documentation: summary: > The Google
1594// Calendar API gives access to most calendar features. pages: - name:
1595// Overview content: (== include google/foo/overview.md ==) - name:
1596// Tutorial content: (== include google/foo/tutorial.md ==) subpages; -
1597// name: Java content: (== include google/foo/tutorial_java.md ==)
1598// rules: - selector: google.calendar.Calendar.Get description: > ... -
1599// selector: google.calendar.Calendar.Put description: > ...
1600// Documentation is provided in markdown syntax. In addition to standard
1601// markdown features, definition lists, tables and fenced code blocks
1602// are supported. Section headers can be provided and are interpreted
1603// relative to the section nesting of the context where a documentation
1604// fragment is embedded. Documentation from the IDL is merged with
1605// documentation defined via the config at normalization time, where
1606// documentation provided by config rules overrides IDL provided. A
1607// number of constructs specific to the API platform are supported in
1608// documentation text. In order to reference a proto element, the
1609// following notation can be used: [fully.qualified.proto.name][] To
1610// override the display text used for the link, this can be used:
1611// [display text][fully.qualified.proto.name] Text can be excluded from
1612// doc using the following notation: (-- internal comment --) A few
1613// directives are available in documentation. Note that directives must
1614// appear on a single line to be properly identified. The `include`
1615// directive includes a markdown file from an external source: (==
1616// include path/to/file ==) The `resource_for` directive marks a message
1617// to be the resource of a collection in REST view. If it is not
1618// specified, tools attempt to infer the resource from the operations in
1619// a collection: (== resource_for v1.shelves.books ==) The directive
1620// `suppress_warning` does not directly affect documentation and is
1621// documented together with service config validation.
1622type Documentation struct {
1623	// DocumentationRootUrl: The URL to the root of documentation.
1624	DocumentationRootUrl string `json:"documentationRootUrl,omitempty"`
1625
1626	// Overview: Declares a single overview page. For example:
1627	// documentation: summary: ... overview: (== include overview.md ==)
1628	// This is a shortcut for the following declaration (using pages style):
1629	// documentation: summary: ... pages: - name: Overview content: (==
1630	// include overview.md ==) Note: you cannot specify both `overview`
1631	// field and `pages` field.
1632	Overview string `json:"overview,omitempty"`
1633
1634	// Pages: The top level pages for the documentation set.
1635	Pages []*Page `json:"pages,omitempty"`
1636
1637	// Rules: A list of documentation rules that apply to individual API
1638	// elements. **NOTE:** All service configuration rules follow "last one
1639	// wins" order.
1640	Rules []*DocumentationRule `json:"rules,omitempty"`
1641
1642	// ServiceRootUrl: Specifies the service root url if the default one
1643	// (the service name from the yaml file) is not suitable. This can be
1644	// seen in any fully specified service urls as well as sections that
1645	// show a base that other urls are relative to.
1646	ServiceRootUrl string `json:"serviceRootUrl,omitempty"`
1647
1648	// Summary: A short summary of what the service does. Can only be
1649	// provided by plain text.
1650	Summary string `json:"summary,omitempty"`
1651
1652	// ForceSendFields is a list of field names (e.g.
1653	// "DocumentationRootUrl") to unconditionally include in API requests.
1654	// By default, fields with empty values are omitted from API requests.
1655	// However, any non-pointer, non-interface field appearing in
1656	// ForceSendFields will be sent to the server regardless of whether the
1657	// field is empty or not. This may be used to include empty fields in
1658	// Patch requests.
1659	ForceSendFields []string `json:"-"`
1660
1661	// NullFields is a list of field names (e.g. "DocumentationRootUrl") to
1662	// include in API requests with the JSON null value. By default, fields
1663	// with empty values are omitted from API requests. However, any field
1664	// with an empty value appearing in NullFields will be sent to the
1665	// server as null. It is an error if a field in this list has a
1666	// non-empty value. This may be used to include null fields in Patch
1667	// requests.
1668	NullFields []string `json:"-"`
1669}
1670
1671func (s *Documentation) MarshalJSON() ([]byte, error) {
1672	type NoMethod Documentation
1673	raw := NoMethod(*s)
1674	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1675}
1676
1677// DocumentationRule: A documentation rule provides information about
1678// individual API elements.
1679type DocumentationRule struct {
1680	// DeprecationDescription: Deprecation description of the selected
1681	// element(s). It can be provided if an element is marked as
1682	// `deprecated`.
1683	DeprecationDescription string `json:"deprecationDescription,omitempty"`
1684
1685	// Description: Description of the selected API(s).
1686	Description string `json:"description,omitempty"`
1687
1688	// Selector: The selector is a comma-separated list of patterns. Each
1689	// pattern is a qualified name of the element which may end in "*",
1690	// indicating a wildcard. Wildcards are only allowed at the end and for
1691	// a whole component of the qualified name, i.e. "foo.*" is ok, but not
1692	// "foo.b*" or "foo.*.bar". A wildcard will match one or more
1693	// components. To specify a default for all applicable elements, the
1694	// whole pattern "*" is used.
1695	Selector string `json:"selector,omitempty"`
1696
1697	// ForceSendFields is a list of field names (e.g.
1698	// "DeprecationDescription") to unconditionally include in API requests.
1699	// By default, fields with empty values are omitted from API requests.
1700	// However, any non-pointer, non-interface field appearing in
1701	// ForceSendFields will be sent to the server regardless of whether the
1702	// field is empty or not. This may be used to include empty fields in
1703	// Patch requests.
1704	ForceSendFields []string `json:"-"`
1705
1706	// NullFields is a list of field names (e.g. "DeprecationDescription")
1707	// to include in API requests with the JSON null value. By default,
1708	// fields with empty values are omitted from API requests. However, any
1709	// field with an empty value appearing in NullFields will be sent to the
1710	// server as null. It is an error if a field in this list has a
1711	// non-empty value. This may be used to include null fields in Patch
1712	// requests.
1713	NullFields []string `json:"-"`
1714}
1715
1716func (s *DocumentationRule) MarshalJSON() ([]byte, error) {
1717	type NoMethod DocumentationRule
1718	raw := NoMethod(*s)
1719	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1720}
1721
1722// Empty: A generic empty message that you can re-use to avoid defining
1723// duplicated empty messages in your APIs. A typical example is to use
1724// it as the request or the response type of an API method. For
1725// instance: service Foo { rpc Bar(google.protobuf.Empty) returns
1726// (google.protobuf.Empty); } The JSON representation for `Empty` is
1727// empty JSON object `{}`.
1728type Empty struct {
1729	// ServerResponse contains the HTTP response code and headers from the
1730	// server.
1731	googleapi.ServerResponse `json:"-"`
1732}
1733
1734// EnableVpcServiceControlsRequest: Request to enable VPC service
1735// controls.
1736type EnableVpcServiceControlsRequest struct {
1737	// ConsumerNetwork: Required. The network that the consumer is using to
1738	// connect with services. Must be in the form of
1739	// projects/{project}/global/networks/{network} {project} is a project
1740	// number, as in '12345' {network} is network name.
1741	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
1742
1743	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
1744	// unconditionally include in API requests. By default, fields with
1745	// empty values are omitted from API requests. However, any non-pointer,
1746	// non-interface field appearing in ForceSendFields will be sent to the
1747	// server regardless of whether the field is empty or not. This may be
1748	// used to include empty fields in Patch requests.
1749	ForceSendFields []string `json:"-"`
1750
1751	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
1752	// include in API requests with the JSON null value. By default, fields
1753	// with empty values are omitted from API requests. However, any field
1754	// with an empty value appearing in NullFields will be sent to the
1755	// server as null. It is an error if a field in this list has a
1756	// non-empty value. This may be used to include null fields in Patch
1757	// requests.
1758	NullFields []string `json:"-"`
1759}
1760
1761func (s *EnableVpcServiceControlsRequest) MarshalJSON() ([]byte, error) {
1762	type NoMethod EnableVpcServiceControlsRequest
1763	raw := NoMethod(*s)
1764	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1765}
1766
1767// Endpoint: `Endpoint` describes a network endpoint of a service that
1768// serves a set of APIs. It is commonly known as a service endpoint. A
1769// service may expose any number of service endpoints, and all service
1770// endpoints share the same service definition, such as quota limits and
1771// monitoring metrics. Example service configuration: name:
1772// library-example.googleapis.com endpoints: # Below entry makes
1773// 'google.example.library.v1.Library' # API be served from endpoint
1774// address library-example.googleapis.com. # It also allows HTTP OPTIONS
1775// calls to be passed to the backend, for # it to decide whether the
1776// subsequent cross-origin request is # allowed to proceed. - name:
1777// library-example.googleapis.com allow_cors: true
1778type Endpoint struct {
1779	// Aliases: DEPRECATED: This field is no longer supported. Instead of
1780	// using aliases, please specify multiple google.api.Endpoint for each
1781	// of the intended aliases. Additional names that this endpoint will be
1782	// hosted on.
1783	Aliases []string `json:"aliases,omitempty"`
1784
1785	// AllowCors: Allowing CORS
1786	// (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
1787	// cross-domain traffic, would allow the backends served from this
1788	// endpoint to receive and respond to HTTP OPTIONS requests. The
1789	// response will be used by the browser to determine whether the
1790	// subsequent cross-origin request is allowed to proceed.
1791	AllowCors bool `json:"allowCors,omitempty"`
1792
1793	// Name: The canonical name of this endpoint.
1794	Name string `json:"name,omitempty"`
1795
1796	// Target: The specification of an Internet routable address of API
1797	// frontend that will handle requests to this API Endpoint
1798	// (https://cloud.google.com/apis/design/glossary). It should be either
1799	// a valid IPv4 address or a fully-qualified domain name. For example,
1800	// "8.8.8.8" or "myservice.appspot.com".
1801	Target string `json:"target,omitempty"`
1802
1803	// ForceSendFields is a list of field names (e.g. "Aliases") to
1804	// unconditionally include in API requests. By default, fields with
1805	// empty values are omitted from API requests. However, any non-pointer,
1806	// non-interface field appearing in ForceSendFields will be sent to the
1807	// server regardless of whether the field is empty or not. This may be
1808	// used to include empty fields in Patch requests.
1809	ForceSendFields []string `json:"-"`
1810
1811	// NullFields is a list of field names (e.g. "Aliases") to include in
1812	// API requests with the JSON null value. By default, fields with empty
1813	// values are omitted from API requests. However, any field with an
1814	// empty value appearing in NullFields will be sent to the server as
1815	// null. It is an error if a field in this list has a non-empty value.
1816	// This may be used to include null fields in Patch requests.
1817	NullFields []string `json:"-"`
1818}
1819
1820func (s *Endpoint) MarshalJSON() ([]byte, error) {
1821	type NoMethod Endpoint
1822	raw := NoMethod(*s)
1823	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1824}
1825
1826// Enum: Enum type definition.
1827type Enum struct {
1828	// Enumvalue: Enum value definitions.
1829	Enumvalue []*EnumValue `json:"enumvalue,omitempty"`
1830
1831	// Name: Enum type name.
1832	Name string `json:"name,omitempty"`
1833
1834	// Options: Protocol buffer options.
1835	Options []*Option `json:"options,omitempty"`
1836
1837	// SourceContext: The source context.
1838	SourceContext *SourceContext `json:"sourceContext,omitempty"`
1839
1840	// Syntax: The source syntax.
1841	//
1842	// Possible values:
1843	//   "SYNTAX_PROTO2" - Syntax `proto2`.
1844	//   "SYNTAX_PROTO3" - Syntax `proto3`.
1845	Syntax string `json:"syntax,omitempty"`
1846
1847	// ForceSendFields is a list of field names (e.g. "Enumvalue") to
1848	// unconditionally include in API requests. By default, fields with
1849	// empty values are omitted from API requests. However, any non-pointer,
1850	// non-interface field appearing in ForceSendFields will be sent to the
1851	// server regardless of whether the field is empty or not. This may be
1852	// used to include empty fields in Patch requests.
1853	ForceSendFields []string `json:"-"`
1854
1855	// NullFields is a list of field names (e.g. "Enumvalue") to include in
1856	// API requests with the JSON null value. By default, fields with empty
1857	// values are omitted from API requests. However, any field with an
1858	// empty value appearing in NullFields will be sent to the server as
1859	// null. It is an error if a field in this list has a non-empty value.
1860	// This may be used to include null fields in Patch requests.
1861	NullFields []string `json:"-"`
1862}
1863
1864func (s *Enum) MarshalJSON() ([]byte, error) {
1865	type NoMethod Enum
1866	raw := NoMethod(*s)
1867	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1868}
1869
1870// EnumValue: Enum value definition.
1871type EnumValue struct {
1872	// Name: Enum value name.
1873	Name string `json:"name,omitempty"`
1874
1875	// Number: Enum value number.
1876	Number int64 `json:"number,omitempty"`
1877
1878	// Options: Protocol buffer options.
1879	Options []*Option `json:"options,omitempty"`
1880
1881	// ForceSendFields is a list of field names (e.g. "Name") to
1882	// unconditionally include in API requests. By default, fields with
1883	// empty values are omitted from API requests. However, any non-pointer,
1884	// non-interface field appearing in ForceSendFields will be sent to the
1885	// server regardless of whether the field is empty or not. This may be
1886	// used to include empty fields in Patch requests.
1887	ForceSendFields []string `json:"-"`
1888
1889	// NullFields is a list of field names (e.g. "Name") to include in API
1890	// requests with the JSON null value. By default, fields with empty
1891	// values are omitted from API requests. However, any field with an
1892	// empty value appearing in NullFields will be sent to the server as
1893	// null. It is an error if a field in this list has a non-empty value.
1894	// This may be used to include null fields in Patch requests.
1895	NullFields []string `json:"-"`
1896}
1897
1898func (s *EnumValue) MarshalJSON() ([]byte, error) {
1899	type NoMethod EnumValue
1900	raw := NoMethod(*s)
1901	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1902}
1903
1904// Field: A single field of a message type.
1905type Field struct {
1906	// Cardinality: The field cardinality.
1907	//
1908	// Possible values:
1909	//   "CARDINALITY_UNKNOWN" - For fields with unknown cardinality.
1910	//   "CARDINALITY_OPTIONAL" - For optional fields.
1911	//   "CARDINALITY_REQUIRED" - For required fields. Proto2 syntax only.
1912	//   "CARDINALITY_REPEATED" - For repeated fields.
1913	Cardinality string `json:"cardinality,omitempty"`
1914
1915	// DefaultValue: The string value of the default value of this field.
1916	// Proto2 syntax only.
1917	DefaultValue string `json:"defaultValue,omitempty"`
1918
1919	// JsonName: The field JSON name.
1920	JsonName string `json:"jsonName,omitempty"`
1921
1922	// Kind: The field type.
1923	//
1924	// Possible values:
1925	//   "TYPE_UNKNOWN" - Field type unknown.
1926	//   "TYPE_DOUBLE" - Field type double.
1927	//   "TYPE_FLOAT" - Field type float.
1928	//   "TYPE_INT64" - Field type int64.
1929	//   "TYPE_UINT64" - Field type uint64.
1930	//   "TYPE_INT32" - Field type int32.
1931	//   "TYPE_FIXED64" - Field type fixed64.
1932	//   "TYPE_FIXED32" - Field type fixed32.
1933	//   "TYPE_BOOL" - Field type bool.
1934	//   "TYPE_STRING" - Field type string.
1935	//   "TYPE_GROUP" - Field type group. Proto2 syntax only, and
1936	// deprecated.
1937	//   "TYPE_MESSAGE" - Field type message.
1938	//   "TYPE_BYTES" - Field type bytes.
1939	//   "TYPE_UINT32" - Field type uint32.
1940	//   "TYPE_ENUM" - Field type enum.
1941	//   "TYPE_SFIXED32" - Field type sfixed32.
1942	//   "TYPE_SFIXED64" - Field type sfixed64.
1943	//   "TYPE_SINT32" - Field type sint32.
1944	//   "TYPE_SINT64" - Field type sint64.
1945	Kind string `json:"kind,omitempty"`
1946
1947	// Name: The field name.
1948	Name string `json:"name,omitempty"`
1949
1950	// Number: The field number.
1951	Number int64 `json:"number,omitempty"`
1952
1953	// OneofIndex: The index of the field type in `Type.oneofs`, for message
1954	// or enumeration types. The first type has index 1; zero means the type
1955	// is not in the list.
1956	OneofIndex int64 `json:"oneofIndex,omitempty"`
1957
1958	// Options: The protocol buffer options.
1959	Options []*Option `json:"options,omitempty"`
1960
1961	// Packed: Whether to use alternative packed wire representation.
1962	Packed bool `json:"packed,omitempty"`
1963
1964	// TypeUrl: The field type URL, without the scheme, for message or
1965	// enumeration types. Example:
1966	// "type.googleapis.com/google.protobuf.Timestamp".
1967	TypeUrl string `json:"typeUrl,omitempty"`
1968
1969	// ForceSendFields is a list of field names (e.g. "Cardinality") to
1970	// unconditionally include in API requests. By default, fields with
1971	// empty values are omitted from API requests. However, any non-pointer,
1972	// non-interface field appearing in ForceSendFields will be sent to the
1973	// server regardless of whether the field is empty or not. This may be
1974	// used to include empty fields in Patch requests.
1975	ForceSendFields []string `json:"-"`
1976
1977	// NullFields is a list of field names (e.g. "Cardinality") to include
1978	// in API requests with the JSON null value. By default, fields with
1979	// empty values are omitted from API requests. However, any field with
1980	// an empty value appearing in NullFields will be sent to the server as
1981	// null. It is an error if a field in this list has a non-empty value.
1982	// This may be used to include null fields in Patch requests.
1983	NullFields []string `json:"-"`
1984}
1985
1986func (s *Field) MarshalJSON() ([]byte, error) {
1987	type NoMethod Field
1988	raw := NoMethod(*s)
1989	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1990}
1991
1992// GoogleCloudServicenetworkingV1ConsumerConfigReservedRange: Allocated
1993// IP address ranges for this private service access connection.
1994type GoogleCloudServicenetworkingV1ConsumerConfigReservedRange struct {
1995	// Address: The starting address of the reserved range. The address must
1996	// be a valid IPv4 address in the x.x.x.x format. This value combined
1997	// with the IP prefix length is the CIDR range for the reserved range.
1998	Address string `json:"address,omitempty"`
1999
2000	// IpPrefixLength: The prefix length of the reserved range.
2001	IpPrefixLength int64 `json:"ipPrefixLength,omitempty"`
2002
2003	// Name: The name of the reserved range.
2004	Name string `json:"name,omitempty"`
2005
2006	// ForceSendFields is a list of field names (e.g. "Address") to
2007	// unconditionally include in API requests. By default, fields with
2008	// empty values are omitted from API requests. However, any non-pointer,
2009	// non-interface field appearing in ForceSendFields will be sent to the
2010	// server regardless of whether the field is empty or not. This may be
2011	// used to include empty fields in Patch requests.
2012	ForceSendFields []string `json:"-"`
2013
2014	// NullFields is a list of field names (e.g. "Address") to include in
2015	// API requests with the JSON null value. By default, fields with empty
2016	// values are omitted from API requests. However, any field with an
2017	// empty value appearing in NullFields will be sent to the server as
2018	// null. It is an error if a field in this list has a non-empty value.
2019	// This may be used to include null fields in Patch requests.
2020	NullFields []string `json:"-"`
2021}
2022
2023func (s *GoogleCloudServicenetworkingV1ConsumerConfigReservedRange) MarshalJSON() ([]byte, error) {
2024	type NoMethod GoogleCloudServicenetworkingV1ConsumerConfigReservedRange
2025	raw := NoMethod(*s)
2026	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2027}
2028
2029// GoogleCloudServicenetworkingV1betaConnection: Represents a private
2030// connection resource. A private connection is implemented as a VPC
2031// Network Peering connection between a service producer's VPC network
2032// and a service consumer's VPC network.
2033type GoogleCloudServicenetworkingV1betaConnection struct {
2034	// Network: The name of service consumer's VPC network that's connected
2035	// with service producer network, in the following format:
2036	// `projects/{project}/global/networks/{network}`. `{project}` is a
2037	// project number, such as in `12345` that includes the VPC service
2038	// consumer's VPC network. `{network}` is the name of the service
2039	// consumer's VPC network.
2040	Network string `json:"network,omitempty"`
2041
2042	// Peering: Output only. The name of the VPC Network Peering connection
2043	// that was created by the service producer.
2044	Peering string `json:"peering,omitempty"`
2045
2046	// ReservedPeeringRanges: The name of one or more allocated IP address
2047	// ranges for this service producer of type `PEERING`. Note that
2048	// invoking this method with a different range when connection is
2049	// already established will not modify already provisioned service
2050	// producer subnetworks.
2051	ReservedPeeringRanges []string `json:"reservedPeeringRanges,omitempty"`
2052
2053	// Service: Output only. The name of the peering service that's
2054	// associated with this connection, in the following format:
2055	// `services/{service name}`.
2056	Service string `json:"service,omitempty"`
2057
2058	// ForceSendFields is a list of field names (e.g. "Network") to
2059	// unconditionally include in API requests. By default, fields with
2060	// empty values are omitted from API requests. However, any non-pointer,
2061	// non-interface field appearing in ForceSendFields will be sent to the
2062	// server regardless of whether the field is empty or not. This may be
2063	// used to include empty fields in Patch requests.
2064	ForceSendFields []string `json:"-"`
2065
2066	// NullFields is a list of field names (e.g. "Network") to include in
2067	// API requests with the JSON null value. By default, fields with empty
2068	// values are omitted from API requests. However, any field with an
2069	// empty value appearing in NullFields will be sent to the server as
2070	// null. It is an error if a field in this list has a non-empty value.
2071	// This may be used to include null fields in Patch requests.
2072	NullFields []string `json:"-"`
2073}
2074
2075func (s *GoogleCloudServicenetworkingV1betaConnection) MarshalJSON() ([]byte, error) {
2076	type NoMethod GoogleCloudServicenetworkingV1betaConnection
2077	raw := NoMethod(*s)
2078	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2079}
2080
2081// GoogleCloudServicenetworkingV1betaSubnetwork: Represents a subnet
2082// that was created or discovered by a private access management
2083// service.
2084type GoogleCloudServicenetworkingV1betaSubnetwork struct {
2085	// IpCidrRange: Subnetwork CIDR range in `10.x.x.x/y` format.
2086	IpCidrRange string `json:"ipCidrRange,omitempty"`
2087
2088	// Name: Subnetwork name. See https://cloud.google.com/compute/docs/vpc/
2089	Name string `json:"name,omitempty"`
2090
2091	// Network: In the Shared VPC host project, the VPC network that's
2092	// peered with the consumer network. For example:
2093	// `projects/1234321/global/networks/host-network`
2094	Network string `json:"network,omitempty"`
2095
2096	// OutsideAllocation: This is a discovered subnet that is not within the
2097	// current consumer allocated ranges.
2098	OutsideAllocation bool `json:"outsideAllocation,omitempty"`
2099
2100	// ForceSendFields is a list of field names (e.g. "IpCidrRange") to
2101	// unconditionally include in API requests. By default, fields with
2102	// empty values are omitted from API requests. However, any non-pointer,
2103	// non-interface field appearing in ForceSendFields will be sent to the
2104	// server regardless of whether the field is empty or not. This may be
2105	// used to include empty fields in Patch requests.
2106	ForceSendFields []string `json:"-"`
2107
2108	// NullFields is a list of field names (e.g. "IpCidrRange") to include
2109	// in API requests with the JSON null value. By default, fields with
2110	// empty values are omitted from API requests. However, any field with
2111	// an empty value appearing in NullFields will be sent to the server as
2112	// null. It is an error if a field in this list has a non-empty value.
2113	// This may be used to include null fields in Patch requests.
2114	NullFields []string `json:"-"`
2115}
2116
2117func (s *GoogleCloudServicenetworkingV1betaSubnetwork) MarshalJSON() ([]byte, error) {
2118	type NoMethod GoogleCloudServicenetworkingV1betaSubnetwork
2119	raw := NoMethod(*s)
2120	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2121}
2122
2123// Http: Defines the HTTP configuration for an API service. It contains
2124// a list of HttpRule, each specifying the mapping of an RPC method to
2125// one or more HTTP REST API methods.
2126type Http struct {
2127	// FullyDecodeReservedExpansion: When set to true, URL path parameters
2128	// will be fully URI-decoded except in cases of single segment matches
2129	// in reserved expansion, where "%2F" will be left encoded. The default
2130	// behavior is to not decode RFC 6570 reserved characters in multi
2131	// segment matches.
2132	FullyDecodeReservedExpansion bool `json:"fullyDecodeReservedExpansion,omitempty"`
2133
2134	// Rules: A list of HTTP configuration rules that apply to individual
2135	// API methods. **NOTE:** All service configuration rules follow "last
2136	// one wins" order.
2137	Rules []*HttpRule `json:"rules,omitempty"`
2138
2139	// ForceSendFields is a list of field names (e.g.
2140	// "FullyDecodeReservedExpansion") to unconditionally include in API
2141	// requests. By default, fields with empty values are omitted from API
2142	// requests. However, any non-pointer, non-interface field appearing in
2143	// ForceSendFields will be sent to the server regardless of whether the
2144	// field is empty or not. This may be used to include empty fields in
2145	// Patch requests.
2146	ForceSendFields []string `json:"-"`
2147
2148	// NullFields is a list of field names (e.g.
2149	// "FullyDecodeReservedExpansion") to include in API requests with the
2150	// JSON null value. By default, fields with empty values are omitted
2151	// from API requests. However, any field with an empty value appearing
2152	// in NullFields will be sent to the server as null. It is an error if a
2153	// field in this list has a non-empty value. This may be used to include
2154	// null fields in Patch requests.
2155	NullFields []string `json:"-"`
2156}
2157
2158func (s *Http) MarshalJSON() ([]byte, error) {
2159	type NoMethod Http
2160	raw := NoMethod(*s)
2161	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2162}
2163
2164// HttpRule: # gRPC Transcoding gRPC Transcoding is a feature for
2165// mapping between a gRPC method and one or more HTTP REST endpoints. It
2166// allows developers to build a single API service that supports both
2167// gRPC APIs and REST APIs. Many systems, including Google APIs
2168// (https://github.com/googleapis/googleapis), Cloud Endpoints
2169// (https://cloud.google.com/endpoints), gRPC Gateway
2170// (https://github.com/grpc-ecosystem/grpc-gateway), and Envoy
2171// (https://github.com/envoyproxy/envoy) proxy support this feature and
2172// use it for large scale production services. `HttpRule` defines the
2173// schema of the gRPC/REST mapping. The mapping specifies how different
2174// portions of the gRPC request message are mapped to the URL path, URL
2175// query parameters, and HTTP request body. It also controls how the
2176// gRPC response message is mapped to the HTTP response body. `HttpRule`
2177// is typically specified as an `google.api.http` annotation on the gRPC
2178// method. Each mapping specifies a URL path template and an HTTP
2179// method. The path template may refer to one or more fields in the gRPC
2180// request message, as long as each field is a non-repeated field with a
2181// primitive (non-message) type. The path template controls how fields
2182// of the request message are mapped to the URL path. Example: service
2183// Messaging { rpc GetMessage(GetMessageRequest) returns (Message) {
2184// option (google.api.http) = { get: "/v1/{name=messages/*}" }; } }
2185// message GetMessageRequest { string name = 1; // Mapped to URL path. }
2186// message Message { string text = 1; // The resource content. } This
2187// enables an HTTP REST to gRPC mapping as below: HTTP | gRPC
2188// -----|----- `GET /v1/messages/123456` | `GetMessage(name:
2189// "messages/123456")` Any fields in the request message which are not
2190// bound by the path template automatically become HTTP query parameters
2191// if there is no HTTP request body. For example: service Messaging {
2192// rpc GetMessage(GetMessageRequest) returns (Message) { option
2193// (google.api.http) = { get:"/v1/messages/{message_id}" }; } } message
2194// GetMessageRequest { message SubMessage { string subfield = 1; }
2195// string message_id = 1; // Mapped to URL path. int64 revision = 2; //
2196// Mapped to URL query parameter `revision`. SubMessage sub = 3; //
2197// Mapped to URL query parameter `sub.subfield`. } This enables a HTTP
2198// JSON to RPC mapping as below: HTTP | gRPC -----|----- `GET
2199// /v1/messages/123456?revision=2&sub.subfield=foo` |
2200// `GetMessage(message_id: "123456" revision: 2 sub:
2201// SubMessage(subfield: "foo"))` Note that fields which are mapped to
2202// URL query parameters must have a primitive type or a repeated
2203// primitive type or a non-repeated message type. In the case of a
2204// repeated type, the parameter can be repeated in the URL as
2205// `...?param=A&param=B`. In the case of a message type, each field of
2206// the message is mapped to a separate parameter, such as
2207// `...?foo.a=A&foo.b=B&foo.c=C`. For HTTP methods that allow a request
2208// body, the `body` field specifies the mapping. Consider a REST update
2209// method on the message resource collection: service Messaging { rpc
2210// UpdateMessage(UpdateMessageRequest) returns (Message) { option
2211// (google.api.http) = { patch: "/v1/messages/{message_id}" body:
2212// "message" }; } } message UpdateMessageRequest { string message_id =
2213// 1; // mapped to the URL Message message = 2; // mapped to the body }
2214// The following HTTP JSON to RPC mapping is enabled, where the
2215// representation of the JSON in the request body is determined by
2216// protos JSON encoding: HTTP | gRPC -----|----- `PATCH
2217// /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id:
2218// "123456" message { text: "Hi!" })` The special name `*` can be used
2219// in the body mapping to define that every field not bound by the path
2220// template should be mapped to the request body. This enables the
2221// following alternative definition of the update method: service
2222// Messaging { rpc UpdateMessage(Message) returns (Message) { option
2223// (google.api.http) = { patch: "/v1/messages/{message_id}" body: "*" };
2224// } } message Message { string message_id = 1; string text = 2; } The
2225// following HTTP JSON to RPC mapping is enabled: HTTP | gRPC
2226// -----|----- `PATCH /v1/messages/123456 { "text": "Hi!" }` |
2227// `UpdateMessage(message_id: "123456" text: "Hi!")` Note that when
2228// using `*` in the body mapping, it is not possible to have HTTP
2229// parameters, as all fields not bound by the path end in the body. This
2230// makes this option more rarely used in practice when defining REST
2231// APIs. The common usage of `*` is in custom methods which don't use
2232// the URL at all for transferring data. It is possible to define
2233// multiple HTTP methods for one RPC by using the `additional_bindings`
2234// option. Example: service Messaging { rpc
2235// GetMessage(GetMessageRequest) returns (Message) { option
2236// (google.api.http) = { get: "/v1/messages/{message_id}"
2237// additional_bindings { get:
2238// "/v1/users/{user_id}/messages/{message_id}" } }; } } message
2239// GetMessageRequest { string message_id = 1; string user_id = 2; } This
2240// enables the following two alternative HTTP JSON to RPC mappings: HTTP
2241// | gRPC -----|----- `GET /v1/messages/123456` |
2242// `GetMessage(message_id: "123456")` `GET /v1/users/me/messages/123456`
2243// | `GetMessage(user_id: "me" message_id: "123456")` ## Rules for HTTP
2244// mapping 1. Leaf request fields (recursive expansion nested messages
2245// in the request message) are classified into three categories: -
2246// Fields referred by the path template. They are passed via the URL
2247// path. - Fields referred by the HttpRule.body. They are passed via the
2248// HTTP request body. - All other fields are passed via the URL query
2249// parameters, and the parameter name is the field path in the request
2250// message. A repeated field can be represented as multiple query
2251// parameters under the same name. 2. If HttpRule.body is "*", there is
2252// no URL query parameter, all fields are passed via URL path and HTTP
2253// request body. 3. If HttpRule.body is omitted, there is no HTTP
2254// request body, all fields are passed via URL path and URL query
2255// parameters. ### Path template syntax Template = "/" Segments [ Verb ]
2256// ; Segments = Segment { "/" Segment } ; Segment = "*" | "**" | LITERAL
2257// | Variable ; Variable = "{" FieldPath [ "=" Segments ] "}" ;
2258// FieldPath = IDENT { "." IDENT } ; Verb = ":" LITERAL ; The syntax `*`
2259// matches a single URL path segment. The syntax `**` matches zero or
2260// more URL path segments, which must be the last part of the URL path
2261// except the `Verb`. The syntax `Variable` matches part of the URL path
2262// as specified by its template. A variable template must not contain
2263// other variables. If a variable matches a single path segment, its
2264// template may be omitted, e.g. `{var}` is equivalent to `{var=*}`. The
2265// syntax `LITERAL` matches literal text in the URL path. If the
2266// `LITERAL` contains any reserved character, such characters should be
2267// percent-encoded before the matching. If a variable contains exactly
2268// one path segment, such as "{var}" or "{var=*}", when such a
2269// variable is expanded into a URL path on the client side, all
2270// characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The server
2271// side does the reverse decoding. Such variables show up in the
2272// Discovery Document
2273// (https://developers.google.com/discovery/v1/reference/apis) as
2274// `{var}`. If a variable contains multiple path segments, such as
2275// "{var=foo/*}" or "{var=**}", when such a variable is expanded
2276// into a URL path on the client side, all characters except
2277// `[-_.~/0-9a-zA-Z]` are percent-encoded. The server side does the
2278// reverse decoding, except "%2F" and "%2f" are left unchanged. Such
2279// variables show up in the Discovery Document
2280// (https://developers.google.com/discovery/v1/reference/apis) as
2281// `{+var}`. ## Using gRPC API Service Configuration gRPC API Service
2282// Configuration (service config) is a configuration language for
2283// configuring a gRPC service to become a user-facing product. The
2284// service config is simply the YAML representation of the
2285// `google.api.Service` proto message. As an alternative to annotating
2286// your proto file, you can configure gRPC transcoding in your service
2287// config YAML files. You do this by specifying a `HttpRule` that maps
2288// the gRPC method to a REST endpoint, achieving the same effect as the
2289// proto annotation. This can be particularly useful if you have a proto
2290// that is reused in multiple services. Note that any transcoding
2291// specified in the service config will override any matching
2292// transcoding configuration in the proto. Example: http: rules: #
2293// Selects a gRPC method and applies HttpRule to it. - selector:
2294// example.v1.Messaging.GetMessage get:
2295// /v1/messages/{message_id}/{sub.subfield} ## Special notes When gRPC
2296// Transcoding is used to map a gRPC to JSON REST endpoints, the proto
2297// to JSON conversion must follow the proto3 specification
2298// (https://developers.google.com/protocol-buffers/docs/proto3#json).
2299// While the single segment variable follows the semantics of RFC 6570
2300// (https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String
2301// Expansion, the multi segment variable **does not** follow RFC 6570
2302// Section 3.2.3 Reserved Expansion. The reason is that the Reserved
2303// Expansion does not expand special characters like `?` and `#`, which
2304// would lead to invalid URLs. As the result, gRPC Transcoding uses a
2305// custom encoding for multi segment variables. The path variables
2306// **must not** refer to any repeated or mapped field, because client
2307// libraries are not capable of handling such variable expansion. The
2308// path variables **must not** capture the leading "/" character. The
2309// reason is that the most common use case "{var}" does not capture the
2310// leading "/" character. For consistency, all path variables must share
2311// the same behavior. Repeated message fields must not be mapped to URL
2312// query parameters, because no client library can support such
2313// complicated mapping. If an API needs to use a JSON array for request
2314// or response body, it can map the request or response body to a
2315// repeated field. However, some gRPC Transcoding implementations may
2316// not support this feature.
2317type HttpRule struct {
2318	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
2319	// bindings must not contain an `additional_bindings` field themselves
2320	// (that is, the nesting may only be one level deep).
2321	AdditionalBindings []*HttpRule `json:"additionalBindings,omitempty"`
2322
2323	// Body: The name of the request field whose value is mapped to the HTTP
2324	// request body, or `*` for mapping all request fields not captured by
2325	// the path pattern to the HTTP body, or omitted for not having any HTTP
2326	// request body. NOTE: the referred field must be present at the
2327	// top-level of the request message type.
2328	Body string `json:"body,omitempty"`
2329
2330	// Custom: The custom pattern is used for specifying an HTTP method that
2331	// is not included in the `pattern` field, such as HEAD, or "*" to leave
2332	// the HTTP method unspecified for this rule. The wild-card rule is
2333	// useful for services that provide content to Web (HTML) clients.
2334	Custom *CustomHttpPattern `json:"custom,omitempty"`
2335
2336	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
2337	Delete string `json:"delete,omitempty"`
2338
2339	// Get: Maps to HTTP GET. Used for listing and getting information about
2340	// resources.
2341	Get string `json:"get,omitempty"`
2342
2343	// Patch: Maps to HTTP PATCH. Used for updating a resource.
2344	Patch string `json:"patch,omitempty"`
2345
2346	// Post: Maps to HTTP POST. Used for creating a resource or performing
2347	// an action.
2348	Post string `json:"post,omitempty"`
2349
2350	// Put: Maps to HTTP PUT. Used for replacing a resource.
2351	Put string `json:"put,omitempty"`
2352
2353	// ResponseBody: Optional. The name of the response field whose value is
2354	// mapped to the HTTP response body. When omitted, the entire response
2355	// message will be used as the HTTP response body. NOTE: The referred
2356	// field must be present at the top-level of the response message type.
2357	ResponseBody string `json:"responseBody,omitempty"`
2358
2359	// Selector: Selects a method to which this rule applies. Refer to
2360	// selector for syntax details.
2361	Selector string `json:"selector,omitempty"`
2362
2363	// ForceSendFields is a list of field names (e.g. "AdditionalBindings")
2364	// to unconditionally include in API requests. By default, fields with
2365	// empty values are omitted from API requests. However, any non-pointer,
2366	// non-interface field appearing in ForceSendFields will be sent to the
2367	// server regardless of whether the field is empty or not. This may be
2368	// used to include empty fields in Patch requests.
2369	ForceSendFields []string `json:"-"`
2370
2371	// NullFields is a list of field names (e.g. "AdditionalBindings") to
2372	// include in API requests with the JSON null value. By default, fields
2373	// with empty values are omitted from API requests. However, any field
2374	// with an empty value appearing in NullFields will be sent to the
2375	// server as null. It is an error if a field in this list has a
2376	// non-empty value. This may be used to include null fields in Patch
2377	// requests.
2378	NullFields []string `json:"-"`
2379}
2380
2381func (s *HttpRule) MarshalJSON() ([]byte, error) {
2382	type NoMethod HttpRule
2383	raw := NoMethod(*s)
2384	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2385}
2386
2387// JwtLocation: Specifies a location to extract JWT from an API request.
2388type JwtLocation struct {
2389	// Header: Specifies HTTP header name to extract JWT token.
2390	Header string `json:"header,omitempty"`
2391
2392	// Query: Specifies URL query parameter name to extract JWT token.
2393	Query string `json:"query,omitempty"`
2394
2395	// ValuePrefix: The value prefix. The value format is
2396	// "value_prefix{token}" Only applies to "in" header type. Must be empty
2397	// for "in" query type. If not empty, the header value has to match
2398	// (case sensitive) this prefix. If not matched, JWT will not be
2399	// extracted. If matched, JWT will be extracted after the prefix is
2400	// removed. For example, for "Authorization: Bearer {JWT}",
2401	// value_prefix="Bearer " with a space at the end.
2402	ValuePrefix string `json:"valuePrefix,omitempty"`
2403
2404	// ForceSendFields is a list of field names (e.g. "Header") to
2405	// unconditionally include in API requests. By default, fields with
2406	// empty values are omitted from API requests. However, any non-pointer,
2407	// non-interface field appearing in ForceSendFields will be sent to the
2408	// server regardless of whether the field is empty or not. This may be
2409	// used to include empty fields in Patch requests.
2410	ForceSendFields []string `json:"-"`
2411
2412	// NullFields is a list of field names (e.g. "Header") to include in API
2413	// requests with the JSON null value. By default, fields with empty
2414	// values are omitted from API requests. However, any field with an
2415	// empty value appearing in NullFields will be sent to the server as
2416	// null. It is an error if a field in this list has a non-empty value.
2417	// This may be used to include null fields in Patch requests.
2418	NullFields []string `json:"-"`
2419}
2420
2421func (s *JwtLocation) MarshalJSON() ([]byte, error) {
2422	type NoMethod JwtLocation
2423	raw := NoMethod(*s)
2424	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2425}
2426
2427// LabelDescriptor: A description of a label.
2428type LabelDescriptor struct {
2429	// Description: A human-readable description for the label.
2430	Description string `json:"description,omitempty"`
2431
2432	// Key: The label key.
2433	Key string `json:"key,omitempty"`
2434
2435	// ValueType: The type of data that can be assigned to the label.
2436	//
2437	// Possible values:
2438	//   "STRING" - A variable-length string. This is the default.
2439	//   "BOOL" - Boolean; true or false.
2440	//   "INT64" - A 64-bit signed integer.
2441	ValueType string `json:"valueType,omitempty"`
2442
2443	// ForceSendFields is a list of field names (e.g. "Description") to
2444	// unconditionally include in API requests. By default, fields with
2445	// empty values are omitted from API requests. However, any non-pointer,
2446	// non-interface field appearing in ForceSendFields will be sent to the
2447	// server regardless of whether the field is empty or not. This may be
2448	// used to include empty fields in Patch requests.
2449	ForceSendFields []string `json:"-"`
2450
2451	// NullFields is a list of field names (e.g. "Description") to include
2452	// in API requests with the JSON null value. By default, fields with
2453	// empty values are omitted from API requests. However, any field with
2454	// an empty value appearing in NullFields will be sent to the server as
2455	// null. It is an error if a field in this list has a non-empty value.
2456	// This may be used to include null fields in Patch requests.
2457	NullFields []string `json:"-"`
2458}
2459
2460func (s *LabelDescriptor) MarshalJSON() ([]byte, error) {
2461	type NoMethod LabelDescriptor
2462	raw := NoMethod(*s)
2463	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2464}
2465
2466// ListConnectionsResponse: ListConnectionsResponse is the response to
2467// list peering states for the given service and consumer project.
2468type ListConnectionsResponse struct {
2469	// Connections: The list of Connections.
2470	Connections []*Connection `json:"connections,omitempty"`
2471
2472	// ServerResponse contains the HTTP response code and headers from the
2473	// server.
2474	googleapi.ServerResponse `json:"-"`
2475
2476	// ForceSendFields is a list of field names (e.g. "Connections") to
2477	// unconditionally include in API requests. By default, fields with
2478	// empty values are omitted from API requests. However, any non-pointer,
2479	// non-interface field appearing in ForceSendFields will be sent to the
2480	// server regardless of whether the field is empty or not. This may be
2481	// used to include empty fields in Patch requests.
2482	ForceSendFields []string `json:"-"`
2483
2484	// NullFields is a list of field names (e.g. "Connections") to include
2485	// in API requests with the JSON null value. By default, fields with
2486	// empty values are omitted from API requests. However, any field with
2487	// an empty value appearing in NullFields will be sent to the server as
2488	// null. It is an error if a field in this list has a non-empty value.
2489	// This may be used to include null fields in Patch requests.
2490	NullFields []string `json:"-"`
2491}
2492
2493func (s *ListConnectionsResponse) MarshalJSON() ([]byte, error) {
2494	type NoMethod ListConnectionsResponse
2495	raw := NoMethod(*s)
2496	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2497}
2498
2499// ListOperationsResponse: The response message for
2500// Operations.ListOperations.
2501type ListOperationsResponse struct {
2502	// NextPageToken: The standard List next-page token.
2503	NextPageToken string `json:"nextPageToken,omitempty"`
2504
2505	// Operations: A list of operations that matches the specified filter in
2506	// the request.
2507	Operations []*Operation `json:"operations,omitempty"`
2508
2509	// ServerResponse contains the HTTP response code and headers from the
2510	// server.
2511	googleapi.ServerResponse `json:"-"`
2512
2513	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
2514	// unconditionally include in API requests. By default, fields with
2515	// empty values are omitted from API requests. However, any non-pointer,
2516	// non-interface field appearing in ForceSendFields will be sent to the
2517	// server regardless of whether the field is empty or not. This may be
2518	// used to include empty fields in Patch requests.
2519	ForceSendFields []string `json:"-"`
2520
2521	// NullFields is a list of field names (e.g. "NextPageToken") to include
2522	// in API requests with the JSON null value. By default, fields with
2523	// empty values are omitted from API requests. However, any field with
2524	// an empty value appearing in NullFields will be sent to the server as
2525	// null. It is an error if a field in this list has a non-empty value.
2526	// This may be used to include null fields in Patch requests.
2527	NullFields []string `json:"-"`
2528}
2529
2530func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) {
2531	type NoMethod ListOperationsResponse
2532	raw := NoMethod(*s)
2533	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2534}
2535
2536// ListPeeredDnsDomainsResponse: Response to list peered DNS domains for
2537// a given connection.
2538type ListPeeredDnsDomainsResponse struct {
2539	// PeeredDnsDomains: The list of peered DNS domains.
2540	PeeredDnsDomains []*PeeredDnsDomain `json:"peeredDnsDomains,omitempty"`
2541
2542	// ServerResponse contains the HTTP response code and headers from the
2543	// server.
2544	googleapi.ServerResponse `json:"-"`
2545
2546	// ForceSendFields is a list of field names (e.g. "PeeredDnsDomains") to
2547	// unconditionally include in API requests. By default, fields with
2548	// empty values are omitted from API requests. However, any non-pointer,
2549	// non-interface field appearing in ForceSendFields will be sent to the
2550	// server regardless of whether the field is empty or not. This may be
2551	// used to include empty fields in Patch requests.
2552	ForceSendFields []string `json:"-"`
2553
2554	// NullFields is a list of field names (e.g. "PeeredDnsDomains") to
2555	// include in API requests with the JSON null value. By default, fields
2556	// with empty values are omitted from API requests. However, any field
2557	// with an empty value appearing in NullFields will be sent to the
2558	// server as null. It is an error if a field in this list has a
2559	// non-empty value. This may be used to include null fields in Patch
2560	// requests.
2561	NullFields []string `json:"-"`
2562}
2563
2564func (s *ListPeeredDnsDomainsResponse) MarshalJSON() ([]byte, error) {
2565	type NoMethod ListPeeredDnsDomainsResponse
2566	raw := NoMethod(*s)
2567	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2568}
2569
2570// LogDescriptor: A description of a log type. Example in YAML format: -
2571// name: library.googleapis.com/activity_history description: The
2572// history of borrowing and returning library items. display_name:
2573// Activity labels: - key: /customer_id description: Identifier of a
2574// library customer
2575type LogDescriptor struct {
2576	// Description: A human-readable description of this log. This
2577	// information appears in the documentation and can contain details.
2578	Description string `json:"description,omitempty"`
2579
2580	// DisplayName: The human-readable name for this log. This information
2581	// appears on the user interface and should be concise.
2582	DisplayName string `json:"displayName,omitempty"`
2583
2584	// Labels: The set of labels that are available to describe a specific
2585	// log entry. Runtime requests that contain labels not specified here
2586	// are considered invalid.
2587	Labels []*LabelDescriptor `json:"labels,omitempty"`
2588
2589	// Name: The name of the log. It must be less than 512 characters long
2590	// and can include the following characters: upper- and lower-case
2591	// alphanumeric characters [A-Za-z0-9], and punctuation characters
2592	// including slash, underscore, hyphen, period [/_-.].
2593	Name string `json:"name,omitempty"`
2594
2595	// ForceSendFields is a list of field names (e.g. "Description") to
2596	// unconditionally include in API requests. By default, fields with
2597	// empty values are omitted from API requests. However, any non-pointer,
2598	// non-interface field appearing in ForceSendFields will be sent to the
2599	// server regardless of whether the field is empty or not. This may be
2600	// used to include empty fields in Patch requests.
2601	ForceSendFields []string `json:"-"`
2602
2603	// NullFields is a list of field names (e.g. "Description") to include
2604	// in API requests with the JSON null value. By default, fields with
2605	// empty values are omitted from API requests. However, any field with
2606	// an empty value appearing in NullFields will be sent to the server as
2607	// null. It is an error if a field in this list has a non-empty value.
2608	// This may be used to include null fields in Patch requests.
2609	NullFields []string `json:"-"`
2610}
2611
2612func (s *LogDescriptor) MarshalJSON() ([]byte, error) {
2613	type NoMethod LogDescriptor
2614	raw := NoMethod(*s)
2615	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2616}
2617
2618// Logging: Logging configuration of the service. The following example
2619// shows how to configure logs to be sent to the producer and consumer
2620// projects. In the example, the `activity_history` log is sent to both
2621// the producer and consumer projects, whereas the `purchase_history`
2622// log is only sent to the producer project. monitored_resources: -
2623// type: library.googleapis.com/branch labels: - key: /city description:
2624// The city where the library branch is located in. - key: /name
2625// description: The name of the branch. logs: - name: activity_history
2626// labels: - key: /customer_id - name: purchase_history logging:
2627// producer_destinations: - monitored_resource:
2628// library.googleapis.com/branch logs: - activity_history -
2629// purchase_history consumer_destinations: - monitored_resource:
2630// library.googleapis.com/branch logs: - activity_history
2631type Logging struct {
2632	// ConsumerDestinations: Logging configurations for sending logs to the
2633	// consumer project. There can be multiple consumer destinations, each
2634	// one must have a different monitored resource type. A log can be used
2635	// in at most one consumer destination.
2636	ConsumerDestinations []*LoggingDestination `json:"consumerDestinations,omitempty"`
2637
2638	// ProducerDestinations: Logging configurations for sending logs to the
2639	// producer project. There can be multiple producer destinations, each
2640	// one must have a different monitored resource type. A log can be used
2641	// in at most one producer destination.
2642	ProducerDestinations []*LoggingDestination `json:"producerDestinations,omitempty"`
2643
2644	// ForceSendFields is a list of field names (e.g.
2645	// "ConsumerDestinations") to unconditionally include in API requests.
2646	// By default, fields with empty values are omitted from API requests.
2647	// However, any non-pointer, non-interface field appearing in
2648	// ForceSendFields will be sent to the server regardless of whether the
2649	// field is empty or not. This may be used to include empty fields in
2650	// Patch requests.
2651	ForceSendFields []string `json:"-"`
2652
2653	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
2654	// include in API requests with the JSON null value. By default, fields
2655	// with empty values are omitted from API requests. However, any field
2656	// with an empty value appearing in NullFields will be sent to the
2657	// server as null. It is an error if a field in this list has a
2658	// non-empty value. This may be used to include null fields in Patch
2659	// requests.
2660	NullFields []string `json:"-"`
2661}
2662
2663func (s *Logging) MarshalJSON() ([]byte, error) {
2664	type NoMethod Logging
2665	raw := NoMethod(*s)
2666	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2667}
2668
2669// LoggingDestination: Configuration of a specific logging destination
2670// (the producer project or the consumer project).
2671type LoggingDestination struct {
2672	// Logs: Names of the logs to be sent to this destination. Each name
2673	// must be defined in the Service.logs section. If the log name is not a
2674	// domain scoped name, it will be automatically prefixed with the
2675	// service name followed by "/".
2676	Logs []string `json:"logs,omitempty"`
2677
2678	// MonitoredResource: The monitored resource type. The type must be
2679	// defined in the Service.monitored_resources section.
2680	MonitoredResource string `json:"monitoredResource,omitempty"`
2681
2682	// ForceSendFields is a list of field names (e.g. "Logs") to
2683	// unconditionally include in API requests. By default, fields with
2684	// empty values are omitted from API requests. However, any non-pointer,
2685	// non-interface field appearing in ForceSendFields will be sent to the
2686	// server regardless of whether the field is empty or not. This may be
2687	// used to include empty fields in Patch requests.
2688	ForceSendFields []string `json:"-"`
2689
2690	// NullFields is a list of field names (e.g. "Logs") to include in API
2691	// requests with the JSON null value. By default, fields with empty
2692	// values are omitted from API requests. However, any field with an
2693	// empty value appearing in NullFields will be sent to the server as
2694	// null. It is an error if a field in this list has a non-empty value.
2695	// This may be used to include null fields in Patch requests.
2696	NullFields []string `json:"-"`
2697}
2698
2699func (s *LoggingDestination) MarshalJSON() ([]byte, error) {
2700	type NoMethod LoggingDestination
2701	raw := NoMethod(*s)
2702	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2703}
2704
2705// Method: Method represents a method of an API interface.
2706type Method struct {
2707	// Name: The simple name of this method.
2708	Name string `json:"name,omitempty"`
2709
2710	// Options: Any metadata attached to the method.
2711	Options []*Option `json:"options,omitempty"`
2712
2713	// RequestStreaming: If true, the request is streamed.
2714	RequestStreaming bool `json:"requestStreaming,omitempty"`
2715
2716	// RequestTypeUrl: A URL of the input message type.
2717	RequestTypeUrl string `json:"requestTypeUrl,omitempty"`
2718
2719	// ResponseStreaming: If true, the response is streamed.
2720	ResponseStreaming bool `json:"responseStreaming,omitempty"`
2721
2722	// ResponseTypeUrl: The URL of the output message type.
2723	ResponseTypeUrl string `json:"responseTypeUrl,omitempty"`
2724
2725	// Syntax: The source syntax of this method.
2726	//
2727	// Possible values:
2728	//   "SYNTAX_PROTO2" - Syntax `proto2`.
2729	//   "SYNTAX_PROTO3" - Syntax `proto3`.
2730	Syntax string `json:"syntax,omitempty"`
2731
2732	// ForceSendFields is a list of field names (e.g. "Name") to
2733	// unconditionally include in API requests. By default, fields with
2734	// empty values are omitted from API requests. However, any non-pointer,
2735	// non-interface field appearing in ForceSendFields will be sent to the
2736	// server regardless of whether the field is empty or not. This may be
2737	// used to include empty fields in Patch requests.
2738	ForceSendFields []string `json:"-"`
2739
2740	// NullFields is a list of field names (e.g. "Name") to include in API
2741	// requests with the JSON null value. By default, fields with empty
2742	// values are omitted from API requests. However, any field with an
2743	// empty value appearing in NullFields will be sent to the server as
2744	// null. It is an error if a field in this list has a non-empty value.
2745	// This may be used to include null fields in Patch requests.
2746	NullFields []string `json:"-"`
2747}
2748
2749func (s *Method) MarshalJSON() ([]byte, error) {
2750	type NoMethod Method
2751	raw := NoMethod(*s)
2752	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2753}
2754
2755// MetricDescriptor: Defines a metric type and its schema. Once a metric
2756// descriptor is created, deleting or altering it stops data collection
2757// and makes the metric type's existing data unusable.
2758type MetricDescriptor struct {
2759	// Description: A detailed description of the metric, which can be used
2760	// in documentation.
2761	Description string `json:"description,omitempty"`
2762
2763	// DisplayName: A concise name for the metric, which can be displayed in
2764	// user interfaces. Use sentence case without an ending period, for
2765	// example "Request count". This field is optional but it is recommended
2766	// to be set for any metrics associated with user-visible concepts, such
2767	// as Quota.
2768	DisplayName string `json:"displayName,omitempty"`
2769
2770	// Labels: The set of labels that can be used to describe a specific
2771	// instance of this metric type. For example, the
2772	// `appengine.googleapis.com/http/server/response_latencies` metric type
2773	// has a label for the HTTP response code, `response_code`, so you can
2774	// look at latencies for successful responses or just for responses that
2775	// failed.
2776	Labels []*LabelDescriptor `json:"labels,omitempty"`
2777
2778	// LaunchStage: Optional. The launch stage of the metric definition.
2779	//
2780	// Possible values:
2781	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
2782	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not
2783	// use it.
2784	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
2785	// visible internally.
2786	//   "EARLY_ACCESS" - Early Access features are limited to a closed
2787	// group of testers. To use these features, you must sign up in advance
2788	// and sign a Trusted Tester agreement (which includes confidentiality
2789	// provisions). These features may be unstable, changed in
2790	// backward-incompatible ways, and are not guaranteed to be released.
2791	//   "ALPHA" - Alpha is a limited availability test for releases before
2792	// they are cleared for widespread use. By Alpha, all significant design
2793	// issues are resolved and we are in the process of verifying
2794	// functionality. Alpha customers need to apply for access, agree to
2795	// applicable terms, and have their projects allowlisted. Alpha releases
2796	// don’t have to be feature complete, no SLAs are provided, and there
2797	// are no technical support obligations, but they will be far enough
2798	// along that customers can actually use them in test environments or
2799	// for limited-use tests -- just like they would in normal production
2800	// cases.
2801	//   "BETA" - Beta is the point at which we are ready to open a release
2802	// for any customer to use. There are no SLA or technical support
2803	// obligations in a Beta release. Products will be complete from a
2804	// feature perspective, but may have some open outstanding issues. Beta
2805	// releases are suitable for limited production use cases.
2806	//   "GA" - GA features are open to all developers and are considered
2807	// stable and fully qualified for production use.
2808	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
2809	// and removed. For more information, see the “Deprecation Policy”
2810	// section of our [Terms of Service](https://cloud.google.com/terms/)
2811	// and the [Google Cloud Platform Subject to the Deprecation
2812	// Policy](https://cloud.google.com/terms/deprecation) documentation.
2813	LaunchStage string `json:"launchStage,omitempty"`
2814
2815	// Metadata: Optional. Metadata which can be used to guide usage of the
2816	// metric.
2817	Metadata *MetricDescriptorMetadata `json:"metadata,omitempty"`
2818
2819	// MetricKind: Whether the metric records instantaneous values, changes
2820	// to a value, etc. Some combinations of `metric_kind` and `value_type`
2821	// might not be supported.
2822	//
2823	// Possible values:
2824	//   "METRIC_KIND_UNSPECIFIED" - Do not use this default value.
2825	//   "GAUGE" - An instantaneous measurement of a value.
2826	//   "DELTA" - The change in a value during a time interval.
2827	//   "CUMULATIVE" - A value accumulated over a time interval. Cumulative
2828	// measurements in a time series should have the same start time and
2829	// increasing end times, until an event resets the cumulative value to
2830	// zero and sets a new start time for the following points.
2831	MetricKind string `json:"metricKind,omitempty"`
2832
2833	// MonitoredResourceTypes: Read-only. If present, then a time series,
2834	// which is identified partially by a metric type and a
2835	// MonitoredResourceDescriptor, that is associated with this metric type
2836	// can only be associated with one of the monitored resource types
2837	// listed here.
2838	MonitoredResourceTypes []string `json:"monitoredResourceTypes,omitempty"`
2839
2840	// Name: The resource name of the metric descriptor.
2841	Name string `json:"name,omitempty"`
2842
2843	// Type: The metric type, including its DNS name prefix. The type is not
2844	// URL-encoded. All user-defined metric types have the DNS name
2845	// `custom.googleapis.com` or `external.googleapis.com`. Metric types
2846	// should use a natural hierarchical grouping. For example:
2847	// "custom.googleapis.com/invoice/paid/amount"
2848	// "external.googleapis.com/prometheus/up"
2849	// "appengine.googleapis.com/http/server/response_latencies"
2850	Type string `json:"type,omitempty"`
2851
2852	// Unit: The units in which the metric value is reported. It is only
2853	// applicable if the `value_type` is `INT64`, `DOUBLE`, or
2854	// `DISTRIBUTION`. The `unit` defines the representation of the stored
2855	// metric values. Different systems might scale the values to be more
2856	// easily displayed (so a value of `0.02kBy` _might_ be displayed as
2857	// `20By`, and a value of `3523kBy` _might_ be displayed as `3.5MBy`).
2858	// However, if the `unit` is `kBy`, then the value of the metric is
2859	// always in thousands of bytes, no matter how it might be displayed. If
2860	// you want a custom metric to record the exact number of CPU-seconds
2861	// used by a job, you can create an `INT64 CUMULATIVE` metric whose
2862	// `unit` is `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the
2863	// job uses 12,005 CPU-seconds, then the value is written as `12005`.
2864	// Alternatively, if you want a custom metric to record data in a more
2865	// granular way, you can create a `DOUBLE CUMULATIVE` metric whose
2866	// `unit` is `ks{CPU}`, and then write the value `12.005` (which is
2867	// `12005/1000`), or use `Kis{CPU}` and write `11.723` (which is
2868	// `12005/1024`). The supported units are a subset of The Unified Code
2869	// for Units of Measure (https://unitsofmeasure.org/ucum.html) standard:
2870	// **Basic units (UNIT)** * `bit` bit * `By` byte * `s` second * `min`
2871	// minute * `h` hour * `d` day * `1` dimensionless **Prefixes (PREFIX)**
2872	// * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera
2873	// (10^12) * `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) *
2874	// `Y` yotta (10^24) * `m` milli (10^-3) * `u` micro (10^-6) * `n` nano
2875	// (10^-9) * `p` pico (10^-12) * `f` femto (10^-15) * `a` atto (10^-18)
2876	// * `z` zepto (10^-21) * `y` yocto (10^-24) * `Ki` kibi (2^10) * `Mi`
2877	// mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (2^40) * `Pi` pebi (2^50)
2878	// **Grammar** The grammar also includes these connectors: * `/`
2879	// division or ratio (as an infix operator). For examples, `kBy/{email}`
2880	// or `MiBy/10ms` (although you should almost never have `/s` in a
2881	// metric `unit`; rates should always be computed at query time from the
2882	// underlying cumulative or delta value). * `.` multiplication or
2883	// composition (as an infix operator). For examples, `GBy.d` or
2884	// `k{watt}.h`. The grammar for a unit is as follows: Expression =
2885	// Component { "." Component } { "/" Component } ; Component = ( [
2886	// PREFIX ] UNIT | "%" ) [ Annotation ] | Annotation | "1" ; Annotation
2887	// = "{" NAME "}" ; Notes: * `Annotation` is just a comment if it
2888	// follows a `UNIT`. If the annotation is used alone, then the unit is
2889	// equivalent to `1`. For examples, `{request}/s == 1/s`,
2890	// `By{transmitted}/s == By/s`. * `NAME` is a sequence of non-blank
2891	// printable ASCII characters not containing `{` or `}`. * `1`
2892	// represents a unitary dimensionless unit
2893	// (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as
2894	// in `1/s`. It is typically used when none of the basic units are
2895	// appropriate. For example, "new users per day" can be represented as
2896	// `1/d` or `{new-users}/d` (and a metric value `5` would mean "5 new
2897	// users). Alternatively, "thousands of page views per day" would be
2898	// represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric
2899	// value of `5.3` would mean "5300 page views per day"). * `%`
2900	// represents dimensionless value of 1/100, and annotates values giving
2901	// a percentage (so the metric values are typically in the range of
2902	// 0..100, and a metric value `3` means "3 percent"). * `10^2.%`
2903	// indicates a metric contains a ratio, typically in the range 0..1,
2904	// that will be multiplied by 100 and displayed as a percentage (so a
2905	// metric value `0.03` means "3 percent").
2906	Unit string `json:"unit,omitempty"`
2907
2908	// ValueType: Whether the measurement is an integer, a floating-point
2909	// number, etc. Some combinations of `metric_kind` and `value_type`
2910	// might not be supported.
2911	//
2912	// Possible values:
2913	//   "VALUE_TYPE_UNSPECIFIED" - Do not use this default value.
2914	//   "BOOL" - The value is a boolean. This value type can be used only
2915	// if the metric kind is `GAUGE`.
2916	//   "INT64" - The value is a signed 64-bit integer.
2917	//   "DOUBLE" - The value is a double precision floating point number.
2918	//   "STRING" - The value is a text string. This value type can be used
2919	// only if the metric kind is `GAUGE`.
2920	//   "DISTRIBUTION" - The value is a `Distribution`.
2921	//   "MONEY" - The value is money.
2922	ValueType string `json:"valueType,omitempty"`
2923
2924	// ForceSendFields is a list of field names (e.g. "Description") to
2925	// unconditionally include in API requests. By default, fields with
2926	// empty values are omitted from API requests. However, any non-pointer,
2927	// non-interface field appearing in ForceSendFields will be sent to the
2928	// server regardless of whether the field is empty or not. This may be
2929	// used to include empty fields in Patch requests.
2930	ForceSendFields []string `json:"-"`
2931
2932	// NullFields is a list of field names (e.g. "Description") to include
2933	// in API requests with the JSON null value. By default, fields with
2934	// empty values are omitted from API requests. However, any field with
2935	// an empty value appearing in NullFields will be sent to the server as
2936	// null. It is an error if a field in this list has a non-empty value.
2937	// This may be used to include null fields in Patch requests.
2938	NullFields []string `json:"-"`
2939}
2940
2941func (s *MetricDescriptor) MarshalJSON() ([]byte, error) {
2942	type NoMethod MetricDescriptor
2943	raw := NoMethod(*s)
2944	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2945}
2946
2947// MetricDescriptorMetadata: Additional annotations that can be used to
2948// guide the usage of a metric.
2949type MetricDescriptorMetadata struct {
2950	// IngestDelay: The delay of data points caused by ingestion. Data
2951	// points older than this age are guaranteed to be ingested and
2952	// available to be read, excluding data loss due to errors.
2953	IngestDelay string `json:"ingestDelay,omitempty"`
2954
2955	// LaunchStage: Deprecated. Must use the MetricDescriptor.launch_stage
2956	// instead.
2957	//
2958	// Possible values:
2959	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
2960	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not
2961	// use it.
2962	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
2963	// visible internally.
2964	//   "EARLY_ACCESS" - Early Access features are limited to a closed
2965	// group of testers. To use these features, you must sign up in advance
2966	// and sign a Trusted Tester agreement (which includes confidentiality
2967	// provisions). These features may be unstable, changed in
2968	// backward-incompatible ways, and are not guaranteed to be released.
2969	//   "ALPHA" - Alpha is a limited availability test for releases before
2970	// they are cleared for widespread use. By Alpha, all significant design
2971	// issues are resolved and we are in the process of verifying
2972	// functionality. Alpha customers need to apply for access, agree to
2973	// applicable terms, and have their projects allowlisted. Alpha releases
2974	// don’t have to be feature complete, no SLAs are provided, and there
2975	// are no technical support obligations, but they will be far enough
2976	// along that customers can actually use them in test environments or
2977	// for limited-use tests -- just like they would in normal production
2978	// cases.
2979	//   "BETA" - Beta is the point at which we are ready to open a release
2980	// for any customer to use. There are no SLA or technical support
2981	// obligations in a Beta release. Products will be complete from a
2982	// feature perspective, but may have some open outstanding issues. Beta
2983	// releases are suitable for limited production use cases.
2984	//   "GA" - GA features are open to all developers and are considered
2985	// stable and fully qualified for production use.
2986	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
2987	// and removed. For more information, see the “Deprecation Policy”
2988	// section of our [Terms of Service](https://cloud.google.com/terms/)
2989	// and the [Google Cloud Platform Subject to the Deprecation
2990	// Policy](https://cloud.google.com/terms/deprecation) documentation.
2991	LaunchStage string `json:"launchStage,omitempty"`
2992
2993	// SamplePeriod: The sampling period of metric data points. For metrics
2994	// which are written periodically, consecutive data points are stored at
2995	// this time interval, excluding data loss due to errors. Metrics with a
2996	// higher granularity have a smaller sampling period.
2997	SamplePeriod string `json:"samplePeriod,omitempty"`
2998
2999	// ForceSendFields is a list of field names (e.g. "IngestDelay") to
3000	// unconditionally include in API requests. By default, fields with
3001	// empty values are omitted from API requests. However, any non-pointer,
3002	// non-interface field appearing in ForceSendFields will be sent to the
3003	// server regardless of whether the field is empty or not. This may be
3004	// used to include empty fields in Patch requests.
3005	ForceSendFields []string `json:"-"`
3006
3007	// NullFields is a list of field names (e.g. "IngestDelay") to include
3008	// in API requests with the JSON null value. By default, fields with
3009	// empty values are omitted from API requests. However, any field with
3010	// an empty value appearing in NullFields will be sent to the server as
3011	// null. It is an error if a field in this list has a non-empty value.
3012	// This may be used to include null fields in Patch requests.
3013	NullFields []string `json:"-"`
3014}
3015
3016func (s *MetricDescriptorMetadata) MarshalJSON() ([]byte, error) {
3017	type NoMethod MetricDescriptorMetadata
3018	raw := NoMethod(*s)
3019	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3020}
3021
3022// MetricRule: Bind API methods to metrics. Binding a method to a metric
3023// causes that metric's configured quota behaviors to apply to the
3024// method call.
3025type MetricRule struct {
3026	// MetricCosts: Metrics to update when the selected methods are called,
3027	// and the associated cost applied to each metric. The key of the map is
3028	// the metric name, and the values are the amount increased for the
3029	// metric against which the quota limits are defined. The value must not
3030	// be negative.
3031	MetricCosts map[string]string `json:"metricCosts,omitempty"`
3032
3033	// Selector: Selects the methods to which this rule applies. Refer to
3034	// selector for syntax details.
3035	Selector string `json:"selector,omitempty"`
3036
3037	// ForceSendFields is a list of field names (e.g. "MetricCosts") to
3038	// unconditionally include in API requests. By default, fields with
3039	// empty values are omitted from API requests. However, any non-pointer,
3040	// non-interface field appearing in ForceSendFields will be sent to the
3041	// server regardless of whether the field is empty or not. This may be
3042	// used to include empty fields in Patch requests.
3043	ForceSendFields []string `json:"-"`
3044
3045	// NullFields is a list of field names (e.g. "MetricCosts") to include
3046	// in API requests with the JSON null value. By default, fields with
3047	// empty values are omitted from API requests. However, any field with
3048	// an empty value appearing in NullFields will be sent to the server as
3049	// null. It is an error if a field in this list has a non-empty value.
3050	// This may be used to include null fields in Patch requests.
3051	NullFields []string `json:"-"`
3052}
3053
3054func (s *MetricRule) MarshalJSON() ([]byte, error) {
3055	type NoMethod MetricRule
3056	raw := NoMethod(*s)
3057	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3058}
3059
3060// Mixin: Declares an API Interface to be included in this interface.
3061// The including interface must redeclare all the methods from the
3062// included interface, but documentation and options are inherited as
3063// follows: - If after comment and whitespace stripping, the
3064// documentation string of the redeclared method is empty, it will be
3065// inherited from the original method. - Each annotation belonging to
3066// the service config (http, visibility) which is not set in the
3067// redeclared method will be inherited. - If an http annotation is
3068// inherited, the path pattern will be modified as follows. Any version
3069// prefix will be replaced by the version of the including interface
3070// plus the root path if specified. Example of a simple mixin: package
3071// google.acl.v1; service AccessControl { // Get the underlying ACL
3072// object. rpc GetAcl(GetAclRequest) returns (Acl) { option
3073// (google.api.http).get = "/v1/{resource=**}:getAcl"; } } package
3074// google.storage.v2; service Storage { // rpc GetAcl(GetAclRequest)
3075// returns (Acl); // Get a data record. rpc GetData(GetDataRequest)
3076// returns (Data) { option (google.api.http).get = "/v2/{resource=**}";
3077// } } Example of a mixin configuration: apis: - name:
3078// google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl
3079// The mixin construct implies that all methods in `AccessControl` are
3080// also declared with same name and request/response types in `Storage`.
3081// A documentation generator or annotation processor will see the
3082// effective `Storage.GetAcl` method after inheriting documentation and
3083// annotations as follows: service Storage { // Get the underlying ACL
3084// object. rpc GetAcl(GetAclRequest) returns (Acl) { option
3085// (google.api.http).get = "/v2/{resource=**}:getAcl"; } ... } Note how
3086// the version in the path pattern changed from `v1` to `v2`. If the
3087// `root` field in the mixin is specified, it should be a relative path
3088// under which inherited HTTP paths are placed. Example: apis: - name:
3089// google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl
3090// root: acls This implies the following inherited HTTP annotation:
3091// service Storage { // Get the underlying ACL object. rpc
3092// GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get =
3093// "/v2/acls/{resource=**}:getAcl"; } ... }
3094type Mixin struct {
3095	// Name: The fully qualified name of the interface which is included.
3096	Name string `json:"name,omitempty"`
3097
3098	// Root: If non-empty specifies a path under which inherited HTTP paths
3099	// are rooted.
3100	Root string `json:"root,omitempty"`
3101
3102	// ForceSendFields is a list of field names (e.g. "Name") to
3103	// unconditionally include in API requests. By default, fields with
3104	// empty values are omitted from API requests. However, any non-pointer,
3105	// non-interface field appearing in ForceSendFields will be sent to the
3106	// server regardless of whether the field is empty or not. This may be
3107	// used to include empty fields in Patch requests.
3108	ForceSendFields []string `json:"-"`
3109
3110	// NullFields is a list of field names (e.g. "Name") to include in API
3111	// requests with the JSON null value. By default, fields with empty
3112	// values are omitted from API requests. However, any field with an
3113	// empty value appearing in NullFields will be sent to the server as
3114	// null. It is an error if a field in this list has a non-empty value.
3115	// This may be used to include null fields in Patch requests.
3116	NullFields []string `json:"-"`
3117}
3118
3119func (s *Mixin) MarshalJSON() ([]byte, error) {
3120	type NoMethod Mixin
3121	raw := NoMethod(*s)
3122	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3123}
3124
3125// MonitoredResourceDescriptor: An object that describes the schema of a
3126// MonitoredResource object using a type name and a set of labels. For
3127// example, the monitored resource descriptor for Google Compute Engine
3128// VM instances has a type of "gce_instance" and specifies the use of
3129// the labels "instance_id" and "zone" to identify particular VM
3130// instances. Different APIs can support different monitored resource
3131// types. APIs generally provide a `list` method that returns the
3132// monitored resource descriptors used by the API.
3133type MonitoredResourceDescriptor struct {
3134	// Description: Optional. A detailed description of the monitored
3135	// resource type that might be used in documentation.
3136	Description string `json:"description,omitempty"`
3137
3138	// DisplayName: Optional. A concise name for the monitored resource type
3139	// that might be displayed in user interfaces. It should be a Title
3140	// Cased Noun Phrase, without any article or other determiners. For
3141	// example, "Google Cloud SQL Database".
3142	DisplayName string `json:"displayName,omitempty"`
3143
3144	// Labels: Required. A set of labels used to describe instances of this
3145	// monitored resource type. For example, an individual Google Cloud SQL
3146	// database is identified by values for the labels "database_id" and
3147	// "zone".
3148	Labels []*LabelDescriptor `json:"labels,omitempty"`
3149
3150	// LaunchStage: Optional. The launch stage of the monitored resource
3151	// definition.
3152	//
3153	// Possible values:
3154	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
3155	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not
3156	// use it.
3157	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
3158	// visible internally.
3159	//   "EARLY_ACCESS" - Early Access features are limited to a closed
3160	// group of testers. To use these features, you must sign up in advance
3161	// and sign a Trusted Tester agreement (which includes confidentiality
3162	// provisions). These features may be unstable, changed in
3163	// backward-incompatible ways, and are not guaranteed to be released.
3164	//   "ALPHA" - Alpha is a limited availability test for releases before
3165	// they are cleared for widespread use. By Alpha, all significant design
3166	// issues are resolved and we are in the process of verifying
3167	// functionality. Alpha customers need to apply for access, agree to
3168	// applicable terms, and have their projects allowlisted. Alpha releases
3169	// don’t have to be feature complete, no SLAs are provided, and there
3170	// are no technical support obligations, but they will be far enough
3171	// along that customers can actually use them in test environments or
3172	// for limited-use tests -- just like they would in normal production
3173	// cases.
3174	//   "BETA" - Beta is the point at which we are ready to open a release
3175	// for any customer to use. There are no SLA or technical support
3176	// obligations in a Beta release. Products will be complete from a
3177	// feature perspective, but may have some open outstanding issues. Beta
3178	// releases are suitable for limited production use cases.
3179	//   "GA" - GA features are open to all developers and are considered
3180	// stable and fully qualified for production use.
3181	//   "DEPRECATED" - Deprecated features are scheduled to be shut down
3182	// and removed. For more information, see the “Deprecation Policy”
3183	// section of our [Terms of Service](https://cloud.google.com/terms/)
3184	// and the [Google Cloud Platform Subject to the Deprecation
3185	// Policy](https://cloud.google.com/terms/deprecation) documentation.
3186	LaunchStage string `json:"launchStage,omitempty"`
3187
3188	// Name: Optional. The resource name of the monitored resource
3189	// descriptor:
3190	// "projects/{project_id}/monitoredResourceDescriptors/{type}" where
3191	// {type} is the value of the `type` field in this object and
3192	// {project_id} is a project ID that provides API-specific context for
3193	// accessing the type. APIs that do not use project information can use
3194	// the resource name format "monitoredResourceDescriptors/{type}".
3195	Name string `json:"name,omitempty"`
3196
3197	// Type: Required. The monitored resource type. For example, the type
3198	// "cloudsql_database" represents databases in Google Cloud SQL.
3199	Type string `json:"type,omitempty"`
3200
3201	// ForceSendFields is a list of field names (e.g. "Description") to
3202	// unconditionally include in API requests. By default, fields with
3203	// empty values are omitted from API requests. However, any non-pointer,
3204	// non-interface field appearing in ForceSendFields will be sent to the
3205	// server regardless of whether the field is empty or not. This may be
3206	// used to include empty fields in Patch requests.
3207	ForceSendFields []string `json:"-"`
3208
3209	// NullFields is a list of field names (e.g. "Description") to include
3210	// in API requests with the JSON null value. By default, fields with
3211	// empty values are omitted from API requests. However, any field with
3212	// an empty value appearing in NullFields will be sent to the server as
3213	// null. It is an error if a field in this list has a non-empty value.
3214	// This may be used to include null fields in Patch requests.
3215	NullFields []string `json:"-"`
3216}
3217
3218func (s *MonitoredResourceDescriptor) MarshalJSON() ([]byte, error) {
3219	type NoMethod MonitoredResourceDescriptor
3220	raw := NoMethod(*s)
3221	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3222}
3223
3224// Monitoring: Monitoring configuration of the service. The example
3225// below shows how to configure monitored resources and metrics for
3226// monitoring. In the example, a monitored resource and two metrics are
3227// defined. The `library.googleapis.com/book/returned_count` metric is
3228// sent to both producer and consumer projects, whereas the
3229// `library.googleapis.com/book/num_overdue` metric is only sent to the
3230// consumer project. monitored_resources: - type:
3231// library.googleapis.com/Branch display_name: "Library Branch"
3232// description: "A branch of a library." launch_stage: GA labels: - key:
3233// resource_container description: "The Cloud container (ie. project id)
3234// for the Branch." - key: location description: "The location of the
3235// library branch." - key: branch_id description: "The id of the
3236// branch." metrics: - name: library.googleapis.com/book/returned_count
3237// display_name: "Books Returned" description: "The count of books that
3238// have been returned." launch_stage: GA metric_kind: DELTA value_type:
3239// INT64 unit: "1" labels: - key: customer_id description: "The id of
3240// the customer." - name: library.googleapis.com/book/num_overdue
3241// display_name: "Books Overdue" description: "The current number of
3242// overdue books." launch_stage: GA metric_kind: GAUGE value_type: INT64
3243// unit: "1" labels: - key: customer_id description: "The id of the
3244// customer." monitoring: producer_destinations: - monitored_resource:
3245// library.googleapis.com/Branch metrics: -
3246// library.googleapis.com/book/returned_count consumer_destinations: -
3247// monitored_resource: library.googleapis.com/Branch metrics: -
3248// library.googleapis.com/book/returned_count -
3249// library.googleapis.com/book/num_overdue
3250type Monitoring struct {
3251	// ConsumerDestinations: Monitoring configurations for sending metrics
3252	// to the consumer project. There can be multiple consumer destinations.
3253	// A monitored resource type may appear in multiple monitoring
3254	// destinations if different aggregations are needed for different sets
3255	// of metrics associated with that monitored resource type. A monitored
3256	// resource and metric pair may only be used once in the Monitoring
3257	// configuration.
3258	ConsumerDestinations []*MonitoringDestination `json:"consumerDestinations,omitempty"`
3259
3260	// ProducerDestinations: Monitoring configurations for sending metrics
3261	// to the producer project. There can be multiple producer destinations.
3262	// A monitored resource type may appear in multiple monitoring
3263	// destinations if different aggregations are needed for different sets
3264	// of metrics associated with that monitored resource type. A monitored
3265	// resource and metric pair may only be used once in the Monitoring
3266	// configuration.
3267	ProducerDestinations []*MonitoringDestination `json:"producerDestinations,omitempty"`
3268
3269	// ForceSendFields is a list of field names (e.g.
3270	// "ConsumerDestinations") to unconditionally include in API requests.
3271	// By default, fields with empty values are omitted from API requests.
3272	// However, any non-pointer, non-interface field appearing in
3273	// ForceSendFields will be sent to the server regardless of whether the
3274	// field is empty or not. This may be used to include empty fields in
3275	// Patch requests.
3276	ForceSendFields []string `json:"-"`
3277
3278	// NullFields is a list of field names (e.g. "ConsumerDestinations") to
3279	// include in API requests with the JSON null value. By default, fields
3280	// with empty values are omitted from API requests. However, any field
3281	// with an empty value appearing in NullFields will be sent to the
3282	// server as null. It is an error if a field in this list has a
3283	// non-empty value. This may be used to include null fields in Patch
3284	// requests.
3285	NullFields []string `json:"-"`
3286}
3287
3288func (s *Monitoring) MarshalJSON() ([]byte, error) {
3289	type NoMethod Monitoring
3290	raw := NoMethod(*s)
3291	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3292}
3293
3294// MonitoringDestination: Configuration of a specific monitoring
3295// destination (the producer project or the consumer project).
3296type MonitoringDestination struct {
3297	// Metrics: Types of the metrics to report to this monitoring
3298	// destination. Each type must be defined in Service.metrics section.
3299	Metrics []string `json:"metrics,omitempty"`
3300
3301	// MonitoredResource: The monitored resource type. The type must be
3302	// defined in Service.monitored_resources section.
3303	MonitoredResource string `json:"monitoredResource,omitempty"`
3304
3305	// ForceSendFields is a list of field names (e.g. "Metrics") to
3306	// unconditionally include in API requests. By default, fields with
3307	// empty values are omitted from API requests. However, any non-pointer,
3308	// non-interface field appearing in ForceSendFields will be sent to the
3309	// server regardless of whether the field is empty or not. This may be
3310	// used to include empty fields in Patch requests.
3311	ForceSendFields []string `json:"-"`
3312
3313	// NullFields is a list of field names (e.g. "Metrics") to include in
3314	// API requests with the JSON null value. By default, fields with empty
3315	// values are omitted from API requests. However, any field with an
3316	// empty value appearing in NullFields will be sent to the server as
3317	// null. It is an error if a field in this list has a non-empty value.
3318	// This may be used to include null fields in Patch requests.
3319	NullFields []string `json:"-"`
3320}
3321
3322func (s *MonitoringDestination) MarshalJSON() ([]byte, error) {
3323	type NoMethod MonitoringDestination
3324	raw := NoMethod(*s)
3325	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3326}
3327
3328// OAuthRequirements: OAuth scopes are a way to define data and
3329// permissions on data. For example, there are scopes defined for
3330// "Read-only access to Google Calendar" and "Access to Cloud Platform".
3331// Users can consent to a scope for an application, giving it permission
3332// to access that data on their behalf. OAuth scope specifications
3333// should be fairly coarse grained; a user will need to see and
3334// understand the text description of what your scope means. In most
3335// cases: use one or at most two OAuth scopes for an entire family of
3336// products. If your product has multiple APIs, you should probably be
3337// sharing the OAuth scope across all of those APIs. When you need finer
3338// grained OAuth consent screens: talk with your product management
3339// about how developers will use them in practice. Please note that even
3340// though each of the canonical scopes is enough for a request to be
3341// accepted and passed to the backend, a request can still fail due to
3342// the backend requiring additional scopes or permissions.
3343type OAuthRequirements struct {
3344	// CanonicalScopes: The list of publicly documented OAuth scopes that
3345	// are allowed access. An OAuth token containing any of these scopes
3346	// will be accepted. Example: canonical_scopes:
3347	// https://www.googleapis.com/auth/calendar,
3348	// https://www.googleapis.com/auth/calendar.read
3349	CanonicalScopes string `json:"canonicalScopes,omitempty"`
3350
3351	// ForceSendFields is a list of field names (e.g. "CanonicalScopes") to
3352	// unconditionally include in API requests. By default, fields with
3353	// empty values are omitted from API requests. However, any non-pointer,
3354	// non-interface field appearing in ForceSendFields will be sent to the
3355	// server regardless of whether the field is empty or not. This may be
3356	// used to include empty fields in Patch requests.
3357	ForceSendFields []string `json:"-"`
3358
3359	// NullFields is a list of field names (e.g. "CanonicalScopes") to
3360	// include in API requests with the JSON null value. By default, fields
3361	// with empty values are omitted from API requests. However, any field
3362	// with an empty value appearing in NullFields will be sent to the
3363	// server as null. It is an error if a field in this list has a
3364	// non-empty value. This may be used to include null fields in Patch
3365	// requests.
3366	NullFields []string `json:"-"`
3367}
3368
3369func (s *OAuthRequirements) MarshalJSON() ([]byte, error) {
3370	type NoMethod OAuthRequirements
3371	raw := NoMethod(*s)
3372	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3373}
3374
3375// Operation: This resource represents a long-running operation that is
3376// the result of a network API call.
3377type Operation struct {
3378	// Done: If the value is `false`, it means the operation is still in
3379	// progress. If `true`, the operation is completed, and either `error`
3380	// or `response` is available.
3381	Done bool `json:"done,omitempty"`
3382
3383	// Error: The error result of the operation in case of failure or
3384	// cancellation.
3385	Error *Status `json:"error,omitempty"`
3386
3387	// Metadata: Service-specific metadata associated with the operation. It
3388	// typically contains progress information and common metadata such as
3389	// create time. Some services might not provide such metadata. Any
3390	// method that returns a long-running operation should document the
3391	// metadata type, if any.
3392	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
3393
3394	// Name: The server-assigned name, which is only unique within the same
3395	// service that originally returns it. If you use the default HTTP
3396	// mapping, the `name` should be a resource name ending with
3397	// `operations/{unique_id}`.
3398	Name string `json:"name,omitempty"`
3399
3400	// Response: The normal response of the operation in case of success. If
3401	// the original method returns no data on success, such as `Delete`, the
3402	// response is `google.protobuf.Empty`. If the original method is
3403	// standard `Get`/`Create`/`Update`, the response should be the
3404	// resource. For other methods, the response should have the type
3405	// `XxxResponse`, where `Xxx` is the original method name. For example,
3406	// if the original method name is `TakeSnapshot()`, the inferred
3407	// response type is `TakeSnapshotResponse`.
3408	Response googleapi.RawMessage `json:"response,omitempty"`
3409
3410	// ServerResponse contains the HTTP response code and headers from the
3411	// server.
3412	googleapi.ServerResponse `json:"-"`
3413
3414	// ForceSendFields is a list of field names (e.g. "Done") to
3415	// unconditionally include in API requests. By default, fields with
3416	// empty values are omitted from API requests. However, any non-pointer,
3417	// non-interface field appearing in ForceSendFields will be sent to the
3418	// server regardless of whether the field is empty or not. This may be
3419	// used to include empty fields in Patch requests.
3420	ForceSendFields []string `json:"-"`
3421
3422	// NullFields is a list of field names (e.g. "Done") to include in API
3423	// requests with the JSON null value. By default, fields with empty
3424	// values are omitted from API requests. However, any field with an
3425	// empty value appearing in NullFields will be sent to the server as
3426	// null. It is an error if a field in this list has a non-empty value.
3427	// This may be used to include null fields in Patch requests.
3428	NullFields []string `json:"-"`
3429}
3430
3431func (s *Operation) MarshalJSON() ([]byte, error) {
3432	type NoMethod Operation
3433	raw := NoMethod(*s)
3434	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3435}
3436
3437// Option: A protocol buffer option, which can be attached to a message,
3438// field, enumeration, etc.
3439type Option struct {
3440	// Name: The option's name. For protobuf built-in options (options
3441	// defined in descriptor.proto), this is the short name. For example,
3442	// "map_entry". For custom options, it should be the fully-qualified
3443	// name. For example, "google.api.http".
3444	Name string `json:"name,omitempty"`
3445
3446	// Value: The option's value packed in an Any message. If the value is a
3447	// primitive, the corresponding wrapper type defined in
3448	// google/protobuf/wrappers.proto should be used. If the value is an
3449	// enum, it should be stored as an int32 value using the
3450	// google.protobuf.Int32Value type.
3451	Value googleapi.RawMessage `json:"value,omitempty"`
3452
3453	// ForceSendFields is a list of field names (e.g. "Name") to
3454	// unconditionally include in API requests. By default, fields with
3455	// empty values are omitted from API requests. However, any non-pointer,
3456	// non-interface field appearing in ForceSendFields will be sent to the
3457	// server regardless of whether the field is empty or not. This may be
3458	// used to include empty fields in Patch requests.
3459	ForceSendFields []string `json:"-"`
3460
3461	// NullFields is a list of field names (e.g. "Name") to include in API
3462	// requests with the JSON null value. By default, fields with empty
3463	// values are omitted from API requests. However, any field with an
3464	// empty value appearing in NullFields will be sent to the server as
3465	// null. It is an error if a field in this list has a non-empty value.
3466	// This may be used to include null fields in Patch requests.
3467	NullFields []string `json:"-"`
3468}
3469
3470func (s *Option) MarshalJSON() ([]byte, error) {
3471	type NoMethod Option
3472	raw := NoMethod(*s)
3473	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3474}
3475
3476// Page: Represents a documentation page. A page can contain subpages to
3477// represent nested documentation set structure.
3478type Page struct {
3479	// Content: The Markdown content of the page. You can use (== include
3480	// {path} ==) to include content from a Markdown file.
3481	Content string `json:"content,omitempty"`
3482
3483	// Name: The name of the page. It will be used as an identity of the
3484	// page to generate URI of the page, text of the link to this page in
3485	// navigation, etc. The full page name (start from the root page name to
3486	// this page concatenated with `.`) can be used as reference to the page
3487	// in your documentation. For example: pages: - name: Tutorial content:
3488	// (== include tutorial.md ==) subpages: - name: Java content: (==
3489	// include tutorial_java.md ==) You can reference `Java` page using
3490	// Markdown reference link syntax: `Java`.
3491	Name string `json:"name,omitempty"`
3492
3493	// Subpages: Subpages of this page. The order of subpages specified here
3494	// will be honored in the generated docset.
3495	Subpages []*Page `json:"subpages,omitempty"`
3496
3497	// ForceSendFields is a list of field names (e.g. "Content") to
3498	// unconditionally include in API requests. By default, fields with
3499	// empty values are omitted from API requests. However, any non-pointer,
3500	// non-interface field appearing in ForceSendFields will be sent to the
3501	// server regardless of whether the field is empty or not. This may be
3502	// used to include empty fields in Patch requests.
3503	ForceSendFields []string `json:"-"`
3504
3505	// NullFields is a list of field names (e.g. "Content") to include in
3506	// API requests with the JSON null value. By default, fields with empty
3507	// values are omitted from API requests. However, any field with an
3508	// empty value appearing in NullFields will be sent to the server as
3509	// null. It is an error if a field in this list has a non-empty value.
3510	// This may be used to include null fields in Patch requests.
3511	NullFields []string `json:"-"`
3512}
3513
3514func (s *Page) MarshalJSON() ([]byte, error) {
3515	type NoMethod Page
3516	raw := NoMethod(*s)
3517	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3518}
3519
3520// PeeredDnsDomain: DNS domain suffix for which requests originating in
3521// the producer VPC network are resolved in the associated consumer VPC
3522// network.
3523type PeeredDnsDomain struct {
3524	// DnsSuffix: The DNS domain name suffix e.g. `example.com.`.
3525	DnsSuffix string `json:"dnsSuffix,omitempty"`
3526
3527	// Name: User assigned name for this resource. Must be unique within the
3528	// consumer network. The name must be 1-63 characters long, must begin
3529	// with a letter, end with a letter or digit, and only contain lowercase
3530	// letters, digits or dashes.
3531	Name string `json:"name,omitempty"`
3532
3533	// ForceSendFields is a list of field names (e.g. "DnsSuffix") to
3534	// unconditionally include in API requests. By default, fields with
3535	// empty values are omitted from API requests. However, any non-pointer,
3536	// non-interface field appearing in ForceSendFields will be sent to the
3537	// server regardless of whether the field is empty or not. This may be
3538	// used to include empty fields in Patch requests.
3539	ForceSendFields []string `json:"-"`
3540
3541	// NullFields is a list of field names (e.g. "DnsSuffix") to include in
3542	// API requests with the JSON null value. By default, fields with empty
3543	// values are omitted from API requests. However, any field with an
3544	// empty value appearing in NullFields will be sent to the server as
3545	// null. It is an error if a field in this list has a non-empty value.
3546	// This may be used to include null fields in Patch requests.
3547	NullFields []string `json:"-"`
3548}
3549
3550func (s *PeeredDnsDomain) MarshalJSON() ([]byte, error) {
3551	type NoMethod PeeredDnsDomain
3552	raw := NoMethod(*s)
3553	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3554}
3555
3556// PeeredDnsDomainMetadata: Metadata provided through GetOperation
3557// request for the LRO generated by CreatePeeredDnsDomain API.
3558type PeeredDnsDomainMetadata struct {
3559}
3560
3561// PolicyBinding: Grouping of IAM role and IAM member.
3562type PolicyBinding struct {
3563	// Member: Required. Member to bind the role with. See
3564	// /iam/docs/reference/rest/v1/Policy#Binding for how to format each
3565	// member. Eg. - user:myuser@mydomain.com -
3566	// serviceAccount:my-service-account@app.gserviceaccount.com
3567	Member string `json:"member,omitempty"`
3568
3569	// Role: Required. Role to apply. Only allowlisted roles can be used at
3570	// the specified granularity. The role must be one of the following: -
3571	// 'roles/container.hostServiceAgentUser' applied on the shared VPC host
3572	// project - 'roles/compute.securityAdmin' applied on the shared VPC
3573	// host project
3574	Role string `json:"role,omitempty"`
3575
3576	// ForceSendFields is a list of field names (e.g. "Member") to
3577	// unconditionally include in API requests. By default, fields with
3578	// empty values are omitted from API requests. However, any non-pointer,
3579	// non-interface field appearing in ForceSendFields will be sent to the
3580	// server regardless of whether the field is empty or not. This may be
3581	// used to include empty fields in Patch requests.
3582	ForceSendFields []string `json:"-"`
3583
3584	// NullFields is a list of field names (e.g. "Member") to include in API
3585	// requests with the JSON null value. By default, fields with empty
3586	// values are omitted from API requests. However, any field with an
3587	// empty value appearing in NullFields will be sent to the server as
3588	// null. It is an error if a field in this list has a non-empty value.
3589	// This may be used to include null fields in Patch requests.
3590	NullFields []string `json:"-"`
3591}
3592
3593func (s *PolicyBinding) MarshalJSON() ([]byte, error) {
3594	type NoMethod PolicyBinding
3595	raw := NoMethod(*s)
3596	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3597}
3598
3599// Quota: Quota configuration helps to achieve fairness and budgeting in
3600// service usage. The metric based quota configuration works this way: -
3601// The service configuration defines a set of metrics. - For API calls,
3602// the quota.metric_rules maps methods to metrics with corresponding
3603// costs. - The quota.limits defines limits on the metrics, which will
3604// be used for quota checks at runtime. An example quota configuration
3605// in yaml format: quota: limits: - name: apiWriteQpsPerProject metric:
3606// library.googleapis.com/write_calls unit: "1/min/{project}" # rate
3607// limit for consumer projects values: STANDARD: 10000 # The metric
3608// rules bind all methods to the read_calls metric, # except for the
3609// UpdateBook and DeleteBook methods. These two methods # are mapped to
3610// the write_calls metric, with the UpdateBook method # consuming at
3611// twice rate as the DeleteBook method. metric_rules: - selector: "*"
3612// metric_costs: library.googleapis.com/read_calls: 1 - selector:
3613// google.example.library.v1.LibraryService.UpdateBook metric_costs:
3614// library.googleapis.com/write_calls: 2 - selector:
3615// google.example.library.v1.LibraryService.DeleteBook metric_costs:
3616// library.googleapis.com/write_calls: 1 Corresponding Metric
3617// definition: metrics: - name: library.googleapis.com/read_calls
3618// display_name: Read requests metric_kind: DELTA value_type: INT64 -
3619// name: library.googleapis.com/write_calls display_name: Write requests
3620// metric_kind: DELTA value_type: INT64
3621type Quota struct {
3622	// Limits: List of `QuotaLimit` definitions for the service.
3623	Limits []*QuotaLimit `json:"limits,omitempty"`
3624
3625	// MetricRules: List of `MetricRule` definitions, each one mapping a
3626	// selected method to one or more metrics.
3627	MetricRules []*MetricRule `json:"metricRules,omitempty"`
3628
3629	// ForceSendFields is a list of field names (e.g. "Limits") to
3630	// unconditionally include in API requests. By default, fields with
3631	// empty values are omitted from API requests. However, any non-pointer,
3632	// non-interface field appearing in ForceSendFields will be sent to the
3633	// server regardless of whether the field is empty or not. This may be
3634	// used to include empty fields in Patch requests.
3635	ForceSendFields []string `json:"-"`
3636
3637	// NullFields is a list of field names (e.g. "Limits") to include in API
3638	// requests with the JSON null value. By default, fields with empty
3639	// values are omitted from API requests. However, any field with an
3640	// empty value appearing in NullFields will be sent to the server as
3641	// null. It is an error if a field in this list has a non-empty value.
3642	// This may be used to include null fields in Patch requests.
3643	NullFields []string `json:"-"`
3644}
3645
3646func (s *Quota) MarshalJSON() ([]byte, error) {
3647	type NoMethod Quota
3648	raw := NoMethod(*s)
3649	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3650}
3651
3652// QuotaLimit: `QuotaLimit` defines a specific limit that applies over a
3653// specified duration for a limit type. There can be at most one limit
3654// for a duration and limit type combination defined within a
3655// `QuotaGroup`.
3656type QuotaLimit struct {
3657	// DefaultLimit: Default number of tokens that can be consumed during
3658	// the specified duration. This is the number of tokens assigned when a
3659	// client application developer activates the service for his/her
3660	// project. Specifying a value of 0 will block all requests. This can be
3661	// used if you are provisioning quota to selected consumers and blocking
3662	// others. Similarly, a value of -1 will indicate an unlimited quota. No
3663	// other negative values are allowed. Used by group-based quotas only.
3664	DefaultLimit int64 `json:"defaultLimit,omitempty,string"`
3665
3666	// Description: Optional. User-visible, extended description for this
3667	// quota limit. Should be used only when more context is needed to
3668	// understand this limit than provided by the limit's display name (see:
3669	// `display_name`).
3670	Description string `json:"description,omitempty"`
3671
3672	// DisplayName: User-visible display name for this limit. Optional. If
3673	// not set, the UI will provide a default display name based on the
3674	// quota configuration. This field can be used to override the default
3675	// display name generated from the configuration.
3676	DisplayName string `json:"displayName,omitempty"`
3677
3678	// Duration: Duration of this limit in textual notation. Must be "100s"
3679	// or "1d". Used by group-based quotas only.
3680	Duration string `json:"duration,omitempty"`
3681
3682	// FreeTier: Free tier value displayed in the Developers Console for
3683	// this limit. The free tier is the number of tokens that will be
3684	// subtracted from the billed amount when billing is enabled. This field
3685	// can only be set on a limit with duration "1d", in a billable group;
3686	// it is invalid on any other limit. If this field is not set, it
3687	// defaults to 0, indicating that there is no free tier for this
3688	// service. Used by group-based quotas only.
3689	FreeTier int64 `json:"freeTier,omitempty,string"`
3690
3691	// MaxLimit: Maximum number of tokens that can be consumed during the
3692	// specified duration. Client application developers can override the
3693	// default limit up to this maximum. If specified, this value cannot be
3694	// set to a value less than the default limit. If not specified, it is
3695	// set to the default limit. To allow clients to apply overrides with no
3696	// upper bound, set this to -1, indicating unlimited maximum quota. Used
3697	// by group-based quotas only.
3698	MaxLimit int64 `json:"maxLimit,omitempty,string"`
3699
3700	// Metric: The name of the metric this quota limit applies to. The quota
3701	// limits with the same metric will be checked together during runtime.
3702	// The metric must be defined within the service config.
3703	Metric string `json:"metric,omitempty"`
3704
3705	// Name: Name of the quota limit. The name must be provided, and it must
3706	// be unique within the service. The name can only include alphanumeric
3707	// characters as well as '-'. The maximum length of the limit name is 64
3708	// characters.
3709	Name string `json:"name,omitempty"`
3710
3711	// Unit: Specify the unit of the quota limit. It uses the same syntax as
3712	// Metric.unit. The supported unit kinds are determined by the quota
3713	// backend system. Here are some examples: * "1/min/{project}" for quota
3714	// per minute per project. Note: the order of unit components is
3715	// insignificant. The "1" at the beginning is required to follow the
3716	// metric unit syntax.
3717	Unit string `json:"unit,omitempty"`
3718
3719	// Values: Tiered limit values. You must specify this as a key:value
3720	// pair, with an integer value that is the maximum number of requests
3721	// allowed for the specified unit. Currently only STANDARD is supported.
3722	Values map[string]string `json:"values,omitempty"`
3723
3724	// ForceSendFields is a list of field names (e.g. "DefaultLimit") to
3725	// unconditionally include in API requests. By default, fields with
3726	// empty values are omitted from API requests. However, any non-pointer,
3727	// non-interface field appearing in ForceSendFields will be sent to the
3728	// server regardless of whether the field is empty or not. This may be
3729	// used to include empty fields in Patch requests.
3730	ForceSendFields []string `json:"-"`
3731
3732	// NullFields is a list of field names (e.g. "DefaultLimit") to include
3733	// in API requests with the JSON null value. By default, fields with
3734	// empty values are omitted from API requests. However, any field with
3735	// an empty value appearing in NullFields will be sent to the server as
3736	// null. It is an error if a field in this list has a non-empty value.
3737	// This may be used to include null fields in Patch requests.
3738	NullFields []string `json:"-"`
3739}
3740
3741func (s *QuotaLimit) MarshalJSON() ([]byte, error) {
3742	type NoMethod QuotaLimit
3743	raw := NoMethod(*s)
3744	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3745}
3746
3747// Range: Represents a found unused range.
3748type Range struct {
3749	// IpCidrRange: CIDR range in "10.x.x.x/y" format that is within the
3750	// allocated ranges and currently unused.
3751	IpCidrRange string `json:"ipCidrRange,omitempty"`
3752
3753	// Network: In the Shared VPC host project, the VPC network that's
3754	// peered with the consumer network. For example:
3755	// `projects/1234321/global/networks/host-network`
3756	Network string `json:"network,omitempty"`
3757
3758	// ForceSendFields is a list of field names (e.g. "IpCidrRange") to
3759	// unconditionally include in API requests. By default, fields with
3760	// empty values are omitted from API requests. However, any non-pointer,
3761	// non-interface field appearing in ForceSendFields will be sent to the
3762	// server regardless of whether the field is empty or not. This may be
3763	// used to include empty fields in Patch requests.
3764	ForceSendFields []string `json:"-"`
3765
3766	// NullFields is a list of field names (e.g. "IpCidrRange") to include
3767	// in API requests with the JSON null value. By default, fields with
3768	// empty values are omitted from API requests. However, any field with
3769	// an empty value appearing in NullFields will be sent to the server as
3770	// null. It is an error if a field in this list has a non-empty value.
3771	// This may be used to include null fields in Patch requests.
3772	NullFields []string `json:"-"`
3773}
3774
3775func (s *Range) MarshalJSON() ([]byte, error) {
3776	type NoMethod Range
3777	raw := NoMethod(*s)
3778	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3779}
3780
3781// RangeReservation: Represents a range reservation.
3782type RangeReservation struct {
3783	// IpPrefixLength: Required. The size of the desired subnet. Use usual
3784	// CIDR range notation. For example, '30' to find unused x.x.x.x/30 CIDR
3785	// range. The goal is to determine if one of the allocated ranges has
3786	// enough free space for a subnet of the requested size.
3787	IpPrefixLength int64 `json:"ipPrefixLength,omitempty"`
3788
3789	// RequestedRanges: Optional. The name of one or more allocated IP
3790	// address ranges associated with this private service access
3791	// connection. If no range names are provided all ranges associated with
3792	// this connection will be considered. If a CIDR range with the
3793	// specified IP prefix length is not available within these ranges the
3794	// validation fails.
3795	RequestedRanges []string `json:"requestedRanges,omitempty"`
3796
3797	// SecondaryRangeIpPrefixLengths: Optional. The size of the desired
3798	// secondary ranges for the subnet. Use usual CIDR range notation. For
3799	// example, '30' to find unused x.x.x.x/30 CIDR range. The goal is to
3800	// determine that the allocated ranges have enough free space for all
3801	// the requested secondary ranges.
3802	SecondaryRangeIpPrefixLengths []int64 `json:"secondaryRangeIpPrefixLengths,omitempty"`
3803
3804	// SubnetworkCandidates: Optional. List of subnetwork candidates to
3805	// validate. The required input fields are `name`, `network`, and
3806	// `region`. Subnetworks from this list which exist will be returned in
3807	// the response with the `ip_cidr_range`, `secondary_ip_cider_ranges`,
3808	// and `outside_allocation` fields set.
3809	SubnetworkCandidates []*Subnetwork `json:"subnetworkCandidates,omitempty"`
3810
3811	// ForceSendFields is a list of field names (e.g. "IpPrefixLength") to
3812	// unconditionally include in API requests. By default, fields with
3813	// empty values are omitted from API requests. However, any non-pointer,
3814	// non-interface field appearing in ForceSendFields will be sent to the
3815	// server regardless of whether the field is empty or not. This may be
3816	// used to include empty fields in Patch requests.
3817	ForceSendFields []string `json:"-"`
3818
3819	// NullFields is a list of field names (e.g. "IpPrefixLength") to
3820	// include in API requests with the JSON null value. By default, fields
3821	// with empty values are omitted from API requests. However, any field
3822	// with an empty value appearing in NullFields will be sent to the
3823	// server as null. It is an error if a field in this list has a
3824	// non-empty value. This may be used to include null fields in Patch
3825	// requests.
3826	NullFields []string `json:"-"`
3827}
3828
3829func (s *RangeReservation) MarshalJSON() ([]byte, error) {
3830	type NoMethod RangeReservation
3831	raw := NoMethod(*s)
3832	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3833}
3834
3835// RemoveDnsRecordSetMetadata: Metadata provided through GetOperation
3836// request for the LRO generated by RemoveDnsRecordSet API
3837type RemoveDnsRecordSetMetadata struct {
3838}
3839
3840// RemoveDnsRecordSetRequest: Request to remove a record set from a
3841// private managed DNS zone in the shared producer host project. The
3842// name, type, ttl, and data values must all exactly match an existing
3843// record set in the specified zone.
3844type RemoveDnsRecordSetRequest struct {
3845	// ConsumerNetwork: Required. The network that the consumer is using to
3846	// connect with services. Must be in the form of
3847	// projects/{project}/global/networks/{network} {project} is the project
3848	// number, as in '12345' {network} is the network name.
3849	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
3850
3851	// DnsRecordSet: Required. The DNS record set to remove.
3852	DnsRecordSet *DnsRecordSet `json:"dnsRecordSet,omitempty"`
3853
3854	// Zone: Required. The name of the private DNS zone in the shared
3855	// producer host project from which the record set will be removed.
3856	Zone string `json:"zone,omitempty"`
3857
3858	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
3859	// unconditionally include in API requests. By default, fields with
3860	// empty values are omitted from API requests. However, any non-pointer,
3861	// non-interface field appearing in ForceSendFields will be sent to the
3862	// server regardless of whether the field is empty or not. This may be
3863	// used to include empty fields in Patch requests.
3864	ForceSendFields []string `json:"-"`
3865
3866	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
3867	// include in API requests with the JSON null value. By default, fields
3868	// with empty values are omitted from API requests. However, any field
3869	// with an empty value appearing in NullFields will be sent to the
3870	// server as null. It is an error if a field in this list has a
3871	// non-empty value. This may be used to include null fields in Patch
3872	// requests.
3873	NullFields []string `json:"-"`
3874}
3875
3876func (s *RemoveDnsRecordSetRequest) MarshalJSON() ([]byte, error) {
3877	type NoMethod RemoveDnsRecordSetRequest
3878	raw := NoMethod(*s)
3879	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3880}
3881
3882// RemoveDnsRecordSetResponse: Blank message response type for
3883// RemoveDnsRecordSet API
3884type RemoveDnsRecordSetResponse struct {
3885}
3886
3887// RemoveDnsZoneMetadata: Metadata provided through GetOperation request
3888// for the LRO generated by RemoveDnsZone API
3889type RemoveDnsZoneMetadata struct {
3890}
3891
3892// RemoveDnsZoneRequest: Request to remove a private managed DNS zone in
3893// the shared producer host project and a matching DNS peering zone in
3894// the consumer project.
3895type RemoveDnsZoneRequest struct {
3896	// ConsumerNetwork: Required. The network that the consumer is using to
3897	// connect with services. Must be in the form of
3898	// projects/{project}/global/networks/{network} {project} is the project
3899	// number, as in '12345' {network} is the network name.
3900	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
3901
3902	// Name: Required. The name for both the private zone in the shared
3903	// producer host project and the peering zone in the consumer project.
3904	Name string `json:"name,omitempty"`
3905
3906	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
3907	// unconditionally include in API requests. By default, fields with
3908	// empty values are omitted from API requests. However, any non-pointer,
3909	// non-interface field appearing in ForceSendFields will be sent to the
3910	// server regardless of whether the field is empty or not. This may be
3911	// used to include empty fields in Patch requests.
3912	ForceSendFields []string `json:"-"`
3913
3914	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
3915	// include in API requests with the JSON null value. By default, fields
3916	// with empty values are omitted from API requests. However, any field
3917	// with an empty value appearing in NullFields will be sent to the
3918	// server as null. It is an error if a field in this list has a
3919	// non-empty value. This may be used to include null fields in Patch
3920	// requests.
3921	NullFields []string `json:"-"`
3922}
3923
3924func (s *RemoveDnsZoneRequest) MarshalJSON() ([]byte, error) {
3925	type NoMethod RemoveDnsZoneRequest
3926	raw := NoMethod(*s)
3927	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3928}
3929
3930// RemoveDnsZoneResponse: Blank message response type for RemoveDnsZone
3931// API
3932type RemoveDnsZoneResponse struct {
3933}
3934
3935// Route: Represents a route that was created or discovered by a private
3936// access management service.
3937type Route struct {
3938	// DestRange: Destination CIDR range that this route applies to.
3939	DestRange string `json:"destRange,omitempty"`
3940
3941	// Name: Route name. See https://cloud.google.com/vpc/docs/routes
3942	Name string `json:"name,omitempty"`
3943
3944	// Network: Fully-qualified URL of the VPC network in the producer host
3945	// tenant project that this route applies to. For example:
3946	// `projects/123456/global/networks/host-network`
3947	Network string `json:"network,omitempty"`
3948
3949	// NextHopGateway: Fully-qualified URL of the gateway that should handle
3950	// matching packets that this route applies to. For example:
3951	// `projects/123456/global/gateways/default-internet-gateway`
3952	NextHopGateway string `json:"nextHopGateway,omitempty"`
3953
3954	// ForceSendFields is a list of field names (e.g. "DestRange") to
3955	// unconditionally include in API requests. By default, fields with
3956	// empty values are omitted from API requests. However, any non-pointer,
3957	// non-interface field appearing in ForceSendFields will be sent to the
3958	// server regardless of whether the field is empty or not. This may be
3959	// used to include empty fields in Patch requests.
3960	ForceSendFields []string `json:"-"`
3961
3962	// NullFields is a list of field names (e.g. "DestRange") to include in
3963	// API requests with the JSON null value. By default, fields with empty
3964	// values are omitted from API requests. However, any field with an
3965	// empty value appearing in NullFields will be sent to the server as
3966	// null. It is an error if a field in this list has a non-empty value.
3967	// This may be used to include null fields in Patch requests.
3968	NullFields []string `json:"-"`
3969}
3970
3971func (s *Route) MarshalJSON() ([]byte, error) {
3972	type NoMethod Route
3973	raw := NoMethod(*s)
3974	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3975}
3976
3977// SearchRangeRequest: Request to search for an unused range within
3978// allocated ranges.
3979type SearchRangeRequest struct {
3980	// IpPrefixLength: Required. The prefix length of the IP range. Use
3981	// usual CIDR range notation. For example, '30' to find unused
3982	// x.x.x.x/30 CIDR range. Actual range will be determined using
3983	// allocated range for the consumer peered network and returned in the
3984	// result.
3985	IpPrefixLength int64 `json:"ipPrefixLength,omitempty"`
3986
3987	// Network: Network name in the consumer project. This network must have
3988	// been already peered with a shared VPC network using CreateConnection
3989	// method. Must be in a form
3990	// 'projects/{project}/global/networks/{network}'. {project} is a
3991	// project number, as in '12345' {network} is network name.
3992	Network string `json:"network,omitempty"`
3993
3994	// ForceSendFields is a list of field names (e.g. "IpPrefixLength") to
3995	// unconditionally include in API requests. By default, fields with
3996	// empty values are omitted from API requests. However, any non-pointer,
3997	// non-interface field appearing in ForceSendFields will be sent to the
3998	// server regardless of whether the field is empty or not. This may be
3999	// used to include empty fields in Patch requests.
4000	ForceSendFields []string `json:"-"`
4001
4002	// NullFields is a list of field names (e.g. "IpPrefixLength") to
4003	// include in API requests with the JSON null value. By default, fields
4004	// with empty values are omitted from API requests. However, any field
4005	// with an empty value appearing in NullFields will be sent to the
4006	// server as null. It is an error if a field in this list has a
4007	// non-empty value. This may be used to include null fields in Patch
4008	// requests.
4009	NullFields []string `json:"-"`
4010}
4011
4012func (s *SearchRangeRequest) MarshalJSON() ([]byte, error) {
4013	type NoMethod SearchRangeRequest
4014	raw := NoMethod(*s)
4015	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4016}
4017
4018type SecondaryIpRange struct {
4019	// IpCidrRange: Secondary IP CIDR range in `x.x.x.x/y` format.
4020	IpCidrRange string `json:"ipCidrRange,omitempty"`
4021
4022	// RangeName: Name of the secondary IP range.
4023	RangeName string `json:"rangeName,omitempty"`
4024
4025	// ForceSendFields is a list of field names (e.g. "IpCidrRange") to
4026	// unconditionally include in API requests. By default, fields with
4027	// empty values are omitted from API requests. However, any non-pointer,
4028	// non-interface field appearing in ForceSendFields will be sent to the
4029	// server regardless of whether the field is empty or not. This may be
4030	// used to include empty fields in Patch requests.
4031	ForceSendFields []string `json:"-"`
4032
4033	// NullFields is a list of field names (e.g. "IpCidrRange") to include
4034	// in API requests with the JSON null value. By default, fields with
4035	// empty values are omitted from API requests. However, any field with
4036	// an empty value appearing in NullFields will be sent to the server as
4037	// null. It is an error if a field in this list has a non-empty value.
4038	// This may be used to include null fields in Patch requests.
4039	NullFields []string `json:"-"`
4040}
4041
4042func (s *SecondaryIpRange) MarshalJSON() ([]byte, error) {
4043	type NoMethod SecondaryIpRange
4044	raw := NoMethod(*s)
4045	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4046}
4047
4048type SecondaryIpRangeSpec struct {
4049	// IpPrefixLength: Required. The prefix length of the secondary IP
4050	// range. Use CIDR range notation, such as `30` to provision a secondary
4051	// IP range with an `x.x.x.x/30` CIDR range. The IP address range is
4052	// drawn from a pool of available ranges in the service consumer's
4053	// allocated range.
4054	IpPrefixLength int64 `json:"ipPrefixLength,omitempty"`
4055
4056	// RangeName: Required. A name for the secondary IP range. The name must
4057	// be 1-63 characters long, and comply with RFC1035. The name must be
4058	// unique within the subnetwork.
4059	RangeName string `json:"rangeName,omitempty"`
4060
4061	// RequestedAddress: Optional. The starting address of a range. The
4062	// address must be a valid IPv4 address in the x.x.x.x format. This
4063	// value combined with the IP prefix range is the CIDR range for the
4064	// secondary IP range. The range must be within the allocated range that
4065	// is assigned to the private connection. If the CIDR range isn't
4066	// available, the call fails.
4067	RequestedAddress string `json:"requestedAddress,omitempty"`
4068
4069	// ForceSendFields is a list of field names (e.g. "IpPrefixLength") to
4070	// unconditionally include in API requests. By default, fields with
4071	// empty values are omitted from API requests. However, any non-pointer,
4072	// non-interface field appearing in ForceSendFields will be sent to the
4073	// server regardless of whether the field is empty or not. This may be
4074	// used to include empty fields in Patch requests.
4075	ForceSendFields []string `json:"-"`
4076
4077	// NullFields is a list of field names (e.g. "IpPrefixLength") to
4078	// include in API requests with the JSON null value. By default, fields
4079	// with empty values are omitted from API requests. However, any field
4080	// with an empty value appearing in NullFields will be sent to the
4081	// server as null. It is an error if a field in this list has a
4082	// non-empty value. This may be used to include null fields in Patch
4083	// requests.
4084	NullFields []string `json:"-"`
4085}
4086
4087func (s *SecondaryIpRangeSpec) MarshalJSON() ([]byte, error) {
4088	type NoMethod SecondaryIpRangeSpec
4089	raw := NoMethod(*s)
4090	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4091}
4092
4093// Service: `Service` is the root object of Google service configuration
4094// schema. It describes basic information about a service, such as the
4095// name and the title, and delegates other aspects to sub-sections. Each
4096// sub-section is either a proto message or a repeated proto message
4097// that configures a specific aspect, such as auth. See each proto
4098// message definition for details. Example: type: google.api.Service
4099// name: calendar.googleapis.com title: Google Calendar API apis: -
4100// name: google.calendar.v3.Calendar authentication: providers: - id:
4101// google_calendar_auth jwks_uri:
4102// https://www.googleapis.com/oauth2/v1/certs issuer:
4103// https://securetoken.google.com rules: - selector: "*" requirements:
4104// provider_id: google_calendar_auth
4105type Service struct {
4106	// Apis: A list of API interfaces exported by this service. Only the
4107	// `name` field of the google.protobuf.Api needs to be provided by the
4108	// configuration author, as the remaining fields will be derived from
4109	// the IDL during the normalization process. It is an error to specify
4110	// an API interface here which cannot be resolved against the associated
4111	// IDL files.
4112	Apis []*Api `json:"apis,omitempty"`
4113
4114	// Authentication: Auth configuration.
4115	Authentication *Authentication `json:"authentication,omitempty"`
4116
4117	// Backend: API backend configuration.
4118	Backend *Backend `json:"backend,omitempty"`
4119
4120	// Billing: Billing configuration.
4121	Billing *Billing `json:"billing,omitempty"`
4122
4123	// ConfigVersion: Deprecated. The service config compiler always sets
4124	// this field to `3`.
4125	ConfigVersion int64 `json:"configVersion,omitempty"`
4126
4127	// Context: Context configuration.
4128	Context *Context `json:"context,omitempty"`
4129
4130	// Control: Configuration for the service control plane.
4131	Control *Control `json:"control,omitempty"`
4132
4133	// CustomError: Custom error configuration.
4134	CustomError *CustomError `json:"customError,omitempty"`
4135
4136	// Documentation: Additional API documentation.
4137	Documentation *Documentation `json:"documentation,omitempty"`
4138
4139	// Endpoints: Configuration for network endpoints. If this is empty,
4140	// then an endpoint with the same name as the service is automatically
4141	// generated to service all defined APIs.
4142	Endpoints []*Endpoint `json:"endpoints,omitempty"`
4143
4144	// Enums: A list of all enum types included in this API service. Enums
4145	// referenced directly or indirectly by the `apis` are automatically
4146	// included. Enums which are not referenced but shall be included should
4147	// be listed here by name. Example: enums: - name:
4148	// google.someapi.v1.SomeEnum
4149	Enums []*Enum `json:"enums,omitempty"`
4150
4151	// Http: HTTP configuration.
4152	Http *Http `json:"http,omitempty"`
4153
4154	// Id: A unique ID for a specific instance of this message, typically
4155	// assigned by the client for tracking purpose. Must be no longer than
4156	// 63 characters and only lower case letters, digits, '.', '_' and '-'
4157	// are allowed. If empty, the server may choose to generate one instead.
4158	Id string `json:"id,omitempty"`
4159
4160	// Logging: Logging configuration.
4161	Logging *Logging `json:"logging,omitempty"`
4162
4163	// Logs: Defines the logs used by this service.
4164	Logs []*LogDescriptor `json:"logs,omitempty"`
4165
4166	// Metrics: Defines the metrics used by this service.
4167	Metrics []*MetricDescriptor `json:"metrics,omitempty"`
4168
4169	// MonitoredResources: Defines the monitored resources used by this
4170	// service. This is required by the Service.monitoring and
4171	// Service.logging configurations.
4172	MonitoredResources []*MonitoredResourceDescriptor `json:"monitoredResources,omitempty"`
4173
4174	// Monitoring: Monitoring configuration.
4175	Monitoring *Monitoring `json:"monitoring,omitempty"`
4176
4177	// Name: The service name, which is a DNS-like logical identifier for
4178	// the service, such as `calendar.googleapis.com`. The service name
4179	// typically goes through DNS verification to make sure the owner of the
4180	// service also owns the DNS name.
4181	Name string `json:"name,omitempty"`
4182
4183	// ProducerProjectId: The Google project that owns this service.
4184	ProducerProjectId string `json:"producerProjectId,omitempty"`
4185
4186	// Quota: Quota configuration.
4187	Quota *Quota `json:"quota,omitempty"`
4188
4189	// SourceInfo: Output only. The source information for this
4190	// configuration if available.
4191	SourceInfo *SourceInfo `json:"sourceInfo,omitempty"`
4192
4193	// SystemParameters: System parameter configuration.
4194	SystemParameters *SystemParameters `json:"systemParameters,omitempty"`
4195
4196	// SystemTypes: A list of all proto message types included in this API
4197	// service. It serves similar purpose as [google.api.Service.types],
4198	// except that these types are not needed by user-defined APIs.
4199	// Therefore, they will not show up in the generated discovery doc. This
4200	// field should only be used to define system APIs in ESF.
4201	SystemTypes []*Type `json:"systemTypes,omitempty"`
4202
4203	// Title: The product title for this service.
4204	Title string `json:"title,omitempty"`
4205
4206	// Types: A list of all proto message types included in this API
4207	// service. Types referenced directly or indirectly by the `apis` are
4208	// automatically included. Messages which are not referenced but shall
4209	// be included, such as types used by the `google.protobuf.Any` type,
4210	// should be listed here by name. Example: types: - name:
4211	// google.protobuf.Int32
4212	Types []*Type `json:"types,omitempty"`
4213
4214	// Usage: Configuration controlling usage of this service.
4215	Usage *Usage `json:"usage,omitempty"`
4216
4217	// ForceSendFields is a list of field names (e.g. "Apis") to
4218	// unconditionally include in API requests. By default, fields with
4219	// empty values are omitted from API requests. However, any non-pointer,
4220	// non-interface field appearing in ForceSendFields will be sent to the
4221	// server regardless of whether the field is empty or not. This may be
4222	// used to include empty fields in Patch requests.
4223	ForceSendFields []string `json:"-"`
4224
4225	// NullFields is a list of field names (e.g. "Apis") to include in API
4226	// requests with the JSON null value. By default, fields with empty
4227	// values are omitted from API requests. However, any field with an
4228	// empty value appearing in NullFields will be sent to the server as
4229	// null. It is an error if a field in this list has a non-empty value.
4230	// This may be used to include null fields in Patch requests.
4231	NullFields []string `json:"-"`
4232}
4233
4234func (s *Service) MarshalJSON() ([]byte, error) {
4235	type NoMethod Service
4236	raw := NoMethod(*s)
4237	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4238}
4239
4240// SourceContext: `SourceContext` represents information about the
4241// source of a protobuf element, like the file in which it is defined.
4242type SourceContext struct {
4243	// FileName: The path-qualified name of the .proto file that contained
4244	// the associated protobuf element. For example:
4245	// "google/protobuf/source_context.proto".
4246	FileName string `json:"fileName,omitempty"`
4247
4248	// ForceSendFields is a list of field names (e.g. "FileName") to
4249	// unconditionally include in API requests. By default, fields with
4250	// empty values are omitted from API requests. However, any non-pointer,
4251	// non-interface field appearing in ForceSendFields will be sent to the
4252	// server regardless of whether the field is empty or not. This may be
4253	// used to include empty fields in Patch requests.
4254	ForceSendFields []string `json:"-"`
4255
4256	// NullFields is a list of field names (e.g. "FileName") to include in
4257	// API requests with the JSON null value. By default, fields with empty
4258	// values are omitted from API requests. However, any field with an
4259	// empty value appearing in NullFields will be sent to the server as
4260	// null. It is an error if a field in this list has a non-empty value.
4261	// This may be used to include null fields in Patch requests.
4262	NullFields []string `json:"-"`
4263}
4264
4265func (s *SourceContext) MarshalJSON() ([]byte, error) {
4266	type NoMethod SourceContext
4267	raw := NoMethod(*s)
4268	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4269}
4270
4271// SourceInfo: Source information used to create a Service Config
4272type SourceInfo struct {
4273	// SourceFiles: All files used during config generation.
4274	SourceFiles []googleapi.RawMessage `json:"sourceFiles,omitempty"`
4275
4276	// ForceSendFields is a list of field names (e.g. "SourceFiles") to
4277	// unconditionally include in API requests. By default, fields with
4278	// empty values are omitted from API requests. However, any non-pointer,
4279	// non-interface field appearing in ForceSendFields will be sent to the
4280	// server regardless of whether the field is empty or not. This may be
4281	// used to include empty fields in Patch requests.
4282	ForceSendFields []string `json:"-"`
4283
4284	// NullFields is a list of field names (e.g. "SourceFiles") to include
4285	// in API requests with the JSON null value. By default, fields with
4286	// empty values are omitted from API requests. However, any field with
4287	// an empty value appearing in NullFields will be sent to the server as
4288	// null. It is an error if a field in this list has a non-empty value.
4289	// This may be used to include null fields in Patch requests.
4290	NullFields []string `json:"-"`
4291}
4292
4293func (s *SourceInfo) MarshalJSON() ([]byte, error) {
4294	type NoMethod SourceInfo
4295	raw := NoMethod(*s)
4296	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4297}
4298
4299// Status: The `Status` type defines a logical error model that is
4300// suitable for different programming environments, including REST APIs
4301// and RPC APIs. It is used by gRPC (https://github.com/grpc). Each
4302// `Status` message contains three pieces of data: error code, error
4303// message, and error details. You can find out more about this error
4304// model and how to work with it in the API Design Guide
4305// (https://cloud.google.com/apis/design/errors).
4306type Status struct {
4307	// Code: The status code, which should be an enum value of
4308	// google.rpc.Code.
4309	Code int64 `json:"code,omitempty"`
4310
4311	// Details: A list of messages that carry the error details. There is a
4312	// common set of message types for APIs to use.
4313	Details []googleapi.RawMessage `json:"details,omitempty"`
4314
4315	// Message: A developer-facing error message, which should be in
4316	// English. Any user-facing error message should be localized and sent
4317	// in the google.rpc.Status.details field, or localized by the client.
4318	Message string `json:"message,omitempty"`
4319
4320	// ForceSendFields is a list of field names (e.g. "Code") to
4321	// unconditionally include in API requests. By default, fields with
4322	// empty values are omitted from API requests. However, any non-pointer,
4323	// non-interface field appearing in ForceSendFields will be sent to the
4324	// server regardless of whether the field is empty or not. This may be
4325	// used to include empty fields in Patch requests.
4326	ForceSendFields []string `json:"-"`
4327
4328	// NullFields is a list of field names (e.g. "Code") to include in API
4329	// requests with the JSON null value. By default, fields with empty
4330	// values are omitted from API requests. However, any field with an
4331	// empty value appearing in NullFields will be sent to the server as
4332	// null. It is an error if a field in this list has a non-empty value.
4333	// This may be used to include null fields in Patch requests.
4334	NullFields []string `json:"-"`
4335}
4336
4337func (s *Status) MarshalJSON() ([]byte, error) {
4338	type NoMethod Status
4339	raw := NoMethod(*s)
4340	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4341}
4342
4343// Subnetwork: Represents a subnet that was created or discovered by a
4344// private access management service.
4345type Subnetwork struct {
4346	// IpCidrRange: Subnetwork CIDR range in `10.x.x.x/y` format.
4347	IpCidrRange string `json:"ipCidrRange,omitempty"`
4348
4349	// Name: Subnetwork name. See https://cloud.google.com/compute/docs/vpc/
4350	Name string `json:"name,omitempty"`
4351
4352	// Network: In the Shared VPC host project, the VPC network that's
4353	// peered with the consumer network. For example:
4354	// `projects/1234321/global/networks/host-network`
4355	Network string `json:"network,omitempty"`
4356
4357	// OutsideAllocation: This is a discovered subnet that is not within the
4358	// current consumer allocated ranges.
4359	OutsideAllocation bool `json:"outsideAllocation,omitempty"`
4360
4361	// Region: GCP region where the subnetwork is located.
4362	Region string `json:"region,omitempty"`
4363
4364	// SecondaryIpRanges: List of secondary IP ranges in this subnetwork.
4365	SecondaryIpRanges []*SecondaryIpRange `json:"secondaryIpRanges,omitempty"`
4366
4367	// ForceSendFields is a list of field names (e.g. "IpCidrRange") to
4368	// unconditionally include in API requests. By default, fields with
4369	// empty values are omitted from API requests. However, any non-pointer,
4370	// non-interface field appearing in ForceSendFields will be sent to the
4371	// server regardless of whether the field is empty or not. This may be
4372	// used to include empty fields in Patch requests.
4373	ForceSendFields []string `json:"-"`
4374
4375	// NullFields is a list of field names (e.g. "IpCidrRange") to include
4376	// in API requests with the JSON null value. By default, fields with
4377	// empty values are omitted from API requests. However, any field with
4378	// an empty value appearing in NullFields will be sent to the server as
4379	// null. It is an error if a field in this list has a non-empty value.
4380	// This may be used to include null fields in Patch requests.
4381	NullFields []string `json:"-"`
4382}
4383
4384func (s *Subnetwork) MarshalJSON() ([]byte, error) {
4385	type NoMethod Subnetwork
4386	raw := NoMethod(*s)
4387	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4388}
4389
4390// SystemParameter: Define a parameter's name and location. The
4391// parameter may be passed as either an HTTP header or a URL query
4392// parameter, and if both are passed the behavior is
4393// implementation-dependent.
4394type SystemParameter struct {
4395	// HttpHeader: Define the HTTP header name to use for the parameter. It
4396	// is case insensitive.
4397	HttpHeader string `json:"httpHeader,omitempty"`
4398
4399	// Name: Define the name of the parameter, such as "api_key" . It is
4400	// case sensitive.
4401	Name string `json:"name,omitempty"`
4402
4403	// UrlQueryParameter: Define the URL query parameter name to use for the
4404	// parameter. It is case sensitive.
4405	UrlQueryParameter string `json:"urlQueryParameter,omitempty"`
4406
4407	// ForceSendFields is a list of field names (e.g. "HttpHeader") to
4408	// unconditionally include in API requests. By default, fields with
4409	// empty values are omitted from API requests. However, any non-pointer,
4410	// non-interface field appearing in ForceSendFields will be sent to the
4411	// server regardless of whether the field is empty or not. This may be
4412	// used to include empty fields in Patch requests.
4413	ForceSendFields []string `json:"-"`
4414
4415	// NullFields is a list of field names (e.g. "HttpHeader") to include in
4416	// API requests with the JSON null value. By default, fields with empty
4417	// values are omitted from API requests. However, any field with an
4418	// empty value appearing in NullFields will be sent to the server as
4419	// null. It is an error if a field in this list has a non-empty value.
4420	// This may be used to include null fields in Patch requests.
4421	NullFields []string `json:"-"`
4422}
4423
4424func (s *SystemParameter) MarshalJSON() ([]byte, error) {
4425	type NoMethod SystemParameter
4426	raw := NoMethod(*s)
4427	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4428}
4429
4430// SystemParameterRule: Define a system parameter rule mapping system
4431// parameter definitions to methods.
4432type SystemParameterRule struct {
4433	// Parameters: Define parameters. Multiple names may be defined for a
4434	// parameter. For a given method call, only one of them should be used.
4435	// If multiple names are used the behavior is implementation-dependent.
4436	// If none of the specified names are present the behavior is
4437	// parameter-dependent.
4438	Parameters []*SystemParameter `json:"parameters,omitempty"`
4439
4440	// Selector: Selects the methods to which this rule applies. Use '*' to
4441	// indicate all methods in all APIs. Refer to selector for syntax
4442	// details.
4443	Selector string `json:"selector,omitempty"`
4444
4445	// ForceSendFields is a list of field names (e.g. "Parameters") to
4446	// unconditionally include in API requests. By default, fields with
4447	// empty values are omitted from API requests. However, any non-pointer,
4448	// non-interface field appearing in ForceSendFields will be sent to the
4449	// server regardless of whether the field is empty or not. This may be
4450	// used to include empty fields in Patch requests.
4451	ForceSendFields []string `json:"-"`
4452
4453	// NullFields is a list of field names (e.g. "Parameters") to include in
4454	// API requests with the JSON null value. By default, fields with empty
4455	// values are omitted from API requests. However, any field with an
4456	// empty value appearing in NullFields will be sent to the server as
4457	// null. It is an error if a field in this list has a non-empty value.
4458	// This may be used to include null fields in Patch requests.
4459	NullFields []string `json:"-"`
4460}
4461
4462func (s *SystemParameterRule) MarshalJSON() ([]byte, error) {
4463	type NoMethod SystemParameterRule
4464	raw := NoMethod(*s)
4465	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4466}
4467
4468// SystemParameters: ### System parameter configuration A system
4469// parameter is a special kind of parameter defined by the API system,
4470// not by an individual API. It is typically mapped to an HTTP header
4471// and/or a URL query parameter. This configuration specifies which
4472// methods change the names of the system parameters.
4473type SystemParameters struct {
4474	// Rules: Define system parameters. The parameters defined here will
4475	// override the default parameters implemented by the system. If this
4476	// field is missing from the service config, default system parameters
4477	// will be used. Default system parameters and names is
4478	// implementation-dependent. Example: define api key for all methods
4479	// system_parameters rules: - selector: "*" parameters: - name: api_key
4480	// url_query_parameter: api_key Example: define 2 api key names for a
4481	// specific method. system_parameters rules: - selector: "/ListShelves"
4482	// parameters: - name: api_key http_header: Api-Key1 - name: api_key
4483	// http_header: Api-Key2 **NOTE:** All service configuration rules
4484	// follow "last one wins" order.
4485	Rules []*SystemParameterRule `json:"rules,omitempty"`
4486
4487	// ForceSendFields is a list of field names (e.g. "Rules") to
4488	// unconditionally include in API requests. By default, fields with
4489	// empty values are omitted from API requests. However, any non-pointer,
4490	// non-interface field appearing in ForceSendFields will be sent to the
4491	// server regardless of whether the field is empty or not. This may be
4492	// used to include empty fields in Patch requests.
4493	ForceSendFields []string `json:"-"`
4494
4495	// NullFields is a list of field names (e.g. "Rules") to include in API
4496	// requests with the JSON null value. By default, fields with empty
4497	// values are omitted from API requests. However, any field with an
4498	// empty value appearing in NullFields will be sent to the server as
4499	// null. It is an error if a field in this list has a non-empty value.
4500	// This may be used to include null fields in Patch requests.
4501	NullFields []string `json:"-"`
4502}
4503
4504func (s *SystemParameters) MarshalJSON() ([]byte, error) {
4505	type NoMethod SystemParameters
4506	raw := NoMethod(*s)
4507	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4508}
4509
4510// Type: A protocol buffer message type.
4511type Type struct {
4512	// Fields: The list of fields.
4513	Fields []*Field `json:"fields,omitempty"`
4514
4515	// Name: The fully qualified message name.
4516	Name string `json:"name,omitempty"`
4517
4518	// Oneofs: The list of types appearing in `oneof` definitions in this
4519	// type.
4520	Oneofs []string `json:"oneofs,omitempty"`
4521
4522	// Options: The protocol buffer options.
4523	Options []*Option `json:"options,omitempty"`
4524
4525	// SourceContext: The source context.
4526	SourceContext *SourceContext `json:"sourceContext,omitempty"`
4527
4528	// Syntax: The source syntax.
4529	//
4530	// Possible values:
4531	//   "SYNTAX_PROTO2" - Syntax `proto2`.
4532	//   "SYNTAX_PROTO3" - Syntax `proto3`.
4533	Syntax string `json:"syntax,omitempty"`
4534
4535	// ForceSendFields is a list of field names (e.g. "Fields") to
4536	// unconditionally include in API requests. By default, fields with
4537	// empty values are omitted from API requests. However, any non-pointer,
4538	// non-interface field appearing in ForceSendFields will be sent to the
4539	// server regardless of whether the field is empty or not. This may be
4540	// used to include empty fields in Patch requests.
4541	ForceSendFields []string `json:"-"`
4542
4543	// NullFields is a list of field names (e.g. "Fields") to include in API
4544	// requests with the JSON null value. By default, fields with empty
4545	// values are omitted from API requests. However, any field with an
4546	// empty value appearing in NullFields will be sent to the server as
4547	// null. It is an error if a field in this list has a non-empty value.
4548	// This may be used to include null fields in Patch requests.
4549	NullFields []string `json:"-"`
4550}
4551
4552func (s *Type) MarshalJSON() ([]byte, error) {
4553	type NoMethod Type
4554	raw := NoMethod(*s)
4555	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4556}
4557
4558// UpdateConsumerConfigRequest: Request to update the configuration of a
4559// service networking connection including the import/export of custom
4560// routes and subnetwork routes with public IP.
4561type UpdateConsumerConfigRequest struct {
4562	// ConsumerConfig: Required. The updated peering config.
4563	ConsumerConfig *ConsumerConfig `json:"consumerConfig,omitempty"`
4564
4565	// ForceSendFields is a list of field names (e.g. "ConsumerConfig") to
4566	// unconditionally include in API requests. By default, fields with
4567	// empty values are omitted from API requests. However, any non-pointer,
4568	// non-interface field appearing in ForceSendFields will be sent to the
4569	// server regardless of whether the field is empty or not. This may be
4570	// used to include empty fields in Patch requests.
4571	ForceSendFields []string `json:"-"`
4572
4573	// NullFields is a list of field names (e.g. "ConsumerConfig") to
4574	// include in API requests with the JSON null value. By default, fields
4575	// with empty values are omitted from API requests. However, any field
4576	// with an empty value appearing in NullFields will be sent to the
4577	// server as null. It is an error if a field in this list has a
4578	// non-empty value. This may be used to include null fields in Patch
4579	// requests.
4580	NullFields []string `json:"-"`
4581}
4582
4583func (s *UpdateConsumerConfigRequest) MarshalJSON() ([]byte, error) {
4584	type NoMethod UpdateConsumerConfigRequest
4585	raw := NoMethod(*s)
4586	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4587}
4588
4589// UpdateDnsRecordSetMetadata: Metadata provided through GetOperation
4590// request for the LRO generated by UpdateDnsRecordSet API
4591type UpdateDnsRecordSetMetadata struct {
4592}
4593
4594// UpdateDnsRecordSetRequest: Request to update a record set from a
4595// private managed DNS zone in the shared producer host project. The
4596// name, type, ttl, and data values of the existing record set must all
4597// exactly match an existing record set in the specified zone.
4598type UpdateDnsRecordSetRequest struct {
4599	// ConsumerNetwork: Required. The network that the consumer is using to
4600	// connect with services. Must be in the form of
4601	// projects/{project}/global/networks/{network} {project} is the project
4602	// number, as in '12345' {network} is the network name.
4603	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
4604
4605	// ExistingDnsRecordSet: Required. The existing DNS record set to
4606	// update.
4607	ExistingDnsRecordSet *DnsRecordSet `json:"existingDnsRecordSet,omitempty"`
4608
4609	// NewDnsRecordSet: Required. The new values that the DNS record set
4610	// should be updated to hold.
4611	NewDnsRecordSet *DnsRecordSet `json:"newDnsRecordSet,omitempty"`
4612
4613	// Zone: Required. The name of the private DNS zone in the shared
4614	// producer host project from which the record set will be removed.
4615	Zone string `json:"zone,omitempty"`
4616
4617	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
4618	// unconditionally include in API requests. By default, fields with
4619	// empty values are omitted from API requests. However, any non-pointer,
4620	// non-interface field appearing in ForceSendFields will be sent to the
4621	// server regardless of whether the field is empty or not. This may be
4622	// used to include empty fields in Patch requests.
4623	ForceSendFields []string `json:"-"`
4624
4625	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
4626	// include in API requests with the JSON null value. By default, fields
4627	// with empty values are omitted from API requests. However, any field
4628	// with an empty value appearing in NullFields will be sent to the
4629	// server as null. It is an error if a field in this list has a
4630	// non-empty value. This may be used to include null fields in Patch
4631	// requests.
4632	NullFields []string `json:"-"`
4633}
4634
4635func (s *UpdateDnsRecordSetRequest) MarshalJSON() ([]byte, error) {
4636	type NoMethod UpdateDnsRecordSetRequest
4637	raw := NoMethod(*s)
4638	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4639}
4640
4641// Usage: Configuration controlling usage of a service.
4642type Usage struct {
4643	// ProducerNotificationChannel: The full resource name of a channel used
4644	// for sending notifications to the service producer. Google Service
4645	// Management currently only supports Google Cloud Pub/Sub
4646	// (https://cloud.google.com/pubsub) as a notification channel. To use
4647	// Google Cloud Pub/Sub as the channel, this must be the name of a Cloud
4648	// Pub/Sub topic that uses the Cloud Pub/Sub topic name format
4649	// documented in https://cloud.google.com/pubsub/docs/overview.
4650	ProducerNotificationChannel string `json:"producerNotificationChannel,omitempty"`
4651
4652	// Requirements: Requirements that must be satisfied before a consumer
4653	// project can use the service. Each requirement is of the form /; for
4654	// example 'serviceusage.googleapis.com/billing-enabled'. For Google
4655	// APIs, a Terms of Service requirement must be included here. Google
4656	// Cloud APIs must include "serviceusage.googleapis.com/tos/cloud".
4657	// Other Google APIs should include
4658	// "serviceusage.googleapis.com/tos/universal". Additional ToS can be
4659	// included based on the business needs.
4660	Requirements []string `json:"requirements,omitempty"`
4661
4662	// Rules: A list of usage rules that apply to individual API methods.
4663	// **NOTE:** All service configuration rules follow "last one wins"
4664	// order.
4665	Rules []*UsageRule `json:"rules,omitempty"`
4666
4667	// ForceSendFields is a list of field names (e.g.
4668	// "ProducerNotificationChannel") to unconditionally include in API
4669	// requests. By default, fields with empty values are omitted from API
4670	// requests. However, any non-pointer, non-interface field appearing in
4671	// ForceSendFields will be sent to the server regardless of whether the
4672	// field is empty or not. This may be used to include empty fields in
4673	// Patch requests.
4674	ForceSendFields []string `json:"-"`
4675
4676	// NullFields is a list of field names (e.g.
4677	// "ProducerNotificationChannel") to include in API requests with the
4678	// JSON null value. By default, fields with empty values are omitted
4679	// from API requests. However, any field with an empty value appearing
4680	// in NullFields will be sent to the server as null. It is an error if a
4681	// field in this list has a non-empty value. This may be used to include
4682	// null fields in Patch requests.
4683	NullFields []string `json:"-"`
4684}
4685
4686func (s *Usage) MarshalJSON() ([]byte, error) {
4687	type NoMethod Usage
4688	raw := NoMethod(*s)
4689	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4690}
4691
4692// UsageRule: Usage configuration rules for the service. NOTE: Under
4693// development. Use this rule to configure unregistered calls for the
4694// service. Unregistered calls are calls that do not contain consumer
4695// project identity. (Example: calls that do not contain an API key). By
4696// default, API methods do not allow unregistered calls, and each method
4697// call must be identified by a consumer project identity. Use this rule
4698// to allow/disallow unregistered calls. Example of an API that wants to
4699// allow unregistered calls for entire service. usage: rules: -
4700// selector: "*" allow_unregistered_calls: true Example of a method that
4701// wants to allow unregistered calls. usage: rules: - selector:
4702// "google.example.library.v1.LibraryService.CreateBook"
4703// allow_unregistered_calls: true
4704type UsageRule struct {
4705	// AllowUnregisteredCalls: If true, the selected method allows
4706	// unregistered calls, e.g. calls that don't identify any user or
4707	// application.
4708	AllowUnregisteredCalls bool `json:"allowUnregisteredCalls,omitempty"`
4709
4710	// Selector: Selects the methods to which this rule applies. Use '*' to
4711	// indicate all methods in all APIs. Refer to selector for syntax
4712	// details.
4713	Selector string `json:"selector,omitempty"`
4714
4715	// SkipServiceControl: If true, the selected method should skip service
4716	// control and the control plane features, such as quota and billing,
4717	// will not be available. This flag is used by Google Cloud Endpoints to
4718	// bypass checks for internal methods, such as service health check
4719	// methods.
4720	SkipServiceControl bool `json:"skipServiceControl,omitempty"`
4721
4722	// ForceSendFields is a list of field names (e.g.
4723	// "AllowUnregisteredCalls") to unconditionally include in API requests.
4724	// By default, fields with empty values are omitted from API requests.
4725	// However, any non-pointer, non-interface field appearing in
4726	// ForceSendFields will be sent to the server regardless of whether the
4727	// field is empty or not. This may be used to include empty fields in
4728	// Patch requests.
4729	ForceSendFields []string `json:"-"`
4730
4731	// NullFields is a list of field names (e.g. "AllowUnregisteredCalls")
4732	// to include in API requests with the JSON null value. By default,
4733	// fields with empty values are omitted from API requests. However, any
4734	// field with an empty value appearing in NullFields will be sent to the
4735	// server as null. It is an error if a field in this list has a
4736	// non-empty value. This may be used to include null fields in Patch
4737	// requests.
4738	NullFields []string `json:"-"`
4739}
4740
4741func (s *UsageRule) MarshalJSON() ([]byte, error) {
4742	type NoMethod UsageRule
4743	raw := NoMethod(*s)
4744	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4745}
4746
4747type ValidateConsumerConfigRequest struct {
4748	// ConsumerNetwork: Required. The network that the consumer is using to
4749	// connect with services. Must be in the form of
4750	// projects/{project}/global/networks/{network} {project} is a project
4751	// number, as in '12345' {network} is network name.
4752	ConsumerNetwork string `json:"consumerNetwork,omitempty"`
4753
4754	// ConsumerProject: NETWORK_NOT_IN_CONSUMERS_PROJECT,
4755	// NETWORK_NOT_IN_CONSUMERS_HOST_PROJECT, and HOST_PROJECT_NOT_FOUND are
4756	// done when consumer_project is provided.
4757	ConsumerProject *ConsumerProject `json:"consumerProject,omitempty"`
4758
4759	// RangeReservation: RANGES_EXHAUSTED, RANGES_EXHAUSTED, and
4760	// RANGES_DELETED_LATER are done when range_reservation is provided.
4761	RangeReservation *RangeReservation `json:"rangeReservation,omitempty"`
4762
4763	// ValidateNetwork: The validations will be performed in the order
4764	// listed in the ValidationError enum. The first failure will return. If
4765	// a validation is not requested, then the next one will be performed.
4766	// SERVICE_NETWORKING_NOT_ENABLED and NETWORK_NOT_PEERED checks are
4767	// performed for all requests where validation is requested.
4768	// NETWORK_NOT_FOUND and NETWORK_DISCONNECTED checks are done for
4769	// requests that have validate_network set to true.
4770	ValidateNetwork bool `json:"validateNetwork,omitempty"`
4771
4772	// ForceSendFields is a list of field names (e.g. "ConsumerNetwork") to
4773	// unconditionally include in API requests. By default, fields with
4774	// empty values are omitted from API requests. However, any non-pointer,
4775	// non-interface field appearing in ForceSendFields will be sent to the
4776	// server regardless of whether the field is empty or not. This may be
4777	// used to include empty fields in Patch requests.
4778	ForceSendFields []string `json:"-"`
4779
4780	// NullFields is a list of field names (e.g. "ConsumerNetwork") to
4781	// include in API requests with the JSON null value. By default, fields
4782	// with empty values are omitted from API requests. However, any field
4783	// with an empty value appearing in NullFields will be sent to the
4784	// server as null. It is an error if a field in this list has a
4785	// non-empty value. This may be used to include null fields in Patch
4786	// requests.
4787	NullFields []string `json:"-"`
4788}
4789
4790func (s *ValidateConsumerConfigRequest) MarshalJSON() ([]byte, error) {
4791	type NoMethod ValidateConsumerConfigRequest
4792	raw := NoMethod(*s)
4793	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4794}
4795
4796type ValidateConsumerConfigResponse struct {
4797	// ExistingSubnetworkCandidates: List of subnetwork candidates from the
4798	// request which exist with the `ip_cidr_range`,
4799	// `secondary_ip_cider_ranges`, and `outside_allocation` fields set.
4800	ExistingSubnetworkCandidates []*Subnetwork `json:"existingSubnetworkCandidates,omitempty"`
4801
4802	// IsValid: Indicates whether all the requested validations passed.
4803	IsValid bool `json:"isValid,omitempty"`
4804
4805	// ValidationError: The first validation which failed.
4806	//
4807	// Possible values:
4808	//   "VALIDATION_ERROR_UNSPECIFIED"
4809	//   "VALIDATION_NOT_REQUESTED" - In case none of the validations are
4810	// requested.
4811	//   "SERVICE_NETWORKING_NOT_ENABLED"
4812	//   "NETWORK_NOT_FOUND" - The network provided by the consumer does not
4813	// exist.
4814	//   "NETWORK_NOT_PEERED" - The network has not been peered with the
4815	// producer org.
4816	//   "NETWORK_PEERING_DELETED" - The peering was created and later
4817	// deleted.
4818	//   "NETWORK_NOT_IN_CONSUMERS_PROJECT" - The network is a regular VPC
4819	// but the network is not in the consumer's project.
4820	//   "NETWORK_NOT_IN_CONSUMERS_HOST_PROJECT" - The consumer project is a
4821	// service project, and network is a shared VPC, but the network is not
4822	// in the host project of this consumer project.
4823	//   "HOST_PROJECT_NOT_FOUND" - The host project associated with the
4824	// consumer project was not found.
4825	//   "CONSUMER_PROJECT_NOT_SERVICE_PROJECT" - The consumer project is
4826	// not a service project for the specified host project.
4827	//   "RANGES_EXHAUSTED" - The reserved IP ranges do not have enough
4828	// space to create a subnet of desired size.
4829	//   "RANGES_NOT_RESERVED" - The IP ranges were not reserved.
4830	//   "RANGES_DELETED_LATER" - The IP ranges were reserved but deleted
4831	// later.
4832	//   "COMPUTE_API_NOT_ENABLED" - The consumer project does not have the
4833	// compute api enabled.
4834	ValidationError string `json:"validationError,omitempty"`
4835
4836	// ServerResponse contains the HTTP response code and headers from the
4837	// server.
4838	googleapi.ServerResponse `json:"-"`
4839
4840	// ForceSendFields is a list of field names (e.g.
4841	// "ExistingSubnetworkCandidates") to unconditionally include in API
4842	// requests. By default, fields with empty values are omitted from API
4843	// requests. However, any non-pointer, non-interface field appearing in
4844	// ForceSendFields will be sent to the server regardless of whether the
4845	// field is empty or not. This may be used to include empty fields in
4846	// Patch requests.
4847	ForceSendFields []string `json:"-"`
4848
4849	// NullFields is a list of field names (e.g.
4850	// "ExistingSubnetworkCandidates") to include in API requests with the
4851	// JSON null value. By default, fields with empty values are omitted
4852	// from API requests. However, any field with an empty value appearing
4853	// in NullFields will be sent to the server as null. It is an error if a
4854	// field in this list has a non-empty value. This may be used to include
4855	// null fields in Patch requests.
4856	NullFields []string `json:"-"`
4857}
4858
4859func (s *ValidateConsumerConfigResponse) MarshalJSON() ([]byte, error) {
4860	type NoMethod ValidateConsumerConfigResponse
4861	raw := NoMethod(*s)
4862	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
4863}
4864
4865// method id "servicenetworking.operations.cancel":
4866
4867type OperationsCancelCall struct {
4868	s                      *APIService
4869	name                   string
4870	canceloperationrequest *CancelOperationRequest
4871	urlParams_             gensupport.URLParams
4872	ctx_                   context.Context
4873	header_                http.Header
4874}
4875
4876// Cancel: Starts asynchronous cancellation on a long-running operation.
4877// The server makes a best effort to cancel the operation, but success
4878// is not guaranteed. If the server doesn't support this method, it
4879// returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use
4880// Operations.GetOperation or other methods to check whether the
4881// cancellation succeeded or whether the operation completed despite
4882// cancellation. On successful cancellation, the operation is not
4883// deleted; instead, it becomes an operation with an Operation.error
4884// value with a google.rpc.Status.code of 1, corresponding to
4885// `Code.CANCELLED`.
4886func (r *OperationsService) Cancel(name string, canceloperationrequest *CancelOperationRequest) *OperationsCancelCall {
4887	c := &OperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
4888	c.name = name
4889	c.canceloperationrequest = canceloperationrequest
4890	return c
4891}
4892
4893// Fields allows partial responses to be retrieved. See
4894// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
4895// for more information.
4896func (c *OperationsCancelCall) Fields(s ...googleapi.Field) *OperationsCancelCall {
4897	c.urlParams_.Set("fields", googleapi.CombineFields(s))
4898	return c
4899}
4900
4901// Context sets the context to be used in this call's Do method. Any
4902// pending HTTP request will be aborted if the provided context is
4903// canceled.
4904func (c *OperationsCancelCall) Context(ctx context.Context) *OperationsCancelCall {
4905	c.ctx_ = ctx
4906	return c
4907}
4908
4909// Header returns an http.Header that can be modified by the caller to
4910// add HTTP headers to the request.
4911func (c *OperationsCancelCall) Header() http.Header {
4912	if c.header_ == nil {
4913		c.header_ = make(http.Header)
4914	}
4915	return c.header_
4916}
4917
4918func (c *OperationsCancelCall) doRequest(alt string) (*http.Response, error) {
4919	reqHeaders := make(http.Header)
4920	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
4921	for k, v := range c.header_ {
4922		reqHeaders[k] = v
4923	}
4924	reqHeaders.Set("User-Agent", c.s.userAgent())
4925	var body io.Reader = nil
4926	body, err := googleapi.WithoutDataWrapper.JSONReader(c.canceloperationrequest)
4927	if err != nil {
4928		return nil, err
4929	}
4930	reqHeaders.Set("Content-Type", "application/json")
4931	c.urlParams_.Set("alt", alt)
4932	c.urlParams_.Set("prettyPrint", "false")
4933	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:cancel")
4934	urls += "?" + c.urlParams_.Encode()
4935	req, err := http.NewRequest("POST", urls, body)
4936	if err != nil {
4937		return nil, err
4938	}
4939	req.Header = reqHeaders
4940	googleapi.Expand(req.URL, map[string]string{
4941		"name": c.name,
4942	})
4943	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4944}
4945
4946// Do executes the "servicenetworking.operations.cancel" call.
4947// Exactly one of *Empty or error will be non-nil. Any non-2xx status
4948// code is an error. Response headers are in either
4949// *Empty.ServerResponse.Header or (if a response was returned at all)
4950// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
4951// check whether the returned error was because http.StatusNotModified
4952// was returned.
4953func (c *OperationsCancelCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
4954	gensupport.SetOptions(c.urlParams_, opts...)
4955	res, err := c.doRequest("json")
4956	if res != nil && res.StatusCode == http.StatusNotModified {
4957		if res.Body != nil {
4958			res.Body.Close()
4959		}
4960		return nil, &googleapi.Error{
4961			Code:   res.StatusCode,
4962			Header: res.Header,
4963		}
4964	}
4965	if err != nil {
4966		return nil, err
4967	}
4968	defer googleapi.CloseBody(res)
4969	if err := googleapi.CheckResponse(res); err != nil {
4970		return nil, err
4971	}
4972	ret := &Empty{
4973		ServerResponse: googleapi.ServerResponse{
4974			Header:         res.Header,
4975			HTTPStatusCode: res.StatusCode,
4976		},
4977	}
4978	target := &ret
4979	if err := gensupport.DecodeResponse(target, res); err != nil {
4980		return nil, err
4981	}
4982	return ret, nil
4983	// {
4984	//   "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
4985	//   "flatPath": "v1/operations/{operationsId}:cancel",
4986	//   "httpMethod": "POST",
4987	//   "id": "servicenetworking.operations.cancel",
4988	//   "parameterOrder": [
4989	//     "name"
4990	//   ],
4991	//   "parameters": {
4992	//     "name": {
4993	//       "description": "The name of the operation resource to be cancelled.",
4994	//       "location": "path",
4995	//       "pattern": "^operations/.*$",
4996	//       "required": true,
4997	//       "type": "string"
4998	//     }
4999	//   },
5000	//   "path": "v1/{+name}:cancel",
5001	//   "request": {
5002	//     "$ref": "CancelOperationRequest"
5003	//   },
5004	//   "response": {
5005	//     "$ref": "Empty"
5006	//   },
5007	//   "scopes": [
5008	//     "https://www.googleapis.com/auth/cloud-platform",
5009	//     "https://www.googleapis.com/auth/service.management"
5010	//   ]
5011	// }
5012
5013}
5014
5015// method id "servicenetworking.operations.delete":
5016
5017type OperationsDeleteCall struct {
5018	s          *APIService
5019	name       string
5020	urlParams_ gensupport.URLParams
5021	ctx_       context.Context
5022	header_    http.Header
5023}
5024
5025// Delete: Deletes a long-running operation. This method indicates that
5026// the client is no longer interested in the operation result. It does
5027// not cancel the operation. If the server doesn't support this method,
5028// it returns `google.rpc.Code.UNIMPLEMENTED`.
5029func (r *OperationsService) Delete(name string) *OperationsDeleteCall {
5030	c := &OperationsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5031	c.name = name
5032	return c
5033}
5034
5035// Fields allows partial responses to be retrieved. See
5036// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5037// for more information.
5038func (c *OperationsDeleteCall) Fields(s ...googleapi.Field) *OperationsDeleteCall {
5039	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5040	return c
5041}
5042
5043// Context sets the context to be used in this call's Do method. Any
5044// pending HTTP request will be aborted if the provided context is
5045// canceled.
5046func (c *OperationsDeleteCall) Context(ctx context.Context) *OperationsDeleteCall {
5047	c.ctx_ = ctx
5048	return c
5049}
5050
5051// Header returns an http.Header that can be modified by the caller to
5052// add HTTP headers to the request.
5053func (c *OperationsDeleteCall) Header() http.Header {
5054	if c.header_ == nil {
5055		c.header_ = make(http.Header)
5056	}
5057	return c.header_
5058}
5059
5060func (c *OperationsDeleteCall) doRequest(alt string) (*http.Response, error) {
5061	reqHeaders := make(http.Header)
5062	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
5063	for k, v := range c.header_ {
5064		reqHeaders[k] = v
5065	}
5066	reqHeaders.Set("User-Agent", c.s.userAgent())
5067	var body io.Reader = nil
5068	c.urlParams_.Set("alt", alt)
5069	c.urlParams_.Set("prettyPrint", "false")
5070	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
5071	urls += "?" + c.urlParams_.Encode()
5072	req, err := http.NewRequest("DELETE", urls, body)
5073	if err != nil {
5074		return nil, err
5075	}
5076	req.Header = reqHeaders
5077	googleapi.Expand(req.URL, map[string]string{
5078		"name": c.name,
5079	})
5080	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5081}
5082
5083// Do executes the "servicenetworking.operations.delete" call.
5084// Exactly one of *Empty or error will be non-nil. Any non-2xx status
5085// code is an error. Response headers are in either
5086// *Empty.ServerResponse.Header or (if a response was returned at all)
5087// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
5088// check whether the returned error was because http.StatusNotModified
5089// was returned.
5090func (c *OperationsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) {
5091	gensupport.SetOptions(c.urlParams_, opts...)
5092	res, err := c.doRequest("json")
5093	if res != nil && res.StatusCode == http.StatusNotModified {
5094		if res.Body != nil {
5095			res.Body.Close()
5096		}
5097		return nil, &googleapi.Error{
5098			Code:   res.StatusCode,
5099			Header: res.Header,
5100		}
5101	}
5102	if err != nil {
5103		return nil, err
5104	}
5105	defer googleapi.CloseBody(res)
5106	if err := googleapi.CheckResponse(res); err != nil {
5107		return nil, err
5108	}
5109	ret := &Empty{
5110		ServerResponse: googleapi.ServerResponse{
5111			Header:         res.Header,
5112			HTTPStatusCode: res.StatusCode,
5113		},
5114	}
5115	target := &ret
5116	if err := gensupport.DecodeResponse(target, res); err != nil {
5117		return nil, err
5118	}
5119	return ret, nil
5120	// {
5121	//   "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
5122	//   "flatPath": "v1/operations/{operationsId}",
5123	//   "httpMethod": "DELETE",
5124	//   "id": "servicenetworking.operations.delete",
5125	//   "parameterOrder": [
5126	//     "name"
5127	//   ],
5128	//   "parameters": {
5129	//     "name": {
5130	//       "description": "The name of the operation resource to be deleted.",
5131	//       "location": "path",
5132	//       "pattern": "^operations/.*$",
5133	//       "required": true,
5134	//       "type": "string"
5135	//     }
5136	//   },
5137	//   "path": "v1/{+name}",
5138	//   "response": {
5139	//     "$ref": "Empty"
5140	//   },
5141	//   "scopes": [
5142	//     "https://www.googleapis.com/auth/cloud-platform",
5143	//     "https://www.googleapis.com/auth/service.management"
5144	//   ]
5145	// }
5146
5147}
5148
5149// method id "servicenetworking.operations.get":
5150
5151type OperationsGetCall struct {
5152	s            *APIService
5153	name         string
5154	urlParams_   gensupport.URLParams
5155	ifNoneMatch_ string
5156	ctx_         context.Context
5157	header_      http.Header
5158}
5159
5160// Get: Gets the latest state of a long-running operation. Clients can
5161// use this method to poll the operation result at intervals as
5162// recommended by the API service.
5163func (r *OperationsService) Get(name string) *OperationsGetCall {
5164	c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5165	c.name = name
5166	return c
5167}
5168
5169// Fields allows partial responses to be retrieved. See
5170// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5171// for more information.
5172func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall {
5173	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5174	return c
5175}
5176
5177// IfNoneMatch sets the optional parameter which makes the operation
5178// fail if the object's ETag matches the given value. This is useful for
5179// getting updates only after the object has changed since the last
5180// request. Use googleapi.IsNotModified to check whether the response
5181// error from Do is the result of In-None-Match.
5182func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall {
5183	c.ifNoneMatch_ = entityTag
5184	return c
5185}
5186
5187// Context sets the context to be used in this call's Do method. Any
5188// pending HTTP request will be aborted if the provided context is
5189// canceled.
5190func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall {
5191	c.ctx_ = ctx
5192	return c
5193}
5194
5195// Header returns an http.Header that can be modified by the caller to
5196// add HTTP headers to the request.
5197func (c *OperationsGetCall) Header() http.Header {
5198	if c.header_ == nil {
5199		c.header_ = make(http.Header)
5200	}
5201	return c.header_
5202}
5203
5204func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
5205	reqHeaders := make(http.Header)
5206	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
5207	for k, v := range c.header_ {
5208		reqHeaders[k] = v
5209	}
5210	reqHeaders.Set("User-Agent", c.s.userAgent())
5211	if c.ifNoneMatch_ != "" {
5212		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
5213	}
5214	var body io.Reader = nil
5215	c.urlParams_.Set("alt", alt)
5216	c.urlParams_.Set("prettyPrint", "false")
5217	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
5218	urls += "?" + c.urlParams_.Encode()
5219	req, err := http.NewRequest("GET", urls, body)
5220	if err != nil {
5221		return nil, err
5222	}
5223	req.Header = reqHeaders
5224	googleapi.Expand(req.URL, map[string]string{
5225		"name": c.name,
5226	})
5227	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5228}
5229
5230// Do executes the "servicenetworking.operations.get" call.
5231// Exactly one of *Operation or error will be non-nil. Any non-2xx
5232// status code is an error. Response headers are in either
5233// *Operation.ServerResponse.Header or (if a response was returned at
5234// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
5235// to check whether the returned error was because
5236// http.StatusNotModified was returned.
5237func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
5238	gensupport.SetOptions(c.urlParams_, opts...)
5239	res, err := c.doRequest("json")
5240	if res != nil && res.StatusCode == http.StatusNotModified {
5241		if res.Body != nil {
5242			res.Body.Close()
5243		}
5244		return nil, &googleapi.Error{
5245			Code:   res.StatusCode,
5246			Header: res.Header,
5247		}
5248	}
5249	if err != nil {
5250		return nil, err
5251	}
5252	defer googleapi.CloseBody(res)
5253	if err := googleapi.CheckResponse(res); err != nil {
5254		return nil, err
5255	}
5256	ret := &Operation{
5257		ServerResponse: googleapi.ServerResponse{
5258			Header:         res.Header,
5259			HTTPStatusCode: res.StatusCode,
5260		},
5261	}
5262	target := &ret
5263	if err := gensupport.DecodeResponse(target, res); err != nil {
5264		return nil, err
5265	}
5266	return ret, nil
5267	// {
5268	//   "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
5269	//   "flatPath": "v1/operations/{operationsId}",
5270	//   "httpMethod": "GET",
5271	//   "id": "servicenetworking.operations.get",
5272	//   "parameterOrder": [
5273	//     "name"
5274	//   ],
5275	//   "parameters": {
5276	//     "name": {
5277	//       "description": "The name of the operation resource.",
5278	//       "location": "path",
5279	//       "pattern": "^operations/[^/]+$",
5280	//       "required": true,
5281	//       "type": "string"
5282	//     }
5283	//   },
5284	//   "path": "v1/{+name}",
5285	//   "response": {
5286	//     "$ref": "Operation"
5287	//   },
5288	//   "scopes": [
5289	//     "https://www.googleapis.com/auth/cloud-platform",
5290	//     "https://www.googleapis.com/auth/service.management"
5291	//   ]
5292	// }
5293
5294}
5295
5296// method id "servicenetworking.operations.list":
5297
5298type OperationsListCall struct {
5299	s            *APIService
5300	name         string
5301	urlParams_   gensupport.URLParams
5302	ifNoneMatch_ string
5303	ctx_         context.Context
5304	header_      http.Header
5305}
5306
5307// List: Lists operations that match the specified filter in the
5308// request. If the server doesn't support this method, it returns
5309// `UNIMPLEMENTED`. NOTE: the `name` binding allows API services to
5310// override the binding to use different resource name schemes, such as
5311// `users/*/operations`. To override the binding, API services can add a
5312// binding such as "/v1/{name=users/*}/operations" to their service
5313// configuration. For backwards compatibility, the default name includes
5314// the operations collection id, however overriding users must ensure
5315// the name binding is the parent resource, without the operations
5316// collection id.
5317func (r *OperationsService) List(name string) *OperationsListCall {
5318	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5319	c.name = name
5320	return c
5321}
5322
5323// Filter sets the optional parameter "filter": The standard list
5324// filter.
5325func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
5326	c.urlParams_.Set("filter", filter)
5327	return c
5328}
5329
5330// PageSize sets the optional parameter "pageSize": The standard list
5331// page size.
5332func (c *OperationsListCall) PageSize(pageSize int64) *OperationsListCall {
5333	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
5334	return c
5335}
5336
5337// PageToken sets the optional parameter "pageToken": The standard list
5338// page token.
5339func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
5340	c.urlParams_.Set("pageToken", pageToken)
5341	return c
5342}
5343
5344// Fields allows partial responses to be retrieved. See
5345// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5346// for more information.
5347func (c *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
5348	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5349	return c
5350}
5351
5352// IfNoneMatch sets the optional parameter which makes the operation
5353// fail if the object's ETag matches the given value. This is useful for
5354// getting updates only after the object has changed since the last
5355// request. Use googleapi.IsNotModified to check whether the response
5356// error from Do is the result of In-None-Match.
5357func (c *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
5358	c.ifNoneMatch_ = entityTag
5359	return c
5360}
5361
5362// Context sets the context to be used in this call's Do method. Any
5363// pending HTTP request will be aborted if the provided context is
5364// canceled.
5365func (c *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
5366	c.ctx_ = ctx
5367	return c
5368}
5369
5370// Header returns an http.Header that can be modified by the caller to
5371// add HTTP headers to the request.
5372func (c *OperationsListCall) Header() http.Header {
5373	if c.header_ == nil {
5374		c.header_ = make(http.Header)
5375	}
5376	return c.header_
5377}
5378
5379func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
5380	reqHeaders := make(http.Header)
5381	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
5382	for k, v := range c.header_ {
5383		reqHeaders[k] = v
5384	}
5385	reqHeaders.Set("User-Agent", c.s.userAgent())
5386	if c.ifNoneMatch_ != "" {
5387		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
5388	}
5389	var body io.Reader = nil
5390	c.urlParams_.Set("alt", alt)
5391	c.urlParams_.Set("prettyPrint", "false")
5392	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
5393	urls += "?" + c.urlParams_.Encode()
5394	req, err := http.NewRequest("GET", urls, body)
5395	if err != nil {
5396		return nil, err
5397	}
5398	req.Header = reqHeaders
5399	googleapi.Expand(req.URL, map[string]string{
5400		"name": c.name,
5401	})
5402	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5403}
5404
5405// Do executes the "servicenetworking.operations.list" call.
5406// Exactly one of *ListOperationsResponse or error will be non-nil. Any
5407// non-2xx status code is an error. Response headers are in either
5408// *ListOperationsResponse.ServerResponse.Header or (if a response was
5409// returned at all) in error.(*googleapi.Error).Header. Use
5410// googleapi.IsNotModified to check whether the returned error was
5411// because http.StatusNotModified was returned.
5412func (c *OperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
5413	gensupport.SetOptions(c.urlParams_, opts...)
5414	res, err := c.doRequest("json")
5415	if res != nil && res.StatusCode == http.StatusNotModified {
5416		if res.Body != nil {
5417			res.Body.Close()
5418		}
5419		return nil, &googleapi.Error{
5420			Code:   res.StatusCode,
5421			Header: res.Header,
5422		}
5423	}
5424	if err != nil {
5425		return nil, err
5426	}
5427	defer googleapi.CloseBody(res)
5428	if err := googleapi.CheckResponse(res); err != nil {
5429		return nil, err
5430	}
5431	ret := &ListOperationsResponse{
5432		ServerResponse: googleapi.ServerResponse{
5433			Header:         res.Header,
5434			HTTPStatusCode: res.StatusCode,
5435		},
5436	}
5437	target := &ret
5438	if err := gensupport.DecodeResponse(target, res); err != nil {
5439		return nil, err
5440	}
5441	return ret, nil
5442	// {
5443	//   "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding allows API services to override the binding to use different resource name schemes, such as `users/*/operations`. To override the binding, API services can add a binding such as `\"/v1/{name=users/*}/operations\"` to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
5444	//   "flatPath": "v1/operations",
5445	//   "httpMethod": "GET",
5446	//   "id": "servicenetworking.operations.list",
5447	//   "parameterOrder": [
5448	//     "name"
5449	//   ],
5450	//   "parameters": {
5451	//     "filter": {
5452	//       "description": "The standard list filter.",
5453	//       "location": "query",
5454	//       "type": "string"
5455	//     },
5456	//     "name": {
5457	//       "description": "The name of the operation's parent resource.",
5458	//       "location": "path",
5459	//       "pattern": "^operations$",
5460	//       "required": true,
5461	//       "type": "string"
5462	//     },
5463	//     "pageSize": {
5464	//       "description": "The standard list page size.",
5465	//       "format": "int32",
5466	//       "location": "query",
5467	//       "type": "integer"
5468	//     },
5469	//     "pageToken": {
5470	//       "description": "The standard list page token.",
5471	//       "location": "query",
5472	//       "type": "string"
5473	//     }
5474	//   },
5475	//   "path": "v1/{+name}",
5476	//   "response": {
5477	//     "$ref": "ListOperationsResponse"
5478	//   },
5479	//   "scopes": [
5480	//     "https://www.googleapis.com/auth/cloud-platform",
5481	//     "https://www.googleapis.com/auth/service.management"
5482	//   ]
5483	// }
5484
5485}
5486
5487// Pages invokes f for each page of results.
5488// A non-nil error returned from f will halt the iteration.
5489// The provided context supersedes any context provided to the Context method.
5490func (c *OperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
5491	c.ctx_ = ctx
5492	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
5493	for {
5494		x, err := c.Do()
5495		if err != nil {
5496			return err
5497		}
5498		if err := f(x); err != nil {
5499			return err
5500		}
5501		if x.NextPageToken == "" {
5502			return nil
5503		}
5504		c.PageToken(x.NextPageToken)
5505	}
5506}
5507
5508// method id "servicenetworking.services.addSubnetwork":
5509
5510type ServicesAddSubnetworkCall struct {
5511	s                    *APIService
5512	parent               string
5513	addsubnetworkrequest *AddSubnetworkRequest
5514	urlParams_           gensupport.URLParams
5515	ctx_                 context.Context
5516	header_              http.Header
5517}
5518
5519// AddSubnetwork: For service producers, provisions a new subnet in a
5520// peered service's shared VPC network in the requested region and with
5521// the requested size that's expressed as a CIDR range (number of
5522// leading bits of ipV4 network mask). The method checks against the
5523// assigned allocated ranges to find a non-conflicting IP address range.
5524// The method will reuse a subnet if subsequent calls contain the same
5525// subnet name, region, and prefix length. This method will make
5526// producer's tenant project to be a shared VPC service project as
5527// needed.
5528func (r *ServicesService) AddSubnetwork(parent string, addsubnetworkrequest *AddSubnetworkRequest) *ServicesAddSubnetworkCall {
5529	c := &ServicesAddSubnetworkCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5530	c.parent = parent
5531	c.addsubnetworkrequest = addsubnetworkrequest
5532	return c
5533}
5534
5535// Fields allows partial responses to be retrieved. See
5536// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5537// for more information.
5538func (c *ServicesAddSubnetworkCall) Fields(s ...googleapi.Field) *ServicesAddSubnetworkCall {
5539	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5540	return c
5541}
5542
5543// Context sets the context to be used in this call's Do method. Any
5544// pending HTTP request will be aborted if the provided context is
5545// canceled.
5546func (c *ServicesAddSubnetworkCall) Context(ctx context.Context) *ServicesAddSubnetworkCall {
5547	c.ctx_ = ctx
5548	return c
5549}
5550
5551// Header returns an http.Header that can be modified by the caller to
5552// add HTTP headers to the request.
5553func (c *ServicesAddSubnetworkCall) Header() http.Header {
5554	if c.header_ == nil {
5555		c.header_ = make(http.Header)
5556	}
5557	return c.header_
5558}
5559
5560func (c *ServicesAddSubnetworkCall) doRequest(alt string) (*http.Response, error) {
5561	reqHeaders := make(http.Header)
5562	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
5563	for k, v := range c.header_ {
5564		reqHeaders[k] = v
5565	}
5566	reqHeaders.Set("User-Agent", c.s.userAgent())
5567	var body io.Reader = nil
5568	body, err := googleapi.WithoutDataWrapper.JSONReader(c.addsubnetworkrequest)
5569	if err != nil {
5570		return nil, err
5571	}
5572	reqHeaders.Set("Content-Type", "application/json")
5573	c.urlParams_.Set("alt", alt)
5574	c.urlParams_.Set("prettyPrint", "false")
5575	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}:addSubnetwork")
5576	urls += "?" + c.urlParams_.Encode()
5577	req, err := http.NewRequest("POST", urls, body)
5578	if err != nil {
5579		return nil, err
5580	}
5581	req.Header = reqHeaders
5582	googleapi.Expand(req.URL, map[string]string{
5583		"parent": c.parent,
5584	})
5585	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5586}
5587
5588// Do executes the "servicenetworking.services.addSubnetwork" call.
5589// Exactly one of *Operation or error will be non-nil. Any non-2xx
5590// status code is an error. Response headers are in either
5591// *Operation.ServerResponse.Header or (if a response was returned at
5592// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
5593// to check whether the returned error was because
5594// http.StatusNotModified was returned.
5595func (c *ServicesAddSubnetworkCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
5596	gensupport.SetOptions(c.urlParams_, opts...)
5597	res, err := c.doRequest("json")
5598	if res != nil && res.StatusCode == http.StatusNotModified {
5599		if res.Body != nil {
5600			res.Body.Close()
5601		}
5602		return nil, &googleapi.Error{
5603			Code:   res.StatusCode,
5604			Header: res.Header,
5605		}
5606	}
5607	if err != nil {
5608		return nil, err
5609	}
5610	defer googleapi.CloseBody(res)
5611	if err := googleapi.CheckResponse(res); err != nil {
5612		return nil, err
5613	}
5614	ret := &Operation{
5615		ServerResponse: googleapi.ServerResponse{
5616			Header:         res.Header,
5617			HTTPStatusCode: res.StatusCode,
5618		},
5619	}
5620	target := &ret
5621	if err := gensupport.DecodeResponse(target, res); err != nil {
5622		return nil, err
5623	}
5624	return ret, nil
5625	// {
5626	//   "description": "For service producers, provisions a new subnet in a peered service's shared VPC network in the requested region and with the requested size that's expressed as a CIDR range (number of leading bits of ipV4 network mask). The method checks against the assigned allocated ranges to find a non-conflicting IP address range. The method will reuse a subnet if subsequent calls contain the same subnet name, region, and prefix length. This method will make producer's tenant project to be a shared VPC service project as needed.",
5627	//   "flatPath": "v1/services/{servicesId}/{servicesId1}/{servicesId2}:addSubnetwork",
5628	//   "httpMethod": "POST",
5629	//   "id": "servicenetworking.services.addSubnetwork",
5630	//   "parameterOrder": [
5631	//     "parent"
5632	//   ],
5633	//   "parameters": {
5634	//     "parent": {
5635	//       "description": "Required. A tenant project in the service producer organization, in the following format: services/{service}/{collection-id}/{resource-id}. {collection-id} is the cloud resource collection type that represents the tenant project. Only `projects` are supported. {resource-id} is the tenant project numeric id, such as `123456`. {service} the name of the peering service, such as `service-peering.example.com`. This service must already be enabled in the service consumer's project.",
5636	//       "location": "path",
5637	//       "pattern": "^services/[^/]+/[^/]+/[^/]+$",
5638	//       "required": true,
5639	//       "type": "string"
5640	//     }
5641	//   },
5642	//   "path": "v1/{+parent}:addSubnetwork",
5643	//   "request": {
5644	//     "$ref": "AddSubnetworkRequest"
5645	//   },
5646	//   "response": {
5647	//     "$ref": "Operation"
5648	//   },
5649	//   "scopes": [
5650	//     "https://www.googleapis.com/auth/cloud-platform",
5651	//     "https://www.googleapis.com/auth/service.management"
5652	//   ]
5653	// }
5654
5655}
5656
5657// method id "servicenetworking.services.disableVpcServiceControls":
5658
5659type ServicesDisableVpcServiceControlsCall struct {
5660	s                                *APIService
5661	parent                           string
5662	disablevpcservicecontrolsrequest *DisableVpcServiceControlsRequest
5663	urlParams_                       gensupport.URLParams
5664	ctx_                             context.Context
5665	header_                          http.Header
5666}
5667
5668// DisableVpcServiceControls: Disables VPC service controls for a
5669// connection.
5670func (r *ServicesService) DisableVpcServiceControls(parent string, disablevpcservicecontrolsrequest *DisableVpcServiceControlsRequest) *ServicesDisableVpcServiceControlsCall {
5671	c := &ServicesDisableVpcServiceControlsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5672	c.parent = parent
5673	c.disablevpcservicecontrolsrequest = disablevpcservicecontrolsrequest
5674	return c
5675}
5676
5677// Fields allows partial responses to be retrieved. See
5678// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5679// for more information.
5680func (c *ServicesDisableVpcServiceControlsCall) Fields(s ...googleapi.Field) *ServicesDisableVpcServiceControlsCall {
5681	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5682	return c
5683}
5684
5685// Context sets the context to be used in this call's Do method. Any
5686// pending HTTP request will be aborted if the provided context is
5687// canceled.
5688func (c *ServicesDisableVpcServiceControlsCall) Context(ctx context.Context) *ServicesDisableVpcServiceControlsCall {
5689	c.ctx_ = ctx
5690	return c
5691}
5692
5693// Header returns an http.Header that can be modified by the caller to
5694// add HTTP headers to the request.
5695func (c *ServicesDisableVpcServiceControlsCall) Header() http.Header {
5696	if c.header_ == nil {
5697		c.header_ = make(http.Header)
5698	}
5699	return c.header_
5700}
5701
5702func (c *ServicesDisableVpcServiceControlsCall) doRequest(alt string) (*http.Response, error) {
5703	reqHeaders := make(http.Header)
5704	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
5705	for k, v := range c.header_ {
5706		reqHeaders[k] = v
5707	}
5708	reqHeaders.Set("User-Agent", c.s.userAgent())
5709	var body io.Reader = nil
5710	body, err := googleapi.WithoutDataWrapper.JSONReader(c.disablevpcservicecontrolsrequest)
5711	if err != nil {
5712		return nil, err
5713	}
5714	reqHeaders.Set("Content-Type", "application/json")
5715	c.urlParams_.Set("alt", alt)
5716	c.urlParams_.Set("prettyPrint", "false")
5717	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}:disableVpcServiceControls")
5718	urls += "?" + c.urlParams_.Encode()
5719	req, err := http.NewRequest("PATCH", urls, body)
5720	if err != nil {
5721		return nil, err
5722	}
5723	req.Header = reqHeaders
5724	googleapi.Expand(req.URL, map[string]string{
5725		"parent": c.parent,
5726	})
5727	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5728}
5729
5730// Do executes the "servicenetworking.services.disableVpcServiceControls" call.
5731// Exactly one of *Operation or error will be non-nil. Any non-2xx
5732// status code is an error. Response headers are in either
5733// *Operation.ServerResponse.Header or (if a response was returned at
5734// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
5735// to check whether the returned error was because
5736// http.StatusNotModified was returned.
5737func (c *ServicesDisableVpcServiceControlsCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
5738	gensupport.SetOptions(c.urlParams_, opts...)
5739	res, err := c.doRequest("json")
5740	if res != nil && res.StatusCode == http.StatusNotModified {
5741		if res.Body != nil {
5742			res.Body.Close()
5743		}
5744		return nil, &googleapi.Error{
5745			Code:   res.StatusCode,
5746			Header: res.Header,
5747		}
5748	}
5749	if err != nil {
5750		return nil, err
5751	}
5752	defer googleapi.CloseBody(res)
5753	if err := googleapi.CheckResponse(res); err != nil {
5754		return nil, err
5755	}
5756	ret := &Operation{
5757		ServerResponse: googleapi.ServerResponse{
5758			Header:         res.Header,
5759			HTTPStatusCode: res.StatusCode,
5760		},
5761	}
5762	target := &ret
5763	if err := gensupport.DecodeResponse(target, res); err != nil {
5764		return nil, err
5765	}
5766	return ret, nil
5767	// {
5768	//   "description": "Disables VPC service controls for a connection.",
5769	//   "flatPath": "v1/services/{servicesId}:disableVpcServiceControls",
5770	//   "httpMethod": "PATCH",
5771	//   "id": "servicenetworking.services.disableVpcServiceControls",
5772	//   "parameterOrder": [
5773	//     "parent"
5774	//   ],
5775	//   "parameters": {
5776	//     "parent": {
5777	//       "description": "The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`.",
5778	//       "location": "path",
5779	//       "pattern": "^services/[^/]+$",
5780	//       "required": true,
5781	//       "type": "string"
5782	//     }
5783	//   },
5784	//   "path": "v1/{+parent}:disableVpcServiceControls",
5785	//   "request": {
5786	//     "$ref": "DisableVpcServiceControlsRequest"
5787	//   },
5788	//   "response": {
5789	//     "$ref": "Operation"
5790	//   },
5791	//   "scopes": [
5792	//     "https://www.googleapis.com/auth/cloud-platform",
5793	//     "https://www.googleapis.com/auth/service.management"
5794	//   ]
5795	// }
5796
5797}
5798
5799// method id "servicenetworking.services.enableVpcServiceControls":
5800
5801type ServicesEnableVpcServiceControlsCall struct {
5802	s                               *APIService
5803	parent                          string
5804	enablevpcservicecontrolsrequest *EnableVpcServiceControlsRequest
5805	urlParams_                      gensupport.URLParams
5806	ctx_                            context.Context
5807	header_                         http.Header
5808}
5809
5810// EnableVpcServiceControls: Enables VPC service controls for a
5811// connection.
5812func (r *ServicesService) EnableVpcServiceControls(parent string, enablevpcservicecontrolsrequest *EnableVpcServiceControlsRequest) *ServicesEnableVpcServiceControlsCall {
5813	c := &ServicesEnableVpcServiceControlsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5814	c.parent = parent
5815	c.enablevpcservicecontrolsrequest = enablevpcservicecontrolsrequest
5816	return c
5817}
5818
5819// Fields allows partial responses to be retrieved. See
5820// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5821// for more information.
5822func (c *ServicesEnableVpcServiceControlsCall) Fields(s ...googleapi.Field) *ServicesEnableVpcServiceControlsCall {
5823	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5824	return c
5825}
5826
5827// Context sets the context to be used in this call's Do method. Any
5828// pending HTTP request will be aborted if the provided context is
5829// canceled.
5830func (c *ServicesEnableVpcServiceControlsCall) Context(ctx context.Context) *ServicesEnableVpcServiceControlsCall {
5831	c.ctx_ = ctx
5832	return c
5833}
5834
5835// Header returns an http.Header that can be modified by the caller to
5836// add HTTP headers to the request.
5837func (c *ServicesEnableVpcServiceControlsCall) Header() http.Header {
5838	if c.header_ == nil {
5839		c.header_ = make(http.Header)
5840	}
5841	return c.header_
5842}
5843
5844func (c *ServicesEnableVpcServiceControlsCall) doRequest(alt string) (*http.Response, error) {
5845	reqHeaders := make(http.Header)
5846	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
5847	for k, v := range c.header_ {
5848		reqHeaders[k] = v
5849	}
5850	reqHeaders.Set("User-Agent", c.s.userAgent())
5851	var body io.Reader = nil
5852	body, err := googleapi.WithoutDataWrapper.JSONReader(c.enablevpcservicecontrolsrequest)
5853	if err != nil {
5854		return nil, err
5855	}
5856	reqHeaders.Set("Content-Type", "application/json")
5857	c.urlParams_.Set("alt", alt)
5858	c.urlParams_.Set("prettyPrint", "false")
5859	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}:enableVpcServiceControls")
5860	urls += "?" + c.urlParams_.Encode()
5861	req, err := http.NewRequest("PATCH", urls, body)
5862	if err != nil {
5863		return nil, err
5864	}
5865	req.Header = reqHeaders
5866	googleapi.Expand(req.URL, map[string]string{
5867		"parent": c.parent,
5868	})
5869	return gensupport.SendRequest(c.ctx_, c.s.client, req)
5870}
5871
5872// Do executes the "servicenetworking.services.enableVpcServiceControls" call.
5873// Exactly one of *Operation or error will be non-nil. Any non-2xx
5874// status code is an error. Response headers are in either
5875// *Operation.ServerResponse.Header or (if a response was returned at
5876// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
5877// to check whether the returned error was because
5878// http.StatusNotModified was returned.
5879func (c *ServicesEnableVpcServiceControlsCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
5880	gensupport.SetOptions(c.urlParams_, opts...)
5881	res, err := c.doRequest("json")
5882	if res != nil && res.StatusCode == http.StatusNotModified {
5883		if res.Body != nil {
5884			res.Body.Close()
5885		}
5886		return nil, &googleapi.Error{
5887			Code:   res.StatusCode,
5888			Header: res.Header,
5889		}
5890	}
5891	if err != nil {
5892		return nil, err
5893	}
5894	defer googleapi.CloseBody(res)
5895	if err := googleapi.CheckResponse(res); err != nil {
5896		return nil, err
5897	}
5898	ret := &Operation{
5899		ServerResponse: googleapi.ServerResponse{
5900			Header:         res.Header,
5901			HTTPStatusCode: res.StatusCode,
5902		},
5903	}
5904	target := &ret
5905	if err := gensupport.DecodeResponse(target, res); err != nil {
5906		return nil, err
5907	}
5908	return ret, nil
5909	// {
5910	//   "description": "Enables VPC service controls for a connection.",
5911	//   "flatPath": "v1/services/{servicesId}:enableVpcServiceControls",
5912	//   "httpMethod": "PATCH",
5913	//   "id": "servicenetworking.services.enableVpcServiceControls",
5914	//   "parameterOrder": [
5915	//     "parent"
5916	//   ],
5917	//   "parameters": {
5918	//     "parent": {
5919	//       "description": "The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`.",
5920	//       "location": "path",
5921	//       "pattern": "^services/[^/]+$",
5922	//       "required": true,
5923	//       "type": "string"
5924	//     }
5925	//   },
5926	//   "path": "v1/{+parent}:enableVpcServiceControls",
5927	//   "request": {
5928	//     "$ref": "EnableVpcServiceControlsRequest"
5929	//   },
5930	//   "response": {
5931	//     "$ref": "Operation"
5932	//   },
5933	//   "scopes": [
5934	//     "https://www.googleapis.com/auth/cloud-platform",
5935	//     "https://www.googleapis.com/auth/service.management"
5936	//   ]
5937	// }
5938
5939}
5940
5941// method id "servicenetworking.services.searchRange":
5942
5943type ServicesSearchRangeCall struct {
5944	s                  *APIService
5945	parent             string
5946	searchrangerequest *SearchRangeRequest
5947	urlParams_         gensupport.URLParams
5948	ctx_               context.Context
5949	header_            http.Header
5950}
5951
5952// SearchRange: Service producers can use this method to find a
5953// currently unused range within consumer allocated ranges. This
5954// returned range is not reserved, and not guaranteed to remain unused.
5955// It will validate previously provided allocated ranges, find
5956// non-conflicting sub-range of requested size (expressed in number of
5957// leading bits of ipv4 network mask, as in CIDR range notation).
5958func (r *ServicesService) SearchRange(parent string, searchrangerequest *SearchRangeRequest) *ServicesSearchRangeCall {
5959	c := &ServicesSearchRangeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
5960	c.parent = parent
5961	c.searchrangerequest = searchrangerequest
5962	return c
5963}
5964
5965// Fields allows partial responses to be retrieved. See
5966// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
5967// for more information.
5968func (c *ServicesSearchRangeCall) Fields(s ...googleapi.Field) *ServicesSearchRangeCall {
5969	c.urlParams_.Set("fields", googleapi.CombineFields(s))
5970	return c
5971}
5972
5973// Context sets the context to be used in this call's Do method. Any
5974// pending HTTP request will be aborted if the provided context is
5975// canceled.
5976func (c *ServicesSearchRangeCall) Context(ctx context.Context) *ServicesSearchRangeCall {
5977	c.ctx_ = ctx
5978	return c
5979}
5980
5981// Header returns an http.Header that can be modified by the caller to
5982// add HTTP headers to the request.
5983func (c *ServicesSearchRangeCall) Header() http.Header {
5984	if c.header_ == nil {
5985		c.header_ = make(http.Header)
5986	}
5987	return c.header_
5988}
5989
5990func (c *ServicesSearchRangeCall) doRequest(alt string) (*http.Response, error) {
5991	reqHeaders := make(http.Header)
5992	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
5993	for k, v := range c.header_ {
5994		reqHeaders[k] = v
5995	}
5996	reqHeaders.Set("User-Agent", c.s.userAgent())
5997	var body io.Reader = nil
5998	body, err := googleapi.WithoutDataWrapper.JSONReader(c.searchrangerequest)
5999	if err != nil {
6000		return nil, err
6001	}
6002	reqHeaders.Set("Content-Type", "application/json")
6003	c.urlParams_.Set("alt", alt)
6004	c.urlParams_.Set("prettyPrint", "false")
6005	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}:searchRange")
6006	urls += "?" + c.urlParams_.Encode()
6007	req, err := http.NewRequest("POST", urls, body)
6008	if err != nil {
6009		return nil, err
6010	}
6011	req.Header = reqHeaders
6012	googleapi.Expand(req.URL, map[string]string{
6013		"parent": c.parent,
6014	})
6015	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6016}
6017
6018// Do executes the "servicenetworking.services.searchRange" call.
6019// Exactly one of *Operation or error will be non-nil. Any non-2xx
6020// status code is an error. Response headers are in either
6021// *Operation.ServerResponse.Header or (if a response was returned at
6022// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6023// to check whether the returned error was because
6024// http.StatusNotModified was returned.
6025func (c *ServicesSearchRangeCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6026	gensupport.SetOptions(c.urlParams_, opts...)
6027	res, err := c.doRequest("json")
6028	if res != nil && res.StatusCode == http.StatusNotModified {
6029		if res.Body != nil {
6030			res.Body.Close()
6031		}
6032		return nil, &googleapi.Error{
6033			Code:   res.StatusCode,
6034			Header: res.Header,
6035		}
6036	}
6037	if err != nil {
6038		return nil, err
6039	}
6040	defer googleapi.CloseBody(res)
6041	if err := googleapi.CheckResponse(res); err != nil {
6042		return nil, err
6043	}
6044	ret := &Operation{
6045		ServerResponse: googleapi.ServerResponse{
6046			Header:         res.Header,
6047			HTTPStatusCode: res.StatusCode,
6048		},
6049	}
6050	target := &ret
6051	if err := gensupport.DecodeResponse(target, res); err != nil {
6052		return nil, err
6053	}
6054	return ret, nil
6055	// {
6056	//   "description": "Service producers can use this method to find a currently unused range within consumer allocated ranges. This returned range is not reserved, and not guaranteed to remain unused. It will validate previously provided allocated ranges, find non-conflicting sub-range of requested size (expressed in number of leading bits of ipv4 network mask, as in CIDR range notation).",
6057	//   "flatPath": "v1/services/{servicesId}:searchRange",
6058	//   "httpMethod": "POST",
6059	//   "id": "servicenetworking.services.searchRange",
6060	//   "parameterOrder": [
6061	//     "parent"
6062	//   ],
6063	//   "parameters": {
6064	//     "parent": {
6065	//       "description": "Required. This is in a form services/{service}. {service} the name of the private access management service, for example 'service-peering.example.com'.",
6066	//       "location": "path",
6067	//       "pattern": "^services/[^/]+$",
6068	//       "required": true,
6069	//       "type": "string"
6070	//     }
6071	//   },
6072	//   "path": "v1/{+parent}:searchRange",
6073	//   "request": {
6074	//     "$ref": "SearchRangeRequest"
6075	//   },
6076	//   "response": {
6077	//     "$ref": "Operation"
6078	//   },
6079	//   "scopes": [
6080	//     "https://www.googleapis.com/auth/cloud-platform",
6081	//     "https://www.googleapis.com/auth/service.management"
6082	//   ]
6083	// }
6084
6085}
6086
6087// method id "servicenetworking.services.validate":
6088
6089type ServicesValidateCall struct {
6090	s                             *APIService
6091	parent                        string
6092	validateconsumerconfigrequest *ValidateConsumerConfigRequest
6093	urlParams_                    gensupport.URLParams
6094	ctx_                          context.Context
6095	header_                       http.Header
6096}
6097
6098// Validate: Service producers use this method to validate if the
6099// consumer provided network, project and requested range are valid.
6100// This allows them to use a fail-fast mechanism for consumer requests,
6101// and not have to wait for AddSubnetwork operation completion to
6102// determine if user request is invalid.
6103func (r *ServicesService) Validate(parent string, validateconsumerconfigrequest *ValidateConsumerConfigRequest) *ServicesValidateCall {
6104	c := &ServicesValidateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6105	c.parent = parent
6106	c.validateconsumerconfigrequest = validateconsumerconfigrequest
6107	return c
6108}
6109
6110// Fields allows partial responses to be retrieved. See
6111// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6112// for more information.
6113func (c *ServicesValidateCall) Fields(s ...googleapi.Field) *ServicesValidateCall {
6114	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6115	return c
6116}
6117
6118// Context sets the context to be used in this call's Do method. Any
6119// pending HTTP request will be aborted if the provided context is
6120// canceled.
6121func (c *ServicesValidateCall) Context(ctx context.Context) *ServicesValidateCall {
6122	c.ctx_ = ctx
6123	return c
6124}
6125
6126// Header returns an http.Header that can be modified by the caller to
6127// add HTTP headers to the request.
6128func (c *ServicesValidateCall) Header() http.Header {
6129	if c.header_ == nil {
6130		c.header_ = make(http.Header)
6131	}
6132	return c.header_
6133}
6134
6135func (c *ServicesValidateCall) doRequest(alt string) (*http.Response, error) {
6136	reqHeaders := make(http.Header)
6137	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
6138	for k, v := range c.header_ {
6139		reqHeaders[k] = v
6140	}
6141	reqHeaders.Set("User-Agent", c.s.userAgent())
6142	var body io.Reader = nil
6143	body, err := googleapi.WithoutDataWrapper.JSONReader(c.validateconsumerconfigrequest)
6144	if err != nil {
6145		return nil, err
6146	}
6147	reqHeaders.Set("Content-Type", "application/json")
6148	c.urlParams_.Set("alt", alt)
6149	c.urlParams_.Set("prettyPrint", "false")
6150	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}:validate")
6151	urls += "?" + c.urlParams_.Encode()
6152	req, err := http.NewRequest("POST", urls, body)
6153	if err != nil {
6154		return nil, err
6155	}
6156	req.Header = reqHeaders
6157	googleapi.Expand(req.URL, map[string]string{
6158		"parent": c.parent,
6159	})
6160	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6161}
6162
6163// Do executes the "servicenetworking.services.validate" call.
6164// Exactly one of *ValidateConsumerConfigResponse or error will be
6165// non-nil. Any non-2xx status code is an error. Response headers are in
6166// either *ValidateConsumerConfigResponse.ServerResponse.Header or (if a
6167// response was returned at all) in error.(*googleapi.Error).Header. Use
6168// googleapi.IsNotModified to check whether the returned error was
6169// because http.StatusNotModified was returned.
6170func (c *ServicesValidateCall) Do(opts ...googleapi.CallOption) (*ValidateConsumerConfigResponse, error) {
6171	gensupport.SetOptions(c.urlParams_, opts...)
6172	res, err := c.doRequest("json")
6173	if res != nil && res.StatusCode == http.StatusNotModified {
6174		if res.Body != nil {
6175			res.Body.Close()
6176		}
6177		return nil, &googleapi.Error{
6178			Code:   res.StatusCode,
6179			Header: res.Header,
6180		}
6181	}
6182	if err != nil {
6183		return nil, err
6184	}
6185	defer googleapi.CloseBody(res)
6186	if err := googleapi.CheckResponse(res); err != nil {
6187		return nil, err
6188	}
6189	ret := &ValidateConsumerConfigResponse{
6190		ServerResponse: googleapi.ServerResponse{
6191			Header:         res.Header,
6192			HTTPStatusCode: res.StatusCode,
6193		},
6194	}
6195	target := &ret
6196	if err := gensupport.DecodeResponse(target, res); err != nil {
6197		return nil, err
6198	}
6199	return ret, nil
6200	// {
6201	//   "description": "Service producers use this method to validate if the consumer provided network, project and requested range are valid. This allows them to use a fail-fast mechanism for consumer requests, and not have to wait for AddSubnetwork operation completion to determine if user request is invalid.",
6202	//   "flatPath": "v1/services/{servicesId}:validate",
6203	//   "httpMethod": "POST",
6204	//   "id": "servicenetworking.services.validate",
6205	//   "parameterOrder": [
6206	//     "parent"
6207	//   ],
6208	//   "parameters": {
6209	//     "parent": {
6210	//       "description": "Required. This is in a form services/{service} where {service} is the name of the private access management service. For example 'service-peering.example.com'.",
6211	//       "location": "path",
6212	//       "pattern": "^services/[^/]+$",
6213	//       "required": true,
6214	//       "type": "string"
6215	//     }
6216	//   },
6217	//   "path": "v1/{+parent}:validate",
6218	//   "request": {
6219	//     "$ref": "ValidateConsumerConfigRequest"
6220	//   },
6221	//   "response": {
6222	//     "$ref": "ValidateConsumerConfigResponse"
6223	//   },
6224	//   "scopes": [
6225	//     "https://www.googleapis.com/auth/cloud-platform",
6226	//     "https://www.googleapis.com/auth/service.management"
6227	//   ]
6228	// }
6229
6230}
6231
6232// method id "servicenetworking.services.connections.create":
6233
6234type ServicesConnectionsCreateCall struct {
6235	s          *APIService
6236	parent     string
6237	connection *Connection
6238	urlParams_ gensupport.URLParams
6239	ctx_       context.Context
6240	header_    http.Header
6241}
6242
6243// Create: Creates a private connection that establishes a VPC Network
6244// Peering connection to a VPC network in the service producer's
6245// organization. The administrator of the service consumer's VPC network
6246// invokes this method. The administrator must assign one or more
6247// allocated IP ranges for provisioning subnetworks in the service
6248// producer's VPC network. This connection is used for all supported
6249// services in the service producer's organization, so it only needs to
6250// be invoked once.
6251func (r *ServicesConnectionsService) Create(parent string, connection *Connection) *ServicesConnectionsCreateCall {
6252	c := &ServicesConnectionsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6253	c.parent = parent
6254	c.connection = connection
6255	return c
6256}
6257
6258// Fields allows partial responses to be retrieved. See
6259// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6260// for more information.
6261func (c *ServicesConnectionsCreateCall) Fields(s ...googleapi.Field) *ServicesConnectionsCreateCall {
6262	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6263	return c
6264}
6265
6266// Context sets the context to be used in this call's Do method. Any
6267// pending HTTP request will be aborted if the provided context is
6268// canceled.
6269func (c *ServicesConnectionsCreateCall) Context(ctx context.Context) *ServicesConnectionsCreateCall {
6270	c.ctx_ = ctx
6271	return c
6272}
6273
6274// Header returns an http.Header that can be modified by the caller to
6275// add HTTP headers to the request.
6276func (c *ServicesConnectionsCreateCall) Header() http.Header {
6277	if c.header_ == nil {
6278		c.header_ = make(http.Header)
6279	}
6280	return c.header_
6281}
6282
6283func (c *ServicesConnectionsCreateCall) doRequest(alt string) (*http.Response, error) {
6284	reqHeaders := make(http.Header)
6285	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
6286	for k, v := range c.header_ {
6287		reqHeaders[k] = v
6288	}
6289	reqHeaders.Set("User-Agent", c.s.userAgent())
6290	var body io.Reader = nil
6291	body, err := googleapi.WithoutDataWrapper.JSONReader(c.connection)
6292	if err != nil {
6293		return nil, err
6294	}
6295	reqHeaders.Set("Content-Type", "application/json")
6296	c.urlParams_.Set("alt", alt)
6297	c.urlParams_.Set("prettyPrint", "false")
6298	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/connections")
6299	urls += "?" + c.urlParams_.Encode()
6300	req, err := http.NewRequest("POST", urls, body)
6301	if err != nil {
6302		return nil, err
6303	}
6304	req.Header = reqHeaders
6305	googleapi.Expand(req.URL, map[string]string{
6306		"parent": c.parent,
6307	})
6308	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6309}
6310
6311// Do executes the "servicenetworking.services.connections.create" call.
6312// Exactly one of *Operation or error will be non-nil. Any non-2xx
6313// status code is an error. Response headers are in either
6314// *Operation.ServerResponse.Header or (if a response was returned at
6315// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6316// to check whether the returned error was because
6317// http.StatusNotModified was returned.
6318func (c *ServicesConnectionsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6319	gensupport.SetOptions(c.urlParams_, opts...)
6320	res, err := c.doRequest("json")
6321	if res != nil && res.StatusCode == http.StatusNotModified {
6322		if res.Body != nil {
6323			res.Body.Close()
6324		}
6325		return nil, &googleapi.Error{
6326			Code:   res.StatusCode,
6327			Header: res.Header,
6328		}
6329	}
6330	if err != nil {
6331		return nil, err
6332	}
6333	defer googleapi.CloseBody(res)
6334	if err := googleapi.CheckResponse(res); err != nil {
6335		return nil, err
6336	}
6337	ret := &Operation{
6338		ServerResponse: googleapi.ServerResponse{
6339			Header:         res.Header,
6340			HTTPStatusCode: res.StatusCode,
6341		},
6342	}
6343	target := &ret
6344	if err := gensupport.DecodeResponse(target, res); err != nil {
6345		return nil, err
6346	}
6347	return ret, nil
6348	// {
6349	//   "description": "Creates a private connection that establishes a VPC Network Peering connection to a VPC network in the service producer's organization. The administrator of the service consumer's VPC network invokes this method. The administrator must assign one or more allocated IP ranges for provisioning subnetworks in the service producer's VPC network. This connection is used for all supported services in the service producer's organization, so it only needs to be invoked once.",
6350	//   "flatPath": "v1/services/{servicesId}/connections",
6351	//   "httpMethod": "POST",
6352	//   "id": "servicenetworking.services.connections.create",
6353	//   "parameterOrder": [
6354	//     "parent"
6355	//   ],
6356	//   "parameters": {
6357	//     "parent": {
6358	//       "description": "The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`.",
6359	//       "location": "path",
6360	//       "pattern": "^services/[^/]+$",
6361	//       "required": true,
6362	//       "type": "string"
6363	//     }
6364	//   },
6365	//   "path": "v1/{+parent}/connections",
6366	//   "request": {
6367	//     "$ref": "Connection"
6368	//   },
6369	//   "response": {
6370	//     "$ref": "Operation"
6371	//   },
6372	//   "scopes": [
6373	//     "https://www.googleapis.com/auth/cloud-platform",
6374	//     "https://www.googleapis.com/auth/service.management"
6375	//   ]
6376	// }
6377
6378}
6379
6380// method id "servicenetworking.services.connections.list":
6381
6382type ServicesConnectionsListCall struct {
6383	s            *APIService
6384	parent       string
6385	urlParams_   gensupport.URLParams
6386	ifNoneMatch_ string
6387	ctx_         context.Context
6388	header_      http.Header
6389}
6390
6391// List: List the private connections that are configured in a service
6392// consumer's VPC network.
6393func (r *ServicesConnectionsService) List(parent string) *ServicesConnectionsListCall {
6394	c := &ServicesConnectionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6395	c.parent = parent
6396	return c
6397}
6398
6399// Network sets the optional parameter "network": The name of service
6400// consumer's VPC network that's connected with service producer network
6401// through a private connection. The network name must be in the
6402// following format: `projects/{project}/global/networks/{network}`.
6403// {project} is a project number, such as in `12345` that includes the
6404// VPC service consumer's VPC network. {network} is the name of the
6405// service consumer's VPC network.
6406func (c *ServicesConnectionsListCall) Network(network string) *ServicesConnectionsListCall {
6407	c.urlParams_.Set("network", network)
6408	return c
6409}
6410
6411// Fields allows partial responses to be retrieved. See
6412// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6413// for more information.
6414func (c *ServicesConnectionsListCall) Fields(s ...googleapi.Field) *ServicesConnectionsListCall {
6415	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6416	return c
6417}
6418
6419// IfNoneMatch sets the optional parameter which makes the operation
6420// fail if the object's ETag matches the given value. This is useful for
6421// getting updates only after the object has changed since the last
6422// request. Use googleapi.IsNotModified to check whether the response
6423// error from Do is the result of In-None-Match.
6424func (c *ServicesConnectionsListCall) IfNoneMatch(entityTag string) *ServicesConnectionsListCall {
6425	c.ifNoneMatch_ = entityTag
6426	return c
6427}
6428
6429// Context sets the context to be used in this call's Do method. Any
6430// pending HTTP request will be aborted if the provided context is
6431// canceled.
6432func (c *ServicesConnectionsListCall) Context(ctx context.Context) *ServicesConnectionsListCall {
6433	c.ctx_ = ctx
6434	return c
6435}
6436
6437// Header returns an http.Header that can be modified by the caller to
6438// add HTTP headers to the request.
6439func (c *ServicesConnectionsListCall) Header() http.Header {
6440	if c.header_ == nil {
6441		c.header_ = make(http.Header)
6442	}
6443	return c.header_
6444}
6445
6446func (c *ServicesConnectionsListCall) doRequest(alt string) (*http.Response, error) {
6447	reqHeaders := make(http.Header)
6448	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
6449	for k, v := range c.header_ {
6450		reqHeaders[k] = v
6451	}
6452	reqHeaders.Set("User-Agent", c.s.userAgent())
6453	if c.ifNoneMatch_ != "" {
6454		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
6455	}
6456	var body io.Reader = nil
6457	c.urlParams_.Set("alt", alt)
6458	c.urlParams_.Set("prettyPrint", "false")
6459	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/connections")
6460	urls += "?" + c.urlParams_.Encode()
6461	req, err := http.NewRequest("GET", urls, body)
6462	if err != nil {
6463		return nil, err
6464	}
6465	req.Header = reqHeaders
6466	googleapi.Expand(req.URL, map[string]string{
6467		"parent": c.parent,
6468	})
6469	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6470}
6471
6472// Do executes the "servicenetworking.services.connections.list" call.
6473// Exactly one of *ListConnectionsResponse or error will be non-nil. Any
6474// non-2xx status code is an error. Response headers are in either
6475// *ListConnectionsResponse.ServerResponse.Header or (if a response was
6476// returned at all) in error.(*googleapi.Error).Header. Use
6477// googleapi.IsNotModified to check whether the returned error was
6478// because http.StatusNotModified was returned.
6479func (c *ServicesConnectionsListCall) Do(opts ...googleapi.CallOption) (*ListConnectionsResponse, error) {
6480	gensupport.SetOptions(c.urlParams_, opts...)
6481	res, err := c.doRequest("json")
6482	if res != nil && res.StatusCode == http.StatusNotModified {
6483		if res.Body != nil {
6484			res.Body.Close()
6485		}
6486		return nil, &googleapi.Error{
6487			Code:   res.StatusCode,
6488			Header: res.Header,
6489		}
6490	}
6491	if err != nil {
6492		return nil, err
6493	}
6494	defer googleapi.CloseBody(res)
6495	if err := googleapi.CheckResponse(res); err != nil {
6496		return nil, err
6497	}
6498	ret := &ListConnectionsResponse{
6499		ServerResponse: googleapi.ServerResponse{
6500			Header:         res.Header,
6501			HTTPStatusCode: res.StatusCode,
6502		},
6503	}
6504	target := &ret
6505	if err := gensupport.DecodeResponse(target, res); err != nil {
6506		return nil, err
6507	}
6508	return ret, nil
6509	// {
6510	//   "description": "List the private connections that are configured in a service consumer's VPC network.",
6511	//   "flatPath": "v1/services/{servicesId}/connections",
6512	//   "httpMethod": "GET",
6513	//   "id": "servicenetworking.services.connections.list",
6514	//   "parameterOrder": [
6515	//     "parent"
6516	//   ],
6517	//   "parameters": {
6518	//     "network": {
6519	//       "description": "The name of service consumer's VPC network that's connected with service producer network through a private connection. The network name must be in the following format: `projects/{project}/global/networks/{network}`. {project} is a project number, such as in `12345` that includes the VPC service consumer's VPC network. {network} is the name of the service consumer's VPC network.",
6520	//       "location": "query",
6521	//       "type": "string"
6522	//     },
6523	//     "parent": {
6524	//       "description": "The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`. If you specify `services/-` as the parameter value, all configured peering services are listed.",
6525	//       "location": "path",
6526	//       "pattern": "^services/[^/]+$",
6527	//       "required": true,
6528	//       "type": "string"
6529	//     }
6530	//   },
6531	//   "path": "v1/{+parent}/connections",
6532	//   "response": {
6533	//     "$ref": "ListConnectionsResponse"
6534	//   },
6535	//   "scopes": [
6536	//     "https://www.googleapis.com/auth/cloud-platform",
6537	//     "https://www.googleapis.com/auth/service.management"
6538	//   ]
6539	// }
6540
6541}
6542
6543// method id "servicenetworking.services.connections.patch":
6544
6545type ServicesConnectionsPatchCall struct {
6546	s          *APIService
6547	name       string
6548	connection *Connection
6549	urlParams_ gensupport.URLParams
6550	ctx_       context.Context
6551	header_    http.Header
6552}
6553
6554// Patch: Updates the allocated ranges that are assigned to a
6555// connection.
6556func (r *ServicesConnectionsService) Patch(name string, connection *Connection) *ServicesConnectionsPatchCall {
6557	c := &ServicesConnectionsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6558	c.name = name
6559	c.connection = connection
6560	return c
6561}
6562
6563// Force sets the optional parameter "force": If a previously defined
6564// allocated range is removed, force flag must be set to true.
6565func (c *ServicesConnectionsPatchCall) Force(force bool) *ServicesConnectionsPatchCall {
6566	c.urlParams_.Set("force", fmt.Sprint(force))
6567	return c
6568}
6569
6570// UpdateMask sets the optional parameter "updateMask": The update mask.
6571// If this is omitted, it defaults to "*". You can only update the
6572// listed peering ranges.
6573func (c *ServicesConnectionsPatchCall) UpdateMask(updateMask string) *ServicesConnectionsPatchCall {
6574	c.urlParams_.Set("updateMask", updateMask)
6575	return c
6576}
6577
6578// Fields allows partial responses to be retrieved. See
6579// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6580// for more information.
6581func (c *ServicesConnectionsPatchCall) Fields(s ...googleapi.Field) *ServicesConnectionsPatchCall {
6582	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6583	return c
6584}
6585
6586// Context sets the context to be used in this call's Do method. Any
6587// pending HTTP request will be aborted if the provided context is
6588// canceled.
6589func (c *ServicesConnectionsPatchCall) Context(ctx context.Context) *ServicesConnectionsPatchCall {
6590	c.ctx_ = ctx
6591	return c
6592}
6593
6594// Header returns an http.Header that can be modified by the caller to
6595// add HTTP headers to the request.
6596func (c *ServicesConnectionsPatchCall) Header() http.Header {
6597	if c.header_ == nil {
6598		c.header_ = make(http.Header)
6599	}
6600	return c.header_
6601}
6602
6603func (c *ServicesConnectionsPatchCall) doRequest(alt string) (*http.Response, error) {
6604	reqHeaders := make(http.Header)
6605	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
6606	for k, v := range c.header_ {
6607		reqHeaders[k] = v
6608	}
6609	reqHeaders.Set("User-Agent", c.s.userAgent())
6610	var body io.Reader = nil
6611	body, err := googleapi.WithoutDataWrapper.JSONReader(c.connection)
6612	if err != nil {
6613		return nil, err
6614	}
6615	reqHeaders.Set("Content-Type", "application/json")
6616	c.urlParams_.Set("alt", alt)
6617	c.urlParams_.Set("prettyPrint", "false")
6618	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
6619	urls += "?" + c.urlParams_.Encode()
6620	req, err := http.NewRequest("PATCH", urls, body)
6621	if err != nil {
6622		return nil, err
6623	}
6624	req.Header = reqHeaders
6625	googleapi.Expand(req.URL, map[string]string{
6626		"name": c.name,
6627	})
6628	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6629}
6630
6631// Do executes the "servicenetworking.services.connections.patch" call.
6632// Exactly one of *Operation or error will be non-nil. Any non-2xx
6633// status code is an error. Response headers are in either
6634// *Operation.ServerResponse.Header or (if a response was returned at
6635// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6636// to check whether the returned error was because
6637// http.StatusNotModified was returned.
6638func (c *ServicesConnectionsPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6639	gensupport.SetOptions(c.urlParams_, opts...)
6640	res, err := c.doRequest("json")
6641	if res != nil && res.StatusCode == http.StatusNotModified {
6642		if res.Body != nil {
6643			res.Body.Close()
6644		}
6645		return nil, &googleapi.Error{
6646			Code:   res.StatusCode,
6647			Header: res.Header,
6648		}
6649	}
6650	if err != nil {
6651		return nil, err
6652	}
6653	defer googleapi.CloseBody(res)
6654	if err := googleapi.CheckResponse(res); err != nil {
6655		return nil, err
6656	}
6657	ret := &Operation{
6658		ServerResponse: googleapi.ServerResponse{
6659			Header:         res.Header,
6660			HTTPStatusCode: res.StatusCode,
6661		},
6662	}
6663	target := &ret
6664	if err := gensupport.DecodeResponse(target, res); err != nil {
6665		return nil, err
6666	}
6667	return ret, nil
6668	// {
6669	//   "description": "Updates the allocated ranges that are assigned to a connection.",
6670	//   "flatPath": "v1/services/{servicesId}/connections/{connectionsId}",
6671	//   "httpMethod": "PATCH",
6672	//   "id": "servicenetworking.services.connections.patch",
6673	//   "parameterOrder": [
6674	//     "name"
6675	//   ],
6676	//   "parameters": {
6677	//     "force": {
6678	//       "description": "If a previously defined allocated range is removed, force flag must be set to true.",
6679	//       "location": "query",
6680	//       "type": "boolean"
6681	//     },
6682	//     "name": {
6683	//       "description": "The private service connection that connects to a service producer organization. The name includes both the private service name and the VPC network peering name in the format of `services/{peering_service_name}/connections/{vpc_peering_name}`. For Google services that support this functionality, this is `services/servicenetworking.googleapis.com/connections/servicenetworking-googleapis-com`.",
6684	//       "location": "path",
6685	//       "pattern": "^services/[^/]+/connections/[^/]+$",
6686	//       "required": true,
6687	//       "type": "string"
6688	//     },
6689	//     "updateMask": {
6690	//       "description": "The update mask. If this is omitted, it defaults to \"*\". You can only update the listed peering ranges.",
6691	//       "format": "google-fieldmask",
6692	//       "location": "query",
6693	//       "type": "string"
6694	//     }
6695	//   },
6696	//   "path": "v1/{+name}",
6697	//   "request": {
6698	//     "$ref": "Connection"
6699	//   },
6700	//   "response": {
6701	//     "$ref": "Operation"
6702	//   },
6703	//   "scopes": [
6704	//     "https://www.googleapis.com/auth/cloud-platform",
6705	//     "https://www.googleapis.com/auth/service.management"
6706	//   ]
6707	// }
6708
6709}
6710
6711// method id "servicenetworking.services.dnsRecordSets.add":
6712
6713type ServicesDnsRecordSetsAddCall struct {
6714	s                      *APIService
6715	parent                 string
6716	adddnsrecordsetrequest *AddDnsRecordSetRequest
6717	urlParams_             gensupport.URLParams
6718	ctx_                   context.Context
6719	header_                http.Header
6720}
6721
6722// Add: Service producers can use this method to add DNS record sets to
6723// private DNS zones in the shared producer host project.
6724func (r *ServicesDnsRecordSetsService) Add(parent string, adddnsrecordsetrequest *AddDnsRecordSetRequest) *ServicesDnsRecordSetsAddCall {
6725	c := &ServicesDnsRecordSetsAddCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6726	c.parent = parent
6727	c.adddnsrecordsetrequest = adddnsrecordsetrequest
6728	return c
6729}
6730
6731// Fields allows partial responses to be retrieved. See
6732// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6733// for more information.
6734func (c *ServicesDnsRecordSetsAddCall) Fields(s ...googleapi.Field) *ServicesDnsRecordSetsAddCall {
6735	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6736	return c
6737}
6738
6739// Context sets the context to be used in this call's Do method. Any
6740// pending HTTP request will be aborted if the provided context is
6741// canceled.
6742func (c *ServicesDnsRecordSetsAddCall) Context(ctx context.Context) *ServicesDnsRecordSetsAddCall {
6743	c.ctx_ = ctx
6744	return c
6745}
6746
6747// Header returns an http.Header that can be modified by the caller to
6748// add HTTP headers to the request.
6749func (c *ServicesDnsRecordSetsAddCall) Header() http.Header {
6750	if c.header_ == nil {
6751		c.header_ = make(http.Header)
6752	}
6753	return c.header_
6754}
6755
6756func (c *ServicesDnsRecordSetsAddCall) doRequest(alt string) (*http.Response, error) {
6757	reqHeaders := make(http.Header)
6758	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
6759	for k, v := range c.header_ {
6760		reqHeaders[k] = v
6761	}
6762	reqHeaders.Set("User-Agent", c.s.userAgent())
6763	var body io.Reader = nil
6764	body, err := googleapi.WithoutDataWrapper.JSONReader(c.adddnsrecordsetrequest)
6765	if err != nil {
6766		return nil, err
6767	}
6768	reqHeaders.Set("Content-Type", "application/json")
6769	c.urlParams_.Set("alt", alt)
6770	c.urlParams_.Set("prettyPrint", "false")
6771	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/dnsRecordSets:add")
6772	urls += "?" + c.urlParams_.Encode()
6773	req, err := http.NewRequest("POST", urls, body)
6774	if err != nil {
6775		return nil, err
6776	}
6777	req.Header = reqHeaders
6778	googleapi.Expand(req.URL, map[string]string{
6779		"parent": c.parent,
6780	})
6781	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6782}
6783
6784// Do executes the "servicenetworking.services.dnsRecordSets.add" call.
6785// Exactly one of *Operation or error will be non-nil. Any non-2xx
6786// status code is an error. Response headers are in either
6787// *Operation.ServerResponse.Header or (if a response was returned at
6788// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6789// to check whether the returned error was because
6790// http.StatusNotModified was returned.
6791func (c *ServicesDnsRecordSetsAddCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6792	gensupport.SetOptions(c.urlParams_, opts...)
6793	res, err := c.doRequest("json")
6794	if res != nil && res.StatusCode == http.StatusNotModified {
6795		if res.Body != nil {
6796			res.Body.Close()
6797		}
6798		return nil, &googleapi.Error{
6799			Code:   res.StatusCode,
6800			Header: res.Header,
6801		}
6802	}
6803	if err != nil {
6804		return nil, err
6805	}
6806	defer googleapi.CloseBody(res)
6807	if err := googleapi.CheckResponse(res); err != nil {
6808		return nil, err
6809	}
6810	ret := &Operation{
6811		ServerResponse: googleapi.ServerResponse{
6812			Header:         res.Header,
6813			HTTPStatusCode: res.StatusCode,
6814		},
6815	}
6816	target := &ret
6817	if err := gensupport.DecodeResponse(target, res); err != nil {
6818		return nil, err
6819	}
6820	return ret, nil
6821	// {
6822	//   "description": "Service producers can use this method to add DNS record sets to private DNS zones in the shared producer host project.",
6823	//   "flatPath": "v1/services/{servicesId}/dnsRecordSets:add",
6824	//   "httpMethod": "POST",
6825	//   "id": "servicenetworking.services.dnsRecordSets.add",
6826	//   "parameterOrder": [
6827	//     "parent"
6828	//   ],
6829	//   "parameters": {
6830	//     "parent": {
6831	//       "description": "Required. The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`.",
6832	//       "location": "path",
6833	//       "pattern": "^services/[^/]+$",
6834	//       "required": true,
6835	//       "type": "string"
6836	//     }
6837	//   },
6838	//   "path": "v1/{+parent}/dnsRecordSets:add",
6839	//   "request": {
6840	//     "$ref": "AddDnsRecordSetRequest"
6841	//   },
6842	//   "response": {
6843	//     "$ref": "Operation"
6844	//   },
6845	//   "scopes": [
6846	//     "https://www.googleapis.com/auth/cloud-platform",
6847	//     "https://www.googleapis.com/auth/service.management"
6848	//   ]
6849	// }
6850
6851}
6852
6853// method id "servicenetworking.services.dnsRecordSets.remove":
6854
6855type ServicesDnsRecordSetsRemoveCall struct {
6856	s                         *APIService
6857	parent                    string
6858	removednsrecordsetrequest *RemoveDnsRecordSetRequest
6859	urlParams_                gensupport.URLParams
6860	ctx_                      context.Context
6861	header_                   http.Header
6862}
6863
6864// Remove: Service producers can use this method to remove DNS record
6865// sets from private DNS zones in the shared producer host project.
6866func (r *ServicesDnsRecordSetsService) Remove(parent string, removednsrecordsetrequest *RemoveDnsRecordSetRequest) *ServicesDnsRecordSetsRemoveCall {
6867	c := &ServicesDnsRecordSetsRemoveCall{s: r.s, urlParams_: make(gensupport.URLParams)}
6868	c.parent = parent
6869	c.removednsrecordsetrequest = removednsrecordsetrequest
6870	return c
6871}
6872
6873// Fields allows partial responses to be retrieved. See
6874// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
6875// for more information.
6876func (c *ServicesDnsRecordSetsRemoveCall) Fields(s ...googleapi.Field) *ServicesDnsRecordSetsRemoveCall {
6877	c.urlParams_.Set("fields", googleapi.CombineFields(s))
6878	return c
6879}
6880
6881// Context sets the context to be used in this call's Do method. Any
6882// pending HTTP request will be aborted if the provided context is
6883// canceled.
6884func (c *ServicesDnsRecordSetsRemoveCall) Context(ctx context.Context) *ServicesDnsRecordSetsRemoveCall {
6885	c.ctx_ = ctx
6886	return c
6887}
6888
6889// Header returns an http.Header that can be modified by the caller to
6890// add HTTP headers to the request.
6891func (c *ServicesDnsRecordSetsRemoveCall) Header() http.Header {
6892	if c.header_ == nil {
6893		c.header_ = make(http.Header)
6894	}
6895	return c.header_
6896}
6897
6898func (c *ServicesDnsRecordSetsRemoveCall) doRequest(alt string) (*http.Response, error) {
6899	reqHeaders := make(http.Header)
6900	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
6901	for k, v := range c.header_ {
6902		reqHeaders[k] = v
6903	}
6904	reqHeaders.Set("User-Agent", c.s.userAgent())
6905	var body io.Reader = nil
6906	body, err := googleapi.WithoutDataWrapper.JSONReader(c.removednsrecordsetrequest)
6907	if err != nil {
6908		return nil, err
6909	}
6910	reqHeaders.Set("Content-Type", "application/json")
6911	c.urlParams_.Set("alt", alt)
6912	c.urlParams_.Set("prettyPrint", "false")
6913	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/dnsRecordSets:remove")
6914	urls += "?" + c.urlParams_.Encode()
6915	req, err := http.NewRequest("POST", urls, body)
6916	if err != nil {
6917		return nil, err
6918	}
6919	req.Header = reqHeaders
6920	googleapi.Expand(req.URL, map[string]string{
6921		"parent": c.parent,
6922	})
6923	return gensupport.SendRequest(c.ctx_, c.s.client, req)
6924}
6925
6926// Do executes the "servicenetworking.services.dnsRecordSets.remove" call.
6927// Exactly one of *Operation or error will be non-nil. Any non-2xx
6928// status code is an error. Response headers are in either
6929// *Operation.ServerResponse.Header or (if a response was returned at
6930// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
6931// to check whether the returned error was because
6932// http.StatusNotModified was returned.
6933func (c *ServicesDnsRecordSetsRemoveCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
6934	gensupport.SetOptions(c.urlParams_, opts...)
6935	res, err := c.doRequest("json")
6936	if res != nil && res.StatusCode == http.StatusNotModified {
6937		if res.Body != nil {
6938			res.Body.Close()
6939		}
6940		return nil, &googleapi.Error{
6941			Code:   res.StatusCode,
6942			Header: res.Header,
6943		}
6944	}
6945	if err != nil {
6946		return nil, err
6947	}
6948	defer googleapi.CloseBody(res)
6949	if err := googleapi.CheckResponse(res); err != nil {
6950		return nil, err
6951	}
6952	ret := &Operation{
6953		ServerResponse: googleapi.ServerResponse{
6954			Header:         res.Header,
6955			HTTPStatusCode: res.StatusCode,
6956		},
6957	}
6958	target := &ret
6959	if err := gensupport.DecodeResponse(target, res); err != nil {
6960		return nil, err
6961	}
6962	return ret, nil
6963	// {
6964	//   "description": "Service producers can use this method to remove DNS record sets from private DNS zones in the shared producer host project.",
6965	//   "flatPath": "v1/services/{servicesId}/dnsRecordSets:remove",
6966	//   "httpMethod": "POST",
6967	//   "id": "servicenetworking.services.dnsRecordSets.remove",
6968	//   "parameterOrder": [
6969	//     "parent"
6970	//   ],
6971	//   "parameters": {
6972	//     "parent": {
6973	//       "description": "Required. The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`.",
6974	//       "location": "path",
6975	//       "pattern": "^services/[^/]+$",
6976	//       "required": true,
6977	//       "type": "string"
6978	//     }
6979	//   },
6980	//   "path": "v1/{+parent}/dnsRecordSets:remove",
6981	//   "request": {
6982	//     "$ref": "RemoveDnsRecordSetRequest"
6983	//   },
6984	//   "response": {
6985	//     "$ref": "Operation"
6986	//   },
6987	//   "scopes": [
6988	//     "https://www.googleapis.com/auth/cloud-platform",
6989	//     "https://www.googleapis.com/auth/service.management"
6990	//   ]
6991	// }
6992
6993}
6994
6995// method id "servicenetworking.services.dnsRecordSets.update":
6996
6997type ServicesDnsRecordSetsUpdateCall struct {
6998	s                         *APIService
6999	parent                    string
7000	updatednsrecordsetrequest *UpdateDnsRecordSetRequest
7001	urlParams_                gensupport.URLParams
7002	ctx_                      context.Context
7003	header_                   http.Header
7004}
7005
7006// Update: Service producers can use this method to update DNS record
7007// sets from private DNS zones in the shared producer host project.
7008func (r *ServicesDnsRecordSetsService) Update(parent string, updatednsrecordsetrequest *UpdateDnsRecordSetRequest) *ServicesDnsRecordSetsUpdateCall {
7009	c := &ServicesDnsRecordSetsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7010	c.parent = parent
7011	c.updatednsrecordsetrequest = updatednsrecordsetrequest
7012	return c
7013}
7014
7015// Fields allows partial responses to be retrieved. See
7016// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7017// for more information.
7018func (c *ServicesDnsRecordSetsUpdateCall) Fields(s ...googleapi.Field) *ServicesDnsRecordSetsUpdateCall {
7019	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7020	return c
7021}
7022
7023// Context sets the context to be used in this call's Do method. Any
7024// pending HTTP request will be aborted if the provided context is
7025// canceled.
7026func (c *ServicesDnsRecordSetsUpdateCall) Context(ctx context.Context) *ServicesDnsRecordSetsUpdateCall {
7027	c.ctx_ = ctx
7028	return c
7029}
7030
7031// Header returns an http.Header that can be modified by the caller to
7032// add HTTP headers to the request.
7033func (c *ServicesDnsRecordSetsUpdateCall) Header() http.Header {
7034	if c.header_ == nil {
7035		c.header_ = make(http.Header)
7036	}
7037	return c.header_
7038}
7039
7040func (c *ServicesDnsRecordSetsUpdateCall) doRequest(alt string) (*http.Response, error) {
7041	reqHeaders := make(http.Header)
7042	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
7043	for k, v := range c.header_ {
7044		reqHeaders[k] = v
7045	}
7046	reqHeaders.Set("User-Agent", c.s.userAgent())
7047	var body io.Reader = nil
7048	body, err := googleapi.WithoutDataWrapper.JSONReader(c.updatednsrecordsetrequest)
7049	if err != nil {
7050		return nil, err
7051	}
7052	reqHeaders.Set("Content-Type", "application/json")
7053	c.urlParams_.Set("alt", alt)
7054	c.urlParams_.Set("prettyPrint", "false")
7055	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/dnsRecordSets:update")
7056	urls += "?" + c.urlParams_.Encode()
7057	req, err := http.NewRequest("POST", urls, body)
7058	if err != nil {
7059		return nil, err
7060	}
7061	req.Header = reqHeaders
7062	googleapi.Expand(req.URL, map[string]string{
7063		"parent": c.parent,
7064	})
7065	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7066}
7067
7068// Do executes the "servicenetworking.services.dnsRecordSets.update" call.
7069// Exactly one of *Operation or error will be non-nil. Any non-2xx
7070// status code is an error. Response headers are in either
7071// *Operation.ServerResponse.Header or (if a response was returned at
7072// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
7073// to check whether the returned error was because
7074// http.StatusNotModified was returned.
7075func (c *ServicesDnsRecordSetsUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
7076	gensupport.SetOptions(c.urlParams_, opts...)
7077	res, err := c.doRequest("json")
7078	if res != nil && res.StatusCode == http.StatusNotModified {
7079		if res.Body != nil {
7080			res.Body.Close()
7081		}
7082		return nil, &googleapi.Error{
7083			Code:   res.StatusCode,
7084			Header: res.Header,
7085		}
7086	}
7087	if err != nil {
7088		return nil, err
7089	}
7090	defer googleapi.CloseBody(res)
7091	if err := googleapi.CheckResponse(res); err != nil {
7092		return nil, err
7093	}
7094	ret := &Operation{
7095		ServerResponse: googleapi.ServerResponse{
7096			Header:         res.Header,
7097			HTTPStatusCode: res.StatusCode,
7098		},
7099	}
7100	target := &ret
7101	if err := gensupport.DecodeResponse(target, res); err != nil {
7102		return nil, err
7103	}
7104	return ret, nil
7105	// {
7106	//   "description": "Service producers can use this method to update DNS record sets from private DNS zones in the shared producer host project.",
7107	//   "flatPath": "v1/services/{servicesId}/dnsRecordSets:update",
7108	//   "httpMethod": "POST",
7109	//   "id": "servicenetworking.services.dnsRecordSets.update",
7110	//   "parameterOrder": [
7111	//     "parent"
7112	//   ],
7113	//   "parameters": {
7114	//     "parent": {
7115	//       "description": "Required. The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`.",
7116	//       "location": "path",
7117	//       "pattern": "^services/[^/]+$",
7118	//       "required": true,
7119	//       "type": "string"
7120	//     }
7121	//   },
7122	//   "path": "v1/{+parent}/dnsRecordSets:update",
7123	//   "request": {
7124	//     "$ref": "UpdateDnsRecordSetRequest"
7125	//   },
7126	//   "response": {
7127	//     "$ref": "Operation"
7128	//   },
7129	//   "scopes": [
7130	//     "https://www.googleapis.com/auth/cloud-platform",
7131	//     "https://www.googleapis.com/auth/service.management"
7132	//   ]
7133	// }
7134
7135}
7136
7137// method id "servicenetworking.services.dnsZones.add":
7138
7139type ServicesDnsZonesAddCall struct {
7140	s                 *APIService
7141	parent            string
7142	adddnszonerequest *AddDnsZoneRequest
7143	urlParams_        gensupport.URLParams
7144	ctx_              context.Context
7145	header_           http.Header
7146}
7147
7148// Add: Service producers can use this method to add private DNS zones
7149// in the shared producer host project and matching peering zones in the
7150// consumer project.
7151func (r *ServicesDnsZonesService) Add(parent string, adddnszonerequest *AddDnsZoneRequest) *ServicesDnsZonesAddCall {
7152	c := &ServicesDnsZonesAddCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7153	c.parent = parent
7154	c.adddnszonerequest = adddnszonerequest
7155	return c
7156}
7157
7158// Fields allows partial responses to be retrieved. See
7159// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7160// for more information.
7161func (c *ServicesDnsZonesAddCall) Fields(s ...googleapi.Field) *ServicesDnsZonesAddCall {
7162	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7163	return c
7164}
7165
7166// Context sets the context to be used in this call's Do method. Any
7167// pending HTTP request will be aborted if the provided context is
7168// canceled.
7169func (c *ServicesDnsZonesAddCall) Context(ctx context.Context) *ServicesDnsZonesAddCall {
7170	c.ctx_ = ctx
7171	return c
7172}
7173
7174// Header returns an http.Header that can be modified by the caller to
7175// add HTTP headers to the request.
7176func (c *ServicesDnsZonesAddCall) Header() http.Header {
7177	if c.header_ == nil {
7178		c.header_ = make(http.Header)
7179	}
7180	return c.header_
7181}
7182
7183func (c *ServicesDnsZonesAddCall) doRequest(alt string) (*http.Response, error) {
7184	reqHeaders := make(http.Header)
7185	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
7186	for k, v := range c.header_ {
7187		reqHeaders[k] = v
7188	}
7189	reqHeaders.Set("User-Agent", c.s.userAgent())
7190	var body io.Reader = nil
7191	body, err := googleapi.WithoutDataWrapper.JSONReader(c.adddnszonerequest)
7192	if err != nil {
7193		return nil, err
7194	}
7195	reqHeaders.Set("Content-Type", "application/json")
7196	c.urlParams_.Set("alt", alt)
7197	c.urlParams_.Set("prettyPrint", "false")
7198	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/dnsZones:add")
7199	urls += "?" + c.urlParams_.Encode()
7200	req, err := http.NewRequest("POST", urls, body)
7201	if err != nil {
7202		return nil, err
7203	}
7204	req.Header = reqHeaders
7205	googleapi.Expand(req.URL, map[string]string{
7206		"parent": c.parent,
7207	})
7208	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7209}
7210
7211// Do executes the "servicenetworking.services.dnsZones.add" call.
7212// Exactly one of *Operation or error will be non-nil. Any non-2xx
7213// status code is an error. Response headers are in either
7214// *Operation.ServerResponse.Header or (if a response was returned at
7215// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
7216// to check whether the returned error was because
7217// http.StatusNotModified was returned.
7218func (c *ServicesDnsZonesAddCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
7219	gensupport.SetOptions(c.urlParams_, opts...)
7220	res, err := c.doRequest("json")
7221	if res != nil && res.StatusCode == http.StatusNotModified {
7222		if res.Body != nil {
7223			res.Body.Close()
7224		}
7225		return nil, &googleapi.Error{
7226			Code:   res.StatusCode,
7227			Header: res.Header,
7228		}
7229	}
7230	if err != nil {
7231		return nil, err
7232	}
7233	defer googleapi.CloseBody(res)
7234	if err := googleapi.CheckResponse(res); err != nil {
7235		return nil, err
7236	}
7237	ret := &Operation{
7238		ServerResponse: googleapi.ServerResponse{
7239			Header:         res.Header,
7240			HTTPStatusCode: res.StatusCode,
7241		},
7242	}
7243	target := &ret
7244	if err := gensupport.DecodeResponse(target, res); err != nil {
7245		return nil, err
7246	}
7247	return ret, nil
7248	// {
7249	//   "description": "Service producers can use this method to add private DNS zones in the shared producer host project and matching peering zones in the consumer project.",
7250	//   "flatPath": "v1/services/{servicesId}/dnsZones:add",
7251	//   "httpMethod": "POST",
7252	//   "id": "servicenetworking.services.dnsZones.add",
7253	//   "parameterOrder": [
7254	//     "parent"
7255	//   ],
7256	//   "parameters": {
7257	//     "parent": {
7258	//       "description": "Required. The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`.",
7259	//       "location": "path",
7260	//       "pattern": "^services/[^/]+$",
7261	//       "required": true,
7262	//       "type": "string"
7263	//     }
7264	//   },
7265	//   "path": "v1/{+parent}/dnsZones:add",
7266	//   "request": {
7267	//     "$ref": "AddDnsZoneRequest"
7268	//   },
7269	//   "response": {
7270	//     "$ref": "Operation"
7271	//   },
7272	//   "scopes": [
7273	//     "https://www.googleapis.com/auth/cloud-platform",
7274	//     "https://www.googleapis.com/auth/service.management"
7275	//   ]
7276	// }
7277
7278}
7279
7280// method id "servicenetworking.services.dnsZones.remove":
7281
7282type ServicesDnsZonesRemoveCall struct {
7283	s                    *APIService
7284	parent               string
7285	removednszonerequest *RemoveDnsZoneRequest
7286	urlParams_           gensupport.URLParams
7287	ctx_                 context.Context
7288	header_              http.Header
7289}
7290
7291// Remove: Service producers can use this method to remove private DNS
7292// zones in the shared producer host project and matching peering zones
7293// in the consumer project.
7294func (r *ServicesDnsZonesService) Remove(parent string, removednszonerequest *RemoveDnsZoneRequest) *ServicesDnsZonesRemoveCall {
7295	c := &ServicesDnsZonesRemoveCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7296	c.parent = parent
7297	c.removednszonerequest = removednszonerequest
7298	return c
7299}
7300
7301// Fields allows partial responses to be retrieved. See
7302// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7303// for more information.
7304func (c *ServicesDnsZonesRemoveCall) Fields(s ...googleapi.Field) *ServicesDnsZonesRemoveCall {
7305	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7306	return c
7307}
7308
7309// Context sets the context to be used in this call's Do method. Any
7310// pending HTTP request will be aborted if the provided context is
7311// canceled.
7312func (c *ServicesDnsZonesRemoveCall) Context(ctx context.Context) *ServicesDnsZonesRemoveCall {
7313	c.ctx_ = ctx
7314	return c
7315}
7316
7317// Header returns an http.Header that can be modified by the caller to
7318// add HTTP headers to the request.
7319func (c *ServicesDnsZonesRemoveCall) Header() http.Header {
7320	if c.header_ == nil {
7321		c.header_ = make(http.Header)
7322	}
7323	return c.header_
7324}
7325
7326func (c *ServicesDnsZonesRemoveCall) doRequest(alt string) (*http.Response, error) {
7327	reqHeaders := make(http.Header)
7328	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
7329	for k, v := range c.header_ {
7330		reqHeaders[k] = v
7331	}
7332	reqHeaders.Set("User-Agent", c.s.userAgent())
7333	var body io.Reader = nil
7334	body, err := googleapi.WithoutDataWrapper.JSONReader(c.removednszonerequest)
7335	if err != nil {
7336		return nil, err
7337	}
7338	reqHeaders.Set("Content-Type", "application/json")
7339	c.urlParams_.Set("alt", alt)
7340	c.urlParams_.Set("prettyPrint", "false")
7341	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/dnsZones:remove")
7342	urls += "?" + c.urlParams_.Encode()
7343	req, err := http.NewRequest("POST", urls, body)
7344	if err != nil {
7345		return nil, err
7346	}
7347	req.Header = reqHeaders
7348	googleapi.Expand(req.URL, map[string]string{
7349		"parent": c.parent,
7350	})
7351	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7352}
7353
7354// Do executes the "servicenetworking.services.dnsZones.remove" call.
7355// Exactly one of *Operation or error will be non-nil. Any non-2xx
7356// status code is an error. Response headers are in either
7357// *Operation.ServerResponse.Header or (if a response was returned at
7358// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
7359// to check whether the returned error was because
7360// http.StatusNotModified was returned.
7361func (c *ServicesDnsZonesRemoveCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
7362	gensupport.SetOptions(c.urlParams_, opts...)
7363	res, err := c.doRequest("json")
7364	if res != nil && res.StatusCode == http.StatusNotModified {
7365		if res.Body != nil {
7366			res.Body.Close()
7367		}
7368		return nil, &googleapi.Error{
7369			Code:   res.StatusCode,
7370			Header: res.Header,
7371		}
7372	}
7373	if err != nil {
7374		return nil, err
7375	}
7376	defer googleapi.CloseBody(res)
7377	if err := googleapi.CheckResponse(res); err != nil {
7378		return nil, err
7379	}
7380	ret := &Operation{
7381		ServerResponse: googleapi.ServerResponse{
7382			Header:         res.Header,
7383			HTTPStatusCode: res.StatusCode,
7384		},
7385	}
7386	target := &ret
7387	if err := gensupport.DecodeResponse(target, res); err != nil {
7388		return nil, err
7389	}
7390	return ret, nil
7391	// {
7392	//   "description": "Service producers can use this method to remove private DNS zones in the shared producer host project and matching peering zones in the consumer project.",
7393	//   "flatPath": "v1/services/{servicesId}/dnsZones:remove",
7394	//   "httpMethod": "POST",
7395	//   "id": "servicenetworking.services.dnsZones.remove",
7396	//   "parameterOrder": [
7397	//     "parent"
7398	//   ],
7399	//   "parameters": {
7400	//     "parent": {
7401	//       "description": "Required. The service that is managing peering connectivity for a service producer's organization. For Google services that support this functionality, this value is `services/servicenetworking.googleapis.com`.",
7402	//       "location": "path",
7403	//       "pattern": "^services/[^/]+$",
7404	//       "required": true,
7405	//       "type": "string"
7406	//     }
7407	//   },
7408	//   "path": "v1/{+parent}/dnsZones:remove",
7409	//   "request": {
7410	//     "$ref": "RemoveDnsZoneRequest"
7411	//   },
7412	//   "response": {
7413	//     "$ref": "Operation"
7414	//   },
7415	//   "scopes": [
7416	//     "https://www.googleapis.com/auth/cloud-platform",
7417	//     "https://www.googleapis.com/auth/service.management"
7418	//   ]
7419	// }
7420
7421}
7422
7423// method id "servicenetworking.services.projects.global.networks.get":
7424
7425type ServicesProjectsGlobalNetworksGetCall struct {
7426	s            *APIService
7427	name         string
7428	urlParams_   gensupport.URLParams
7429	ifNoneMatch_ string
7430	ctx_         context.Context
7431	header_      http.Header
7432}
7433
7434// Get: Service producers use this method to get the configuration of
7435// their connection including the import/export of custom routes and
7436// subnetwork routes with public IP.
7437func (r *ServicesProjectsGlobalNetworksService) Get(name string) *ServicesProjectsGlobalNetworksGetCall {
7438	c := &ServicesProjectsGlobalNetworksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7439	c.name = name
7440	return c
7441}
7442
7443// Fields allows partial responses to be retrieved. See
7444// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7445// for more information.
7446func (c *ServicesProjectsGlobalNetworksGetCall) Fields(s ...googleapi.Field) *ServicesProjectsGlobalNetworksGetCall {
7447	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7448	return c
7449}
7450
7451// IfNoneMatch sets the optional parameter which makes the operation
7452// fail if the object's ETag matches the given value. This is useful for
7453// getting updates only after the object has changed since the last
7454// request. Use googleapi.IsNotModified to check whether the response
7455// error from Do is the result of In-None-Match.
7456func (c *ServicesProjectsGlobalNetworksGetCall) IfNoneMatch(entityTag string) *ServicesProjectsGlobalNetworksGetCall {
7457	c.ifNoneMatch_ = entityTag
7458	return c
7459}
7460
7461// Context sets the context to be used in this call's Do method. Any
7462// pending HTTP request will be aborted if the provided context is
7463// canceled.
7464func (c *ServicesProjectsGlobalNetworksGetCall) Context(ctx context.Context) *ServicesProjectsGlobalNetworksGetCall {
7465	c.ctx_ = ctx
7466	return c
7467}
7468
7469// Header returns an http.Header that can be modified by the caller to
7470// add HTTP headers to the request.
7471func (c *ServicesProjectsGlobalNetworksGetCall) Header() http.Header {
7472	if c.header_ == nil {
7473		c.header_ = make(http.Header)
7474	}
7475	return c.header_
7476}
7477
7478func (c *ServicesProjectsGlobalNetworksGetCall) doRequest(alt string) (*http.Response, error) {
7479	reqHeaders := make(http.Header)
7480	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
7481	for k, v := range c.header_ {
7482		reqHeaders[k] = v
7483	}
7484	reqHeaders.Set("User-Agent", c.s.userAgent())
7485	if c.ifNoneMatch_ != "" {
7486		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
7487	}
7488	var body io.Reader = nil
7489	c.urlParams_.Set("alt", alt)
7490	c.urlParams_.Set("prettyPrint", "false")
7491	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
7492	urls += "?" + c.urlParams_.Encode()
7493	req, err := http.NewRequest("GET", urls, body)
7494	if err != nil {
7495		return nil, err
7496	}
7497	req.Header = reqHeaders
7498	googleapi.Expand(req.URL, map[string]string{
7499		"name": c.name,
7500	})
7501	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7502}
7503
7504// Do executes the "servicenetworking.services.projects.global.networks.get" call.
7505// Exactly one of *ConsumerConfig or error will be non-nil. Any non-2xx
7506// status code is an error. Response headers are in either
7507// *ConsumerConfig.ServerResponse.Header or (if a response was returned
7508// at all) in error.(*googleapi.Error).Header. Use
7509// googleapi.IsNotModified to check whether the returned error was
7510// because http.StatusNotModified was returned.
7511func (c *ServicesProjectsGlobalNetworksGetCall) Do(opts ...googleapi.CallOption) (*ConsumerConfig, error) {
7512	gensupport.SetOptions(c.urlParams_, opts...)
7513	res, err := c.doRequest("json")
7514	if res != nil && res.StatusCode == http.StatusNotModified {
7515		if res.Body != nil {
7516			res.Body.Close()
7517		}
7518		return nil, &googleapi.Error{
7519			Code:   res.StatusCode,
7520			Header: res.Header,
7521		}
7522	}
7523	if err != nil {
7524		return nil, err
7525	}
7526	defer googleapi.CloseBody(res)
7527	if err := googleapi.CheckResponse(res); err != nil {
7528		return nil, err
7529	}
7530	ret := &ConsumerConfig{
7531		ServerResponse: googleapi.ServerResponse{
7532			Header:         res.Header,
7533			HTTPStatusCode: res.StatusCode,
7534		},
7535	}
7536	target := &ret
7537	if err := gensupport.DecodeResponse(target, res); err != nil {
7538		return nil, err
7539	}
7540	return ret, nil
7541	// {
7542	//   "description": "Service producers use this method to get the configuration of their connection including the import/export of custom routes and subnetwork routes with public IP.",
7543	//   "flatPath": "v1/services/{servicesId}/projects/{projectsId}/global/networks/{networksId}",
7544	//   "httpMethod": "GET",
7545	//   "id": "servicenetworking.services.projects.global.networks.get",
7546	//   "parameterOrder": [
7547	//     "name"
7548	//   ],
7549	//   "parameters": {
7550	//     "name": {
7551	//       "description": "Required. Name of the consumer config to retrieve in the format: `services/{service}/projects/{project}/global/networks/{network}`. {service} is the peering service that is managing connectivity for the service producer's organization. For Google services that support this functionality, this value is `servicenetworking.googleapis.com`. {project} is a project number e.g. `12345` that contains the service consumer's VPC network. {network} is the name of the service consumer's VPC network.",
7552	//       "location": "path",
7553	//       "pattern": "^services/[^/]+/projects/[^/]+/global/networks/[^/]+$",
7554	//       "required": true,
7555	//       "type": "string"
7556	//     }
7557	//   },
7558	//   "path": "v1/{+name}",
7559	//   "response": {
7560	//     "$ref": "ConsumerConfig"
7561	//   },
7562	//   "scopes": [
7563	//     "https://www.googleapis.com/auth/cloud-platform",
7564	//     "https://www.googleapis.com/auth/service.management"
7565	//   ]
7566	// }
7567
7568}
7569
7570// method id "servicenetworking.services.projects.global.networks.updateConsumerConfig":
7571
7572type ServicesProjectsGlobalNetworksUpdateConsumerConfigCall struct {
7573	s                           *APIService
7574	parent                      string
7575	updateconsumerconfigrequest *UpdateConsumerConfigRequest
7576	urlParams_                  gensupport.URLParams
7577	ctx_                        context.Context
7578	header_                     http.Header
7579}
7580
7581// UpdateConsumerConfig: Service producers use this method to update the
7582// configuration of their connection including the import/export of
7583// custom routes and subnetwork routes with public IP.
7584func (r *ServicesProjectsGlobalNetworksService) UpdateConsumerConfig(parent string, updateconsumerconfigrequest *UpdateConsumerConfigRequest) *ServicesProjectsGlobalNetworksUpdateConsumerConfigCall {
7585	c := &ServicesProjectsGlobalNetworksUpdateConsumerConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7586	c.parent = parent
7587	c.updateconsumerconfigrequest = updateconsumerconfigrequest
7588	return c
7589}
7590
7591// Fields allows partial responses to be retrieved. See
7592// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7593// for more information.
7594func (c *ServicesProjectsGlobalNetworksUpdateConsumerConfigCall) Fields(s ...googleapi.Field) *ServicesProjectsGlobalNetworksUpdateConsumerConfigCall {
7595	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7596	return c
7597}
7598
7599// Context sets the context to be used in this call's Do method. Any
7600// pending HTTP request will be aborted if the provided context is
7601// canceled.
7602func (c *ServicesProjectsGlobalNetworksUpdateConsumerConfigCall) Context(ctx context.Context) *ServicesProjectsGlobalNetworksUpdateConsumerConfigCall {
7603	c.ctx_ = ctx
7604	return c
7605}
7606
7607// Header returns an http.Header that can be modified by the caller to
7608// add HTTP headers to the request.
7609func (c *ServicesProjectsGlobalNetworksUpdateConsumerConfigCall) Header() http.Header {
7610	if c.header_ == nil {
7611		c.header_ = make(http.Header)
7612	}
7613	return c.header_
7614}
7615
7616func (c *ServicesProjectsGlobalNetworksUpdateConsumerConfigCall) doRequest(alt string) (*http.Response, error) {
7617	reqHeaders := make(http.Header)
7618	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
7619	for k, v := range c.header_ {
7620		reqHeaders[k] = v
7621	}
7622	reqHeaders.Set("User-Agent", c.s.userAgent())
7623	var body io.Reader = nil
7624	body, err := googleapi.WithoutDataWrapper.JSONReader(c.updateconsumerconfigrequest)
7625	if err != nil {
7626		return nil, err
7627	}
7628	reqHeaders.Set("Content-Type", "application/json")
7629	c.urlParams_.Set("alt", alt)
7630	c.urlParams_.Set("prettyPrint", "false")
7631	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}:updateConsumerConfig")
7632	urls += "?" + c.urlParams_.Encode()
7633	req, err := http.NewRequest("PATCH", urls, body)
7634	if err != nil {
7635		return nil, err
7636	}
7637	req.Header = reqHeaders
7638	googleapi.Expand(req.URL, map[string]string{
7639		"parent": c.parent,
7640	})
7641	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7642}
7643
7644// Do executes the "servicenetworking.services.projects.global.networks.updateConsumerConfig" call.
7645// Exactly one of *Operation or error will be non-nil. Any non-2xx
7646// status code is an error. Response headers are in either
7647// *Operation.ServerResponse.Header or (if a response was returned at
7648// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
7649// to check whether the returned error was because
7650// http.StatusNotModified was returned.
7651func (c *ServicesProjectsGlobalNetworksUpdateConsumerConfigCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
7652	gensupport.SetOptions(c.urlParams_, opts...)
7653	res, err := c.doRequest("json")
7654	if res != nil && res.StatusCode == http.StatusNotModified {
7655		if res.Body != nil {
7656			res.Body.Close()
7657		}
7658		return nil, &googleapi.Error{
7659			Code:   res.StatusCode,
7660			Header: res.Header,
7661		}
7662	}
7663	if err != nil {
7664		return nil, err
7665	}
7666	defer googleapi.CloseBody(res)
7667	if err := googleapi.CheckResponse(res); err != nil {
7668		return nil, err
7669	}
7670	ret := &Operation{
7671		ServerResponse: googleapi.ServerResponse{
7672			Header:         res.Header,
7673			HTTPStatusCode: res.StatusCode,
7674		},
7675	}
7676	target := &ret
7677	if err := gensupport.DecodeResponse(target, res); err != nil {
7678		return nil, err
7679	}
7680	return ret, nil
7681	// {
7682	//   "description": "Service producers use this method to update the configuration of their connection including the import/export of custom routes and subnetwork routes with public IP.",
7683	//   "flatPath": "v1/services/{servicesId}/projects/{projectsId}/global/networks/{networksId}:updateConsumerConfig",
7684	//   "httpMethod": "PATCH",
7685	//   "id": "servicenetworking.services.projects.global.networks.updateConsumerConfig",
7686	//   "parameterOrder": [
7687	//     "parent"
7688	//   ],
7689	//   "parameters": {
7690	//     "parent": {
7691	//       "description": "Required. Parent resource identifying the connection for which the consumer config is being updated in the format: `services/{service}/projects/{project}/global/networks/{network}` {service} is the peering service that is managing connectivity for the service producer's organization. For Google services that support this functionality, this value is `servicenetworking.googleapis.com`. {project} is the number of the project that contains the service consumer's VPC network e.g. `12345`. {network} is the name of the service consumer's VPC network.",
7692	//       "location": "path",
7693	//       "pattern": "^services/[^/]+/projects/[^/]+/global/networks/[^/]+$",
7694	//       "required": true,
7695	//       "type": "string"
7696	//     }
7697	//   },
7698	//   "path": "v1/{+parent}:updateConsumerConfig",
7699	//   "request": {
7700	//     "$ref": "UpdateConsumerConfigRequest"
7701	//   },
7702	//   "response": {
7703	//     "$ref": "Operation"
7704	//   },
7705	//   "scopes": [
7706	//     "https://www.googleapis.com/auth/cloud-platform",
7707	//     "https://www.googleapis.com/auth/service.management"
7708	//   ]
7709	// }
7710
7711}
7712
7713// method id "servicenetworking.services.projects.global.networks.peeredDnsDomains.create":
7714
7715type ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall struct {
7716	s               *APIService
7717	parent          string
7718	peereddnsdomain *PeeredDnsDomain
7719	urlParams_      gensupport.URLParams
7720	ctx_            context.Context
7721	header_         http.Header
7722}
7723
7724// Create: Creates a peered DNS domain which sends requests for records
7725// in given namespace originating in the service producer VPC network to
7726// the consumer VPC network to be resolved.
7727func (r *ServicesProjectsGlobalNetworksPeeredDnsDomainsService) Create(parent string, peereddnsdomain *PeeredDnsDomain) *ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall {
7728	c := &ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7729	c.parent = parent
7730	c.peereddnsdomain = peereddnsdomain
7731	return c
7732}
7733
7734// Fields allows partial responses to be retrieved. See
7735// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7736// for more information.
7737func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall) Fields(s ...googleapi.Field) *ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall {
7738	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7739	return c
7740}
7741
7742// Context sets the context to be used in this call's Do method. Any
7743// pending HTTP request will be aborted if the provided context is
7744// canceled.
7745func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall) Context(ctx context.Context) *ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall {
7746	c.ctx_ = ctx
7747	return c
7748}
7749
7750// Header returns an http.Header that can be modified by the caller to
7751// add HTTP headers to the request.
7752func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall) Header() http.Header {
7753	if c.header_ == nil {
7754		c.header_ = make(http.Header)
7755	}
7756	return c.header_
7757}
7758
7759func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall) doRequest(alt string) (*http.Response, error) {
7760	reqHeaders := make(http.Header)
7761	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
7762	for k, v := range c.header_ {
7763		reqHeaders[k] = v
7764	}
7765	reqHeaders.Set("User-Agent", c.s.userAgent())
7766	var body io.Reader = nil
7767	body, err := googleapi.WithoutDataWrapper.JSONReader(c.peereddnsdomain)
7768	if err != nil {
7769		return nil, err
7770	}
7771	reqHeaders.Set("Content-Type", "application/json")
7772	c.urlParams_.Set("alt", alt)
7773	c.urlParams_.Set("prettyPrint", "false")
7774	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/peeredDnsDomains")
7775	urls += "?" + c.urlParams_.Encode()
7776	req, err := http.NewRequest("POST", urls, body)
7777	if err != nil {
7778		return nil, err
7779	}
7780	req.Header = reqHeaders
7781	googleapi.Expand(req.URL, map[string]string{
7782		"parent": c.parent,
7783	})
7784	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7785}
7786
7787// Do executes the "servicenetworking.services.projects.global.networks.peeredDnsDomains.create" call.
7788// Exactly one of *Operation or error will be non-nil. Any non-2xx
7789// status code is an error. Response headers are in either
7790// *Operation.ServerResponse.Header or (if a response was returned at
7791// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
7792// to check whether the returned error was because
7793// http.StatusNotModified was returned.
7794func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
7795	gensupport.SetOptions(c.urlParams_, opts...)
7796	res, err := c.doRequest("json")
7797	if res != nil && res.StatusCode == http.StatusNotModified {
7798		if res.Body != nil {
7799			res.Body.Close()
7800		}
7801		return nil, &googleapi.Error{
7802			Code:   res.StatusCode,
7803			Header: res.Header,
7804		}
7805	}
7806	if err != nil {
7807		return nil, err
7808	}
7809	defer googleapi.CloseBody(res)
7810	if err := googleapi.CheckResponse(res); err != nil {
7811		return nil, err
7812	}
7813	ret := &Operation{
7814		ServerResponse: googleapi.ServerResponse{
7815			Header:         res.Header,
7816			HTTPStatusCode: res.StatusCode,
7817		},
7818	}
7819	target := &ret
7820	if err := gensupport.DecodeResponse(target, res); err != nil {
7821		return nil, err
7822	}
7823	return ret, nil
7824	// {
7825	//   "description": "Creates a peered DNS domain which sends requests for records in given namespace originating in the service producer VPC network to the consumer VPC network to be resolved.",
7826	//   "flatPath": "v1/services/{servicesId}/projects/{projectsId}/global/networks/{networksId}/peeredDnsDomains",
7827	//   "httpMethod": "POST",
7828	//   "id": "servicenetworking.services.projects.global.networks.peeredDnsDomains.create",
7829	//   "parameterOrder": [
7830	//     "parent"
7831	//   ],
7832	//   "parameters": {
7833	//     "parent": {
7834	//       "description": "Required. Parent resource identifying the connection for which the peered DNS domain will be created in the format: `services/{service}/projects/{project}/global/networks/{network}` {service} is the peering service that is managing connectivity for the service producer's organization. For Google services that support this functionality, this value is `servicenetworking.googleapis.com`. {project} is the number of the project that contains the service consumer's VPC network e.g. `12345`. {network} is the name of the service consumer's VPC network.",
7835	//       "location": "path",
7836	//       "pattern": "^services/[^/]+/projects/[^/]+/global/networks/[^/]+$",
7837	//       "required": true,
7838	//       "type": "string"
7839	//     }
7840	//   },
7841	//   "path": "v1/{+parent}/peeredDnsDomains",
7842	//   "request": {
7843	//     "$ref": "PeeredDnsDomain"
7844	//   },
7845	//   "response": {
7846	//     "$ref": "Operation"
7847	//   },
7848	//   "scopes": [
7849	//     "https://www.googleapis.com/auth/cloud-platform",
7850	//     "https://www.googleapis.com/auth/service.management"
7851	//   ]
7852	// }
7853
7854}
7855
7856// method id "servicenetworking.services.projects.global.networks.peeredDnsDomains.delete":
7857
7858type ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall struct {
7859	s          *APIService
7860	name       string
7861	urlParams_ gensupport.URLParams
7862	ctx_       context.Context
7863	header_    http.Header
7864}
7865
7866// Delete: Deletes a peered DNS domain.
7867func (r *ServicesProjectsGlobalNetworksPeeredDnsDomainsService) Delete(name string) *ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall {
7868	c := &ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
7869	c.name = name
7870	return c
7871}
7872
7873// Fields allows partial responses to be retrieved. See
7874// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
7875// for more information.
7876func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall) Fields(s ...googleapi.Field) *ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall {
7877	c.urlParams_.Set("fields", googleapi.CombineFields(s))
7878	return c
7879}
7880
7881// Context sets the context to be used in this call's Do method. Any
7882// pending HTTP request will be aborted if the provided context is
7883// canceled.
7884func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall) Context(ctx context.Context) *ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall {
7885	c.ctx_ = ctx
7886	return c
7887}
7888
7889// Header returns an http.Header that can be modified by the caller to
7890// add HTTP headers to the request.
7891func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall) Header() http.Header {
7892	if c.header_ == nil {
7893		c.header_ = make(http.Header)
7894	}
7895	return c.header_
7896}
7897
7898func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall) doRequest(alt string) (*http.Response, error) {
7899	reqHeaders := make(http.Header)
7900	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
7901	for k, v := range c.header_ {
7902		reqHeaders[k] = v
7903	}
7904	reqHeaders.Set("User-Agent", c.s.userAgent())
7905	var body io.Reader = nil
7906	c.urlParams_.Set("alt", alt)
7907	c.urlParams_.Set("prettyPrint", "false")
7908	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
7909	urls += "?" + c.urlParams_.Encode()
7910	req, err := http.NewRequest("DELETE", urls, body)
7911	if err != nil {
7912		return nil, err
7913	}
7914	req.Header = reqHeaders
7915	googleapi.Expand(req.URL, map[string]string{
7916		"name": c.name,
7917	})
7918	return gensupport.SendRequest(c.ctx_, c.s.client, req)
7919}
7920
7921// Do executes the "servicenetworking.services.projects.global.networks.peeredDnsDomains.delete" call.
7922// Exactly one of *Operation or error will be non-nil. Any non-2xx
7923// status code is an error. Response headers are in either
7924// *Operation.ServerResponse.Header or (if a response was returned at
7925// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
7926// to check whether the returned error was because
7927// http.StatusNotModified was returned.
7928func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
7929	gensupport.SetOptions(c.urlParams_, opts...)
7930	res, err := c.doRequest("json")
7931	if res != nil && res.StatusCode == http.StatusNotModified {
7932		if res.Body != nil {
7933			res.Body.Close()
7934		}
7935		return nil, &googleapi.Error{
7936			Code:   res.StatusCode,
7937			Header: res.Header,
7938		}
7939	}
7940	if err != nil {
7941		return nil, err
7942	}
7943	defer googleapi.CloseBody(res)
7944	if err := googleapi.CheckResponse(res); err != nil {
7945		return nil, err
7946	}
7947	ret := &Operation{
7948		ServerResponse: googleapi.ServerResponse{
7949			Header:         res.Header,
7950			HTTPStatusCode: res.StatusCode,
7951		},
7952	}
7953	target := &ret
7954	if err := gensupport.DecodeResponse(target, res); err != nil {
7955		return nil, err
7956	}
7957	return ret, nil
7958	// {
7959	//   "description": "Deletes a peered DNS domain.",
7960	//   "flatPath": "v1/services/{servicesId}/projects/{projectsId}/global/networks/{networksId}/peeredDnsDomains/{peeredDnsDomainsId}",
7961	//   "httpMethod": "DELETE",
7962	//   "id": "servicenetworking.services.projects.global.networks.peeredDnsDomains.delete",
7963	//   "parameterOrder": [
7964	//     "name"
7965	//   ],
7966	//   "parameters": {
7967	//     "name": {
7968	//       "description": "Required. The name of the peered DNS domain to delete in the format: `services/{service}/projects/{project}/global/networks/{network}/peeredDnsDomains/{name}`. {service} is the peering service that is managing connectivity for the service producer's organization. For Google services that support this functionality, this value is `servicenetworking.googleapis.com`. {project} is the number of the project that contains the service consumer's VPC network e.g. `12345`. {network} is the name of the service consumer's VPC network. {name} is the name of the peered DNS domain.",
7969	//       "location": "path",
7970	//       "pattern": "^services/[^/]+/projects/[^/]+/global/networks/[^/]+/peeredDnsDomains/[^/]+$",
7971	//       "required": true,
7972	//       "type": "string"
7973	//     }
7974	//   },
7975	//   "path": "v1/{+name}",
7976	//   "response": {
7977	//     "$ref": "Operation"
7978	//   },
7979	//   "scopes": [
7980	//     "https://www.googleapis.com/auth/cloud-platform",
7981	//     "https://www.googleapis.com/auth/service.management"
7982	//   ]
7983	// }
7984
7985}
7986
7987// method id "servicenetworking.services.projects.global.networks.peeredDnsDomains.list":
7988
7989type ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall struct {
7990	s            *APIService
7991	parent       string
7992	urlParams_   gensupport.URLParams
7993	ifNoneMatch_ string
7994	ctx_         context.Context
7995	header_      http.Header
7996}
7997
7998// List: Lists peered DNS domains for a connection.
7999func (r *ServicesProjectsGlobalNetworksPeeredDnsDomainsService) List(parent string) *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall {
8000	c := &ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
8001	c.parent = parent
8002	return c
8003}
8004
8005// Fields allows partial responses to be retrieved. See
8006// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
8007// for more information.
8008func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall) Fields(s ...googleapi.Field) *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall {
8009	c.urlParams_.Set("fields", googleapi.CombineFields(s))
8010	return c
8011}
8012
8013// IfNoneMatch sets the optional parameter which makes the operation
8014// fail if the object's ETag matches the given value. This is useful for
8015// getting updates only after the object has changed since the last
8016// request. Use googleapi.IsNotModified to check whether the response
8017// error from Do is the result of In-None-Match.
8018func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall) IfNoneMatch(entityTag string) *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall {
8019	c.ifNoneMatch_ = entityTag
8020	return c
8021}
8022
8023// Context sets the context to be used in this call's Do method. Any
8024// pending HTTP request will be aborted if the provided context is
8025// canceled.
8026func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall) Context(ctx context.Context) *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall {
8027	c.ctx_ = ctx
8028	return c
8029}
8030
8031// Header returns an http.Header that can be modified by the caller to
8032// add HTTP headers to the request.
8033func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall) Header() http.Header {
8034	if c.header_ == nil {
8035		c.header_ = make(http.Header)
8036	}
8037	return c.header_
8038}
8039
8040func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall) doRequest(alt string) (*http.Response, error) {
8041	reqHeaders := make(http.Header)
8042	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
8043	for k, v := range c.header_ {
8044		reqHeaders[k] = v
8045	}
8046	reqHeaders.Set("User-Agent", c.s.userAgent())
8047	if c.ifNoneMatch_ != "" {
8048		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
8049	}
8050	var body io.Reader = nil
8051	c.urlParams_.Set("alt", alt)
8052	c.urlParams_.Set("prettyPrint", "false")
8053	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/peeredDnsDomains")
8054	urls += "?" + c.urlParams_.Encode()
8055	req, err := http.NewRequest("GET", urls, body)
8056	if err != nil {
8057		return nil, err
8058	}
8059	req.Header = reqHeaders
8060	googleapi.Expand(req.URL, map[string]string{
8061		"parent": c.parent,
8062	})
8063	return gensupport.SendRequest(c.ctx_, c.s.client, req)
8064}
8065
8066// Do executes the "servicenetworking.services.projects.global.networks.peeredDnsDomains.list" call.
8067// Exactly one of *ListPeeredDnsDomainsResponse or error will be
8068// non-nil. Any non-2xx status code is an error. Response headers are in
8069// either *ListPeeredDnsDomainsResponse.ServerResponse.Header or (if a
8070// response was returned at all) in error.(*googleapi.Error).Header. Use
8071// googleapi.IsNotModified to check whether the returned error was
8072// because http.StatusNotModified was returned.
8073func (c *ServicesProjectsGlobalNetworksPeeredDnsDomainsListCall) Do(opts ...googleapi.CallOption) (*ListPeeredDnsDomainsResponse, error) {
8074	gensupport.SetOptions(c.urlParams_, opts...)
8075	res, err := c.doRequest("json")
8076	if res != nil && res.StatusCode == http.StatusNotModified {
8077		if res.Body != nil {
8078			res.Body.Close()
8079		}
8080		return nil, &googleapi.Error{
8081			Code:   res.StatusCode,
8082			Header: res.Header,
8083		}
8084	}
8085	if err != nil {
8086		return nil, err
8087	}
8088	defer googleapi.CloseBody(res)
8089	if err := googleapi.CheckResponse(res); err != nil {
8090		return nil, err
8091	}
8092	ret := &ListPeeredDnsDomainsResponse{
8093		ServerResponse: googleapi.ServerResponse{
8094			Header:         res.Header,
8095			HTTPStatusCode: res.StatusCode,
8096		},
8097	}
8098	target := &ret
8099	if err := gensupport.DecodeResponse(target, res); err != nil {
8100		return nil, err
8101	}
8102	return ret, nil
8103	// {
8104	//   "description": "Lists peered DNS domains for a connection.",
8105	//   "flatPath": "v1/services/{servicesId}/projects/{projectsId}/global/networks/{networksId}/peeredDnsDomains",
8106	//   "httpMethod": "GET",
8107	//   "id": "servicenetworking.services.projects.global.networks.peeredDnsDomains.list",
8108	//   "parameterOrder": [
8109	//     "parent"
8110	//   ],
8111	//   "parameters": {
8112	//     "parent": {
8113	//       "description": "Required. Parent resource identifying the connection which owns this collection of peered DNS domains in the format: `services/{service}/projects/{project}/global/networks/{network}`. {service} is the peering service that is managing connectivity for the service producer's organization. For Google services that support this functionality, this value is `servicenetworking.googleapis.com`. {project} is a project number e.g. `12345` that contains the service consumer's VPC network. {network} is the name of the service consumer's VPC network.",
8114	//       "location": "path",
8115	//       "pattern": "^services/[^/]+/projects/[^/]+/global/networks/[^/]+$",
8116	//       "required": true,
8117	//       "type": "string"
8118	//     }
8119	//   },
8120	//   "path": "v1/{+parent}/peeredDnsDomains",
8121	//   "response": {
8122	//     "$ref": "ListPeeredDnsDomainsResponse"
8123	//   },
8124	//   "scopes": [
8125	//     "https://www.googleapis.com/auth/cloud-platform",
8126	//     "https://www.googleapis.com/auth/service.management"
8127	//   ]
8128	// }
8129
8130}
8131
8132// method id "servicenetworking.services.roles.add":
8133
8134type ServicesRolesAddCall struct {
8135	s               *APIService
8136	parent          string
8137	addrolesrequest *AddRolesRequest
8138	urlParams_      gensupport.URLParams
8139	ctx_            context.Context
8140	header_         http.Header
8141}
8142
8143// Add: Service producers can use this method to add roles in the shared
8144// VPC host project. Each role is bound to the provided member. Each
8145// role must be selected from within an allowlisted set of roles. Each
8146// role is applied at only the granularity specified in the allowlist.
8147func (r *ServicesRolesService) Add(parent string, addrolesrequest *AddRolesRequest) *ServicesRolesAddCall {
8148	c := &ServicesRolesAddCall{s: r.s, urlParams_: make(gensupport.URLParams)}
8149	c.parent = parent
8150	c.addrolesrequest = addrolesrequest
8151	return c
8152}
8153
8154// Fields allows partial responses to be retrieved. See
8155// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
8156// for more information.
8157func (c *ServicesRolesAddCall) Fields(s ...googleapi.Field) *ServicesRolesAddCall {
8158	c.urlParams_.Set("fields", googleapi.CombineFields(s))
8159	return c
8160}
8161
8162// Context sets the context to be used in this call's Do method. Any
8163// pending HTTP request will be aborted if the provided context is
8164// canceled.
8165func (c *ServicesRolesAddCall) Context(ctx context.Context) *ServicesRolesAddCall {
8166	c.ctx_ = ctx
8167	return c
8168}
8169
8170// Header returns an http.Header that can be modified by the caller to
8171// add HTTP headers to the request.
8172func (c *ServicesRolesAddCall) Header() http.Header {
8173	if c.header_ == nil {
8174		c.header_ = make(http.Header)
8175	}
8176	return c.header_
8177}
8178
8179func (c *ServicesRolesAddCall) doRequest(alt string) (*http.Response, error) {
8180	reqHeaders := make(http.Header)
8181	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210322")
8182	for k, v := range c.header_ {
8183		reqHeaders[k] = v
8184	}
8185	reqHeaders.Set("User-Agent", c.s.userAgent())
8186	var body io.Reader = nil
8187	body, err := googleapi.WithoutDataWrapper.JSONReader(c.addrolesrequest)
8188	if err != nil {
8189		return nil, err
8190	}
8191	reqHeaders.Set("Content-Type", "application/json")
8192	c.urlParams_.Set("alt", alt)
8193	c.urlParams_.Set("prettyPrint", "false")
8194	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/roles:add")
8195	urls += "?" + c.urlParams_.Encode()
8196	req, err := http.NewRequest("POST", urls, body)
8197	if err != nil {
8198		return nil, err
8199	}
8200	req.Header = reqHeaders
8201	googleapi.Expand(req.URL, map[string]string{
8202		"parent": c.parent,
8203	})
8204	return gensupport.SendRequest(c.ctx_, c.s.client, req)
8205}
8206
8207// Do executes the "servicenetworking.services.roles.add" call.
8208// Exactly one of *Operation or error will be non-nil. Any non-2xx
8209// status code is an error. Response headers are in either
8210// *Operation.ServerResponse.Header or (if a response was returned at
8211// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
8212// to check whether the returned error was because
8213// http.StatusNotModified was returned.
8214func (c *ServicesRolesAddCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
8215	gensupport.SetOptions(c.urlParams_, opts...)
8216	res, err := c.doRequest("json")
8217	if res != nil && res.StatusCode == http.StatusNotModified {
8218		if res.Body != nil {
8219			res.Body.Close()
8220		}
8221		return nil, &googleapi.Error{
8222			Code:   res.StatusCode,
8223			Header: res.Header,
8224		}
8225	}
8226	if err != nil {
8227		return nil, err
8228	}
8229	defer googleapi.CloseBody(res)
8230	if err := googleapi.CheckResponse(res); err != nil {
8231		return nil, err
8232	}
8233	ret := &Operation{
8234		ServerResponse: googleapi.ServerResponse{
8235			Header:         res.Header,
8236			HTTPStatusCode: res.StatusCode,
8237		},
8238	}
8239	target := &ret
8240	if err := gensupport.DecodeResponse(target, res); err != nil {
8241		return nil, err
8242	}
8243	return ret, nil
8244	// {
8245	//   "description": "Service producers can use this method to add roles in the shared VPC host project. Each role is bound to the provided member. Each role must be selected from within an allowlisted set of roles. Each role is applied at only the granularity specified in the allowlist.",
8246	//   "flatPath": "v1/services/{servicesId}/roles:add",
8247	//   "httpMethod": "POST",
8248	//   "id": "servicenetworking.services.roles.add",
8249	//   "parameterOrder": [
8250	//     "parent"
8251	//   ],
8252	//   "parameters": {
8253	//     "parent": {
8254	//       "description": "Required. This is in a form services/{service} where {service} is the name of the private access management service. For example 'service-peering.example.com'.",
8255	//       "location": "path",
8256	//       "pattern": "^services/[^/]+$",
8257	//       "required": true,
8258	//       "type": "string"
8259	//     }
8260	//   },
8261	//   "path": "v1/{+parent}/roles:add",
8262	//   "request": {
8263	//     "$ref": "AddRolesRequest"
8264	//   },
8265	//   "response": {
8266	//     "$ref": "Operation"
8267	//   },
8268	//   "scopes": [
8269	//     "https://www.googleapis.com/auth/cloud-platform",
8270	//     "https://www.googleapis.com/auth/service.management"
8271	//   ]
8272	// }
8273
8274}
8275