// Copyright 2026 Google LLC.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated file. DO NOT EDIT.

// Package servicemanagement provides access to the Service Management API.
//
// For product documentation, see: https://cloud.google.com/service-management/
//
// # Library status
//
// These client libraries are officially supported by Google. However, this
// library is considered complete and is in maintenance mode. This means
// that we will address critical bugs and security issues but will not add
// any new features.
//
// When possible, we recommend using our newer
// [Cloud Client Libraries for Go](https://pkg.go.dev/cloud.google.com/go)
// that are still actively being worked and iterated on.
//
// # Creating a client
//
// Usage example:
//
//	import "google.golang.org/api/servicemanagement/v1"
//	...
//	ctx := context.Background()
//	servicemanagementService, err := servicemanagement.NewService(ctx)
//
// In this example, Google Application Default Credentials are used for
// authentication. For information on how to create and obtain Application
// Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
//
// # Other authentication options
//
// By default, all available scopes (see "Constants") are used to authenticate.
// To restrict scopes, use [google.golang.org/api/option.WithScopes]:
//
//	servicemanagementService, err := servicemanagement.NewService(ctx, option.WithScopes(servicemanagement.ServiceManagementReadonlyScope))
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	servicemanagementService, err := servicemanagement.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth
// flow, use [google.golang.org/api/option.WithTokenSource]:
//
//	config := &oauth2.Config{...}
//	// ...
//	token, err := config.Exchange(ctx, ...)
//	servicemanagementService, err := servicemanagement.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package servicemanagement // import "google.golang.org/api/servicemanagement/v1"

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"log/slog"
	"net/http"
	"net/url"
	"strconv"
	"strings"

	"github.com/googleapis/gax-go/v2/internallog"
	googleapi "google.golang.org/api/googleapi"
	internal "google.golang.org/api/internal"
	gensupport "google.golang.org/api/internal/gensupport"
	option "google.golang.org/api/option"
	internaloption "google.golang.org/api/option/internaloption"
	htransport "google.golang.org/api/transport/http"
)

// Always reference these packages, just in case the auto-generated code
// below doesn't.
var _ = bytes.NewBuffer
var _ = strconv.Itoa
var _ = fmt.Sprintf
var _ = json.NewDecoder
var _ = io.Copy
var _ = url.Parse
var _ = gensupport.MarshalJSON
var _ = googleapi.Version
var _ = errors.New
var _ = strings.Replace
var _ = context.Canceled
var _ = internaloption.WithDefaultEndpoint
var _ = internal.Version
var _ = internallog.New

const apiId = "servicemanagement:v1"
const apiName = "servicemanagement"
const apiVersion = "v1"
const basePath = "https://servicemanagement.googleapis.com/"
const basePathTemplate = "https://servicemanagement.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://servicemanagement.mtls.googleapis.com/"

// OAuth2 scopes used by this API.
const (
	// See, edit, configure, and delete your Google Cloud data and see the email
	// address for your Google Account.
	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"

	// View your data across Google Cloud services and see the email address of
	// your Google Account
	CloudPlatformReadOnlyScope = "https://www.googleapis.com/auth/cloud-platform.read-only"

	// Manage your Google API service configuration
	ServiceManagementScope = "https://www.googleapis.com/auth/service.management"

	// View your Google API service configuration
	ServiceManagementReadonlyScope = "https://www.googleapis.com/auth/service.management.readonly"
)

// NewService creates a new APIService.
func NewService(ctx context.Context, opts ...option.ClientOption) (*APIService, error) {
	scopesOption := internaloption.WithDefaultScopes(
		"https://www.googleapis.com/auth/cloud-platform",
		"https://www.googleapis.com/auth/cloud-platform.read-only",
		"https://www.googleapis.com/auth/service.management",
		"https://www.googleapis.com/auth/service.management.readonly",
	)
	// NOTE: prepend, so we don't override user-specified scopes.
	opts = append([]option.ClientOption{scopesOption}, opts...)
	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
	opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate))
	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
	opts = append(opts, internaloption.EnableNewAuthLibrary())
	client, endpoint, err := htransport.NewClient(ctx, opts...)
	if err != nil {
		return nil, err
	}
	s := &APIService{client: client, BasePath: basePath, logger: internaloption.GetLogger(opts)}
	s.Operations = NewOperationsService(s)
	s.Services = NewServicesService(s)
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

// New creates a new APIService. It uses the provided http.Client for requests.
//
// Deprecated: please use NewService instead.
// To provide a custom HTTP client, use option.WithHTTPClient.
// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func New(client *http.Client) (*APIService, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	return NewService(context.TODO(), option.WithHTTPClient(client))
}

type APIService struct {
	client    *http.Client
	logger    *slog.Logger
	BasePath  string // API endpoint base URL
	UserAgent string // optional additional User-Agent fragment

	Operations *OperationsService

	Services *ServicesService
}

func (s *APIService) userAgent() string {
	if s.UserAgent == "" {
		return googleapi.UserAgent
	}
	return googleapi.UserAgent + " " + s.UserAgent
}

func NewOperationsService(s *APIService) *OperationsService {
	rs := &OperationsService{s: s}
	return rs
}

type OperationsService struct {
	s *APIService
}

func NewServicesService(s *APIService) *ServicesService {
	rs := &ServicesService{s: s}
	rs.Configs = NewServicesConfigsService(s)
	rs.Consumers = NewServicesConsumersService(s)
	rs.Rollouts = NewServicesRolloutsService(s)
	return rs
}

type ServicesService struct {
	s *APIService

	Configs *ServicesConfigsService

	Consumers *ServicesConsumersService

	Rollouts *ServicesRolloutsService
}

func NewServicesConfigsService(s *APIService) *ServicesConfigsService {
	rs := &ServicesConfigsService{s: s}
	return rs
}

type ServicesConfigsService struct {
	s *APIService
}

func NewServicesConsumersService(s *APIService) *ServicesConsumersService {
	rs := &ServicesConsumersService{s: s}
	return rs
}

type ServicesConsumersService struct {
	s *APIService
}

func NewServicesRolloutsService(s *APIService) *ServicesRolloutsService {
	rs := &ServicesRolloutsService{s: s}
	return rs
}

type ServicesRolloutsService struct {
	s *APIService
}

// Advice: Generated advice about this change, used for providing more
// information about how a change will affect the existing service.
type Advice struct {
	// Description: Useful description for why this advice was applied and what
	// actions should be taken to mitigate any implied risks.
	Description string `json:"description,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Advice) MarshalJSON() ([]byte, error) {
	type NoMethod Advice
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Api: Api is a light-weight descriptor for an API Interface. Interfaces are
// also described as "protocol buffer services" in some contexts, such as by
// the "service" keyword in a .proto file, but they are different from API
// Services, which represent a concrete implementation of an interface as
// opposed to simply a description of methods and bindings. They are also
// sometimes simply referred to as "APIs" in other contexts, such as the name
// of this message itself. See https://cloud.google.com/apis/design/glossary
// for detailed terminology. New usages of this message as an alternative to
// ServiceDescriptorProto are strongly discouraged. This message does not
// reliability preserve all information necessary to model the schema and
// preserve semantics. Instead make use of FileDescriptorSet which preserves
// the necessary information.
type Api struct {
	// Edition: The source edition string, only valid when syntax is
	// SYNTAX_EDITIONS.
	Edition string `json:"edition,omitempty"`
	// Methods: The methods of this interface, in unspecified order.
	Methods []*Method `json:"methods,omitempty"`
	// Mixins: Included interfaces. See Mixin.
	Mixins []*Mixin `json:"mixins,omitempty"`
	// Name: The fully qualified name of this interface, including package name
	// followed by the interface's simple name.
	Name string `json:"name,omitempty"`
	// Options: Any metadata attached to the interface.
	Options []*Option `json:"options,omitempty"`
	// SourceContext: Source context for the protocol buffer service represented by
	// this message.
	SourceContext *SourceContext `json:"sourceContext,omitempty"`
	// Syntax: The source syntax of the service.
	//
	// Possible values:
	//   "SYNTAX_PROTO2" - Syntax `proto2`.
	//   "SYNTAX_PROTO3" - Syntax `proto3`.
	//   "SYNTAX_EDITIONS" - Syntax `editions`.
	Syntax string `json:"syntax,omitempty"`
	// Version: A version string for this interface. If specified, must have the
	// form `major-version.minor-version`, as in `1.10`. If the minor version is
	// omitted, it defaults to zero. If the entire version field is empty, the
	// major version is derived from the package name, as outlined below. If the
	// field is not empty, the version in the package name will be verified to be
	// consistent with what is provided here. The versioning schema uses semantic
	// versioning (http://semver.org) where the major version number indicates a
	// breaking change and the minor version an additive, non-breaking change. Both
	// version numbers are signals to users what to expect from different versions,
	// and should be carefully chosen based on the product plan. The major version
	// is also reflected in the package name of the interface, which must end in
	// `v`, as in `google.feature.v1`. For major versions 0 and 1, the suffix can
	// be omitted. Zero major versions must only be used for experimental, non-GA
	// interfaces.
	Version string `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Edition") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Edition") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Api) MarshalJSON() ([]byte, error) {
	type NoMethod Api
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Aspect: Aspect represents Generic aspect. It is used to configure an aspect
// without making direct changes to service.proto
type Aspect struct {
	// Kind: The type of this aspect configuration.
	Kind string `json:"kind,omitempty"`
	// Rules: Optional. Rules of the Configuration.
	Rules []*AspectRule `json:"rules,omitempty"`
	// Spec: Content of the configuration. The underlying schema should be defined
	// by Aspect owners as protobuf message under `google/api/configaspects/proto`.
	Spec googleapi.RawMessage `json:"spec,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Kind") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Aspect) MarshalJSON() ([]byte, error) {
	type NoMethod Aspect
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AspectRule: Rule-based configuration for an aspect.
type AspectRule struct {
	// Config: Required. Rules of the configuration. The underlying schema should
	// be defined by Aspect owners as protobuf message under
	// `google/api/configaspects/proto`.
	Config googleapi.RawMessage `json:"config,omitempty"`
	// Selector: Required. Selects the RPC methods to which this rule applies.
	// Refer to selector for syntax details.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Config") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Config") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AspectRule) MarshalJSON() ([]byte, error) {
	type NoMethod AspectRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AuditConfig: Specifies the audit configuration for a service. The
// configuration determines which permission types are logged, and what
// identities, if any, are exempted from logging. An AuditConfig must have one
// or more AuditLogConfigs. If there are AuditConfigs for both `allServices`
// and a specific service, the union of the two AuditConfigs is used for that
// service: the log_types specified in each AuditConfig are enabled, and the
// exempted_members in each AuditLogConfig are exempted. Example Policy with
// multiple AuditConfigs: { "audit_configs": [ { "service": "allServices",
// "audit_log_configs": [ { "log_type": "DATA_READ", "exempted_members": [
// "user:jose@example.com" ] }, { "log_type": "DATA_WRITE" }, { "log_type":
// "ADMIN_READ" } ] }, { "service": "sampleservice.googleapis.com",
// "audit_log_configs": [ { "log_type": "DATA_READ" }, { "log_type":
// "DATA_WRITE", "exempted_members": [ "user:aliya@example.com" ] } ] } ] } For
// sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
// logging. It also exempts `jose@example.com` from DATA_READ logging, and
// `aliya@example.com` from DATA_WRITE logging.
type AuditConfig struct {
	// AuditLogConfigs: The configuration for logging of each type of permission.
	AuditLogConfigs []*AuditLogConfig `json:"auditLogConfigs,omitempty"`
	// Service: Specifies a service that will be enabled for audit logging. For
	// example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices`
	// is a special value that covers all services.
	Service string `json:"service,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AuditLogConfigs") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AuditLogConfigs") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AuditConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AuditConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AuditLogConfig: Provides the configuration for logging a type of
// permissions. Example: { "audit_log_configs": [ { "log_type": "DATA_READ",
// "exempted_members": [ "user:jose@example.com" ] }, { "log_type":
// "DATA_WRITE" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while
// exempting jose@example.com from DATA_READ logging.
type AuditLogConfig struct {
	// ExemptedMembers: Specifies the identities that do not cause logging for this
	// type of permission. Follows the same format of Binding.members.
	ExemptedMembers []string `json:"exemptedMembers,omitempty"`
	// LogType: The log type that this config enables.
	//
	// Possible values:
	//   "LOG_TYPE_UNSPECIFIED" - Default case. Should never be this.
	//   "ADMIN_READ" - Admin reads. Example: CloudIAM getIamPolicy
	//   "DATA_WRITE" - Data writes. Example: CloudSQL Users create
	//   "DATA_READ" - Data reads. Example: CloudSQL Users list
	LogType string `json:"logType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExemptedMembers") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExemptedMembers") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AuditLogConfig) MarshalJSON() ([]byte, error) {
	type NoMethod AuditLogConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AuthProvider: Configuration for an authentication provider, including
// support for JSON Web Token (JWT)
// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
type AuthProvider struct {
	// Audiences: The list of JWT audiences
	// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
	// that are allowed to access. A JWT containing any of these audiences will be
	// accepted. When this setting is absent, JWTs with audiences: -
	// "https://[service.name]/[google.protobuf.Api.name]" -
	// "https://[service.name]/" will be accepted. For example, if no audiences are
	// in the setting, LibraryService API will accept JWTs with the following
	// audiences: -
	// https://library-example.googleapis.com/google.example.library.v1.LibraryService
	// - https://library-example.googleapis.com/ Example: audiences:
	// bookstore_android.apps.googleusercontent.com,
	// bookstore_web.apps.googleusercontent.com
	Audiences string `json:"audiences,omitempty"`
	// AuthorizationUrl: Redirect URL if JWT token is required but not present or
	// is expired. Implement authorizationUrl of securityDefinitions in OpenAPI
	// spec.
	AuthorizationUrl string `json:"authorizationUrl,omitempty"`
	// Id: The unique identifier of the auth provider. It will be referred to by
	// `AuthRequirement.provider_id`. Example: "bookstore_auth".
	Id string `json:"id,omitempty"`
	// Issuer: Identifies the principal that issued the JWT. See
	// https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1
	// Usually a URL or an email address. Example: https://securetoken.google.com
	// Example: 1234567-compute@developer.gserviceaccount.com
	Issuer string `json:"issuer,omitempty"`
	// JwksUri: URL of the provider's public key set to validate signature of the
	// JWT. See OpenID Discovery
	// (https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).
	// Optional if the key set document: - can be retrieved from OpenID Discovery
	// (https://openid.net/specs/openid-connect-discovery-1_0.html) of the issuer.
	// - can be inferred from the email domain of the issuer (e.g. a Google service
	// account). Example: https://www.googleapis.com/oauth2/v1/certs
	JwksUri string `json:"jwksUri,omitempty"`
	// JwtLocations: Defines the locations to extract the JWT. For now it is only
	// used by the Cloud Endpoints to store the OpenAPI extension
	// [x-google-jwt-locations]
	// (https://cloud.google.com/endpoints/docs/openapi/openapi-extensions#x-google-jwt-locations)
	// JWT locations can be one of HTTP headers, URL query parameters or cookies.
	// The rule is that the first match wins. If not specified, default to use
	// following 3 locations: 1) Authorization: Bearer 2) x-goog-iap-jwt-assertion
	// 3) access_token query parameter Default locations can be specified as
	// followings: jwt_locations: - header: Authorization value_prefix: "Bearer " -
	// header: x-goog-iap-jwt-assertion - query: access_token
	JwtLocations []*JwtLocation `json:"jwtLocations,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Audiences") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Audiences") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AuthProvider) MarshalJSON() ([]byte, error) {
	type NoMethod AuthProvider
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AuthRequirement: User-defined authentication requirements, including support
// for JSON Web Token (JWT)
// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).
type AuthRequirement struct {
	// Audiences: NOTE: This will be deprecated soon, once AuthProvider.audiences
	// is implemented and accepted in all the runtime components. The list of JWT
	// audiences
	// (https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
	// that are allowed to access. A JWT containing any of these audiences will be
	// accepted. When this setting is absent, only JWTs with audience
	// "https://Service_name/API_name" will be accepted. For example, if no
	// audiences are in the setting, LibraryService API will only accept JWTs with
	// the following audience
	// "https://library-example.googleapis.com/google.example.library.v1.LibraryServ
	// ice". Example: audiences: bookstore_android.apps.googleusercontent.com,
	// bookstore_web.apps.googleusercontent.com
	Audiences string `json:"audiences,omitempty"`
	// ProviderId: id from authentication provider. Example: provider_id:
	// bookstore_auth
	ProviderId string `json:"providerId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Audiences") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Audiences") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AuthRequirement) MarshalJSON() ([]byte, error) {
	type NoMethod AuthRequirement
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Authentication: `Authentication` defines the authentication configuration
// for API methods provided by an API service. Example: name:
// calendar.googleapis.com authentication: providers: - id:
// google_calendar_auth jwks_uri: https://www.googleapis.com/oauth2/v1/certs
// issuer: https://securetoken.google.com rules: - selector: "*" requirements:
// provider_id: google_calendar_auth - selector: google.calendar.Delegate
// oauth: canonical_scopes: https://www.googleapis.com/auth/calendar.read
type Authentication struct {
	// Providers: Defines a set of authentication providers that a service
	// supports.
	Providers []*AuthProvider `json:"providers,omitempty"`
	// Rules: A list of authentication rules that apply to individual API methods.
	// **NOTE:** All service configuration rules follow "last one wins" order.
	Rules []*AuthenticationRule `json:"rules,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Providers") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Providers") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Authentication) MarshalJSON() ([]byte, error) {
	type NoMethod Authentication
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AuthenticationRule: Authentication rules for the service. By default, if a
// method has any authentication requirements, every request must include a
// valid credential matching one of the requirements. It's an error to include
// more than one kind of credential in a single request. If a method doesn't
// have any auth requirements, request credentials will be ignored.
type AuthenticationRule struct {
	// AllowWithoutCredential: If true, the service accepts API keys without any
	// other credential. This flag only applies to HTTP and gRPC requests.
	AllowWithoutCredential bool `json:"allowWithoutCredential,omitempty"`
	// Oauth: The requirements for OAuth credentials.
	Oauth *OAuthRequirements `json:"oauth,omitempty"`
	// Requirements: Requirements for additional authentication providers.
	Requirements []*AuthRequirement `json:"requirements,omitempty"`
	// Selector: Selects the methods to which this rule applies. Refer to selector
	// for syntax details.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AllowWithoutCredential") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AllowWithoutCredential") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AuthenticationRule) MarshalJSON() ([]byte, error) {
	type NoMethod AuthenticationRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Backend: `Backend` defines the backend configuration for a service.
type Backend struct {
	// Rules: A list of API backend rules that apply to individual API methods.
	// **NOTE:** All service configuration rules follow "last one wins" order.
	Rules []*BackendRule `json:"rules,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Rules") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Rules") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Backend) MarshalJSON() ([]byte, error) {
	type NoMethod Backend
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BackendRule: A backend rule provides configuration for an individual API
// element.
type BackendRule struct {
	// Address: The address of the API backend. The scheme is used to determine the
	// backend protocol and security. The following schemes are accepted: SCHEME
	// PROTOCOL SECURITY http:// HTTP None https:// HTTP TLS grpc:// gRPC None
	// grpcs:// gRPC TLS It is recommended to explicitly include a scheme. Leaving
	// out the scheme may cause constrasting behaviors across platforms. If the
	// port is unspecified, the default is: - 80 for schemes without TLS - 443 for
	// schemes with TLS For HTTP backends, use protocol to specify the protocol
	// version.
	Address string `json:"address,omitempty"`
	// Deadline: The number of seconds to wait for a response from a request. The
	// default varies based on the request protocol and deployment environment.
	Deadline float64 `json:"deadline,omitempty"`
	// DisableAuth: When disable_auth is true, a JWT ID token won't be generated
	// and the original "Authorization" HTTP header will be preserved. If the
	// header is used to carry the original token and is expected by the backend,
	// this field must be set to true to preserve the header.
	DisableAuth bool `json:"disableAuth,omitempty"`
	// JwtAudience: The JWT audience is used when generating a JWT ID token for the
	// backend. This ID token will be added in the HTTP "authorization" header, and
	// sent to the backend.
	JwtAudience string `json:"jwtAudience,omitempty"`
	// LoadBalancingPolicy: The load balancing policy used for connection to the
	// application backend. Defined as an arbitrary string to accomondate custom
	// load balancing policies supported by the underlying channel, but suggest
	// most users use one of the standard policies, such as the default,
	// "RoundRobin".
	LoadBalancingPolicy string `json:"loadBalancingPolicy,omitempty"`
	// MinDeadline: Deprecated, do not use.
	MinDeadline float64 `json:"minDeadline,omitempty"`
	// OperationDeadline: The number of seconds to wait for the completion of a
	// long running operation. The default is no deadline.
	OperationDeadline float64 `json:"operationDeadline,omitempty"`
	// OverridesByRequestProtocol: The map between request protocol and the backend
	// address.
	OverridesByRequestProtocol map[string]BackendRule `json:"overridesByRequestProtocol,omitempty"`
	// PathTranslation: Path translation specifies how to combine the backend
	// address with the request path in order to produce the appropriate forwarding
	// URL for the request. See PathTranslation for more details.
	//
	// Possible values:
	//   "PATH_TRANSLATION_UNSPECIFIED"
	//   "CONSTANT_ADDRESS" - Use the backend address as-is, with no modification
	// to the path. If the URL pattern contains variables, the variable names and
	// values will be appended to the query string. If a query string parameter and
	// a URL pattern variable have the same name, this may result in duplicate keys
	// in the query string. # Examples Given the following operation config: Method
	// path: /api/company/{cid}/user/{uid} Backend address:
	// https://example.cloudfunctions.net/getUser Requests to the following request
	// paths will call the backend at the translated path: Request path:
	// /api/company/widgetworks/user/johndoe Translated:
	// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
	// Request path: /api/company/widgetworks/user/johndoe?timezone=EST Translated:
	// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
	//   "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the
	// backend address. # Examples Given the following operation config: Method
	// path: /api/company/{cid}/user/{uid} Backend address:
	// https://example.appspot.com Requests to the following request paths will
	// call the backend at the translated path: Request path:
	// /api/company/widgetworks/user/johndoe Translated:
	// https://example.appspot.com/api/company/widgetworks/user/johndoe Request
	// path: /api/company/widgetworks/user/johndoe?timezone=EST Translated:
	// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
	PathTranslation string `json:"pathTranslation,omitempty"`
	// Protocol: The protocol used for sending a request to the backend. The
	// supported values are "http/1.1" and "h2". The default value is inferred from
	// the scheme in the address field: SCHEME PROTOCOL http:// http/1.1 https://
	// http/1.1 grpc:// h2 grpcs:// h2 For secure HTTP backends (https://) that
	// support HTTP/2, set this field to "h2" for improved performance. Configuring
	// this field to non-default values is only supported for secure HTTP backends.
	// This field will be ignored for all other backends. See
	// https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
	// for more details on the supported values.
	Protocol string `json:"protocol,omitempty"`
	// Selector: Selects the methods to which this rule applies. Refer to selector
	// for syntax details.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Address") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Address") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BackendRule) MarshalJSON() ([]byte, error) {
	type NoMethod BackendRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *BackendRule) UnmarshalJSON(data []byte) error {
	type NoMethod BackendRule
	var s1 struct {
		Deadline          gensupport.JSONFloat64 `json:"deadline"`
		MinDeadline       gensupport.JSONFloat64 `json:"minDeadline"`
		OperationDeadline gensupport.JSONFloat64 `json:"operationDeadline"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Deadline = float64(s1.Deadline)
	s.MinDeadline = float64(s1.MinDeadline)
	s.OperationDeadline = float64(s1.OperationDeadline)
	return nil
}

// BatchingConfigProto: `BatchingConfigProto` defines the batching
// configuration for an API method.
type BatchingConfigProto struct {
	// BatchDescriptor: The request and response fields used in batching.
	BatchDescriptor *BatchingDescriptorProto `json:"batchDescriptor,omitempty"`
	// Thresholds: The thresholds which trigger a batched request to be sent.
	Thresholds *BatchingSettingsProto `json:"thresholds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BatchDescriptor") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BatchDescriptor") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BatchingConfigProto) MarshalJSON() ([]byte, error) {
	type NoMethod BatchingConfigProto
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BatchingDescriptorProto: `BatchingDescriptorProto` specifies the fields of
// the request message to be used for batching, and, optionally, the fields of
// the response message to be used for demultiplexing.
type BatchingDescriptorProto struct {
	// BatchedField: The repeated field in the request message to be aggregated by
	// batching.
	BatchedField string `json:"batchedField,omitempty"`
	// DiscriminatorFields: A list of the fields in the request message. Two
	// requests will be batched together only if the values of every field
	// specified in `request_discriminator_fields` is equal between the two
	// requests.
	DiscriminatorFields []string `json:"discriminatorFields,omitempty"`
	// SubresponseField: Optional. When present, indicates the field in the
	// response message to be used to demultiplex the response into multiple
	// response messages, in correspondence with the multiple request messages
	// originally batched together.
	SubresponseField string `json:"subresponseField,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BatchedField") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BatchedField") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BatchingDescriptorProto) MarshalJSON() ([]byte, error) {
	type NoMethod BatchingDescriptorProto
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BatchingSettingsProto: `BatchingSettingsProto` specifies a set of batching
// thresholds, each of which acts as a trigger to send a batch of messages as a
// request. At least one threshold must be positive nonzero.
type BatchingSettingsProto struct {
	// DelayThreshold: The duration after which a batch should be sent, starting
	// from the addition of the first message to that batch.
	DelayThreshold string `json:"delayThreshold,omitempty"`
	// ElementCountLimit: The maximum number of elements collected in a batch that
	// could be accepted by server.
	ElementCountLimit int64 `json:"elementCountLimit,omitempty"`
	// ElementCountThreshold: The number of elements of a field collected into a
	// batch which, if exceeded, causes the batch to be sent.
	ElementCountThreshold int64 `json:"elementCountThreshold,omitempty"`
	// FlowControlByteLimit: The maximum size of data allowed by flow control.
	FlowControlByteLimit int64 `json:"flowControlByteLimit,omitempty"`
	// FlowControlElementLimit: The maximum number of elements allowed by flow
	// control.
	FlowControlElementLimit int64 `json:"flowControlElementLimit,omitempty"`
	// FlowControlLimitExceededBehavior: The behavior to take when the flow control
	// limit is exceeded.
	//
	// Possible values:
	//   "UNSET_BEHAVIOR" - Default behavior, system-defined.
	//   "THROW_EXCEPTION" - Stop operation, raise error.
	//   "BLOCK" - Pause operation until limit clears.
	//   "IGNORE" - Continue operation, disregard limit.
	FlowControlLimitExceededBehavior string `json:"flowControlLimitExceededBehavior,omitempty"`
	// RequestByteLimit: The maximum size of the request that could be accepted by
	// server.
	RequestByteLimit int64 `json:"requestByteLimit,omitempty"`
	// RequestByteThreshold: The aggregated size of the batched field which, if
	// exceeded, causes the batch to be sent. This size is computed by aggregating
	// the sizes of the request field to be batched, not of the entire request
	// message.
	RequestByteThreshold int64 `json:"requestByteThreshold,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "DelayThreshold") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DelayThreshold") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BatchingSettingsProto) MarshalJSON() ([]byte, error) {
	type NoMethod BatchingSettingsProto
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Billing: Billing related configuration of the service. The following example
// shows how to configure monitored resources and metrics for billing,
// `consumer_destinations` is the only supported destination and the monitored
// resources need at least one label key `cloud.googleapis.com/location` to
// indicate the location of the billing usage, using different monitored
// resources between monitoring and billing is recommended so they can be
// evolved independently: monitored_resources: - type:
// library.googleapis.com/billing_branch labels: - key:
// cloud.googleapis.com/location description: | Predefined label to support
// billing location restriction. - key: city description: | Custom label to
// define the city where the library branch is located in. - key: name
// description: Custom label to define the name of the library branch. metrics:
// - name: library.googleapis.com/book/borrowed_count metric_kind: DELTA
// value_type: INT64 unit: "1" billing: consumer_destinations: -
// monitored_resource: library.googleapis.com/billing_branch metrics: -
// library.googleapis.com/book/borrowed_count
type Billing struct {
	// ConsumerDestinations: Billing configurations for sending metrics to the
	// consumer project. There can be multiple consumer destinations per service,
	// each one must have a different monitored resource type. A metric can be used
	// in at most one consumer destination.
	ConsumerDestinations []*BillingDestination `json:"consumerDestinations,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ConsumerDestinations") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ConsumerDestinations") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Billing) MarshalJSON() ([]byte, error) {
	type NoMethod Billing
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BillingDestination: Configuration of a specific billing destination
// (Currently only support bill against consumer project).
type BillingDestination struct {
	// Metrics: Names of the metrics to report to this billing destination. Each
	// name must be defined in Service.metrics section.
	Metrics []string `json:"metrics,omitempty"`
	// MonitoredResource: The monitored resource type. The type must be defined in
	// Service.monitored_resources section.
	MonitoredResource string `json:"monitoredResource,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Metrics") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Metrics") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BillingDestination) MarshalJSON() ([]byte, error) {
	type NoMethod BillingDestination
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Binding: Associates `members`, or principals, with a `role`.
type Binding struct {
	// Condition: The condition that is associated with this binding. If the
	// condition evaluates to `true`, then this binding applies to the current
	// request. If the condition evaluates to `false`, then this binding does not
	// apply to the current request. However, a different role binding might grant
	// the same role to one or more of the principals in this binding. To learn
	// which resources support conditions in their IAM policies, see the IAM
	// documentation
	// (https://cloud.google.com/iam/help/conditions/resource-policies).
	Condition *Expr `json:"condition,omitempty"`
	// Members: Specifies the principals requesting access for a Google Cloud
	// resource. `members` can have the following values: * `allUsers`: A special
	// identifier that represents anyone who is on the internet; with or without a
	// Google account. * `allAuthenticatedUsers`: A special identifier that
	// represents anyone who is authenticated with a Google account or a service
	// account. Does not include identities that come from external identity
	// providers (IdPs) through identity federation. * `user:{emailid}`: An email
	// address that represents a specific Google account. For example,
	// `alice@example.com` . * `serviceAccount:{emailid}`: An email address that
	// represents a Google service account. For example,
	// `my-other-app@appspot.gserviceaccount.com`. *
	// `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An
	// identifier for a Kubernetes service account
	// (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts).
	// For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. *
	// `group:{emailid}`: An email address that represents a Google group. For
	// example, `admins@example.com`. * `domain:{domain}`: The G Suite domain
	// (primary) that represents all the users of that domain. For example,
	// `google.com` or `example.com`. *
	// `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/sub
	// ject/{subject_attribute_value}`: A single identity in a workforce identity
	// pool. *
	// `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/
	// group/{group_id}`: All workforce identities in a group. *
	// `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/
	// attribute.{attribute_name}/{attribute_value}`: All workforce identities with
	// a specific attribute value. *
	// `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/
	// *`: All identities in a workforce identity pool. *
	// `principal://iam.googleapis.com/projects/{project_number}/locations/global/wo
	// rkloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single
	// identity in a workload identity pool. *
	// `principalSet://iam.googleapis.com/projects/{project_number}/locations/global
	// /workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool
	// group. *
	// `principalSet://iam.googleapis.com/projects/{project_number}/locations/global
	// /workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}
	// `: All identities in a workload identity pool with a certain attribute. *
	// `principalSet://iam.googleapis.com/projects/{project_number}/locations/global
	// /workloadIdentityPools/{pool_id}/*`: All identities in a workload identity
	// pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus
	// unique identifier) representing a user that has been recently deleted. For
	// example, `alice@example.com?uid=123456789012345678901`. If the user is
	// recovered, this value reverts to `user:{emailid}` and the recovered user
	// retains the role in the binding. *
	// `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus
	// unique identifier) representing a service account that has been recently
	// deleted. For example,
	// `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the
	// service account is undeleted, this value reverts to
	// `serviceAccount:{emailid}` and the undeleted service account retains the
	// role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email
	// address (plus unique identifier) representing a Google group that has been
	// recently deleted. For example,
	// `admins@example.com?uid=123456789012345678901`. If the group is recovered,
	// this value reverts to `group:{emailid}` and the recovered group retains the
	// role in the binding. *
	// `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool
	// _id}/subject/{subject_attribute_value}`: Deleted single identity in a
	// workforce identity pool. For example,
	// `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-po
	// ol-id/subject/my-subject-attribute-value`.
	Members []string `json:"members,omitempty"`
	// Role: Role that is assigned to the list of `members`, or principals. For
	// example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview
	// of the IAM roles and permissions, see the IAM documentation
	// (https://cloud.google.com/iam/docs/roles-overview). For a list of the
	// available pre-defined roles, see here
	// (https://cloud.google.com/iam/docs/understanding-roles).
	Role string `json:"role,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Condition") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Condition") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Binding) MarshalJSON() ([]byte, error) {
	type NoMethod Binding
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ChangeReport: Change report associated with a particular service
// configuration. It contains a list of ConfigChanges based on the comparison
// between two service configurations.
type ChangeReport struct {
	// ConfigChanges: List of changes between two service configurations. The
	// changes will be alphabetically sorted based on the identifier of each
	// change. A ConfigChange identifier is a dot separated path to the
	// configuration. Example:
	// visibility.rules[selector='LibraryService.CreateBook'].restriction
	ConfigChanges []*ConfigChange `json:"configChanges,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ConfigChanges") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ConfigChanges") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ChangeReport) MarshalJSON() ([]byte, error) {
	type NoMethod ChangeReport
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ClientLibrarySettings: Details about how and where to publish client
// libraries.
type ClientLibrarySettings struct {
	// CppSettings: Settings for C++ client libraries.
	CppSettings *CppSettings `json:"cppSettings,omitempty"`
	// DotnetSettings: Settings for .NET client libraries.
	DotnetSettings *DotnetSettings `json:"dotnetSettings,omitempty"`
	// GoSettings: Settings for Go client libraries.
	GoSettings *GoSettings `json:"goSettings,omitempty"`
	// JavaSettings: Settings for legacy Java features, supported in the Service
	// YAML.
	JavaSettings *JavaSettings `json:"javaSettings,omitempty"`
	// LaunchStage: Launch stage of this version of the API.
	//
	// Possible values:
	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not use
	// it.
	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
	// visible internally.
	//   "EARLY_ACCESS" - Early Access features are limited to a closed group of
	// testers. To use these features, you must sign up in advance and sign a
	// Trusted Tester agreement (which includes confidentiality provisions). These
	// features may be unstable, changed in backward-incompatible ways, and are not
	// guaranteed to be released.
	//   "ALPHA" - Alpha is a limited availability test for releases before they
	// are cleared for widespread use. By Alpha, all significant design issues are
	// resolved and we are in the process of verifying functionality. Alpha
	// customers need to apply for access, agree to applicable terms, and have
	// their projects allowlisted. Alpha releases don't have to be feature
	// complete, no SLAs are provided, and there are no technical support
	// obligations, but they will be far enough along that customers can actually
	// use them in test environments or for limited-use tests -- just like they
	// would in normal production cases.
	//   "BETA" - Beta is the point at which we are ready to open a release for any
	// customer to use. There are no SLA or technical support obligations in a Beta
	// release. Products will be complete from a feature perspective, but may have
	// some open outstanding issues. Beta releases are suitable for limited
	// production use cases.
	//   "GA" - GA features are open to all developers and are considered stable
	// and fully qualified for production use.
	//   "DEPRECATED" - Deprecated features are scheduled to be shut down and
	// removed. For more information, see the "Deprecation Policy" section of our
	// [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud
	// Platform Subject to the Deprecation
	// Policy](https://cloud.google.com/terms/deprecation) documentation.
	LaunchStage string `json:"launchStage,omitempty"`
	// NodeSettings: Settings for Node client libraries.
	NodeSettings *NodeSettings `json:"nodeSettings,omitempty"`
	// PhpSettings: Settings for PHP client libraries.
	PhpSettings *PhpSettings `json:"phpSettings,omitempty"`
	// PythonSettings: Settings for Python client libraries.
	PythonSettings *PythonSettings `json:"pythonSettings,omitempty"`
	// RestNumericEnums: When using transport=rest, the client request will encode
	// enums as numbers rather than strings.
	RestNumericEnums bool `json:"restNumericEnums,omitempty"`
	// RubySettings: Settings for Ruby client libraries.
	RubySettings *RubySettings `json:"rubySettings,omitempty"`
	// Version: Version of the API to apply these settings to. This is the full
	// protobuf package for the API, ending in the version element. Examples:
	// "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
	Version string `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CppSettings") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CppSettings") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ClientLibrarySettings) MarshalJSON() ([]byte, error) {
	type NoMethod ClientLibrarySettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CommonLanguageSettings: Required information for every language.
type CommonLanguageSettings struct {
	// Destinations: The destination where API teams want this client library to be
	// published.
	//
	// Possible values:
	//   "CLIENT_LIBRARY_DESTINATION_UNSPECIFIED" - Client libraries will neither
	// be generated nor published to package managers.
	//   "GITHUB" - Generate the client library in a repo under
	// github.com/googleapis, but don't publish it to package managers.
	//   "PACKAGE_MANAGER" - Publish the library to package managers like nuget.org
	// and npmjs.com.
	Destinations []string `json:"destinations,omitempty"`
	// ReferenceDocsUri: Link to automatically generated reference documentation.
	// Example: https://cloud.google.com/nodejs/docs/reference/asset/latest
	ReferenceDocsUri string `json:"referenceDocsUri,omitempty"`
	// SelectiveGapicGeneration: Configuration for which RPCs should be generated
	// in the GAPIC client. Note: This field should not be used in most cases.
	SelectiveGapicGeneration *SelectiveGapicGeneration `json:"selectiveGapicGeneration,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Destinations") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Destinations") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CommonLanguageSettings) MarshalJSON() ([]byte, error) {
	type NoMethod CommonLanguageSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ConfigChange: Output generated from semantically comparing two versions of a
// service configuration. Includes detailed information about a field that have
// changed with applicable advice about potential consequences for the change,
// such as backwards-incompatibility.
type ConfigChange struct {
	// Advices: Collection of advice provided for this change, useful for
	// determining the possible impact of this change.
	Advices []*Advice `json:"advices,omitempty"`
	// ChangeType: The type for this change, either ADDED, REMOVED, or MODIFIED.
	//
	// Possible values:
	//   "CHANGE_TYPE_UNSPECIFIED" - No value was provided.
	//   "ADDED" - The changed object exists in the 'new' service configuration,
	// but not in the 'old' service configuration.
	//   "REMOVED" - The changed object exists in the 'old' service configuration,
	// but not in the 'new' service configuration.
	//   "MODIFIED" - The changed object exists in both service configurations, but
	// its value is different.
	ChangeType string `json:"changeType,omitempty"`
	// Element: Object hierarchy path to the change, with levels separated by a '.'
	// character. For repeated fields, an applicable unique identifier field is
	// used for the index (usually selector, name, or id). For maps, the term 'key'
	// is used. If the field has no unique identifier, the numeric index is used.
	// Examples: -
	// visibility.rules[selector=="google.LibraryService.ListBooks"].restriction -
	// quota.metric_rules[selector=="google"].metric_costs[key=="reads"].value -
	// logging.producer_destinations[0]
	Element string `json:"element,omitempty"`
	// NewValue: Value of the changed object in the new Service configuration, in
	// JSON format. This field will not be populated if ChangeType == REMOVED.
	NewValue string `json:"newValue,omitempty"`
	// OldValue: Value of the changed object in the old Service configuration, in
	// JSON format. This field will not be populated if ChangeType == ADDED.
	OldValue string `json:"oldValue,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Advices") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Advices") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ConfigChange) MarshalJSON() ([]byte, error) {
	type NoMethod ConfigChange
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ConfigFile: Generic specification of a source configuration file
type ConfigFile struct {
	// FileContents: The bytes that constitute the file.
	FileContents string `json:"fileContents,omitempty"`
	// FilePath: The file name of the configuration file (full or relative path).
	FilePath string `json:"filePath,omitempty"`
	// FileType: The type of configuration file this represents.
	//
	// Possible values:
	//   "FILE_TYPE_UNSPECIFIED" - Unknown file type.
	//   "SERVICE_CONFIG_YAML" - YAML-specification of service.
	//   "OPEN_API_JSON" - OpenAPI specification, serialized in JSON.
	//   "OPEN_API_YAML" - OpenAPI specification, serialized in YAML.
	//   "FILE_DESCRIPTOR_SET_PROTO" - FileDescriptorSet, generated by protoc. To
	// generate, use protoc with imports and source info included. For an example
	// test.proto file, the following command would put the value in a new file
	// named out.pb. $protoc --include_imports --include_source_info test.proto -o
	// out.pb
	//   "PROTO_FILE" - Uncompiled Proto file. Used for storage and display
	// purposes only, currently server-side compilation is not supported. Should
	// match the inputs to 'protoc' command used to generated
	// FILE_DESCRIPTOR_SET_PROTO. A file of this type can only be included if at
	// least one file of type FILE_DESCRIPTOR_SET_PROTO is included.
	FileType string `json:"fileType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FileContents") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FileContents") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ConfigFile) MarshalJSON() ([]byte, error) {
	type NoMethod ConfigFile
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ConfigRef: Represents a service configuration with its name and id.
type ConfigRef struct {
	// Name: Resource name of a service config. It must have the following format:
	// "services/{service name}/configs/{config id}".
	Name string `json:"name,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ConfigRef) MarshalJSON() ([]byte, error) {
	type NoMethod ConfigRef
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ConfigSource: Represents a source file which is used to generate the service
// configuration defined by `google.api.Service`.
type ConfigSource struct {
	// Files: Set of source configuration files that are used to generate a service
	// configuration (`google.api.Service`).
	Files []*ConfigFile `json:"files,omitempty"`
	// Id: A unique ID for a specific instance of this message, typically assigned
	// by the client for tracking purpose. If empty, the server may choose to
	// generate one instead.
	Id string `json:"id,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Files") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Files") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ConfigSource) MarshalJSON() ([]byte, error) {
	type NoMethod ConfigSource
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Context: `Context` defines which contexts an API requests. Example: context:
// rules: - selector: "*" requested: - google.rpc.context.ProjectContext -
// google.rpc.context.OriginContext The above specifies that all methods in the
// API request `google.rpc.context.ProjectContext` and
// `google.rpc.context.OriginContext`. Available context types are defined in
// package `google.rpc.context`. This also provides mechanism to allowlist any
// protobuf message extension that can be sent in grpc metadata using
// “x-goog-ext--bin” and “x-goog-ext--jspb” format. For example, list
// any service specific protobuf types that can appear in grpc metadata as
// follows in your yaml file: Example: context: rules: - selector:
// "google.example.library.v1.LibraryService.CreateBook"
// allowed_request_extensions: - google.foo.v1.NewExtension
// allowed_response_extensions: - google.foo.v1.NewExtension You can also
// specify extension ID instead of fully qualified extension name here.
type Context struct {
	// Rules: A list of RPC context rules that apply to individual API methods.
	// **NOTE:** All service configuration rules follow "last one wins" order.
	Rules []*ContextRule `json:"rules,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Rules") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Rules") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Context) MarshalJSON() ([]byte, error) {
	type NoMethod Context
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ContextRule: A context rule provides information about the context for an
// individual API element.
type ContextRule struct {
	// AllowedRequestExtensions: A list of full type names or extension IDs of
	// extensions allowed in grpc side channel from client to backend.
	AllowedRequestExtensions []string `json:"allowedRequestExtensions,omitempty"`
	// AllowedResponseExtensions: A list of full type names or extension IDs of
	// extensions allowed in grpc side channel from backend to client.
	AllowedResponseExtensions []string `json:"allowedResponseExtensions,omitempty"`
	// Provided: A list of full type names of provided contexts. It is used to
	// support propagating HTTP headers and ETags from the response extension.
	Provided []string `json:"provided,omitempty"`
	// Requested: A list of full type names of requested contexts, only the
	// requested context will be made available to the backend.
	Requested []string `json:"requested,omitempty"`
	// Selector: Selects the methods to which this rule applies. Refer to selector
	// for syntax details.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AllowedRequestExtensions")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AllowedRequestExtensions") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ContextRule) MarshalJSON() ([]byte, error) {
	type NoMethod ContextRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Control: Selects and configures the service controller used by the service.
// Example: control: environment: servicecontrol.googleapis.com
type Control struct {
	// Environment: The service controller environment to use. If empty, no control
	// plane features (like quota and billing) will be enabled. The recommended
	// value for most services is servicecontrol.googleapis.com.
	Environment string `json:"environment,omitempty"`
	// MethodPolicies: Defines policies applying to the API methods of the service.
	MethodPolicies []*MethodPolicy `json:"methodPolicies,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Environment") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Environment") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Control) MarshalJSON() ([]byte, error) {
	type NoMethod Control
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CppSettings: Settings for C++ client libraries.
type CppSettings struct {
	// Common: Some settings.
	Common *CommonLanguageSettings `json:"common,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Common") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Common") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CppSettings) MarshalJSON() ([]byte, error) {
	type NoMethod CppSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomError: Customize service error responses. For example, list any
// service specific protobuf types that can appear in error detail lists of
// error responses. Example: custom_error: types: - google.foo.v1.CustomError -
// google.foo.v1.AnotherError
type CustomError struct {
	// Rules: The list of custom error rules that apply to individual API messages.
	// **NOTE:** All service configuration rules follow "last one wins" order.
	Rules []*CustomErrorRule `json:"rules,omitempty"`
	// Types: The list of custom error detail types, e.g.
	// 'google.foo.v1.CustomError'.
	Types []string `json:"types,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Rules") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Rules") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomError) MarshalJSON() ([]byte, error) {
	type NoMethod CustomError
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomErrorRule: A custom error rule.
type CustomErrorRule struct {
	// IsErrorType: Mark this message as possible payload in error response.
	// Otherwise, objects of this type will be filtered when they appear in error
	// payload.
	IsErrorType bool `json:"isErrorType,omitempty"`
	// Selector: Selects messages to which this rule applies. Refer to selector for
	// syntax details.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "IsErrorType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "IsErrorType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomErrorRule) MarshalJSON() ([]byte, error) {
	type NoMethod CustomErrorRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomHttpPattern: A custom pattern is used for defining custom HTTP verb.
type CustomHttpPattern struct {
	// Kind: The name of this custom HTTP verb.
	Kind string `json:"kind,omitempty"`
	// Path: The path matched by this custom verb.
	Path string `json:"path,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Kind") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CustomHttpPattern) MarshalJSON() ([]byte, error) {
	type NoMethod CustomHttpPattern
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DeleteServiceStrategy: Strategy used to delete a service. This strategy is a
// placeholder only used by the system generated rollout to delete a service.
type DeleteServiceStrategy struct {
}

// Diagnostic: Represents a diagnostic message (error or warning)
type Diagnostic struct {
	// Kind: The kind of diagnostic information provided.
	//
	// Possible values:
	//   "WARNING" - Warnings and errors
	//   "ERROR" - Only errors
	Kind string `json:"kind,omitempty"`
	// Location: File name and line number of the error or warning.
	Location string `json:"location,omitempty"`
	// Message: Message describing the error or warning.
	Message string `json:"message,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Kind") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Kind") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Diagnostic) MarshalJSON() ([]byte, error) {
	type NoMethod Diagnostic
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Documentation: `Documentation` provides the information for describing a
// service. Example: documentation: summary: > The Google Calendar API gives
// access to most calendar features. pages: - name: Overview content: (==
// include google/foo/overview.md ==) - name: Tutorial content: (== include
// google/foo/tutorial.md ==) subpages: - name: Java content: (== include
// google/foo/tutorial_java.md ==) rules: - selector:
// google.calendar.Calendar.Get description: > ... - selector:
// google.calendar.Calendar.Put description: > ... Documentation is provided in
// markdown syntax. In addition to standard markdown features, definition
// lists, tables and fenced code blocks are supported. Section headers can be
// provided and are interpreted relative to the section nesting of the context
// where a documentation fragment is embedded. Documentation from the IDL is
// merged with documentation defined via the config at normalization time,
// where documentation provided by config rules overrides IDL provided. A
// number of constructs specific to the API platform are supported in
// documentation text. In order to reference a proto element, the following
// notation can be used: [fully.qualified.proto.name][] To override the display
// text used for the link, this can be used: [display
// text][fully.qualified.proto.name] Text can be excluded from doc using the
// following notation: (-- internal comment --) A few directives are available
// in documentation. Note that directives must appear on a single line to be
// properly identified. The `include` directive includes a markdown file from
// an external source: (== include path/to/file ==) The `resource_for`
// directive marks a message to be the resource of a collection in REST view.
// If it is not specified, tools attempt to infer the resource from the
// operations in a collection: (== resource_for v1.shelves.books ==) The
// directive `suppress_warning` does not directly affect documentation and is
// documented together with service config validation.
type Documentation struct {
	// AdditionalIamInfo: Optional information about the IAM configuration. This is
	// typically used to link to documentation about a product's IAM roles and
	// permissions.
	AdditionalIamInfo string `json:"additionalIamInfo,omitempty"`
	// DocumentationRootUrl: The URL to the root of documentation.
	DocumentationRootUrl string `json:"documentationRootUrl,omitempty"`
	// Overview: Declares a single overview page. For example: documentation:
	// summary: ... overview: (== include overview.md ==) This is a shortcut for
	// the following declaration (using pages style): documentation: summary: ...
	// pages: - name: Overview content: (== include overview.md ==) Note: you
	// cannot specify both `overview` field and `pages` field.
	Overview string `json:"overview,omitempty"`
	// Pages: The top level pages for the documentation set.
	Pages []*Page `json:"pages,omitempty"`
	// Rules: A list of documentation rules that apply to individual API elements.
	// **NOTE:** All service configuration rules follow "last one wins" order.
	Rules []*DocumentationRule `json:"rules,omitempty"`
	// SectionOverrides: Specifies section and content to override the boilerplate
	// content. Currently overrides following sections: 1.
	// rest.service.client_libraries
	SectionOverrides []*Page `json:"sectionOverrides,omitempty"`
	// ServiceRootUrl: Specifies the service root url if the default one (the
	// service name from the yaml file) is not suitable. This can be seen in any
	// fully specified service urls as well as sections that show a base that other
	// urls are relative to.
	ServiceRootUrl string `json:"serviceRootUrl,omitempty"`
	// Summary: A short description of what the service does. The summary must be
	// plain text. It becomes the overview of the service displayed in Google Cloud
	// Console. NOTE: This field is equivalent to the standard field `description`.
	Summary string `json:"summary,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdditionalIamInfo") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdditionalIamInfo") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Documentation) MarshalJSON() ([]byte, error) {
	type NoMethod Documentation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DocumentationRule: A documentation rule provides information about
// individual API elements.
type DocumentationRule struct {
	// DeprecationDescription: Deprecation description of the selected element(s).
	// It can be provided if an element is marked as `deprecated`.
	DeprecationDescription string `json:"deprecationDescription,omitempty"`
	// Description: Description of the selected proto element (e.g. a message, a
	// method, a 'service' definition, or a field). Defaults to leading & trailing
	// comments taken from the proto source definition of the proto element.
	Description string `json:"description,omitempty"`
	// DisableReplacementWords: String of comma or space separated case-sensitive
	// words for which method/field name replacement will be disabled.
	DisableReplacementWords string `json:"disableReplacementWords,omitempty"`
	// Selector: The selector is a comma-separated list of patterns for any element
	// such as a method, a field, an enum value. Each pattern is a qualified name
	// of the element which may end in "*", indicating a wildcard. Wildcards are
	// only allowed at the end and for a whole component of the qualified name,
	// i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A wildcard will match
	// one or more components. To specify a default for all applicable elements,
	// the whole pattern "*" is used.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeprecationDescription") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DeprecationDescription") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DocumentationRule) MarshalJSON() ([]byte, error) {
	type NoMethod DocumentationRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DotnetSettings: Settings for Dotnet client libraries.
type DotnetSettings struct {
	// Common: Some settings.
	Common *CommonLanguageSettings `json:"common,omitempty"`
	// ForcedNamespaceAliases: Namespaces which must be aliased in snippets due to
	// a known (but non-generator-predictable) naming collision
	ForcedNamespaceAliases []string `json:"forcedNamespaceAliases,omitempty"`
	// HandwrittenSignatures: Method signatures (in the form
	// "service.method(signature)") which are provided separately, so shouldn't be
	// generated. Snippets *calling* these methods are still generated, however.
	HandwrittenSignatures []string `json:"handwrittenSignatures,omitempty"`
	// IgnoredResources: List of full resource types to ignore during generation.
	// This is typically used for API-specific Location resources, which should be
	// handled by the generator as if they were actually the common Location
	// resources. Example entry: "documentai.googleapis.com/Location"
	IgnoredResources []string `json:"ignoredResources,omitempty"`
	// RenamedResources: Map from full resource types to the effective short name
	// for the resource. This is used when otherwise resource named from different
	// services would cause naming collisions. Example entry:
	// "datalabeling.googleapis.com/Dataset": "DataLabelingDataset"
	RenamedResources map[string]string `json:"renamedResources,omitempty"`
	// RenamedServices: Map from original service names to renamed versions. This
	// is used when the default generated types would cause a naming conflict.
	// (Neither name is fully-qualified.) Example: Subscriber to
	// SubscriberServiceApi.
	RenamedServices map[string]string `json:"renamedServices,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Common") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Common") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DotnetSettings) MarshalJSON() ([]byte, error) {
	type NoMethod DotnetSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EnableServiceResponse: Operation payload for EnableService method.
type EnableServiceResponse struct {
}

// Endpoint: `Endpoint` describes a network address of a service that serves a
// set of APIs. It is commonly known as a service endpoint. A service may
// expose any number of service endpoints, and all service endpoints share the
// same service definition, such as quota limits and monitoring metrics.
// Example: type: google.api.Service name: library-example.googleapis.com
// endpoints: # Declares network address
// `https://library-example.googleapis.com` # for service
// `library-example.googleapis.com`. The `https` scheme # is implicit for all
// service endpoints. Other schemes may be # supported in the future. - name:
// library-example.googleapis.com allow_cors: false - name:
// content-staging-library-example.googleapis.com # Allows HTTP OPTIONS calls
// to be passed to the API frontend, for it # to decide whether the subsequent
// cross-origin request is allowed # to proceed. allow_cors: true
type Endpoint struct {
	// Aliases: Aliases for this endpoint, these will be served by the same UrlMap
	// as the parent endpoint, and will be provisioned in the GCP stack for the
	// Regional Endpoints.
	Aliases []string `json:"aliases,omitempty"`
	// AllowCors: Allowing CORS
	// (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
	// cross-domain traffic, would allow the backends served from this endpoint to
	// receive and respond to HTTP OPTIONS requests. The response will be used by
	// the browser to determine whether the subsequent cross-origin request is
	// allowed to proceed.
	AllowCors bool `json:"allowCors,omitempty"`
	// Name: The canonical name of this endpoint.
	Name string `json:"name,omitempty"`
	// Target: The specification of an Internet routable address of API frontend
	// that will handle requests to this API Endpoint
	// (https://cloud.google.com/apis/design/glossary). It should be either a valid
	// IPv4 address or a fully-qualified domain name. For example, "8.8.8.8" or
	// "myservice.appspot.com".
	Target string `json:"target,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Aliases") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Aliases") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Endpoint) MarshalJSON() ([]byte, error) {
	type NoMethod Endpoint
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Enum: Enum type definition. New usages of this message as an alternative to
// EnumDescriptorProto are strongly discouraged. This message does not
// reliability preserve all information necessary to model the schema and
// preserve semantics. Instead make use of FileDescriptorSet which preserves
// the necessary information.
type Enum struct {
	// Edition: The source edition string, only valid when syntax is
	// SYNTAX_EDITIONS.
	Edition string `json:"edition,omitempty"`
	// Enumvalue: Enum value definitions.
	Enumvalue []*EnumValue `json:"enumvalue,omitempty"`
	// Name: Enum type name.
	Name string `json:"name,omitempty"`
	// Options: Protocol buffer options.
	Options []*Option `json:"options,omitempty"`
	// SourceContext: The source context.
	SourceContext *SourceContext `json:"sourceContext,omitempty"`
	// Syntax: The source syntax.
	//
	// Possible values:
	//   "SYNTAX_PROTO2" - Syntax `proto2`.
	//   "SYNTAX_PROTO3" - Syntax `proto3`.
	//   "SYNTAX_EDITIONS" - Syntax `editions`.
	Syntax string `json:"syntax,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Edition") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Edition") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Enum) MarshalJSON() ([]byte, error) {
	type NoMethod Enum
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EnumValue: Enum value definition. New usages of this message as an
// alternative to EnumValueDescriptorProto are strongly discouraged. This
// message does not reliability preserve all information necessary to model the
// schema and preserve semantics. Instead make use of FileDescriptorSet which
// preserves the necessary information.
type EnumValue struct {
	// Name: Enum value name.
	Name string `json:"name,omitempty"`
	// Number: Enum value number.
	Number int64 `json:"number,omitempty"`
	// Options: Protocol buffer options.
	Options []*Option `json:"options,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EnumValue) MarshalJSON() ([]byte, error) {
	type NoMethod EnumValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExperimentalFeatures: Experimental features to be included during client
// library generation. These fields will be deprecated once the feature
// graduates and is enabled by default.
type ExperimentalFeatures struct {
	// ProtobufPythonicTypesEnabled: Enables generation of protobuf code using new
	// types that are more Pythonic which are included in `protobuf>=5.29.x`. This
	// feature will be enabled by default 1 month after launching the feature in
	// preview packages.
	ProtobufPythonicTypesEnabled bool `json:"protobufPythonicTypesEnabled,omitempty"`
	// RestAsyncIoEnabled: Enables generation of asynchronous REST clients if
	// `rest` transport is enabled. By default, asynchronous REST clients will not
	// be generated. This feature will be enabled by default 1 month after
	// launching the feature in preview packages.
	RestAsyncIoEnabled bool `json:"restAsyncIoEnabled,omitempty"`
	// UnversionedPackageDisabled: Disables generation of an unversioned Python
	// package for this client library. This means that the module names will need
	// to be versioned in import statements. For example `import
	// google.cloud.library_v2` instead of `import google.cloud.library`.
	UnversionedPackageDisabled bool `json:"unversionedPackageDisabled,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "ProtobufPythonicTypesEnabled") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ProtobufPythonicTypesEnabled") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExperimentalFeatures) MarshalJSON() ([]byte, error) {
	type NoMethod ExperimentalFeatures
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Expr: Represents a textual expression in the Common Expression Language
// (CEL) syntax. CEL is a C-like expression language. The syntax and semantics
// of CEL are documented at https://github.com/google/cel-spec. Example
// (Comparison): title: "Summary size limit" description: "Determines if a
// summary is less than 100 chars" expression: "document.summary.size() < 100"
// Example (Equality): title: "Requestor is owner" description: "Determines if
// requestor is the document owner" expression: "document.owner ==
// request.auth.claims.email" Example (Logic): title: "Public documents"
// description: "Determine whether the document should be publicly visible"
// expression: "document.type != 'private' && document.type != 'internal'"
// Example (Data Manipulation): title: "Notification string" description:
// "Create a notification string with a timestamp." expression: "'New message
// received at ' + string(document.create_time)" The exact variables and
// functions that may be referenced within an expression are determined by the
// service that evaluates it. See the service documentation for additional
// information.
type Expr struct {
	// Description: Optional. Description of the expression. This is a longer text
	// which describes the expression, e.g. when hovered over it in a UI.
	Description string `json:"description,omitempty"`
	// Expression: Textual representation of an expression in Common Expression
	// Language syntax.
	Expression string `json:"expression,omitempty"`
	// Location: Optional. String indicating the location of the expression for
	// error reporting, e.g. a file name and a position in the file.
	Location string `json:"location,omitempty"`
	// Title: Optional. Title for the expression, i.e. a short string describing
	// its purpose. This can be used e.g. in UIs which allow to enter the
	// expression.
	Title string `json:"title,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Expr) MarshalJSON() ([]byte, error) {
	type NoMethod Expr
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Field: A single field of a message type. New usages of this message as an
// alternative to FieldDescriptorProto are strongly discouraged. This message
// does not reliability preserve all information necessary to model the schema
// and preserve semantics. Instead make use of FileDescriptorSet which
// preserves the necessary information.
type Field struct {
	// Cardinality: The field cardinality.
	//
	// Possible values:
	//   "CARDINALITY_UNKNOWN" - For fields with unknown cardinality.
	//   "CARDINALITY_OPTIONAL" - For optional fields.
	//   "CARDINALITY_REQUIRED" - For required fields. Proto2 syntax only.
	//   "CARDINALITY_REPEATED" - For repeated fields.
	Cardinality string `json:"cardinality,omitempty"`
	// DefaultValue: The string value of the default value of this field. Proto2
	// syntax only.
	DefaultValue string `json:"defaultValue,omitempty"`
	// JsonName: The field JSON name.
	JsonName string `json:"jsonName,omitempty"`
	// Kind: The field type.
	//
	// Possible values:
	//   "TYPE_UNKNOWN" - Field type unknown.
	//   "TYPE_DOUBLE" - Field type double.
	//   "TYPE_FLOAT" - Field type float.
	//   "TYPE_INT64" - Field type int64.
	//   "TYPE_UINT64" - Field type uint64.
	//   "TYPE_INT32" - Field type int32.
	//   "TYPE_FIXED64" - Field type fixed64.
	//   "TYPE_FIXED32" - Field type fixed32.
	//   "TYPE_BOOL" - Field type bool.
	//   "TYPE_STRING" - Field type string.
	//   "TYPE_GROUP" - Field type group. Proto2 syntax only, and deprecated.
	//   "TYPE_MESSAGE" - Field type message.
	//   "TYPE_BYTES" - Field type bytes.
	//   "TYPE_UINT32" - Field type uint32.
	//   "TYPE_ENUM" - Field type enum.
	//   "TYPE_SFIXED32" - Field type sfixed32.
	//   "TYPE_SFIXED64" - Field type sfixed64.
	//   "TYPE_SINT32" - Field type sint32.
	//   "TYPE_SINT64" - Field type sint64.
	Kind string `json:"kind,omitempty"`
	// Name: The field name.
	Name string `json:"name,omitempty"`
	// Number: The field number.
	Number int64 `json:"number,omitempty"`
	// OneofIndex: The index of the field type in `Type.oneofs`, for message or
	// enumeration types. The first type has index 1; zero means the type is not in
	// the list.
	OneofIndex int64 `json:"oneofIndex,omitempty"`
	// Options: The protocol buffer options.
	Options []*Option `json:"options,omitempty"`
	// Packed: Whether to use alternative packed wire representation.
	Packed bool `json:"packed,omitempty"`
	// TypeUrl: The field type URL, without the scheme, for message or enumeration
	// types. Example: "type.googleapis.com/google.protobuf.Timestamp".
	TypeUrl string `json:"typeUrl,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Cardinality") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Cardinality") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Field) MarshalJSON() ([]byte, error) {
	type NoMethod Field
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FieldPolicy: Google API Policy Annotation This message defines a simple API
// policy annotation that can be used to annotate API request and response
// message fields with applicable policies. One field may have multiple
// applicable policies that must all be satisfied before a request can be
// processed. This policy annotation is used to generate the overall policy
// that will be used for automatic runtime policy enforcement and documentation
// generation.
type FieldPolicy struct {
	// ResourcePermission: Specifies the required permission(s) for the resource
	// referred to by the field. It requires the field contains a valid resource
	// reference, and the request must pass the permission checks to proceed. For
	// example, "resourcemanager.projects.get".
	ResourcePermission string `json:"resourcePermission,omitempty"`
	// ResourceType: Specifies the resource type for the resource referred to by
	// the field.
	ResourceType string `json:"resourceType,omitempty"`
	// Selector: Selects one or more request or response message fields to apply
	// this `FieldPolicy`. When a `FieldPolicy` is used in proto annotation, the
	// selector must be left as empty. The service config generator will
	// automatically fill the correct value. When a `FieldPolicy` is used in
	// service config, the selector must be a comma-separated string with valid
	// request or response field paths, such as "foo.bar" or "foo.bar,foo.baz".
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ResourcePermission") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ResourcePermission") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FieldPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod FieldPolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FlowErrorDetails: Encapsulation of flow-specific error details for
// debugging. Used as a details field on an error Status, not intended for
// external use.
type FlowErrorDetails struct {
	// ExceptionType: The type of exception (as a class name).
	ExceptionType string `json:"exceptionType,omitempty"`
	// FlowStepId: The step that failed.
	FlowStepId string `json:"flowStepId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExceptionType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExceptionType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FlowErrorDetails) MarshalJSON() ([]byte, error) {
	type NoMethod FlowErrorDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GenerateConfigReportRequest: Request message for GenerateConfigReport
// method.
type GenerateConfigReportRequest struct {
	// NewConfig: Required. Service configuration for which we want to generate the
	// report. For this version of API, the supported types are
	// google.api.servicemanagement.v1.ConfigRef,
	// google.api.servicemanagement.v1.ConfigSource, and google.api.Service
	NewConfig googleapi.RawMessage `json:"newConfig,omitempty"`
	// OldConfig: Optional. Service configuration against which the comparison will
	// be done. For this version of API, the supported types are
	// google.api.servicemanagement.v1.ConfigRef,
	// google.api.servicemanagement.v1.ConfigSource, and google.api.Service
	OldConfig googleapi.RawMessage `json:"oldConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "NewConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NewConfig") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GenerateConfigReportRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GenerateConfigReportRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GenerateConfigReportResponse: Response message for GenerateConfigReport
// method.
type GenerateConfigReportResponse struct {
	// ChangeReports: list of ChangeReport, each corresponding to comparison
	// between two service configurations.
	ChangeReports []*ChangeReport `json:"changeReports,omitempty"`
	// Diagnostics: Errors / Linter warnings associated with the service definition
	// this report belongs to.
	Diagnostics []*Diagnostic `json:"diagnostics,omitempty"`
	// Id: ID of the service configuration this report belongs to.
	Id string `json:"id,omitempty"`
	// ServiceName: Name of the service this report belongs to.
	ServiceName string `json:"serviceName,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ChangeReports") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ChangeReports") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GenerateConfigReportResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GenerateConfigReportResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GetIamPolicyRequest: Request message for `GetIamPolicy` method.
type GetIamPolicyRequest struct {
	// Options: OPTIONAL: A `GetPolicyOptions` object for specifying options to
	// `GetIamPolicy`.
	Options *GetPolicyOptions `json:"options,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Options") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Options") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GetIamPolicyRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GetIamPolicyRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GetPolicyOptions: Encapsulates settings provided to GetIamPolicy.
type GetPolicyOptions struct {
	// RequestedPolicyVersion: Optional. The maximum policy version that will be
	// used to format the policy. Valid values are 0, 1, and 3. Requests specifying
	// an invalid value will be rejected. Requests for policies with any
	// conditional role bindings must specify version 3. Policies with no
	// conditional role bindings may specify any valid value or leave the field
	// unset. The policy in the response might use the policy version that you
	// specified, or it might use a lower policy version. For example, if you
	// specify version 3, but the policy has no conditional role bindings, the
	// response uses version 1. To learn which resources support conditions in
	// their IAM policies, see the IAM documentation
	// (https://cloud.google.com/iam/help/conditions/resource-policies).
	RequestedPolicyVersion int64 `json:"requestedPolicyVersion,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RequestedPolicyVersion") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RequestedPolicyVersion") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GetPolicyOptions) MarshalJSON() ([]byte, error) {
	type NoMethod GetPolicyOptions
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoSettings: Settings for Go client libraries.
type GoSettings struct {
	// Common: Some settings.
	Common *CommonLanguageSettings `json:"common,omitempty"`
	// RenamedServices: Map of service names to renamed services. Keys are the
	// package relative service names and values are the name to be used for the
	// service client and call options. Example: publishing: go_settings:
	// renamed_services: Publisher: TopicAdmin
	RenamedServices map[string]string `json:"renamedServices,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Common") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Common") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Http: Defines the HTTP configuration for an API service. It contains a list
// of HttpRule, each specifying the mapping of an RPC method to one or more
// HTTP REST API methods.
type Http struct {
	// FullyDecodeReservedExpansion: When set to true, URL path parameters will be
	// fully URI-decoded except in cases of single segment matches in reserved
	// expansion, where "%2F" will be left encoded. The default behavior is to not
	// decode RFC 6570 reserved characters in multi segment matches.
	FullyDecodeReservedExpansion bool `json:"fullyDecodeReservedExpansion,omitempty"`
	// Rules: A list of HTTP configuration rules that apply to individual API
	// methods. **NOTE:** All service configuration rules follow "last one wins"
	// order.
	Rules []*HttpRule `json:"rules,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "FullyDecodeReservedExpansion") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FullyDecodeReservedExpansion") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Http) MarshalJSON() ([]byte, error) {
	type NoMethod Http
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HttpRule: gRPC Transcoding gRPC Transcoding is a feature for mapping between
// a gRPC method and one or more HTTP REST endpoints. It allows developers to
// build a single API service that supports both gRPC APIs and REST APIs. Many
// systems, including Google APIs (https://github.com/googleapis/googleapis),
// Cloud Endpoints (https://cloud.google.com/endpoints), gRPC Gateway
// (https://github.com/grpc-ecosystem/grpc-gateway), and Envoy
// (https://github.com/envoyproxy/envoy) proxy support this feature and use it
// for large scale production services. `HttpRule` defines the schema of the
// gRPC/REST mapping. The mapping specifies how different portions of the gRPC
// request message are mapped to the URL path, URL query parameters, and HTTP
// request body. It also controls how the gRPC response message is mapped to
// the HTTP response body. `HttpRule` is typically specified as an
// `google.api.http` annotation on the gRPC method. Each mapping specifies a
// URL path template and an HTTP method. The path template may refer to one or
// more fields in the gRPC request message, as long as each field is a
// non-repeated field with a primitive (non-message) type. The path template
// controls how fields of the request message are mapped to the URL path.
// Example: service Messaging { rpc GetMessage(GetMessageRequest) returns
// (Message) { option (google.api.http) = { get: "/v1/{name=messages/*}" }; } }
// message GetMessageRequest { string name = 1; // Mapped to URL path. }
// message Message { string text = 1; // The resource content. } This enables
// an HTTP REST to gRPC mapping as below: - HTTP: `GET /v1/messages/123456` -
// gRPC: `GetMessage(name: "messages/123456")` Any fields in the request
// message which are not bound by the path template automatically become HTTP
// query parameters if there is no HTTP request body. For example: service
// Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option
// (google.api.http) = { get:"/v1/messages/{message_id}" }; } } message
// GetMessageRequest { message SubMessage { string subfield = 1; } string
// message_id = 1; // Mapped to URL path. int64 revision = 2; // Mapped to URL
// query parameter `revision`. SubMessage sub = 3; // Mapped to URL query
// parameter `sub.subfield`. } This enables a HTTP JSON to RPC mapping as
// below: - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo` - gRPC:
// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield:
// "foo"))` Note that fields which are mapped to URL query parameters must have
// a primitive type or a repeated primitive type or a non-repeated message
// type. In the case of a repeated type, the parameter can be repeated in the
// URL as `...?param=A&param=B`. In the case of a message type, each field of
// the message is mapped to a separate parameter, such as
// `...?foo.a=A&foo.b=B&foo.c=C`. For HTTP methods that allow a request body,
// the `body` field specifies the mapping. Consider a REST update method on the
// message resource collection: service Messaging { rpc
// UpdateMessage(UpdateMessageRequest) returns (Message) { option
// (google.api.http) = { patch: "/v1/messages/{message_id}" body: "message" };
// } } message UpdateMessageRequest { string message_id = 1; // mapped to the
// URL Message message = 2; // mapped to the body } The following HTTP JSON to
// RPC mapping is enabled, where the representation of the JSON in the request
// body is determined by protos JSON encoding: - HTTP: `PATCH
// /v1/messages/123456 { "text": "Hi!" }` - gRPC: `UpdateMessage(message_id:
// "123456" message { text: "Hi!" })` The special name `*` can be used in the
// body mapping to define that every field not bound by the path template
// should be mapped to the request body. This enables the following alternative
// definition of the update method: service Messaging { rpc
// UpdateMessage(Message) returns (Message) { option (google.api.http) = {
// patch: "/v1/messages/{message_id}" body: "*" }; } } message Message { string
// message_id = 1; string text = 2; } The following HTTP JSON to RPC mapping is
// enabled: - HTTP: `PATCH /v1/messages/123456 { "text": "Hi!" }` - gRPC:
// `UpdateMessage(message_id: "123456" text: "Hi!")` Note that when using `*`
// in the body mapping, it is not possible to have HTTP parameters, as all
// fields not bound by the path end in the body. This makes this option more
// rarely used in practice when defining REST APIs. The common usage of `*` is
// in custom methods which don't use the URL at all for transferring data. It
// is possible to define multiple HTTP methods for one RPC by using the
// `additional_bindings` option. Example: service Messaging { rpc
// GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) =
// { get: "/v1/messages/{message_id}" additional_bindings { get:
// "/v1/users/{user_id}/messages/{message_id}" } }; } } message
// GetMessageRequest { string message_id = 1; string user_id = 2; } This
// enables the following two alternative HTTP JSON to RPC mappings: - HTTP:
// `GET /v1/messages/123456` - gRPC: `GetMessage(message_id: "123456")` - HTTP:
// `GET /v1/users/me/messages/123456` - gRPC: `GetMessage(user_id: "me"
// message_id: "123456")` Rules for HTTP mapping 1. Leaf request fields
// (recursive expansion nested messages in the request message) are classified
// into three categories: - Fields referred by the path template. They are
// passed via the URL path. - Fields referred by the HttpRule.body. They are
// passed via the HTTP request body. - All other fields are passed via the URL
// query parameters, and the parameter name is the field path in the request
// message. A repeated field can be represented as multiple query parameters
// under the same name. 2. If HttpRule.body is "*", there is no URL query
// parameter, all fields are passed via URL path and HTTP request body. 3. If
// HttpRule.body is omitted, there is no HTTP request body, all fields are
// passed via URL path and URL query parameters. Path template syntax Template
// = "/" Segments [ Verb ] ; Segments = Segment { "/" Segment } ; Segment = "*"
// | "**" | LITERAL | Variable ; Variable = "{" FieldPath [ "=" Segments ] "}"
// ; FieldPath = IDENT { "." IDENT } ; Verb = ":" LITERAL ; The syntax `*`
// matches a single URL path segment. The syntax `**` matches zero or more URL
// path segments, which must be the last part of the URL path except the
// `Verb`. The syntax `Variable` matches part of the URL path as specified by
// its template. A variable template must not contain other variables. If a
// variable matches a single path segment, its template may be omitted, e.g.
// `{var}` is equivalent to `{var=*}`. The syntax `LITERAL` matches literal
// text in the URL path. If the `LITERAL` contains any reserved character, such
// characters should be percent-encoded before the matching. If a variable
// contains exactly one path segment, such as "{var}" or "{var=*}", when
// such a variable is expanded into a URL path on the client side, all
// characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The server side
// does the reverse decoding. Such variables show up in the Discovery Document
// (https://developers.google.com/discovery/v1/reference/apis) as `{var}`. If a
// variable contains multiple path segments, such as "{var=foo/*}" or
// "{var=**}", when such a variable is expanded into a URL path on the client
// side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. The
// server side does the reverse decoding, except "%2F" and "%2f" are left
// unchanged. Such variables show up in the Discovery Document
// (https://developers.google.com/discovery/v1/reference/apis) as `{+var}`.
// Using gRPC API Service Configuration gRPC API Service Configuration (service
// config) is a configuration language for configuring a gRPC service to become
// a user-facing product. The service config is simply the YAML representation
// of the `google.api.Service` proto message. As an alternative to annotating
// your proto file, you can configure gRPC transcoding in your service config
// YAML files. You do this by specifying a `HttpRule` that maps the gRPC method
// to a REST endpoint, achieving the same effect as the proto annotation. This
// can be particularly useful if you have a proto that is reused in multiple
// services. Note that any transcoding specified in the service config will
// override any matching transcoding configuration in the proto. The following
// example selects a gRPC method and applies an `HttpRule` to it: http: rules:
// - selector: example.v1.Messaging.GetMessage get:
// /v1/messages/{message_id}/{sub.subfield} Special notes When gRPC Transcoding
// is used to map a gRPC to JSON REST endpoints, the proto to JSON conversion
// must follow the proto3 specification
// (https://developers.google.com/protocol-buffers/docs/proto3#json). While the
// single segment variable follows the semantics of RFC 6570
// (https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String Expansion,
// the multi segment variable **does not** follow RFC 6570 Section 3.2.3
// Reserved Expansion. The reason is that the Reserved Expansion does not
// expand special characters like `?` and `#`, which would lead to invalid
// URLs. As the result, gRPC Transcoding uses a custom encoding for multi
// segment variables. The path variables **must not** refer to any repeated or
// mapped field, because client libraries are not capable of handling such
// variable expansion. The path variables **must not** capture the leading "/"
// character. The reason is that the most common use case "{var}" does not
// capture the leading "/" character. For consistency, all path variables must
// share the same behavior. Repeated message fields must not be mapped to URL
// query parameters, because no client library can support such complicated
// mapping. If an API needs to use a JSON array for request or response body,
// it can map the request or response body to a repeated field. However, some
// gRPC Transcoding implementations may not support this feature.
type HttpRule struct {
	// AdditionalBindings: Additional HTTP bindings for the selector. Nested
	// bindings must not contain an `additional_bindings` field themselves (that
	// is, the nesting may only be one level deep).
	AdditionalBindings []*HttpRule `json:"additionalBindings,omitempty"`
	// Body: The name of the request field whose value is mapped to the HTTP
	// request body, or `*` for mapping all request fields not captured by the path
	// pattern to the HTTP body, or omitted for not having any HTTP request body.
	// NOTE: the referred field must be present at the top-level of the request
	// message type.
	Body string `json:"body,omitempty"`
	// Custom: The custom pattern is used for specifying an HTTP method that is not
	// included in the `pattern` field, such as HEAD, or "*" to leave the HTTP
	// method unspecified for this rule. The wild-card rule is useful for services
	// that provide content to Web (HTML) clients.
	Custom *CustomHttpPattern `json:"custom,omitempty"`
	// Delete: Maps to HTTP DELETE. Used for deleting a resource.
	Delete string `json:"delete,omitempty"`
	// Get: Maps to HTTP GET. Used for listing and getting information about
	// resources.
	Get string `json:"get,omitempty"`
	// Patch: Maps to HTTP PATCH. Used for updating a resource.
	Patch string `json:"patch,omitempty"`
	// Post: Maps to HTTP POST. Used for creating a resource or performing an
	// action.
	Post string `json:"post,omitempty"`
	// Put: Maps to HTTP PUT. Used for replacing a resource.
	Put string `json:"put,omitempty"`
	// ResponseBody: Optional. The name of the response field whose value is mapped
	// to the HTTP response body. When omitted, the entire response message will be
	// used as the HTTP response body. NOTE: The referred field must be present at
	// the top-level of the response message type.
	ResponseBody string `json:"responseBody,omitempty"`
	// Selector: Selects a method to which this rule applies. Refer to selector for
	// syntax details.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdditionalBindings") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AdditionalBindings") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HttpRule) MarshalJSON() ([]byte, error) {
	type NoMethod HttpRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// JavaSettings: Settings for Java client libraries.
type JavaSettings struct {
	// Common: Some settings.
	Common *CommonLanguageSettings `json:"common,omitempty"`
	// LibraryPackage: The package name to use in Java. Clobbers the java_package
	// option set in the protobuf. This should be used **only** by APIs who have
	// already set the language_settings.java.package_name" field in gapic.yaml.
	// API teams should use the protobuf java_package option where possible.
	// Example of a YAML configuration:: publishing: library_settings:
	// java_settings: library_package: com.google.cloud.pubsub.v1
	LibraryPackage string `json:"libraryPackage,omitempty"`
	// ServiceClassNames: Configure the Java class name to use instead of the
	// service's for its corresponding generated GAPIC client. Keys are
	// fully-qualified service names as they appear in the protobuf (including the
	// full the language_settings.java.interface_names" field in gapic.yaml. API
	// teams should otherwise use the service name as it appears in the protobuf.
	// Example of a YAML configuration:: publishing: java_settings:
	// service_class_names: - google.pubsub.v1.Publisher: TopicAdmin -
	// google.pubsub.v1.Subscriber: SubscriptionAdmin
	ServiceClassNames map[string]string `json:"serviceClassNames,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Common") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Common") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s JavaSettings) MarshalJSON() ([]byte, error) {
	type NoMethod JavaSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// JwtLocation: Specifies a location to extract JWT from an API request.
type JwtLocation struct {
	// Cookie: Specifies cookie name to extract JWT token.
	Cookie string `json:"cookie,omitempty"`
	// Header: Specifies HTTP header name to extract JWT token.
	Header string `json:"header,omitempty"`
	// Query: Specifies URL query parameter name to extract JWT token.
	Query string `json:"query,omitempty"`
	// ValuePrefix: The value prefix. The value format is "value_prefix{token}"
	// Only applies to "in" header type. Must be empty for "in" query type. If not
	// empty, the header value has to match (case sensitive) this prefix. If not
	// matched, JWT will not be extracted. If matched, JWT will be extracted after
	// the prefix is removed. For example, for "Authorization: Bearer {JWT}",
	// value_prefix="Bearer " with a space at the end.
	ValuePrefix string `json:"valuePrefix,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Cookie") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Cookie") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s JwtLocation) MarshalJSON() ([]byte, error) {
	type NoMethod JwtLocation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LabelDescriptor: A description of a label.
type LabelDescriptor struct {
	// Description: A human-readable description for the label.
	Description string `json:"description,omitempty"`
	// Key: The label key.
	Key string `json:"key,omitempty"`
	// ValueType: The type of data that can be assigned to the label.
	//
	// Possible values:
	//   "STRING" - A variable-length string. This is the default.
	//   "BOOL" - Boolean; true or false.
	//   "INT64" - A 64-bit signed integer.
	ValueType string `json:"valueType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LabelDescriptor) MarshalJSON() ([]byte, error) {
	type NoMethod LabelDescriptor
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListOperationsResponse: The response message for Operations.ListOperations.
type ListOperationsResponse struct {
	// NextPageToken: The standard List next-page token.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Operations: A list of operations that matches the specified filter in the
	// request.
	Operations []*Operation `json:"operations,omitempty"`
	// Unreachable: Unordered list. Unreachable resources. Populated when the
	// request sets `ListOperationsRequest.return_partial_success` and reads across
	// collections. For example, when attempting to list all resources across all
	// supported locations.
	Unreachable []string `json:"unreachable,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListOperationsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListOperationsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListServiceConfigsResponse: Response message for ListServiceConfigs method.
type ListServiceConfigsResponse struct {
	// NextPageToken: The token of the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// ServiceConfigs: The list of service configuration resources.
	ServiceConfigs []*Service `json:"serviceConfigs,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListServiceConfigsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListServiceConfigsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListServiceRolloutsResponse: Response message for ListServiceRollouts
// method.
type ListServiceRolloutsResponse struct {
	// NextPageToken: The token of the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Rollouts: The list of rollout resources.
	Rollouts []*Rollout `json:"rollouts,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListServiceRolloutsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListServiceRolloutsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListServicesResponse: Response message for `ListServices` method.
type ListServicesResponse struct {
	// NextPageToken: Token that can be passed to `ListServices` to resume a
	// paginated query.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Services: The returned services will only have the name field set.
	Services []*ManagedService `json:"services,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListServicesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListServicesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LogDescriptor: A description of a log type. Example in YAML format: - name:
// library.googleapis.com/activity_history description: The history of
// borrowing and returning library items. display_name: Activity labels: - key:
// /customer_id description: Identifier of a library customer
type LogDescriptor struct {
	// Description: A human-readable description of this log. This information
	// appears in the documentation and can contain details.
	Description string `json:"description,omitempty"`
	// DisplayName: The human-readable name for this log. This information appears
	// on the user interface and should be concise.
	DisplayName string `json:"displayName,omitempty"`
	// Labels: The set of labels that are available to describe a specific log
	// entry. Runtime requests that contain labels not specified here are
	// considered invalid.
	Labels []*LabelDescriptor `json:"labels,omitempty"`
	// Name: The name of the log. It must be less than 512 characters long and can
	// include the following characters: upper- and lower-case alphanumeric
	// characters [A-Za-z0-9], and punctuation characters including slash,
	// underscore, hyphen, period [/_-.].
	Name string `json:"name,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LogDescriptor) MarshalJSON() ([]byte, error) {
	type NoMethod LogDescriptor
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Logging: Logging configuration of the service. The following example shows
// how to configure logs to be sent to the producer and consumer projects. In
// the example, the `activity_history` log is sent to both the producer and
// consumer projects, whereas the `purchase_history` log is only sent to the
// producer project. monitored_resources: - type: library.googleapis.com/branch
// labels: - key: /city description: The city where the library branch is
// located in. - key: /name description: The name of the branch. logs: - name:
// activity_history labels: - key: /customer_id - name: purchase_history
// logging: producer_destinations: - monitored_resource:
// library.googleapis.com/branch logs: - activity_history - purchase_history
// consumer_destinations: - monitored_resource: library.googleapis.com/branch
// logs: - activity_history
type Logging struct {
	// ConsumerDestinations: Logging configurations for sending logs to the
	// consumer project. There can be multiple consumer destinations, each one must
	// have a different monitored resource type. A log can be used in at most one
	// consumer destination.
	ConsumerDestinations []*LoggingDestination `json:"consumerDestinations,omitempty"`
	// ProducerDestinations: Logging configurations for sending logs to the
	// producer project. There can be multiple producer destinations, each one must
	// have a different monitored resource type. A log can be used in at most one
	// producer destination.
	ProducerDestinations []*LoggingDestination `json:"producerDestinations,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ConsumerDestinations") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ConsumerDestinations") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Logging) MarshalJSON() ([]byte, error) {
	type NoMethod Logging
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LoggingDestination: Configuration of a specific logging destination (the
// producer project or the consumer project).
type LoggingDestination struct {
	// Logs: Names of the logs to be sent to this destination. Each name must be
	// defined in the Service.logs section. If the log name is not a domain scoped
	// name, it will be automatically prefixed with the service name followed by
	// "/".
	Logs []string `json:"logs,omitempty"`
	// MonitoredResource: The monitored resource type. The type must be defined in
	// the Service.monitored_resources section.
	MonitoredResource string `json:"monitoredResource,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Logs") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Logs") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LoggingDestination) MarshalJSON() ([]byte, error) {
	type NoMethod LoggingDestination
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// LongRunning: Describes settings to use when generating API methods that use
// the long-running operation pattern. All default values below are from those
// used in the client library generators (e.g. Java
// (https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).
type LongRunning struct {
	// InitialPollDelay: Initial delay after which the first poll request will be
	// made. Default value: 5 seconds.
	InitialPollDelay string `json:"initialPollDelay,omitempty"`
	// MaxPollDelay: Maximum time between two subsequent poll requests. Default
	// value: 45 seconds.
	MaxPollDelay string `json:"maxPollDelay,omitempty"`
	// PollDelayMultiplier: Multiplier to gradually increase delay between
	// subsequent polls until it reaches max_poll_delay. Default value: 1.5.
	PollDelayMultiplier float64 `json:"pollDelayMultiplier,omitempty"`
	// TotalPollTimeout: Total polling timeout. Default value: 5 minutes.
	TotalPollTimeout string `json:"totalPollTimeout,omitempty"`
	// ForceSendFields is a list of field names (e.g. "InitialPollDelay") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "InitialPollDelay") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s LongRunning) MarshalJSON() ([]byte, error) {
	type NoMethod LongRunning
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *LongRunning) UnmarshalJSON(data []byte) error {
	type NoMethod LongRunning
	var s1 struct {
		PollDelayMultiplier gensupport.JSONFloat64 `json:"pollDelayMultiplier"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.PollDelayMultiplier = float64(s1.PollDelayMultiplier)
	return nil
}

// ManagedService: The full representation of a Service that is managed by
// Google Service Management.
type ManagedService struct {
	// ProducerProjectId: ID of the project that produces and owns this service.
	ProducerProjectId string `json:"producerProjectId,omitempty"`
	// ServiceName: The name of the service. See the overview
	// (https://cloud.google.com/service-infrastructure/docs/overview) for naming
	// requirements.
	ServiceName string `json:"serviceName,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ProducerProjectId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ProducerProjectId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ManagedService) MarshalJSON() ([]byte, error) {
	type NoMethod ManagedService
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Method: Method represents a method of an API interface. New usages of this
// message as an alternative to MethodDescriptorProto are strongly discouraged.
// This message does not reliability preserve all information necessary to
// model the schema and preserve semantics. Instead make use of
// FileDescriptorSet which preserves the necessary information.
type Method struct {
	// Edition: The source edition string, only valid when syntax is
	// SYNTAX_EDITIONS. This field should be ignored, instead the edition should be
	// inherited from Api. This is similar to Field and EnumValue.
	Edition string `json:"edition,omitempty"`
	// Name: The simple name of this method.
	Name string `json:"name,omitempty"`
	// Options: Any metadata attached to the method.
	Options []*Option `json:"options,omitempty"`
	// RequestStreaming: If true, the request is streamed.
	RequestStreaming bool `json:"requestStreaming,omitempty"`
	// RequestTypeUrl: A URL of the input message type.
	RequestTypeUrl string `json:"requestTypeUrl,omitempty"`
	// ResponseStreaming: If true, the response is streamed.
	ResponseStreaming bool `json:"responseStreaming,omitempty"`
	// ResponseTypeUrl: The URL of the output message type.
	ResponseTypeUrl string `json:"responseTypeUrl,omitempty"`
	// Syntax: The source syntax of this method. This field should be ignored,
	// instead the syntax should be inherited from Api. This is similar to Field
	// and EnumValue.
	//
	// Possible values:
	//   "SYNTAX_PROTO2" - Syntax `proto2`.
	//   "SYNTAX_PROTO3" - Syntax `proto3`.
	//   "SYNTAX_EDITIONS" - Syntax `editions`.
	Syntax string `json:"syntax,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Edition") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Edition") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Method) MarshalJSON() ([]byte, error) {
	type NoMethod Method
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MethodPolicy: Defines policies applying to an RPC method.
type MethodPolicy struct {
	// RequestPolicies: Policies that are applicable to the request message.
	RequestPolicies []*FieldPolicy `json:"requestPolicies,omitempty"`
	// Selector: Selects a method to which these policies should be enforced, for
	// example, "google.pubsub.v1.Subscriber.CreateSubscription". Refer to selector
	// for syntax details. NOTE: This field must not be set in the proto
	// annotation. It will be automatically filled by the service config compiler .
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RequestPolicies") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RequestPolicies") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MethodPolicy) MarshalJSON() ([]byte, error) {
	type NoMethod MethodPolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MethodSettings: Describes the generator configuration for a method.
type MethodSettings struct {
	// AutoPopulatedFields: List of top-level fields of the request message, that
	// should be automatically populated by the client libraries based on their
	// (google.api.field_info).format. Currently supported format: UUID4. Example
	// of a YAML configuration: publishing: method_settings: - selector:
	// google.example.v1.ExampleService.CreateExample auto_populated_fields: -
	// request_id
	AutoPopulatedFields []string `json:"autoPopulatedFields,omitempty"`
	// Batching: Batching configuration for an API method in client libraries.
	// Example of a YAML configuration: publishing: method_settings: - selector:
	// google.example.v1.ExampleService.BatchCreateExample batching:
	// element_count_threshold: 1000 request_byte_threshold: 100000000
	// delay_threshold_millis: 10
	Batching *BatchingConfigProto `json:"batching,omitempty"`
	// LongRunning: Describes settings to use for long-running operations when
	// generating API methods for RPCs. Complements RPCs that use the annotations
	// in google/longrunning/operations.proto. Example of a YAML configuration::
	// publishing: method_settings: - selector:
	// google.cloud.speech.v2.Speech.BatchRecognize long_running:
	// initial_poll_delay: 60s # 1 minute poll_delay_multiplier: 1.5
	// max_poll_delay: 360s # 6 minutes total_poll_timeout: 54000s # 90 minutes
	LongRunning *LongRunning `json:"longRunning,omitempty"`
	// Selector: The fully qualified name of the method, for which the options
	// below apply. This is used to find the method to apply the options. Example:
	// publishing: method_settings: - selector:
	// google.storage.control.v2.StorageControl.CreateFolder # method settings for
	// CreateFolder...
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AutoPopulatedFields") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AutoPopulatedFields") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MethodSettings) MarshalJSON() ([]byte, error) {
	type NoMethod MethodSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MetricDescriptor: Defines a metric type and its schema. Once a metric
// descriptor is created, deleting or altering it stops data collection and
// makes the metric type's existing data unusable.
type MetricDescriptor struct {
	// Description: A detailed description of the metric, which can be used in
	// documentation.
	Description string `json:"description,omitempty"`
	// DisplayName: A concise name for the metric, which can be displayed in user
	// interfaces. Use sentence case without an ending period, for example "Request
	// count". This field is optional but it is recommended to be set for any
	// metrics associated with user-visible concepts, such as Quota.
	DisplayName string `json:"displayName,omitempty"`
	// Labels: The set of labels that can be used to describe a specific instance
	// of this metric type. For example, the
	// `appengine.googleapis.com/http/server/response_latencies` metric type has a
	// label for the HTTP response code, `response_code`, so you can look at
	// latencies for successful responses or just for responses that failed.
	Labels []*LabelDescriptor `json:"labels,omitempty"`
	// LaunchStage: Optional. The launch stage of the metric definition.
	//
	// Possible values:
	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not use
	// it.
	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
	// visible internally.
	//   "EARLY_ACCESS" - Early Access features are limited to a closed group of
	// testers. To use these features, you must sign up in advance and sign a
	// Trusted Tester agreement (which includes confidentiality provisions). These
	// features may be unstable, changed in backward-incompatible ways, and are not
	// guaranteed to be released.
	//   "ALPHA" - Alpha is a limited availability test for releases before they
	// are cleared for widespread use. By Alpha, all significant design issues are
	// resolved and we are in the process of verifying functionality. Alpha
	// customers need to apply for access, agree to applicable terms, and have
	// their projects allowlisted. Alpha releases don't have to be feature
	// complete, no SLAs are provided, and there are no technical support
	// obligations, but they will be far enough along that customers can actually
	// use them in test environments or for limited-use tests -- just like they
	// would in normal production cases.
	//   "BETA" - Beta is the point at which we are ready to open a release for any
	// customer to use. There are no SLA or technical support obligations in a Beta
	// release. Products will be complete from a feature perspective, but may have
	// some open outstanding issues. Beta releases are suitable for limited
	// production use cases.
	//   "GA" - GA features are open to all developers and are considered stable
	// and fully qualified for production use.
	//   "DEPRECATED" - Deprecated features are scheduled to be shut down and
	// removed. For more information, see the "Deprecation Policy" section of our
	// [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud
	// Platform Subject to the Deprecation
	// Policy](https://cloud.google.com/terms/deprecation) documentation.
	LaunchStage string `json:"launchStage,omitempty"`
	// Metadata: Optional. Metadata which can be used to guide usage of the metric.
	Metadata *MetricDescriptorMetadata `json:"metadata,omitempty"`
	// MetricKind: Whether the metric records instantaneous values, changes to a
	// value, etc. Some combinations of `metric_kind` and `value_type` might not be
	// supported.
	//
	// Possible values:
	//   "METRIC_KIND_UNSPECIFIED" - Do not use this default value.
	//   "GAUGE" - An instantaneous measurement of a value.
	//   "DELTA" - The change in a value during a time interval.
	//   "CUMULATIVE" - A value accumulated over a time interval. Cumulative
	// measurements in a time series should have the same start time and increasing
	// end times, until an event resets the cumulative value to zero and sets a new
	// start time for the following points.
	MetricKind string `json:"metricKind,omitempty"`
	// MonitoredResourceTypes: Read-only. If present, then a time series, which is
	// identified partially by a metric type and a MonitoredResourceDescriptor,
	// that is associated with this metric type can only be associated with one of
	// the monitored resource types listed here.
	MonitoredResourceTypes []string `json:"monitoredResourceTypes,omitempty"`
	// Name: The resource name of the metric descriptor.
	Name string `json:"name,omitempty"`
	// Type: The metric type, including its DNS name prefix. The type is not
	// URL-encoded. All user-defined metric types have the DNS name
	// `custom.googleapis.com` or `external.googleapis.com`. Metric types should
	// use a natural hierarchical grouping. For example:
	// "custom.googleapis.com/invoice/paid/amount"
	// "external.googleapis.com/prometheus/up"
	// "appengine.googleapis.com/http/server/response_latencies"
	Type string `json:"type,omitempty"`
	// Unit: The units in which the metric value is reported. It is only applicable
	// if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit`
	// defines the representation of the stored metric values. Different systems
	// might scale the values to be more easily displayed (so a value of `0.02kBy`
	// _might_ be displayed as `20By`, and a value of `3523kBy` _might_ be
	// displayed as `3.5MBy`). However, if the `unit` is `kBy`, then the value of
	// the metric is always in thousands of bytes, no matter how it might be
	// displayed. If you want a custom metric to record the exact number of
	// CPU-seconds used by a job, you can create an `INT64 CUMULATIVE` metric whose
	// `unit` is `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses
	// 12,005 CPU-seconds, then the value is written as `12005`. Alternatively, if
	// you want a custom metric to record data in a more granular way, you can
	// create a `DOUBLE CUMULATIVE` metric whose `unit` is `ks{CPU}`, and then
	// write the value `12.005` (which is `12005/1000`), or use `Kis{CPU}` and
	// write `11.723` (which is `12005/1024`). The supported units are a subset of
	// The Unified Code for Units of Measure (https://unitsofmeasure.org/ucum.html)
	// standard: **Basic units (UNIT)** * `bit` bit * `By` byte * `s` second *
	// `min` minute * `h` hour * `d` day * `1` dimensionless **Prefixes (PREFIX)**
	// * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera (10^12) *
	// `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) * `Y` yotta (10^24) *
	// `m` milli (10^-3) * `u` micro (10^-6) * `n` nano (10^-9) * `p` pico (10^-12)
	// * `f` femto (10^-15) * `a` atto (10^-18) * `z` zepto (10^-21) * `y` yocto
	// (10^-24) * `Ki` kibi (2^10) * `Mi` mebi (2^20) * `Gi` gibi (2^30) * `Ti`
	// tebi (2^40) * `Pi` pebi (2^50) **Grammar** The grammar also includes these
	// connectors: * `/` division or ratio (as an infix operator). For examples,
	// `kBy/{email}` or `MiBy/10ms` (although you should almost never have `/s` in
	// a metric `unit`; rates should always be computed at query time from the
	// underlying cumulative or delta value). * `.` multiplication or composition
	// (as an infix operator). For examples, `GBy.d` or `k{watt}.h`. The grammar
	// for a unit is as follows: Expression = Component { "." Component } { "/"
	// Component } ; Component = ( [ PREFIX ] UNIT | "%" ) [ Annotation ] |
	// Annotation | "1" ; Annotation = "{" NAME "}" ; Notes: * `Annotation` is just
	// a comment if it follows a `UNIT`. If the annotation is used alone, then the
	// unit is equivalent to `1`. For examples, `{request}/s == 1/s`,
	// `By{transmitted}/s == By/s`. * `NAME` is a sequence of non-blank printable
	// ASCII characters not containing `{` or `}`. * `1` represents a unitary
	// dimensionless unit (https://en.wikipedia.org/wiki/Dimensionless_quantity) of
	// 1, such as in `1/s`. It is typically used when none of the basic units are
	// appropriate. For example, "new users per day" can be represented as `1/d` or
	// `{new-users}/d` (and a metric value `5` would mean "5 new users).
	// Alternatively, "thousands of page views per day" would be represented as
	// `1000/d` or `k1/d` or `k{page_views}/d` (and a metric value of `5.3` would
	// mean "5300 page views per day"). * `%` represents dimensionless value of
	// 1/100, and annotates values giving a percentage (so the metric values are
	// typically in the range of 0..100, and a metric value `3` means "3 percent").
	// * `10^2.%` indicates a metric contains a ratio, typically in the range 0..1,
	// that will be multiplied by 100 and displayed as a percentage (so a metric
	// value `0.03` means "3 percent").
	Unit string `json:"unit,omitempty"`
	// ValueType: Whether the measurement is an integer, a floating-point number,
	// etc. Some combinations of `metric_kind` and `value_type` might not be
	// supported.
	//
	// Possible values:
	//   "VALUE_TYPE_UNSPECIFIED" - Do not use this default value.
	//   "BOOL" - The value is a boolean. This value type can be used only if the
	// metric kind is `GAUGE`.
	//   "INT64" - The value is a signed 64-bit integer.
	//   "DOUBLE" - The value is a double precision floating point number.
	//   "STRING" - The value is a text string. This value type can be used only if
	// the metric kind is `GAUGE`.
	//   "DISTRIBUTION" - The value is a `Distribution`.
	//   "MONEY" - The value is money.
	ValueType string `json:"valueType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MetricDescriptor) MarshalJSON() ([]byte, error) {
	type NoMethod MetricDescriptor
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MetricDescriptorMetadata: Additional annotations that can be used to guide
// the usage of a metric.
type MetricDescriptorMetadata struct {
	// IngestDelay: The delay of data points caused by ingestion. Data points older
	// than this age are guaranteed to be ingested and available to be read,
	// excluding data loss due to errors.
	IngestDelay string `json:"ingestDelay,omitempty"`
	// LaunchStage: Deprecated. Must use the MetricDescriptor.launch_stage instead.
	//
	// Possible values:
	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not use
	// it.
	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
	// visible internally.
	//   "EARLY_ACCESS" - Early Access features are limited to a closed group of
	// testers. To use these features, you must sign up in advance and sign a
	// Trusted Tester agreement (which includes confidentiality provisions). These
	// features may be unstable, changed in backward-incompatible ways, and are not
	// guaranteed to be released.
	//   "ALPHA" - Alpha is a limited availability test for releases before they
	// are cleared for widespread use. By Alpha, all significant design issues are
	// resolved and we are in the process of verifying functionality. Alpha
	// customers need to apply for access, agree to applicable terms, and have
	// their projects allowlisted. Alpha releases don't have to be feature
	// complete, no SLAs are provided, and there are no technical support
	// obligations, but they will be far enough along that customers can actually
	// use them in test environments or for limited-use tests -- just like they
	// would in normal production cases.
	//   "BETA" - Beta is the point at which we are ready to open a release for any
	// customer to use. There are no SLA or technical support obligations in a Beta
	// release. Products will be complete from a feature perspective, but may have
	// some open outstanding issues. Beta releases are suitable for limited
	// production use cases.
	//   "GA" - GA features are open to all developers and are considered stable
	// and fully qualified for production use.
	//   "DEPRECATED" - Deprecated features are scheduled to be shut down and
	// removed. For more information, see the "Deprecation Policy" section of our
	// [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud
	// Platform Subject to the Deprecation
	// Policy](https://cloud.google.com/terms/deprecation) documentation.
	LaunchStage string `json:"launchStage,omitempty"`
	// SamplePeriod: The sampling period of metric data points. For metrics which
	// are written periodically, consecutive data points are stored at this time
	// interval, excluding data loss due to errors. Metrics with a higher
	// granularity have a smaller sampling period.
	SamplePeriod string `json:"samplePeriod,omitempty"`
	// TimeSeriesResourceHierarchyLevel: The scope of the timeseries data of the
	// metric.
	//
	// Possible values:
	//   "TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED" - Do not use this
	// default value.
	//   "PROJECT" - Scopes a metric to a project.
	//   "ORGANIZATION" - Scopes a metric to an organization.
	//   "FOLDER" - Scopes a metric to a folder.
	TimeSeriesResourceHierarchyLevel []string `json:"timeSeriesResourceHierarchyLevel,omitempty"`
	// ForceSendFields is a list of field names (e.g. "IngestDelay") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "IngestDelay") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MetricDescriptorMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod MetricDescriptorMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MetricRule: Bind API methods to metrics. Binding a method to a metric causes
// that metric's configured quota behaviors to apply to the method call.
type MetricRule struct {
	// MetricCosts: Metrics to update when the selected methods are called, and the
	// associated cost applied to each metric. The key of the map is the metric
	// name, and the values are the amount increased for the metric against which
	// the quota limits are defined. The value must not be negative.
	MetricCosts map[string]string `json:"metricCosts,omitempty"`
	// Selector: Selects the methods to which this rule applies. Refer to selector
	// for syntax details.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MetricCosts") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MetricCosts") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MetricRule) MarshalJSON() ([]byte, error) {
	type NoMethod MetricRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Mixin: Declares an API Interface to be included in this interface. The
// including interface must redeclare all the methods from the included
// interface, but documentation and options are inherited as follows: - If
// after comment and whitespace stripping, the documentation string of the
// redeclared method is empty, it will be inherited from the original method. -
// Each annotation belonging to the service config (http, visibility) which is
// not set in the redeclared method will be inherited. - If an http annotation
// is inherited, the path pattern will be modified as follows. Any version
// prefix will be replaced by the version of the including interface plus the
// root path if specified. Example of a simple mixin: package google.acl.v1;
// service AccessControl { // Get the underlying ACL object. rpc
// GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get =
// "/v1/{resource=**}:getAcl"; } } package google.storage.v2; service Storage {
// // rpc GetAcl(GetAclRequest) returns (Acl); // Get a data record. rpc
// GetData(GetDataRequest) returns (Data) { option (google.api.http).get =
// "/v2/{resource=**}"; } } Example of a mixin configuration: apis: - name:
// google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl The
// mixin construct implies that all methods in `AccessControl` are also
// declared with same name and request/response types in `Storage`. A
// documentation generator or annotation processor will see the effective
// `Storage.GetAcl` method after inheriting documentation and annotations as
// follows: service Storage { // Get the underlying ACL object. rpc
// GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get =
// "/v2/{resource=**}:getAcl"; } ... } Note how the version in the path pattern
// changed from `v1` to `v2`. If the `root` field in the mixin is specified, it
// should be a relative path under which inherited HTTP paths are placed.
// Example: apis: - name: google.storage.v2.Storage mixins: - name:
// google.acl.v1.AccessControl root: acls This implies the following inherited
// HTTP annotation: service Storage { // Get the underlying ACL object. rpc
// GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get =
// "/v2/acls/{resource=**}:getAcl"; } ... }
type Mixin struct {
	// Name: The fully qualified name of the interface which is included.
	Name string `json:"name,omitempty"`
	// Root: If non-empty specifies a path under which inherited HTTP paths are
	// rooted.
	Root string `json:"root,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Mixin) MarshalJSON() ([]byte, error) {
	type NoMethod Mixin
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MonitoredResourceDescriptor: An object that describes the schema of a
// MonitoredResource object using a type name and a set of labels. For example,
// the monitored resource descriptor for Google Compute Engine VM instances has
// a type of "gce_instance" and specifies the use of the labels
// "instance_id" and "zone" to identify particular VM instances. Different
// APIs can support different monitored resource types. APIs generally provide
// a `list` method that returns the monitored resource descriptors used by the
// API.
type MonitoredResourceDescriptor struct {
	// Description: Optional. A detailed description of the monitored resource type
	// that might be used in documentation.
	Description string `json:"description,omitempty"`
	// DisplayName: Optional. A concise name for the monitored resource type that
	// might be displayed in user interfaces. It should be a Title Cased Noun
	// Phrase, without any article or other determiners. For example, "Google
	// Cloud SQL Database".
	DisplayName string `json:"displayName,omitempty"`
	// Labels: Required. A set of labels used to describe instances of this
	// monitored resource type. For example, an individual Google Cloud SQL
	// database is identified by values for the labels "database_id" and
	// "zone".
	Labels []*LabelDescriptor `json:"labels,omitempty"`
	// LaunchStage: Optional. The launch stage of the monitored resource
	// definition.
	//
	// Possible values:
	//   "LAUNCH_STAGE_UNSPECIFIED" - Do not use this default value.
	//   "UNIMPLEMENTED" - The feature is not yet implemented. Users can not use
	// it.
	//   "PRELAUNCH" - Prelaunch features are hidden from users and are only
	// visible internally.
	//   "EARLY_ACCESS" - Early Access features are limited to a closed group of
	// testers. To use these features, you must sign up in advance and sign a
	// Trusted Tester agreement (which includes confidentiality provisions). These
	// features may be unstable, changed in backward-incompatible ways, and are not
	// guaranteed to be released.
	//   "ALPHA" - Alpha is a limited availability test for releases before they
	// are cleared for widespread use. By Alpha, all significant design issues are
	// resolved and we are in the process of verifying functionality. Alpha
	// customers need to apply for access, agree to applicable terms, and have
	// their projects allowlisted. Alpha releases don't have to be feature
	// complete, no SLAs are provided, and there are no technical support
	// obligations, but they will be far enough along that customers can actually
	// use them in test environments or for limited-use tests -- just like they
	// would in normal production cases.
	//   "BETA" - Beta is the point at which we are ready to open a release for any
	// customer to use. There are no SLA or technical support obligations in a Beta
	// release. Products will be complete from a feature perspective, but may have
	// some open outstanding issues. Beta releases are suitable for limited
	// production use cases.
	//   "GA" - GA features are open to all developers and are considered stable
	// and fully qualified for production use.
	//   "DEPRECATED" - Deprecated features are scheduled to be shut down and
	// removed. For more information, see the "Deprecation Policy" section of our
	// [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud
	// Platform Subject to the Deprecation
	// Policy](https://cloud.google.com/terms/deprecation) documentation.
	LaunchStage string `json:"launchStage,omitempty"`
	// Name: Optional. The resource name of the monitored resource descriptor:
	// "projects/{project_id}/monitoredResourceDescriptors/{type}" where {type}
	// is the value of the `type` field in this object and {project_id} is a
	// project ID that provides API-specific context for accessing the type. APIs
	// that do not use project information can use the resource name format
	// "monitoredResourceDescriptors/{type}".
	Name string `json:"name,omitempty"`
	// Type: Required. The monitored resource type. For example, the type
	// "cloudsql_database" represents databases in Google Cloud SQL. For a list
	// of types, see Monitored resource types
	// (https://cloud.google.com/monitoring/api/resources) and Logging resource
	// types (https://cloud.google.com/logging/docs/api/v2/resource-list).
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MonitoredResourceDescriptor) MarshalJSON() ([]byte, error) {
	type NoMethod MonitoredResourceDescriptor
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Monitoring: Monitoring configuration of the service. The example below shows
// how to configure monitored resources and metrics for monitoring. In the
// example, a monitored resource and two metrics are defined. The
// `library.googleapis.com/book/returned_count` metric is sent to both producer
// and consumer projects, whereas the `library.googleapis.com/book/num_overdue`
// metric is only sent to the consumer project. monitored_resources: - type:
// library.googleapis.com/Branch display_name: "Library Branch" description: "A
// branch of a library." launch_stage: GA labels: - key: resource_container
// description: "The Cloud container (ie. project id) for the Branch." - key:
// location description: "The location of the library branch." - key: branch_id
// description: "The id of the branch." metrics: - name:
// library.googleapis.com/book/returned_count display_name: "Books Returned"
// description: "The count of books that have been returned." launch_stage: GA
// metric_kind: DELTA value_type: INT64 unit: "1" labels: - key: customer_id
// description: "The id of the customer." - name:
// library.googleapis.com/book/num_overdue display_name: "Books Overdue"
// description: "The current number of overdue books." launch_stage: GA
// metric_kind: GAUGE value_type: INT64 unit: "1" labels: - key: customer_id
// description: "The id of the customer." monitoring: producer_destinations: -
// monitored_resource: library.googleapis.com/Branch metrics: -
// library.googleapis.com/book/returned_count consumer_destinations: -
// monitored_resource: library.googleapis.com/Branch metrics: -
// library.googleapis.com/book/returned_count -
// library.googleapis.com/book/num_overdue
type Monitoring struct {
	// ConsumerDestinations: Monitoring configurations for sending metrics to the
	// consumer project. There can be multiple consumer destinations. A monitored
	// resource type may appear in multiple monitoring destinations if different
	// aggregations are needed for different sets of metrics associated with that
	// monitored resource type. A monitored resource and metric pair may only be
	// used once in the Monitoring configuration.
	ConsumerDestinations []*MonitoringDestination `json:"consumerDestinations,omitempty"`
	// ProducerDestinations: Monitoring configurations for sending metrics to the
	// producer project. There can be multiple producer destinations. A monitored
	// resource type may appear in multiple monitoring destinations if different
	// aggregations are needed for different sets of metrics associated with that
	// monitored resource type. A monitored resource and metric pair may only be
	// used once in the Monitoring configuration.
	ProducerDestinations []*MonitoringDestination `json:"producerDestinations,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ConsumerDestinations") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ConsumerDestinations") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Monitoring) MarshalJSON() ([]byte, error) {
	type NoMethod Monitoring
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MonitoringDestination: Configuration of a specific monitoring destination
// (the producer project or the consumer project).
type MonitoringDestination struct {
	// Metrics: Types of the metrics to report to this monitoring destination. Each
	// type must be defined in Service.metrics section.
	Metrics []string `json:"metrics,omitempty"`
	// MonitoredResource: The monitored resource type. The type must be defined in
	// Service.monitored_resources section.
	MonitoredResource string `json:"monitoredResource,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Metrics") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Metrics") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MonitoringDestination) MarshalJSON() ([]byte, error) {
	type NoMethod MonitoringDestination
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// NodeSettings: Settings for Node client libraries.
type NodeSettings struct {
	// Common: Some settings.
	Common *CommonLanguageSettings `json:"common,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Common") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Common") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s NodeSettings) MarshalJSON() ([]byte, error) {
	type NoMethod NodeSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OAuthRequirements: OAuth scopes are a way to define data and permissions on
// data. For example, there are scopes defined for "Read-only access to Google
// Calendar" and "Access to Cloud Platform". Users can consent to a scope for
// an application, giving it permission to access that data on their behalf.
// OAuth scope specifications should be fairly coarse grained; a user will need
// to see and understand the text description of what your scope means. In most
// cases: use one or at most two OAuth scopes for an entire family of products.
// If your product has multiple APIs, you should probably be sharing the OAuth
// scope across all of those APIs. When you need finer grained OAuth consent
// screens: talk with your product management about how developers will use
// them in practice. Please note that even though each of the canonical scopes
// is enough for a request to be accepted and passed to the backend, a request
// can still fail due to the backend requiring additional scopes or
// permissions.
type OAuthRequirements struct {
	// CanonicalScopes: The list of publicly documented OAuth scopes that are
	// allowed access. An OAuth token containing any of these scopes will be
	// accepted. Example: canonical_scopes:
	// https://www.googleapis.com/auth/calendar,
	// https://www.googleapis.com/auth/calendar.read
	CanonicalScopes string `json:"canonicalScopes,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CanonicalScopes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CanonicalScopes") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OAuthRequirements) MarshalJSON() ([]byte, error) {
	type NoMethod OAuthRequirements
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Operation: This resource represents a long-running operation that is the
// result of a network API call.
type Operation struct {
	// Done: If the value is `false`, it means the operation is still in progress.
	// If `true`, the operation is completed, and either `error` or `response` is
	// available.
	Done bool `json:"done,omitempty"`
	// Error: The error result of the operation in case of failure or cancellation.
	Error *Status `json:"error,omitempty"`
	// Metadata: Service-specific metadata associated with the operation. It
	// typically contains progress information and common metadata such as create
	// time. Some services might not provide such metadata. Any method that returns
	// a long-running operation should document the metadata type, if any.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
	// Name: The server-assigned name, which is only unique within the same service
	// that originally returns it. If you use the default HTTP mapping, the `name`
	// should be a resource name ending with `operations/{unique_id}`.
	Name string `json:"name,omitempty"`
	// Response: The normal, successful response of the operation. If the original
	// method returns no data on success, such as `Delete`, the response is
	// `google.protobuf.Empty`. If the original method is standard
	// `Get`/`Create`/`Update`, the response should be the resource. For other
	// methods, the response should have the type `XxxResponse`, where `Xxx` is the
	// original method name. For example, if the original method name is
	// `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
	Response googleapi.RawMessage `json:"response,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Done") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Done") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Operation) MarshalJSON() ([]byte, error) {
	type NoMethod Operation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OperationInfo: A message representing the message types used by a
// long-running operation. Example: rpc Export(ExportRequest) returns
// (google.longrunning.Operation) { option (google.longrunning.operation_info)
// = { response_type: "ExportResponse" metadata_type: "ExportMetadata" }; }
type OperationInfo struct {
	// MetadataType: Required. The message name of the metadata type for this
	// long-running operation. If the response is in a different package from the
	// rpc, a fully-qualified message name must be used (e.g.
	// `google.protobuf.Struct`). Note: Altering this value constitutes a breaking
	// change.
	MetadataType string `json:"metadataType,omitempty"`
	// ResponseType: Required. The message name of the primary return type for this
	// long-running operation. This type will be used to deserialize the LRO's
	// response. If the response is in a different package from the rpc, a
	// fully-qualified message name must be used (e.g. `google.protobuf.Struct`).
	// Note: Altering this value constitutes a breaking change.
	ResponseType string `json:"responseType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MetadataType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MetadataType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OperationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod OperationInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OperationMetadata: The metadata associated with a long running operation
// resource.
type OperationMetadata struct {
	// ProgressPercentage: Percentage of completion of this operation, ranging from
	// 0 to 100.
	ProgressPercentage int64 `json:"progressPercentage,omitempty"`
	// ResourceNames: The full name of the resources that this operation is
	// directly associated with.
	ResourceNames []string `json:"resourceNames,omitempty"`
	// StartTime: The start time of the operation.
	StartTime string `json:"startTime,omitempty"`
	// Steps: Detailed status information for each step. The order is undetermined.
	Steps []*Step `json:"steps,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ProgressPercentage") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ProgressPercentage") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OperationMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod OperationMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Option: A protocol buffer option, which can be attached to a message, field,
// enumeration, etc. New usages of this message as an alternative to
// FileOptions, MessageOptions, FieldOptions, EnumOptions, EnumValueOptions,
// ServiceOptions, or MethodOptions are strongly discouraged.
type Option struct {
	// Name: The option's name. For protobuf built-in options (options defined in
	// descriptor.proto), this is the short name. For example, "map_entry". For
	// custom options, it should be the fully-qualified name. For example,
	// "google.api.http".
	Name string `json:"name,omitempty"`
	// Value: The option's value packed in an Any message. If the value is a
	// primitive, the corresponding wrapper type defined in
	// google/protobuf/wrappers.proto should be used. If the value is an enum, it
	// should be stored as an int32 value using the google.protobuf.Int32Value
	// type.
	Value googleapi.RawMessage `json:"value,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Option) MarshalJSON() ([]byte, error) {
	type NoMethod Option
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Page: Represents a documentation page. A page can contain subpages to
// represent nested documentation set structure.
type Page struct {
	// Content: The Markdown content of the page. You can use ```(== include {path}
	// ==)``` to include content from a Markdown file. The content can be used to
	// produce the documentation page such as HTML format page.
	Content string `json:"content,omitempty"`
	// Name: The name of the page. It will be used as an identity of the page to
	// generate URI of the page, text of the link to this page in navigation, etc.
	// The full page name (start from the root page name to this page concatenated
	// with `.`) can be used as reference to the page in your documentation. For
	// example: pages: - name: Tutorial content: (== include tutorial.md ==)
	// subpages: - name: Java content: (== include tutorial_java.md ==) You can
	// reference `Java` page using Markdown reference link syntax: `Java`.
	Name string `json:"name,omitempty"`
	// Subpages: Subpages of this page. The order of subpages specified here will
	// be honored in the generated docset.
	Subpages []*Page `json:"subpages,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Content") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Content") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Page) MarshalJSON() ([]byte, error) {
	type NoMethod Page
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PhpSettings: Settings for Php client libraries.
type PhpSettings struct {
	// Common: Some settings.
	Common *CommonLanguageSettings `json:"common,omitempty"`
	// LibraryPackage: The package name to use in Php. Clobbers the php_namespace
	// option set in the protobuf. This should be used **only** by APIs who have
	// already set the language_settings.php.package_name" field in gapic.yaml. API
	// teams should use the protobuf php_namespace option where possible. Example
	// of a YAML configuration:: publishing: library_settings: php_settings:
	// library_package: Google\Cloud\PubSub\V1
	LibraryPackage string `json:"libraryPackage,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Common") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Common") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PhpSettings) MarshalJSON() ([]byte, error) {
	type NoMethod PhpSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Policy: An Identity and Access Management (IAM) policy, which specifies
// access controls for Google Cloud resources. A `Policy` is a collection of
// `bindings`. A `binding` binds one or more `members`, or principals, to a
// single `role`. Principals can be user accounts, service accounts, Google
// groups, and domains (such as G Suite). A `role` is a named list of
// permissions; each `role` can be an IAM predefined role or a user-created
// custom role. For some types of Google Cloud resources, a `binding` can also
// specify a `condition`, which is a logical expression that allows access to a
// resource only if the expression evaluates to `true`. A condition can add
// constraints based on attributes of the request, the resource, or both. To
// learn which resources support conditions in their IAM policies, see the IAM
// documentation
// (https://cloud.google.com/iam/help/conditions/resource-policies). **JSON
// example:** ``` { "bindings": [ { "role":
// "roles/resourcemanager.organizationAdmin", "members": [
// "user:mike@example.com", "group:admins@example.com", "domain:google.com",
// "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, { "role":
// "roles/resourcemanager.organizationViewer", "members": [
// "user:eve@example.com" ], "condition": { "title": "expirable access",
// "description": "Does not grant access after Sep 2020", "expression":
// "request.time < timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
// "BwWWja0YfJA=", "version": 3 } ``` **YAML example:** ``` bindings: -
// members: - user:mike@example.com - group:admins@example.com -
// domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com
// role: roles/resourcemanager.organizationAdmin - members: -
// user:eve@example.com role: roles/resourcemanager.organizationViewer
// condition: title: expirable access description: Does not grant access after
// Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
// etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features,
// see the IAM documentation (https://cloud.google.com/iam/docs/).
type Policy struct {
	// AuditConfigs: Specifies cloud audit logging configuration for this policy.
	AuditConfigs []*AuditConfig `json:"auditConfigs,omitempty"`
	// Bindings: Associates a list of `members`, or principals, with a `role`.
	// Optionally, may specify a `condition` that determines how and when the
	// `bindings` are applied. Each of the `bindings` must contain at least one
	// principal. The `bindings` in a `Policy` can refer to up to 1,500 principals;
	// up to 250 of these principals can be Google groups. Each occurrence of a
	// principal counts towards these limits. For example, if the `bindings` grant
	// 50 different roles to `user:alice@example.com`, and not to any other
	// principal, then you can add another 1,450 principals to the `bindings` in
	// the `Policy`.
	Bindings []*Binding `json:"bindings,omitempty"`
	// Etag: `etag` is used for optimistic concurrency control as a way to help
	// prevent simultaneous updates of a policy from overwriting each other. It is
	// strongly suggested that systems make use of the `etag` in the
	// read-modify-write cycle to perform policy updates in order to avoid race
	// conditions: An `etag` is returned in the response to `getIamPolicy`, and
	// systems are expected to put that etag in the request to `setIamPolicy` to
	// ensure that their change will be applied to the same version of the policy.
	// **Important:** If you use IAM Conditions, you must include the `etag` field
	// whenever you call `setIamPolicy`. If you omit this field, then IAM allows
	// you to overwrite a version `3` policy with a version `1` policy, and all of
	// the conditions in the version `3` policy are lost.
	Etag string `json:"etag,omitempty"`
	// Version: Specifies the format of the policy. Valid values are `0`, `1`, and
	// `3`. Requests that specify an invalid value are rejected. Any operation that
	// affects conditional role bindings must specify version `3`. This requirement
	// applies to the following operations: * Getting a policy that includes a
	// conditional role binding * Adding a conditional role binding to a policy *
	// Changing a conditional role binding in a policy * Removing any role binding,
	// with or without a condition, from a policy that includes conditions
	// **Important:** If you use IAM Conditions, you must include the `etag` field
	// whenever you call `setIamPolicy`. If you omit this field, then IAM allows
	// you to overwrite a version `3` policy with a version `1` policy, and all of
	// the conditions in the version `3` policy are lost. If a policy does not
	// include any conditions, operations on that policy may specify any valid
	// version or leave the field unset. To learn which resources support
	// conditions in their IAM policies, see the IAM documentation
	// (https://cloud.google.com/iam/help/conditions/resource-policies).
	Version int64 `json:"version,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AuditConfigs") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AuditConfigs") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Policy) MarshalJSON() ([]byte, error) {
	type NoMethod Policy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Publishing: This message configures the settings for publishing Google Cloud
// Client libraries (https://cloud.google.com/apis/docs/cloud-client-libraries)
// generated from the service config.
type Publishing struct {
	// ApiShortName: Used as a tracking tag when collecting data about the APIs
	// developer relations artifacts like docs, packages delivered to package
	// managers, etc. Example: "speech".
	ApiShortName string `json:"apiShortName,omitempty"`
	// CodeownerGithubTeams: GitHub teams to be added to CODEOWNERS in the
	// directory in GitHub containing source code for the client libraries for this
	// API.
	CodeownerGithubTeams []string `json:"codeownerGithubTeams,omitempty"`
	// DocTagPrefix: A prefix used in sample code when demarking regions to be
	// included in documentation.
	DocTagPrefix string `json:"docTagPrefix,omitempty"`
	// DocumentationUri: Link to product home page. Example:
	// https://cloud.google.com/asset-inventory/docs/overview
	DocumentationUri string `json:"documentationUri,omitempty"`
	// GithubLabel: GitHub label to apply to issues and pull requests opened for
	// this API.
	GithubLabel string `json:"githubLabel,omitempty"`
	// LibrarySettings: Client library settings. If the same version string appears
	// multiple times in this list, then the last one wins. Settings from earlier
	// settings with the same version string are discarded.
	LibrarySettings []*ClientLibrarySettings `json:"librarySettings,omitempty"`
	// MethodSettings: A list of API method settings, e.g. the behavior for methods
	// that use the long-running operation pattern.
	MethodSettings []*MethodSettings `json:"methodSettings,omitempty"`
	// NewIssueUri: Link to a *public* URI where users can report issues. Example:
	// https://issuetracker.google.com/issues/new?component=190865&template=1161103
	NewIssueUri string `json:"newIssueUri,omitempty"`
	// Organization: For whom the client library is being published.
	//
	// Possible values:
	//   "CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED" - Not useful.
	//   "CLOUD" - Google Cloud Platform Org.
	//   "ADS" - Ads (Advertising) Org.
	//   "PHOTOS" - Photos Org.
	//   "STREET_VIEW" - Street View Org.
	//   "SHOPPING" - Shopping Org.
	//   "GEO" - Geo Org.
	//   "GENERATIVE_AI" - Generative AI - https://developers.generativeai.google
	//   "HEALTH" - Health Org.
	Organization string `json:"organization,omitempty"`
	// ProtoReferenceDocumentationUri: Optional link to proto reference
	// documentation. Example:
	// https://cloud.google.com/pubsub/lite/docs/reference/rpc
	ProtoReferenceDocumentationUri string `json:"protoReferenceDocumentationUri,omitempty"`
	// RestReferenceDocumentationUri: Optional link to REST reference
	// documentation. Example:
	// https://cloud.google.com/pubsub/lite/docs/reference/rest
	RestReferenceDocumentationUri string `json:"restReferenceDocumentationUri,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ApiShortName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ApiShortName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Publishing) MarshalJSON() ([]byte, error) {
	type NoMethod Publishing
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PythonSettings: Settings for Python client libraries.
type PythonSettings struct {
	// Common: Some settings.
	Common *CommonLanguageSettings `json:"common,omitempty"`
	// ExperimentalFeatures: Experimental features to be included during client
	// library generation.
	ExperimentalFeatures *ExperimentalFeatures `json:"experimentalFeatures,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Common") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Common") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s PythonSettings) MarshalJSON() ([]byte, error) {
	type NoMethod PythonSettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Quota: Quota configuration helps to achieve fairness and budgeting in
// service usage. The metric based quota configuration works this way: - The
// service configuration defines a set of metrics. - For API calls, the
// quota.metric_rules maps methods to metrics with corresponding costs. - The
// quota.limits defines limits on the metrics, which will be used for quota
// checks at runtime. An example quota configuration in yaml format: quota:
// limits: - name: apiWriteQpsPerProject metric:
// library.googleapis.com/write_calls unit: "1/min/{project}" # rate limit for
// consumer projects values: STANDARD: 10000 (The metric rules bind all methods
// to the read_calls metric, except for the UpdateBook and DeleteBook methods.
// These two methods are mapped to the write_calls metric, with the UpdateBook
// method consuming at twice rate as the DeleteBook method.) metric_rules: -
// selector: "*" metric_costs: library.googleapis.com/read_calls: 1 - selector:
// google.example.library.v1.LibraryService.UpdateBook metric_costs:
// library.googleapis.com/write_calls: 2 - selector:
// google.example.library.v1.LibraryService.DeleteBook metric_costs:
// library.googleapis.com/write_calls: 1 Corresponding Metric definition:
// metrics: - name: library.googleapis.com/read_calls display_name: Read
// requests metric_kind: DELTA value_type: INT64 - name:
// library.googleapis.com/write_calls display_name: Write requests metric_kind:
// DELTA value_type: INT64
type Quota struct {
	// Limits: List of QuotaLimit definitions for the service.
	Limits []*QuotaLimit `json:"limits,omitempty"`
	// MetricRules: List of MetricRule definitions, each one mapping a selected
	// method to one or more metrics.
	MetricRules []*MetricRule `json:"metricRules,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Limits") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Limits") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Quota) MarshalJSON() ([]byte, error) {
	type NoMethod Quota
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// QuotaLimit: `QuotaLimit` defines a specific limit that applies over a
// specified duration for a limit type. There can be at most one limit for a
// duration and limit type combination defined within a `QuotaGroup`.
type QuotaLimit struct {
	// DefaultLimit: Default number of tokens that can be consumed during the
	// specified duration. This is the number of tokens assigned when a client
	// application developer activates the service for his/her project. Specifying
	// a value of 0 will block all requests. This can be used if you are
	// provisioning quota to selected consumers and blocking others. Similarly, a
	// value of -1 will indicate an unlimited quota. No other negative values are
	// allowed. Used by group-based quotas only.
	DefaultLimit int64 `json:"defaultLimit,omitempty,string"`
	// Description: Optional. User-visible, extended description for this quota
	// limit. Should be used only when more context is needed to understand this
	// limit than provided by the limit's display name (see: `display_name`).
	Description string `json:"description,omitempty"`
	// DisplayName: User-visible display name for this limit. Optional. If not set,
	// the UI will provide a default display name based on the quota configuration.
	// This field can be used to override the default display name generated from
	// the configuration.
	DisplayName string `json:"displayName,omitempty"`
	// Duration: Duration of this limit in textual notation. Must be "100s" or
	// "1d". Used by group-based quotas only.
	Duration string `json:"duration,omitempty"`
	// FreeTier: Free tier value displayed in the Developers Console for this
	// limit. The free tier is the number of tokens that will be subtracted from
	// the billed amount when billing is enabled. This field can only be set on a
	// limit with duration "1d", in a billable group; it is invalid on any other
	// limit. If this field is not set, it defaults to 0, indicating that there is
	// no free tier for this service. Used by group-based quotas only.
	FreeTier int64 `json:"freeTier,omitempty,string"`
	// MaxLimit: Maximum number of tokens that can be consumed during the specified
	// duration. Client application developers can override the default limit up to
	// this maximum. If specified, this value cannot be set to a value less than
	// the default limit. If not specified, it is set to the default limit. To
	// allow clients to apply overrides with no upper bound, set this to -1,
	// indicating unlimited maximum quota. Used by group-based quotas only.
	MaxLimit int64 `json:"maxLimit,omitempty,string"`
	// Metric: The name of the metric this quota limit applies to. The quota limits
	// with the same metric will be checked together during runtime. The metric
	// must be defined within the service config.
	Metric string `json:"metric,omitempty"`
	// Name: Name of the quota limit. The name must be provided, and it must be
	// unique within the service. The name can only include alphanumeric characters
	// as well as '-'. The maximum length of the limit name is 64 characters.
	Name string `json:"name,omitempty"`
	// Unit: Specify the unit of the quota limit. It uses the same syntax as
	// MetricDescriptor.unit. The supported unit kinds are determined by the quota
	// backend system. Here are some examples: * "1/min/{project}" for quota per
	// minute per project. Note: the order of unit components is insignificant. The
	// "1" at the beginning is required to follow the metric unit syntax.
	Unit string `json:"unit,omitempty"`
	// Values: Tiered limit values. You must specify this as a key:value pair, with
	// an integer value that is the maximum number of requests allowed for the
	// specified unit. Currently only STANDARD is supported.
	Values map[string]string `json:"values,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DefaultLimit") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DefaultLimit") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s QuotaLimit) MarshalJSON() ([]byte, error) {
	type NoMethod QuotaLimit
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ResourceReference: Defines a proto annotation that describes a string field
// that refers to an API resource.
type ResourceReference struct {
	// ChildType: The resource type of a child collection that the annotated field
	// references. This is useful for annotating the `parent` field that doesn't
	// have a fixed resource type. Example: message ListLogEntriesRequest { string
	// parent = 1 [(google.api.resource_reference) = { child_type:
	// "logging.googleapis.com/LogEntry" }; }
	ChildType string `json:"childType,omitempty"`
	// Type: The resource type that the annotated field references. Example:
	// message Subscription { string topic = 2 [(google.api.resource_reference) = {
	// type: "pubsub.googleapis.com/Topic" }]; } Occasionally, a field may
	// reference an arbitrary resource. In this case, APIs use the special value *
	// in their resource reference. Example: message GetIamPolicyRequest { string
	// resource = 2 [(google.api.resource_reference) = { type: "*" }]; }
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ChildType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ChildType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ResourceReference) MarshalJSON() ([]byte, error) {
	type NoMethod ResourceReference
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Rollout: A rollout resource that defines how service configuration versions
// are pushed to control plane systems. Typically, you create a new version of
// the service config, and then create a Rollout to push the service config.
type Rollout struct {
	// CreateTime: Creation time of the rollout. Readonly.
	CreateTime string `json:"createTime,omitempty"`
	// CreatedBy: The user who created the Rollout. Readonly.
	CreatedBy string `json:"createdBy,omitempty"`
	// DeleteServiceStrategy: The strategy associated with a rollout to delete a
	// `ManagedService`. Readonly.
	DeleteServiceStrategy *DeleteServiceStrategy `json:"deleteServiceStrategy,omitempty"`
	// RolloutId: Optional. Unique identifier of this Rollout. Must be no longer
	// than 63 characters and only lower case letters, digits, '.', '_' and '-' are
	// allowed. If not specified by client, the server will generate one. The
	// generated id will have the form of , where "date" is the create date in ISO
	// 8601 format. "revision number" is a monotonically increasing positive number
	// that is reset every day for each service. An example of the generated
	// rollout_id is '2016-02-16r1'
	RolloutId string `json:"rolloutId,omitempty"`
	// ServiceName: The name of the service associated with this Rollout.
	ServiceName string `json:"serviceName,omitempty"`
	// Status: The status of this rollout. Readonly. In case of a failed rollout,
	// the system will automatically rollback to the current Rollout version.
	// Readonly.
	//
	// Possible values:
	//   "ROLLOUT_STATUS_UNSPECIFIED" - No status specified.
	//   "IN_PROGRESS" - The Rollout is in progress.
	//   "SUCCESS" - The Rollout has completed successfully.
	//   "CANCELLED" - The Rollout has been cancelled. This can happen if you have
	// overlapping Rollout pushes, and the previous ones will be cancelled.
	//   "FAILED" - The Rollout has failed and the rollback attempt has failed too.
	//   "PENDING" - The Rollout has not started yet and is pending for execution.
	//   "FAILED_ROLLED_BACK" - The Rollout has failed and rolled back to the
	// previous successful Rollout.
	Status string `json:"status,omitempty"`
	// TrafficPercentStrategy: Google Service Control selects service
	// configurations based on traffic percentage.
	TrafficPercentStrategy *TrafficPercentStrategy `json:"trafficPercentStrategy,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Rollout) MarshalJSON() ([]byte, error) {
	type NoMethod Rollout
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RubySettings: Settings for Ruby client libraries.
type RubySettings struct {
	// Common: Some settings.
	Common *CommonLanguageSettings `json:"common,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Common") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Common") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RubySettings) MarshalJSON() ([]byte, error) {
	type NoMethod RubySettings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SelectiveGapicGeneration: This message is used to configure the generation
// of a subset of the RPCs in a service for client libraries. Note: This
// feature should not be used in most cases.
type SelectiveGapicGeneration struct {
	// GenerateOmittedAsInternal: Setting this to true indicates to the client
	// generators that methods that would be excluded from the generation should
	// instead be generated in a way that indicates these methods should not be
	// consumed by end users. How this is expressed is up to individual language
	// implementations to decide. Some examples may be: added annotations,
	// obfuscated identifiers, or other language idiomatic patterns.
	GenerateOmittedAsInternal bool `json:"generateOmittedAsInternal,omitempty"`
	// Methods: An allowlist of the fully qualified names of RPCs that should be
	// included on public client surfaces.
	Methods []string `json:"methods,omitempty"`
	// ForceSendFields is a list of field names (e.g. "GenerateOmittedAsInternal")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GenerateOmittedAsInternal") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SelectiveGapicGeneration) MarshalJSON() ([]byte, error) {
	type NoMethod SelectiveGapicGeneration
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Service: `Service` is the root object of Google API service configuration
// (service config). It describes the basic information about a logical
// service, such as the service name and the user-facing title, and delegates
// other aspects to sub-sections. Each sub-section is either a proto message or
// a repeated proto message that configures a specific aspect, such as auth.
// For more information, see each proto message definition. Example: type:
// google.api.Service name: calendar.googleapis.com title: Google Calendar API
// apis: - name: google.calendar.v3.Calendar visibility: rules: - selector:
// "google.calendar.v3.*" restriction: PREVIEW backend: rules: - selector:
// "google.calendar.v3.*" address: calendar.example.com authentication:
// providers: - id: google_calendar_auth jwks_uri:
// https://www.googleapis.com/oauth2/v1/certs issuer:
// https://securetoken.google.com rules: - selector: "*" requirements:
// provider_id: google_calendar_auth
type Service struct {
	// Apis: A list of API interfaces exported by this service. Only the `name`
	// field of the google.protobuf.Api needs to be provided by the configuration
	// author, as the remaining fields will be derived from the IDL during the
	// normalization process. It is an error to specify an API interface here which
	// cannot be resolved against the associated IDL files.
	Apis []*Api `json:"apis,omitempty"`
	// Aspects: Configuration aspects. This is a repeated field to allow multiple
	// aspects to be configured. The kind field in each ConfigAspect specifies the
	// type of aspect. The spec field contains the configuration for that aspect.
	// The schema for the spec field is defined by the backend service owners.
	Aspects []*Aspect `json:"aspects,omitempty"`
	// Authentication: Auth configuration.
	Authentication *Authentication `json:"authentication,omitempty"`
	// Backend: API backend configuration.
	Backend *Backend `json:"backend,omitempty"`
	// Billing: Billing configuration.
	Billing *Billing `json:"billing,omitempty"`
	// ConfigVersion: Obsolete. Do not use. This field has no semantic meaning. The
	// service config compiler always sets this field to `3`.
	ConfigVersion int64 `json:"configVersion,omitempty"`
	// Context: Context configuration.
	Context *Context `json:"context,omitempty"`
	// Control: Configuration for the service control plane.
	Control *Control `json:"control,omitempty"`
	// CustomError: Custom error configuration.
	CustomError *CustomError `json:"customError,omitempty"`
	// Documentation: Additional API documentation.
	Documentation *Documentation `json:"documentation,omitempty"`
	// Endpoints: Configuration for network endpoints. If this is empty, then an
	// endpoint with the same name as the service is automatically generated to
	// service all defined APIs.
	Endpoints []*Endpoint `json:"endpoints,omitempty"`
	// Enums: A list of all enum types included in this API service. Enums
	// referenced directly or indirectly by the `apis` are automatically included.
	// Enums which are not referenced but shall be included should be listed here
	// by name by the configuration author. Example: enums: - name:
	// google.someapi.v1.SomeEnum
	Enums []*Enum `json:"enums,omitempty"`
	// Http: HTTP configuration.
	Http *Http `json:"http,omitempty"`
	// Id: A unique ID for a specific instance of this message, typically assigned
	// by the client for tracking purpose. Must be no longer than 63 characters and
	// only lower case letters, digits, '.', '_' and '-' are allowed. If empty, the
	// server may choose to generate one instead.
	Id string `json:"id,omitempty"`
	// Logging: Logging configuration.
	Logging *Logging `json:"logging,omitempty"`
	// Logs: Defines the logs used by this service.
	Logs []*LogDescriptor `json:"logs,omitempty"`
	// Metrics: Defines the metrics used by this service.
	Metrics []*MetricDescriptor `json:"metrics,omitempty"`
	// MonitoredResources: Defines the monitored resources used by this service.
	// This is required by the `Service.monitoring` and `Service.logging`
	// configurations.
	MonitoredResources []*MonitoredResourceDescriptor `json:"monitoredResources,omitempty"`
	// Monitoring: Monitoring configuration.
	Monitoring *Monitoring `json:"monitoring,omitempty"`
	// Name: The service name, which is a DNS-like logical identifier for the
	// service, such as `calendar.googleapis.com`. The service name typically goes
	// through DNS verification to make sure the owner of the service also owns the
	// DNS name.
	Name string `json:"name,omitempty"`
	// ProducerProjectId: The Google project that owns this service.
	ProducerProjectId string `json:"producerProjectId,omitempty"`
	// Publishing: Settings for Google Cloud Client libraries
	// (https://cloud.google.com/apis/docs/cloud-client-libraries) generated from
	// APIs defined as protocol buffers.
	Publishing *Publishing `json:"publishing,omitempty"`
	// Quota: Quota configuration.
	Quota *Quota `json:"quota,omitempty"`
	// SourceInfo: Output only. The source information for this configuration if
	// available.
	SourceInfo *SourceInfo `json:"sourceInfo,omitempty"`
	// SystemParameters: System parameter configuration.
	SystemParameters *SystemParameters `json:"systemParameters,omitempty"`
	// SystemTypes: A list of all proto message types included in this API service.
	// It serves similar purpose as [google.api.Service.types], except that these
	// types are not needed by user-defined APIs. Therefore, they will not show up
	// in the generated discovery doc. This field should only be used to define
	// system APIs in ESF.
	SystemTypes []*Type `json:"systemTypes,omitempty"`
	// Title: The product title for this service, it is the name displayed in
	// Google Cloud Console.
	Title string `json:"title,omitempty"`
	// Types: A list of all proto message types included in this API service. Types
	// referenced directly or indirectly by the `apis` are automatically included.
	// Messages which are not referenced but shall be included, such as types used
	// by the `google.protobuf.Any` type, should be listed here by name by the
	// configuration author. Example: types: - name: google.protobuf.Int32
	Types []*Type `json:"types,omitempty"`
	// Usage: Configuration controlling usage of this service.
	Usage *Usage `json:"usage,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Apis") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Apis") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Service) MarshalJSON() ([]byte, error) {
	type NoMethod Service
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SetIamPolicyRequest: Request message for `SetIamPolicy` method.
type SetIamPolicyRequest struct {
	// Policy: REQUIRED: The complete policy to be applied to the `resource`. The
	// size of the policy is limited to a few 10s of KB. An empty policy is a valid
	// policy but certain Google Cloud services (such as Projects) might reject
	// them.
	Policy *Policy `json:"policy,omitempty"`
	// UpdateMask: OPTIONAL: A FieldMask specifying which fields of the policy to
	// modify. Only the fields in the mask will be modified. If no mask is
	// provided, the following default mask is used: `paths: "bindings, etag"
	UpdateMask string `json:"updateMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Policy") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Policy") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SetIamPolicyRequest) MarshalJSON() ([]byte, error) {
	type NoMethod SetIamPolicyRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SourceContext: `SourceContext` represents information about the source of a
// protobuf element, like the file in which it is defined.
type SourceContext struct {
	// FileName: The path-qualified name of the .proto file that contained the
	// associated protobuf element. For example:
	// "google/protobuf/source_context.proto".
	FileName string `json:"fileName,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FileName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "FileName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SourceContext) MarshalJSON() ([]byte, error) {
	type NoMethod SourceContext
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SourceInfo: Source information used to create a Service Config
type SourceInfo struct {
	// SourceFiles: All files used during config generation.
	SourceFiles []googleapi.RawMessage `json:"sourceFiles,omitempty"`
	// ForceSendFields is a list of field names (e.g. "SourceFiles") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "SourceFiles") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SourceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SourceInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Status: The `Status` type defines a logical error model that is suitable for
// different programming environments, including REST APIs and RPC APIs. It is
// used by gRPC (https://github.com/grpc). Each `Status` message contains three
// pieces of data: error code, error message, and error details. You can find
// out more about this error model and how to work with it in the API Design
// Guide (https://cloud.google.com/apis/design/errors).
type Status struct {
	// Code: The status code, which should be an enum value of google.rpc.Code.
	Code int64 `json:"code,omitempty"`
	// Details: A list of messages that carry the error details. There is a common
	// set of message types for APIs to use.
	Details []googleapi.RawMessage `json:"details,omitempty"`
	// Message: A developer-facing error message, which should be in English. Any
	// user-facing error message should be localized and sent in the
	// google.rpc.Status.details field, or localized by the client.
	Message string `json:"message,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Code") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Code") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Status) MarshalJSON() ([]byte, error) {
	type NoMethod Status
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Step: Represents the status of one operation step.
type Step struct {
	// Description: The short description of the step.
	Description string `json:"description,omitempty"`
	// Status: The status code.
	//
	// Possible values:
	//   "STATUS_UNSPECIFIED" - Unspecified code.
	//   "DONE" - The operation or step has completed without errors.
	//   "NOT_STARTED" - The operation or step has not started yet.
	//   "IN_PROGRESS" - The operation or step is in progress.
	//   "FAILED" - The operation or step has completed with errors. If the
	// operation is rollbackable, the rollback completed with errors too.
	//   "CANCELLED" - The operation or step has completed with cancellation.
	Status string `json:"status,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Step) MarshalJSON() ([]byte, error) {
	type NoMethod Step
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SubmitConfigSourceRequest: Request message for SubmitConfigSource method.
type SubmitConfigSourceRequest struct {
	// ConfigSource: Required. The source configuration for the service.
	ConfigSource *ConfigSource `json:"configSource,omitempty"`
	// ValidateOnly: Optional. If set, this will result in the generation of a
	// `google.api.Service` configuration based on the `ConfigSource` provided, but
	// the generated config and the sources will NOT be persisted.
	ValidateOnly bool `json:"validateOnly,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ConfigSource") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ConfigSource") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SubmitConfigSourceRequest) MarshalJSON() ([]byte, error) {
	type NoMethod SubmitConfigSourceRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SubmitConfigSourceResponse: Response message for SubmitConfigSource method.
type SubmitConfigSourceResponse struct {
	// ServiceConfig: The generated service configuration.
	ServiceConfig *Service `json:"serviceConfig,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ServiceConfig") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ServiceConfig") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SubmitConfigSourceResponse) MarshalJSON() ([]byte, error) {
	type NoMethod SubmitConfigSourceResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SystemParameter: Define a parameter's name and location. The parameter may
// be passed as either an HTTP header or a URL query parameter, and if both are
// passed the behavior is implementation-dependent.
type SystemParameter struct {
	// HttpHeader: Define the HTTP header name to use for the parameter. It is case
	// insensitive.
	HttpHeader string `json:"httpHeader,omitempty"`
	// Name: Define the name of the parameter, such as "api_key" . It is case
	// sensitive.
	Name string `json:"name,omitempty"`
	// UrlQueryParameter: Define the URL query parameter name to use for the
	// parameter. It is case sensitive.
	UrlQueryParameter string `json:"urlQueryParameter,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HttpHeader") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HttpHeader") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SystemParameter) MarshalJSON() ([]byte, error) {
	type NoMethod SystemParameter
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SystemParameterRule: Define a system parameter rule mapping system parameter
// definitions to methods.
type SystemParameterRule struct {
	// Parameters: Define parameters. Multiple names may be defined for a
	// parameter. For a given method call, only one of them should be used. If
	// multiple names are used the behavior is implementation-dependent. If none of
	// the specified names are present the behavior is parameter-dependent.
	Parameters []*SystemParameter `json:"parameters,omitempty"`
	// Selector: Selects the methods to which this rule applies. Use '*' to
	// indicate all methods in all APIs. Refer to selector for syntax details.
	Selector string `json:"selector,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Parameters") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Parameters") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SystemParameterRule) MarshalJSON() ([]byte, error) {
	type NoMethod SystemParameterRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SystemParameters: ### System parameter configuration A system parameter is a
// special kind of parameter defined by the API system, not by an individual
// API. It is typically mapped to an HTTP header and/or a URL query parameter.
// This configuration specifies which methods change the names of the system
// parameters.
type SystemParameters struct {
	// Rules: Define system parameters. The parameters defined here will override
	// the default parameters implemented by the system. If this field is missing
	// from the service config, default system parameters will be used. Default
	// system parameters and names is implementation-dependent. Example: define api
	// key for all methods system_parameters rules: - selector: "*" parameters: -
	// name: api_key url_query_parameter: api_key Example: define 2 api key names
	// for a specific method. system_parameters rules: - selector: "/ListShelves"
	// parameters: - name: api_key http_header: Api-Key1 - name: api_key
	// http_header: Api-Key2 **NOTE:** All service configuration rules follow "last
	// one wins" order.
	Rules []*SystemParameterRule `json:"rules,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Rules") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Rules") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SystemParameters) MarshalJSON() ([]byte, error) {
	type NoMethod SystemParameters
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TestIamPermissionsRequest: Request message for `TestIamPermissions` method.
type TestIamPermissionsRequest struct {
	// Permissions: The set of permissions to check for the `resource`. Permissions
	// with wildcards (such as `*` or `storage.*`) are not allowed. For more
	// information see IAM Overview
	// (https://cloud.google.com/iam/docs/overview#permissions).
	Permissions []string `json:"permissions,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Permissions") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Permissions") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TestIamPermissionsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod TestIamPermissionsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TestIamPermissionsResponse: Response message for `TestIamPermissions`
// method.
type TestIamPermissionsResponse struct {
	// Permissions: A subset of `TestPermissionsRequest.permissions` that the
	// caller is allowed.
	Permissions []string `json:"permissions,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Permissions") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Permissions") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TestIamPermissionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod TestIamPermissionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TrafficPercentStrategy: Strategy that specifies how clients of Google
// Service Controller want to send traffic to use different config versions.
// This is generally used by API proxy to split traffic based on your
// configured percentage for each config version. One example of how to
// gradually rollout a new service configuration using this strategy: Day 1
// Rollout { id: "example.googleapis.com/rollout_20160206"
// traffic_percent_strategy { percentages: { "example.googleapis.com/20160201":
// 70.00 "example.googleapis.com/20160206": 30.00 } } } Day 2 Rollout { id:
// "example.googleapis.com/rollout_20160207" traffic_percent_strategy: {
// percentages: { "example.googleapis.com/20160206": 100.00 } } }
type TrafficPercentStrategy struct {
	// Percentages: Maps service configuration IDs to their corresponding traffic
	// percentage. Key is the service configuration ID, Value is the traffic
	// percentage which must be greater than 0.0 and the sum must equal to 100.0.
	Percentages map[string]float64 `json:"percentages,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Percentages") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Percentages") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TrafficPercentStrategy) MarshalJSON() ([]byte, error) {
	type NoMethod TrafficPercentStrategy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Type: A protocol buffer message type. New usages of this message as an
// alternative to DescriptorProto are strongly discouraged. This message does
// not reliability preserve all information necessary to model the schema and
// preserve semantics. Instead make use of FileDescriptorSet which preserves
// the necessary information.
type Type struct {
	// Edition: The source edition string, only valid when syntax is
	// SYNTAX_EDITIONS.
	Edition string `json:"edition,omitempty"`
	// Fields: The list of fields.
	Fields []*Field `json:"fields,omitempty"`
	// Name: The fully qualified message name.
	Name string `json:"name,omitempty"`
	// Oneofs: The list of types appearing in `oneof` definitions in this type.
	Oneofs []string `json:"oneofs,omitempty"`
	// Options: The protocol buffer options.
	Options []*Option `json:"options,omitempty"`
	// SourceContext: The source context.
	SourceContext *SourceContext `json:"sourceContext,omitempty"`
	// Syntax: The source syntax.
	//
	// Possible values:
	//   "SYNTAX_PROTO2" - Syntax `proto2`.
	//   "SYNTAX_PROTO3" - Syntax `proto3`.
	//   "SYNTAX_EDITIONS" - Syntax `editions`.
	Syntax string `json:"syntax,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Edition") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Edition") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Type) MarshalJSON() ([]byte, error) {
	type NoMethod Type
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// UndeleteServiceResponse: Response message for UndeleteService method.
type UndeleteServiceResponse struct {
	// Service: Revived service resource.
	Service *ManagedService `json:"service,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Service") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Service") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s UndeleteServiceResponse) MarshalJSON() ([]byte, error) {
	type NoMethod UndeleteServiceResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Usage: Configuration controlling usage of a service.
type Usage struct {
	// ProducerNotificationChannel: The full resource name of a channel used for
	// sending notifications to the service producer. Google Service Management
	// currently only supports Google Cloud Pub/Sub
	// (https://cloud.google.com/pubsub) as a notification channel. To use Google
	// Cloud Pub/Sub as the channel, this must be the name of a Cloud Pub/Sub topic
	// that uses the Cloud Pub/Sub topic name format documented in
	// https://cloud.google.com/pubsub/docs/overview.
	ProducerNotificationChannel string `json:"producerNotificationChannel,omitempty"`
	// Requirements: Requirements that must be satisfied before a consumer project
	// can use the service. Each requirement is of the form /; for example
	// 'serviceusage.googleapis.com/billing-enabled'. For Google APIs, a Terms of
	// Service requirement must be included here. Google Cloud APIs must include
	// "serviceusage.googleapis.com/tos/cloud". Other Google APIs should include
	// "serviceusage.googleapis.com/tos/universal". Additional ToS can be included
	// based on the business needs.
	Requirements []string `json:"requirements,omitempty"`
	// Rules: A list of usage rules that apply to individual API methods. **NOTE:**
	// All service configuration rules follow "last one wins" order.
	Rules []*UsageRule `json:"rules,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "ProducerNotificationChannel") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ProducerNotificationChannel") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Usage) MarshalJSON() ([]byte, error) {
	type NoMethod Usage
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// UsageRule: Usage configuration rules for the service.
type UsageRule struct {
	// AllowUnregisteredCalls: Use this rule to configure unregistered calls for
	// the service. Unregistered calls are calls that do not contain consumer
	// project identity. (Example: calls that do not contain an API key). WARNING:
	// By default, API methods do not allow unregistered calls, and each method
	// call must be identified by a consumer project identity.
	AllowUnregisteredCalls bool `json:"allowUnregisteredCalls,omitempty"`
	// Selector: Selects the methods to which this rule applies. Use '*' to
	// indicate all methods in all APIs. Refer to selector for syntax details.
	Selector string `json:"selector,omitempty"`
	// SkipServiceControl: If true, the selected method should skip service control
	// and the control plane features, such as quota and billing, will not be
	// available. This flag is used by Google Cloud Endpoints to bypass checks for
	// internal methods, such as service health check methods.
	SkipServiceControl bool `json:"skipServiceControl,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AllowUnregisteredCalls") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AllowUnregisteredCalls") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s UsageRule) MarshalJSON() ([]byte, error) {
	type NoMethod UsageRule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type OperationsGetCall struct {
	s            *APIService
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: 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.
//
// - name: The name of the operation resource.
func (r *OperationsService) Get(name string) *OperationsGetCall {
	c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *OperationsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.operations.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.operations.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.operations.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type OperationsListCall struct {
	s            *APIService
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists service operations that match the specified filter in the
// request.
func (r *OperationsService) List() *OperationsListCall {
	c := &OperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// Filter sets the optional parameter "filter": A string for filtering
// Operations. The following filter fields are supported: * serviceName:
// Required. Only `=` operator is allowed. * startTime: The time this job was
// started, in ISO 8601 format. Allowed operators are `>=`, `>`, `<=`, and `<`.
// * status: Can be `done`, `in_progress`, or `failed`. Allowed operators are
// `=`, and `!=`. Filter expression supports conjunction (AND) and disjunction
// (OR) logical operators. However, the serviceName restriction must be at the
// top-level and can only be combined with other restrictions via the AND
// logical operator. Examples: * `serviceName={some-service}.googleapis.com` *
// `serviceName={some-service}.googleapis.com AND startTime>="2017-02-01" *
// `serviceName={some-service}.googleapis.com AND status=done` *
// `serviceName={some-service}.googleapis.com AND (status=done OR
// startTime>="2017-02-01")`
func (c *OperationsListCall) Filter(filter string) *OperationsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// Name sets the optional parameter "name": Not used.
func (c *OperationsListCall) Name(name string) *OperationsListCall {
	c.urlParams_.Set("name", name)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// operations to return. If unspecified, defaults to 50. The maximum value is
// 100.
func (c *OperationsListCall) PageSize(pageSize int64) *OperationsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The standard list page
// token.
func (c *OperationsListCall) PageToken(pageToken string) *OperationsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// ReturnPartialSuccess sets the optional parameter "returnPartialSuccess":
// When set to `true`, operations that are reachable are returned as normal,
// and those that are unreachable are returned in the
// ListOperationsResponse.unreachable field. This can only be `true` when
// reading across collections. For example, when `parent` is set to
// "projects/example/locations/-". This field is not supported by default and
// will result in an `UNIMPLEMENTED` error if set unless explicitly documented
// otherwise in service or product specific documentation.
func (c *OperationsListCall) ReturnPartialSuccess(returnPartialSuccess bool) *OperationsListCall {
	c.urlParams_.Set("returnPartialSuccess", fmt.Sprint(returnPartialSuccess))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *OperationsListCall) Fields(s ...googleapi.Field) *OperationsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *OperationsListCall) IfNoneMatch(entityTag string) *OperationsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *OperationsListCall) Context(ctx context.Context) *OperationsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *OperationsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *OperationsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/operations")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.operations.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.operations.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListOperationsResponse.ServerResponse.Header or (if a response was returned
// at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
// check whether the returned error was because http.StatusNotModified was
// returned.
func (c *OperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListOperationsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.operations.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *OperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type ServicesCreateCall struct {
	s              *APIService
	managedservice *ManagedService
	urlParams_     gensupport.URLParams
	ctx_           context.Context
	header_        http.Header
}

// Create: Creates a new managed service. A managed service is immutable, and
// is subject to mandatory 30-day data retention. You cannot move a service or
// recreate it within 30 days after deletion. One producer project can own no
// more than 500 services. For security and reliability purposes, a production
// service should be hosted in a dedicated producer project. Operation
func (r *ServicesService) Create(managedservice *ManagedService) *ServicesCreateCall {
	c := &ServicesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.managedservice = managedservice
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesCreateCall) Fields(s ...googleapi.Field) *ServicesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesCreateCall) Context(ctx context.Context) *ServicesCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.managedservice)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesDeleteCall struct {
	s           *APIService
	serviceName string
	urlParams_  gensupport.URLParams
	ctx_        context.Context
	header_     http.Header
}

// Delete: Deletes a managed service. This method will change the service to
// the `Soft-Delete` state for 30 days. Within this period, service producers
// may call UndeleteService to restore the service. After 30 days, the service
// will be permanently deleted. Operation
//
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesService) Delete(serviceName string) *ServicesDeleteCall {
	c := &ServicesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesDeleteCall) Fields(s ...googleapi.Field) *ServicesDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesDeleteCall) Context(ctx context.Context) *ServicesDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesGenerateConfigReportCall struct {
	s                           *APIService
	generateconfigreportrequest *GenerateConfigReportRequest
	urlParams_                  gensupport.URLParams
	ctx_                        context.Context
	header_                     http.Header
}

// GenerateConfigReport: Generates and returns a report (errors, warnings and
// changes from existing configurations) associated with
// GenerateConfigReportRequest.new_value If
// GenerateConfigReportRequest.old_value is specified,
// GenerateConfigReportRequest will contain a single ChangeReport based on the
// comparison between GenerateConfigReportRequest.new_value and
// GenerateConfigReportRequest.old_value. If
// GenerateConfigReportRequest.old_value is not specified, this method will
// compare GenerateConfigReportRequest.new_value with the last pushed service
// configuration.
func (r *ServicesService) GenerateConfigReport(generateconfigreportrequest *GenerateConfigReportRequest) *ServicesGenerateConfigReportCall {
	c := &ServicesGenerateConfigReportCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.generateconfigreportrequest = generateconfigreportrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesGenerateConfigReportCall) Fields(s ...googleapi.Field) *ServicesGenerateConfigReportCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesGenerateConfigReportCall) Context(ctx context.Context) *ServicesGenerateConfigReportCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesGenerateConfigReportCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesGenerateConfigReportCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.generateconfigreportrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services:generateConfigReport")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.generateConfigReport", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.generateConfigReport" call.
// Any non-2xx status code is an error. Response headers are in either
// *GenerateConfigReportResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *ServicesGenerateConfigReportCall) Do(opts ...googleapi.CallOption) (*GenerateConfigReportResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &GenerateConfigReportResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.generateConfigReport", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesGetCall struct {
	s            *APIService
	serviceName  string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets a managed service. Authentication is required unless the service
// is public.
//
//   - serviceName: The name of the service. See the `ServiceManager` overview
//     for naming requirements. For example: `example.googleapis.com`.
func (r *ServicesService) Get(serviceName string) *ServicesGetCall {
	c := &ServicesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesGetCall) Fields(s ...googleapi.Field) *ServicesGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ServicesGetCall) IfNoneMatch(entityTag string) *ServicesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesGetCall) Context(ctx context.Context) *ServicesGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *ManagedService.ServerResponse.Header or (if a response was returned at all)
// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesGetCall) Do(opts ...googleapi.CallOption) (*ManagedService, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ManagedService{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesGetConfigCall struct {
	s            *APIService
	serviceName  string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// GetConfig: Gets a service configuration (version) for a managed service.
//
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesService) GetConfig(serviceName string) *ServicesGetConfigCall {
	c := &ServicesGetConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	return c
}

// ConfigId sets the optional parameter "configId": Required. The id of the
// service configuration resource. This field must be specified for the server
// to return all fields, including `SourceInfo`.
func (c *ServicesGetConfigCall) ConfigId(configId string) *ServicesGetConfigCall {
	c.urlParams_.Set("configId", configId)
	return c
}

// View sets the optional parameter "view": Specifies which parts of the
// Service Config should be returned in the response.
//
// Possible values:
//
//	"BASIC" - Server response includes all fields except SourceInfo.
//	"FULL" - Server response includes all fields including SourceInfo.
//
// SourceFiles are of type 'google.api.servicemanagement.v1.ConfigFile' and are
// only available for configs created using the SubmitConfigSource method.
func (c *ServicesGetConfigCall) View(view string) *ServicesGetConfigCall {
	c.urlParams_.Set("view", view)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesGetConfigCall) Fields(s ...googleapi.Field) *ServicesGetConfigCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ServicesGetConfigCall) IfNoneMatch(entityTag string) *ServicesGetConfigCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesGetConfigCall) Context(ctx context.Context) *ServicesGetConfigCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesGetConfigCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesGetConfigCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/config")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.getConfig", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.getConfig" call.
// Any non-2xx status code is an error. Response headers are in either
// *Service.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesGetConfigCall) Do(opts ...googleapi.CallOption) (*Service, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Service{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.getConfig", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesGetIamPolicyCall struct {
	s                   *APIService
	resource            string
	getiampolicyrequest *GetIamPolicyRequest
	urlParams_          gensupport.URLParams
	ctx_                context.Context
	header_             http.Header
}

// GetIamPolicy: Gets the access control policy for a resource. Returns an
// empty policy if the resource exists and does not have a policy set.
//
//   - resource: REQUIRED: The resource for which the policy is being requested.
//     See Resource names (https://cloud.google.com/apis/design/resource_names)
//     for the appropriate value for this field.
func (r *ServicesService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ServicesGetIamPolicyCall {
	c := &ServicesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.getiampolicyrequest = getiampolicyrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesGetIamPolicyCall) Fields(s ...googleapi.Field) *ServicesGetIamPolicyCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesGetIamPolicyCall) Context(ctx context.Context) *ServicesGetIamPolicyCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesGetIamPolicyCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.getiampolicyrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:getIamPolicy")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.getIamPolicy", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.getIamPolicy" call.
// Any non-2xx status code is an error. Response headers are in either
// *Policy.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Policy{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.getIamPolicy", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesListCall struct {
	s            *APIService
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists managed services. Returns all public services. For authenticated
// users, also returns all services the calling user has
// "servicemanagement.services.get" permission for.
func (r *ServicesService) List() *ServicesListCall {
	c := &ServicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// ConsumerId sets the optional parameter "consumerId": Include services
// consumed by the specified consumer. The Google Service Management
// implementation accepts the following forms: - project:
func (c *ServicesListCall) ConsumerId(consumerId string) *ServicesListCall {
	c.urlParams_.Set("consumerId", consumerId)
	return c
}

// PageSize sets the optional parameter "pageSize": The max number of items to
// include in the response list. Page size is 50 if not specified. Maximum
// value is 500.
func (c *ServicesListCall) PageSize(pageSize int64) *ServicesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Token identifying which
// result to start with; returned by a previous list call.
func (c *ServicesListCall) PageToken(pageToken string) *ServicesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// ProducerProjectId sets the optional parameter "producerProjectId": Include
// services produced by the specified project.
func (c *ServicesListCall) ProducerProjectId(producerProjectId string) *ServicesListCall {
	c.urlParams_.Set("producerProjectId", producerProjectId)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesListCall) Fields(s ...googleapi.Field) *ServicesListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ServicesListCall) IfNoneMatch(entityTag string) *ServicesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesListCall) Context(ctx context.Context) *ServicesListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListServicesResponse.ServerResponse.Header or (if a response was returned
// at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
// check whether the returned error was because http.StatusNotModified was
// returned.
func (c *ServicesListCall) Do(opts ...googleapi.CallOption) (*ListServicesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListServicesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ServicesListCall) Pages(ctx context.Context, f func(*ListServicesResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type ServicesSetIamPolicyCall struct {
	s                   *APIService
	resource            string
	setiampolicyrequest *SetIamPolicyRequest
	urlParams_          gensupport.URLParams
	ctx_                context.Context
	header_             http.Header
}

// SetIamPolicy: Sets the access control policy on the specified resource.
// Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`,
// and `PERMISSION_DENIED` errors.
//
//   - resource: REQUIRED: The resource for which the policy is being specified.
//     See Resource names (https://cloud.google.com/apis/design/resource_names)
//     for the appropriate value for this field.
func (r *ServicesService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ServicesSetIamPolicyCall {
	c := &ServicesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.setiampolicyrequest = setiampolicyrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesSetIamPolicyCall) Fields(s ...googleapi.Field) *ServicesSetIamPolicyCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesSetIamPolicyCall) Context(ctx context.Context) *ServicesSetIamPolicyCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesSetIamPolicyCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.setiampolicyrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:setIamPolicy")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.setIamPolicy", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.setIamPolicy" call.
// Any non-2xx status code is an error. Response headers are in either
// *Policy.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Policy{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.setIamPolicy", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesTestIamPermissionsCall struct {
	s                         *APIService
	resource                  string
	testiampermissionsrequest *TestIamPermissionsRequest
	urlParams_                gensupport.URLParams
	ctx_                      context.Context
	header_                   http.Header
}

// TestIamPermissions: Returns permissions that a caller has on the specified
// resource. If the resource does not exist, this will return an empty set of
// permissions, not a `NOT_FOUND` error. Note: This operation is designed to be
// used for building permission-aware UIs and command-line tools, not for
// authorization checking. This operation may "fail open" without warning.
//
//   - resource: REQUIRED: The resource for which the policy detail is being
//     requested. See Resource names
//     (https://cloud.google.com/apis/design/resource_names) for the appropriate
//     value for this field.
func (r *ServicesService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ServicesTestIamPermissionsCall {
	c := &ServicesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.testiampermissionsrequest = testiampermissionsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesTestIamPermissionsCall) Fields(s ...googleapi.Field) *ServicesTestIamPermissionsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesTestIamPermissionsCall) Context(ctx context.Context) *ServicesTestIamPermissionsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesTestIamPermissionsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.testiampermissionsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:testIamPermissions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.testIamPermissions", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.testIamPermissions" call.
// Any non-2xx status code is an error. Response headers are in either
// *TestIamPermissionsResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *ServicesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &TestIamPermissionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.testIamPermissions", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesUndeleteCall struct {
	s           *APIService
	serviceName string
	urlParams_  gensupport.URLParams
	ctx_        context.Context
	header_     http.Header
}

// Undelete: Revives a previously deleted managed service. The method restores
// the service using the configuration at the time the service was deleted. The
// target service must exist and must have been deleted within the last 30
// days. Operation
//
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesService) Undelete(serviceName string) *ServicesUndeleteCall {
	c := &ServicesUndeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesUndeleteCall) Fields(s ...googleapi.Field) *ServicesUndeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesUndeleteCall) Context(ctx context.Context) *ServicesUndeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesUndeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesUndeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}:undelete")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.undelete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.undelete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesUndeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.undelete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesConfigsCreateCall struct {
	s           *APIService
	serviceName string
	service     *Service
	urlParams_  gensupport.URLParams
	ctx_        context.Context
	header_     http.Header
}

// Create: Creates a new service configuration (version) for a managed service.
// This method only stores the service configuration. To roll out the service
// configuration to backend systems please call CreateServiceRollout. Only the
// 100 most recent service configurations and ones referenced by existing
// rollouts are kept for each service. The rest will be deleted eventually.
//
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesConfigsService) Create(serviceName string, service *Service) *ServicesConfigsCreateCall {
	c := &ServicesConfigsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	c.service = service
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesConfigsCreateCall) Fields(s ...googleapi.Field) *ServicesConfigsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesConfigsCreateCall) Context(ctx context.Context) *ServicesConfigsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesConfigsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesConfigsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.service)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/configs")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.configs.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.configs.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Service.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesConfigsCreateCall) Do(opts ...googleapi.CallOption) (*Service, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Service{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.configs.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesConfigsGetCall struct {
	s            *APIService
	serviceName  string
	configId     string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets a service configuration (version) for a managed service.
//
//   - configId: The id of the service configuration resource. This field must be
//     specified for the server to return all fields, including `SourceInfo`.
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesConfigsService) Get(serviceName string, configId string) *ServicesConfigsGetCall {
	c := &ServicesConfigsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	c.configId = configId
	return c
}

// View sets the optional parameter "view": Specifies which parts of the
// Service Config should be returned in the response.
//
// Possible values:
//
//	"BASIC" - Server response includes all fields except SourceInfo.
//	"FULL" - Server response includes all fields including SourceInfo.
//
// SourceFiles are of type 'google.api.servicemanagement.v1.ConfigFile' and are
// only available for configs created using the SubmitConfigSource method.
func (c *ServicesConfigsGetCall) View(view string) *ServicesConfigsGetCall {
	c.urlParams_.Set("view", view)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesConfigsGetCall) Fields(s ...googleapi.Field) *ServicesConfigsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ServicesConfigsGetCall) IfNoneMatch(entityTag string) *ServicesConfigsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesConfigsGetCall) Context(ctx context.Context) *ServicesConfigsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesConfigsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesConfigsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/configs/{configId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
		"configId":    c.configId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.configs.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.configs.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Service.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesConfigsGetCall) Do(opts ...googleapi.CallOption) (*Service, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Service{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.configs.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesConfigsListCall struct {
	s            *APIService
	serviceName  string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists the history of the service configuration for a managed service,
// from the newest to the oldest.
//
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesConfigsService) List(serviceName string) *ServicesConfigsListCall {
	c := &ServicesConfigsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	return c
}

// PageSize sets the optional parameter "pageSize": The max number of items to
// include in the response list. Page size is 50 if not specified. Maximum
// value is 100.
func (c *ServicesConfigsListCall) PageSize(pageSize int64) *ServicesConfigsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The token of the page to
// retrieve.
func (c *ServicesConfigsListCall) PageToken(pageToken string) *ServicesConfigsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesConfigsListCall) Fields(s ...googleapi.Field) *ServicesConfigsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ServicesConfigsListCall) IfNoneMatch(entityTag string) *ServicesConfigsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesConfigsListCall) Context(ctx context.Context) *ServicesConfigsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesConfigsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesConfigsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/configs")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.configs.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.configs.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListServiceConfigsResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *ServicesConfigsListCall) Do(opts ...googleapi.CallOption) (*ListServiceConfigsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListServiceConfigsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.configs.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ServicesConfigsListCall) Pages(ctx context.Context, f func(*ListServiceConfigsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type ServicesConfigsSubmitCall struct {
	s                         *APIService
	serviceName               string
	submitconfigsourcerequest *SubmitConfigSourceRequest
	urlParams_                gensupport.URLParams
	ctx_                      context.Context
	header_                   http.Header
}

// Submit: Creates a new service configuration (version) for a managed service
// based on user-supplied configuration source files (for example: OpenAPI
// Specification). This method stores the source configurations as well as the
// generated service configuration. To rollout the service configuration to
// other services, please call CreateServiceRollout. Only the 100 most recent
// configuration sources and ones referenced by existing service configurtions
// are kept for each service. The rest will be deleted eventually. Operation
//
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesConfigsService) Submit(serviceName string, submitconfigsourcerequest *SubmitConfigSourceRequest) *ServicesConfigsSubmitCall {
	c := &ServicesConfigsSubmitCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	c.submitconfigsourcerequest = submitconfigsourcerequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesConfigsSubmitCall) Fields(s ...googleapi.Field) *ServicesConfigsSubmitCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesConfigsSubmitCall) Context(ctx context.Context) *ServicesConfigsSubmitCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesConfigsSubmitCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesConfigsSubmitCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.submitconfigsourcerequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/configs:submit")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.configs.submit", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.configs.submit" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesConfigsSubmitCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.configs.submit", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesConsumersGetIamPolicyCall struct {
	s                   *APIService
	resource            string
	getiampolicyrequest *GetIamPolicyRequest
	urlParams_          gensupport.URLParams
	ctx_                context.Context
	header_             http.Header
}

// GetIamPolicy: Gets the access control policy for a resource. Returns an
// empty policy if the resource exists and does not have a policy set.
//
//   - resource: REQUIRED: The resource for which the policy is being requested.
//     See Resource names (https://cloud.google.com/apis/design/resource_names)
//     for the appropriate value for this field.
func (r *ServicesConsumersService) GetIamPolicy(resource string, getiampolicyrequest *GetIamPolicyRequest) *ServicesConsumersGetIamPolicyCall {
	c := &ServicesConsumersGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.getiampolicyrequest = getiampolicyrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesConsumersGetIamPolicyCall) Fields(s ...googleapi.Field) *ServicesConsumersGetIamPolicyCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesConsumersGetIamPolicyCall) Context(ctx context.Context) *ServicesConsumersGetIamPolicyCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesConsumersGetIamPolicyCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesConsumersGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.getiampolicyrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:getIamPolicy")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.consumers.getIamPolicy", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.consumers.getIamPolicy" call.
// Any non-2xx status code is an error. Response headers are in either
// *Policy.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesConsumersGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Policy{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.consumers.getIamPolicy", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesConsumersSetIamPolicyCall struct {
	s                   *APIService
	resource            string
	setiampolicyrequest *SetIamPolicyRequest
	urlParams_          gensupport.URLParams
	ctx_                context.Context
	header_             http.Header
}

// SetIamPolicy: Sets the access control policy on the specified resource.
// Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`,
// and `PERMISSION_DENIED` errors.
//
//   - resource: REQUIRED: The resource for which the policy is being specified.
//     See Resource names (https://cloud.google.com/apis/design/resource_names)
//     for the appropriate value for this field.
func (r *ServicesConsumersService) SetIamPolicy(resource string, setiampolicyrequest *SetIamPolicyRequest) *ServicesConsumersSetIamPolicyCall {
	c := &ServicesConsumersSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.setiampolicyrequest = setiampolicyrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesConsumersSetIamPolicyCall) Fields(s ...googleapi.Field) *ServicesConsumersSetIamPolicyCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesConsumersSetIamPolicyCall) Context(ctx context.Context) *ServicesConsumersSetIamPolicyCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesConsumersSetIamPolicyCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesConsumersSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.setiampolicyrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:setIamPolicy")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.consumers.setIamPolicy", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.consumers.setIamPolicy" call.
// Any non-2xx status code is an error. Response headers are in either
// *Policy.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesConsumersSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Policy{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.consumers.setIamPolicy", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesConsumersTestIamPermissionsCall struct {
	s                         *APIService
	resource                  string
	testiampermissionsrequest *TestIamPermissionsRequest
	urlParams_                gensupport.URLParams
	ctx_                      context.Context
	header_                   http.Header
}

// TestIamPermissions: Returns permissions that a caller has on the specified
// resource. If the resource does not exist, this will return an empty set of
// permissions, not a `NOT_FOUND` error. Note: This operation is designed to be
// used for building permission-aware UIs and command-line tools, not for
// authorization checking. This operation may "fail open" without warning.
//
//   - resource: REQUIRED: The resource for which the policy detail is being
//     requested. See Resource names
//     (https://cloud.google.com/apis/design/resource_names) for the appropriate
//     value for this field.
func (r *ServicesConsumersService) TestIamPermissions(resource string, testiampermissionsrequest *TestIamPermissionsRequest) *ServicesConsumersTestIamPermissionsCall {
	c := &ServicesConsumersTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.resource = resource
	c.testiampermissionsrequest = testiampermissionsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesConsumersTestIamPermissionsCall) Fields(s ...googleapi.Field) *ServicesConsumersTestIamPermissionsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesConsumersTestIamPermissionsCall) Context(ctx context.Context) *ServicesConsumersTestIamPermissionsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesConsumersTestIamPermissionsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesConsumersTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.testiampermissionsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+resource}:testIamPermissions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"resource": c.resource,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.consumers.testIamPermissions", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.consumers.testIamPermissions" call.
// Any non-2xx status code is an error. Response headers are in either
// *TestIamPermissionsResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *ServicesConsumersTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestIamPermissionsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &TestIamPermissionsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.consumers.testIamPermissions", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesRolloutsCreateCall struct {
	s           *APIService
	serviceName string
	rollout     *Rollout
	urlParams_  gensupport.URLParams
	ctx_        context.Context
	header_     http.Header
}

// Create: Creates a new service configuration rollout. Based on rollout, the
// Google Service Management will roll out the service configurations to
// different backend services. For example, the logging configuration will be
// pushed to Google Cloud Logging. Please note that any previous pending and
// running Rollouts and associated Operations will be automatically cancelled
// so that the latest Rollout will not be blocked by previous Rollouts. Only
// the 100 most recent (in any state) and the last 10 successful (if not
// already part of the set of 100 most recent) rollouts are kept for each
// service. The rest will be deleted eventually. Operation
//
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesRolloutsService) Create(serviceName string, rollout *Rollout) *ServicesRolloutsCreateCall {
	c := &ServicesRolloutsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	c.rollout = rollout
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesRolloutsCreateCall) Fields(s ...googleapi.Field) *ServicesRolloutsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesRolloutsCreateCall) Context(ctx context.Context) *ServicesRolloutsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesRolloutsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesRolloutsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.rollout)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/rollouts")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.rollouts.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.rollouts.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesRolloutsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.rollouts.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesRolloutsGetCall struct {
	s            *APIService
	serviceName  string
	rolloutId    string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Gets a service configuration rollout.
//
//   - rolloutId: The id of the rollout resource.
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesRolloutsService) Get(serviceName string, rolloutId string) *ServicesRolloutsGetCall {
	c := &ServicesRolloutsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	c.rolloutId = rolloutId
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesRolloutsGetCall) Fields(s ...googleapi.Field) *ServicesRolloutsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ServicesRolloutsGetCall) IfNoneMatch(entityTag string) *ServicesRolloutsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesRolloutsGetCall) Context(ctx context.Context) *ServicesRolloutsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesRolloutsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesRolloutsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/rollouts/{rolloutId}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
		"rolloutId":   c.rolloutId,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.rollouts.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.rollouts.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Rollout.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ServicesRolloutsGetCall) Do(opts ...googleapi.CallOption) (*Rollout, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Rollout{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.rollouts.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ServicesRolloutsListCall struct {
	s            *APIService
	serviceName  string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists the history of the service configuration rollouts for a managed
// service, from the newest to the oldest.
//
//   - serviceName: The name of the service. See the overview
//     (https://cloud.google.com/service-management/overview) for naming
//     requirements. For example: `example.googleapis.com`.
func (r *ServicesRolloutsService) List(serviceName string) *ServicesRolloutsListCall {
	c := &ServicesRolloutsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.serviceName = serviceName
	return c
}

// Filter sets the optional parameter "filter": Required. Use `filter` to
// return subset of rollouts. The following filters are supported: -- By
// status. For example, `filter='status=SUCCESS'` -- By strategy. For example,
// `filter='strategy=TrafficPercentStrategy'`
func (c *ServicesRolloutsListCall) Filter(filter string) *ServicesRolloutsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The max number of items to
// include in the response list. Page size is 50 if not specified. Maximum
// value is 100.
func (c *ServicesRolloutsListCall) PageSize(pageSize int64) *ServicesRolloutsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The token of the page to
// retrieve.
func (c *ServicesRolloutsListCall) PageToken(pageToken string) *ServicesRolloutsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ServicesRolloutsListCall) Fields(s ...googleapi.Field) *ServicesRolloutsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ServicesRolloutsListCall) IfNoneMatch(entityTag string) *ServicesRolloutsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ServicesRolloutsListCall) Context(ctx context.Context) *ServicesRolloutsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ServicesRolloutsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ServicesRolloutsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/services/{serviceName}/rollouts")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"serviceName": c.serviceName,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "servicemanagement.services.rollouts.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "servicemanagement.services.rollouts.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListServiceRolloutsResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *ServicesRolloutsListCall) Do(opts ...googleapi.CallOption) (*ListServiceRolloutsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListServiceRolloutsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "servicemanagement.services.rollouts.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ServicesRolloutsListCall) Pages(ctx context.Context, f func(*ListServiceRolloutsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}
