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