// 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 firebaseappcheck provides access to the Firebase App Check API.
//
// For product documentation, see: https://firebase.google.com/docs/app-check
//
// # 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/firebaseappcheck/v1"
//	...
//	ctx := context.Background()
//	firebaseappcheckService, err := firebaseappcheck.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]:
//
//	firebaseappcheckService, err := firebaseappcheck.NewService(ctx, option.WithScopes(firebaseappcheck.FirebaseScope))
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	firebaseappcheckService, err := firebaseappcheck.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, ...)
//	firebaseappcheckService, err := firebaseappcheck.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package firebaseappcheck // import "google.golang.org/api/firebaseappcheck/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 = "firebaseappcheck:v1"
const apiName = "firebaseappcheck"
const apiVersion = "v1"
const basePath = "https://firebaseappcheck.googleapis.com/"
const basePathTemplate = "https://firebaseappcheck.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://firebaseappcheck.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 and administer all your Firebase data and settings
	FirebaseScope = "https://www.googleapis.com/auth/firebase"
)

// NewService creates a new Service.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
	scopesOption := internaloption.WithDefaultScopes(
		"https://www.googleapis.com/auth/cloud-platform",
		"https://www.googleapis.com/auth/firebase",
	)
	// 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 := &Service{client: client, BasePath: basePath, logger: internaloption.GetLogger(opts)}
	s.Jwks = NewJwksService(s)
	s.OauthClients = NewOauthClientsService(s)
	s.Projects = NewProjectsService(s)
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

// New creates a new Service. 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) (*Service, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	return NewService(context.TODO(), option.WithHTTPClient(client))
}

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

	Jwks *JwksService

	OauthClients *OauthClientsService

	Projects *ProjectsService
}

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

func NewJwksService(s *Service) *JwksService {
	rs := &JwksService{s: s}
	return rs
}

type JwksService struct {
	s *Service
}

func NewOauthClientsService(s *Service) *OauthClientsService {
	rs := &OauthClientsService{s: s}
	return rs
}

type OauthClientsService struct {
	s *Service
}

func NewProjectsService(s *Service) *ProjectsService {
	rs := &ProjectsService{s: s}
	rs.Apps = NewProjectsAppsService(s)
	rs.Services = NewProjectsServicesService(s)
	return rs
}

type ProjectsService struct {
	s *Service

	Apps *ProjectsAppsService

	Services *ProjectsServicesService
}

func NewProjectsAppsService(s *Service) *ProjectsAppsService {
	rs := &ProjectsAppsService{s: s}
	rs.AppAttestConfig = NewProjectsAppsAppAttestConfigService(s)
	rs.DebugTokens = NewProjectsAppsDebugTokensService(s)
	rs.DeviceCheckConfig = NewProjectsAppsDeviceCheckConfigService(s)
	rs.PlayIntegrityConfig = NewProjectsAppsPlayIntegrityConfigService(s)
	rs.RecaptchaEnterpriseConfig = NewProjectsAppsRecaptchaEnterpriseConfigService(s)
	rs.RecaptchaV3Config = NewProjectsAppsRecaptchaV3ConfigService(s)
	return rs
}

type ProjectsAppsService struct {
	s *Service

	AppAttestConfig *ProjectsAppsAppAttestConfigService

	DebugTokens *ProjectsAppsDebugTokensService

	DeviceCheckConfig *ProjectsAppsDeviceCheckConfigService

	PlayIntegrityConfig *ProjectsAppsPlayIntegrityConfigService

	RecaptchaEnterpriseConfig *ProjectsAppsRecaptchaEnterpriseConfigService

	RecaptchaV3Config *ProjectsAppsRecaptchaV3ConfigService
}

func NewProjectsAppsAppAttestConfigService(s *Service) *ProjectsAppsAppAttestConfigService {
	rs := &ProjectsAppsAppAttestConfigService{s: s}
	return rs
}

type ProjectsAppsAppAttestConfigService struct {
	s *Service
}

func NewProjectsAppsDebugTokensService(s *Service) *ProjectsAppsDebugTokensService {
	rs := &ProjectsAppsDebugTokensService{s: s}
	return rs
}

type ProjectsAppsDebugTokensService struct {
	s *Service
}

func NewProjectsAppsDeviceCheckConfigService(s *Service) *ProjectsAppsDeviceCheckConfigService {
	rs := &ProjectsAppsDeviceCheckConfigService{s: s}
	return rs
}

type ProjectsAppsDeviceCheckConfigService struct {
	s *Service
}

func NewProjectsAppsPlayIntegrityConfigService(s *Service) *ProjectsAppsPlayIntegrityConfigService {
	rs := &ProjectsAppsPlayIntegrityConfigService{s: s}
	return rs
}

type ProjectsAppsPlayIntegrityConfigService struct {
	s *Service
}

func NewProjectsAppsRecaptchaEnterpriseConfigService(s *Service) *ProjectsAppsRecaptchaEnterpriseConfigService {
	rs := &ProjectsAppsRecaptchaEnterpriseConfigService{s: s}
	return rs
}

type ProjectsAppsRecaptchaEnterpriseConfigService struct {
	s *Service
}

func NewProjectsAppsRecaptchaV3ConfigService(s *Service) *ProjectsAppsRecaptchaV3ConfigService {
	rs := &ProjectsAppsRecaptchaV3ConfigService{s: s}
	return rs
}

type ProjectsAppsRecaptchaV3ConfigService struct {
	s *Service
}

func NewProjectsServicesService(s *Service) *ProjectsServicesService {
	rs := &ProjectsServicesService{s: s}
	rs.ResourcePolicies = NewProjectsServicesResourcePoliciesService(s)
	return rs
}

type ProjectsServicesService struct {
	s *Service

	ResourcePolicies *ProjectsServicesResourcePoliciesService
}

func NewProjectsServicesResourcePoliciesService(s *Service) *ProjectsServicesResourcePoliciesService {
	rs := &ProjectsServicesResourcePoliciesService{s: s}
	return rs
}

type ProjectsServicesResourcePoliciesService struct {
	s *Service
}

// GoogleFirebaseAppcheckV1AppAttestConfig: An app's App Attest configuration
// object. This configuration controls certain properties of the
// `AppCheckToken` returned by ExchangeAppAttestAttestation and
// ExchangeAppAttestAssertion, such as its ttl. Note that the Team ID
// registered with your app is used as part of the validation process. Please
// register it via the Firebase Console or programmatically via the Firebase
// Management Service
// (https://firebase.google.com/docs/projects/api/reference/rest/v11/projects.iosApps/patch).
type GoogleFirebaseAppcheckV1AppAttestConfig struct {
	// Name: Required. The relative resource name of the App Attest configuration
	// object, in the format: ```
	// projects/{project_number}/apps/{app_id}/appAttestConfig ```
	Name string `json:"name,omitempty"`
	// TokenTtl: Specifies the duration for which App Check tokens exchanged from
	// App Attest artifacts will be valid. If unset, a default value of 1 hour is
	// assumed. Must be between 30 minutes and 7 days, inclusive.
	TokenTtl string `json:"tokenTtl,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// 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 GoogleFirebaseAppcheckV1AppAttestConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1AppAttestConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1AppCheckToken: Encapsulates an *App Check token*,
// which are used to access backend services protected by App Check.
type GoogleFirebaseAppcheckV1AppCheckToken struct {
	// Token: The App Check token. App Check tokens are signed JWTs
	// (https://tools.ietf.org/html/rfc7519) containing claims that identify the
	// attested app and GCP project. This token is used to access Google services
	// protected by App Check. These tokens can also be verified by your own custom
	// backends
	// (https://firebase.google.com/docs/app-check/custom-resource-backend) using
	// the Firebase Admin SDK or third-party libraries.
	Token string `json:"token,omitempty"`
	// Ttl: The duration from the time this token is minted until its expiration.
	// This field is intended to ease client-side token management, since the
	// client may have clock skew, but is still able to accurately measure a
	// duration.
	Ttl string `json:"ttl,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Token") 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. "Token") 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 GoogleFirebaseAppcheckV1AppCheckToken) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1AppCheckToken
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchGetAppAttestConfigsResponse: Response message
// for the BatchGetAppAttestConfigs method.
type GoogleFirebaseAppcheckV1BatchGetAppAttestConfigsResponse struct {
	// Configs: AppAttestConfigs retrieved.
	Configs []*GoogleFirebaseAppcheckV1AppAttestConfig `json:"configs,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Configs") 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. "Configs") 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 GoogleFirebaseAppcheckV1BatchGetAppAttestConfigsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchGetAppAttestConfigsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchGetDeviceCheckConfigsResponse: Response message
// for the BatchGetDeviceCheckConfigs method.
type GoogleFirebaseAppcheckV1BatchGetDeviceCheckConfigsResponse struct {
	// Configs: DeviceCheckConfigs retrieved.
	Configs []*GoogleFirebaseAppcheckV1DeviceCheckConfig `json:"configs,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Configs") 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. "Configs") 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 GoogleFirebaseAppcheckV1BatchGetDeviceCheckConfigsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchGetDeviceCheckConfigsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchGetPlayIntegrityConfigsResponse: Response
// message for the BatchGetPlayIntegrityConfigs method.
type GoogleFirebaseAppcheckV1BatchGetPlayIntegrityConfigsResponse struct {
	// Configs: PlayIntegrityConfigs retrieved.
	Configs []*GoogleFirebaseAppcheckV1PlayIntegrityConfig `json:"configs,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Configs") 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. "Configs") 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 GoogleFirebaseAppcheckV1BatchGetPlayIntegrityConfigsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchGetPlayIntegrityConfigsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchGetRecaptchaEnterpriseConfigsResponse: Response
// message for the BatchGetRecaptchaEnterpriseConfigs method.
type GoogleFirebaseAppcheckV1BatchGetRecaptchaEnterpriseConfigsResponse struct {
	// Configs: RecaptchaEnterpriseConfigs retrieved.
	Configs []*GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig `json:"configs,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Configs") 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. "Configs") 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 GoogleFirebaseAppcheckV1BatchGetRecaptchaEnterpriseConfigsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchGetRecaptchaEnterpriseConfigsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchGetRecaptchaV3ConfigsResponse: Response message
// for the BatchGetRecaptchaV3Configs method.
type GoogleFirebaseAppcheckV1BatchGetRecaptchaV3ConfigsResponse struct {
	// Configs: RecaptchaV3Configs retrieved.
	Configs []*GoogleFirebaseAppcheckV1RecaptchaV3Config `json:"configs,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Configs") 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. "Configs") 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 GoogleFirebaseAppcheckV1BatchGetRecaptchaV3ConfigsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchGetRecaptchaV3ConfigsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesRequest: Request message
// for the BatchUpdateResourcePolicies method.
type GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesRequest struct {
	// Requests: Required. The request messages specifying the ResourcePolicy
	// objects to update. A maximum of 100 objects can be updated in a batch.
	Requests []*GoogleFirebaseAppcheckV1UpdateResourcePolicyRequest `json:"requests,omitempty"`
	// UpdateMask: Optional. A comma-separated list of names of fields in the
	// ResourcePolicy objects to update. Example: `enforcement_mode`. If this field
	// is present, the `update_mask` field in the UpdateResourcePolicyRequest
	// messages must all match this field, or the entire batch fails and no updates
	// will be committed.
	UpdateMask string `json:"updateMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Requests") 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. "Requests") 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 GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesResponse: Response
// message for the BatchUpdateResourcePolicies method.
type GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesResponse struct {
	// ResourcePolicies: ResourcePolicy objects after the updates have been
	// applied.
	ResourcePolicies []*GoogleFirebaseAppcheckV1ResourcePolicy `json:"resourcePolicies,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ResourcePolicies") 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. "ResourcePolicies") 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 GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchUpdateServicesRequest: Request message for the
// BatchUpdateServices method.
type GoogleFirebaseAppcheckV1BatchUpdateServicesRequest struct {
	// Requests: Required. The request messages specifying the Services to update.
	// A maximum of 100 objects can be updated in a batch.
	Requests []*GoogleFirebaseAppcheckV1UpdateServiceRequest `json:"requests,omitempty"`
	// UpdateMask: Optional. A comma-separated list of names of fields in the
	// Services to update. Example: `display_name`. If the `update_mask` field is
	// set in both this request and any of the UpdateServiceRequest messages, they
	// must match or the entire batch fails and no updates will be committed.
	UpdateMask string `json:"updateMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Requests") 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. "Requests") 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 GoogleFirebaseAppcheckV1BatchUpdateServicesRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchUpdateServicesRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1BatchUpdateServicesResponse: Response message for
// the BatchUpdateServices method.
type GoogleFirebaseAppcheckV1BatchUpdateServicesResponse struct {
	// Services: Service objects after the updates have been applied.
	Services []*GoogleFirebaseAppcheckV1Service `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. "Services") 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. "Services") 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 GoogleFirebaseAppcheckV1BatchUpdateServicesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1BatchUpdateServicesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1DebugToken: A *debug token* is a secret used during
// the development or integration testing of an app. It essentially allows the
// development or integration testing to bypass app attestation while still
// allowing App Check to enforce protection on supported production Firebase
// services.
type GoogleFirebaseAppcheckV1DebugToken struct {
	// DisplayName: Required. A human readable display name used to identify this
	// debug token.
	DisplayName string `json:"displayName,omitempty"`
	// Etag: Optional. This checksum is computed by the server based on the value
	// of other fields, and may be sent on update and delete requests to ensure the
	// client has an up-to-date value before proceeding. This etag is strongly
	// validated as defined by RFC 7232.
	Etag string `json:"etag,omitempty"`
	// Name: Required. The relative resource name of the debug token, in the
	// format: ```
	// projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```
	Name string `json:"name,omitempty"`
	// Token: Required. Input only. Immutable. The secret token itself. Must be
	// provided during creation, and must be a UUID4, case insensitive. This field
	// is immutable once set, and cannot be provided during a UpdateDebugToken
	// request. You can, however, delete this debug token using DeleteDebugToken to
	// revoke it. For security reasons, this field will never be populated in any
	// response.
	Token string `json:"token,omitempty"`
	// UpdateTime: Output only. Timestamp when this debug token was most recently
	// updated.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") 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. "DisplayName") 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 GoogleFirebaseAppcheckV1DebugToken) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1DebugToken
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1DeviceCheckConfig: An app's DeviceCheck
// configuration object. This configuration is used by ExchangeDeviceCheckToken
// to validate device tokens issued to apps by DeviceCheck. It also controls
// certain properties of the returned `AppCheckToken`, such as its ttl. Note
// that the Team ID registered with your app is used as part of the validation
// process. Please register it via the Firebase Console or programmatically via
// the Firebase Management Service
// (https://firebase.google.com/docs/projects/api/reference/rest/v11/projects.iosApps/patch).
type GoogleFirebaseAppcheckV1DeviceCheckConfig struct {
	// KeyId: Required. The key identifier of a private key enabled with
	// DeviceCheck, created in your Apple Developer account.
	KeyId string `json:"keyId,omitempty"`
	// Name: Required. The relative resource name of the DeviceCheck configuration
	// object, in the format: ```
	// projects/{project_number}/apps/{app_id}/deviceCheckConfig ```
	Name string `json:"name,omitempty"`
	// PrivateKey: Required. Input only. The contents of the private key (`.p8`)
	// file associated with the key specified by `key_id`. For security reasons,
	// this field will never be populated in any response.
	PrivateKey string `json:"privateKey,omitempty"`
	// PrivateKeySet: Output only. Whether the `private_key` field was previously
	// set. Since we will never return the `private_key` field, this field is the
	// only way to find out whether it was previously set.
	PrivateKeySet bool `json:"privateKeySet,omitempty"`
	// TokenTtl: Specifies the duration for which App Check tokens exchanged from
	// DeviceCheck tokens will be valid. If unset, a default value of 1 hour is
	// assumed. Must be between 30 minutes and 7 days, inclusive.
	TokenTtl string `json:"tokenTtl,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "KeyId") 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. "KeyId") 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 GoogleFirebaseAppcheckV1DeviceCheckConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1DeviceCheckConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangeAppAttestAssertionRequest: Request message
// for the ExchangeAppAttestAssertion method.
type GoogleFirebaseAppcheckV1ExchangeAppAttestAssertionRequest struct {
	// Artifact: Required. The artifact returned by a previous call to
	// ExchangeAppAttestAttestation.
	Artifact string `json:"artifact,omitempty"`
	// Assertion: Required. The CBOR-encoded assertion returned by the client-side
	// App Attest API.
	Assertion string `json:"assertion,omitempty"`
	// Challenge: Required. A one-time challenge returned by an immediately prior
	// call to GenerateAppAttestChallenge.
	Challenge string `json:"challenge,omitempty"`
	// LimitedUse: Specifies whether this attestation is for use in a *limited use*
	// (`true`) or *session based* (`false`) context. To enable this attestation to
	// be used with the *replay protection* feature, set this to `true`. The
	// default value is `false`.
	LimitedUse bool `json:"limitedUse,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Artifact") 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. "Artifact") 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 GoogleFirebaseAppcheckV1ExchangeAppAttestAssertionRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangeAppAttestAssertionRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationRequest: Request message
// for the ExchangeAppAttestAttestation method.
type GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationRequest struct {
	// AttestationStatement: Required. The App Attest statement returned by the
	// client-side App Attest API. This is a base64url encoded CBOR object in the
	// JSON response.
	AttestationStatement string `json:"attestationStatement,omitempty"`
	// Challenge: Required. A one-time challenge returned by an immediately prior
	// call to GenerateAppAttestChallenge.
	Challenge string `json:"challenge,omitempty"`
	// KeyId: Required. The key ID generated by App Attest for the client app.
	KeyId string `json:"keyId,omitempty"`
	// LimitedUse: Specifies whether this attestation is for use in a *limited use*
	// (`true`) or *session based* (`false`) context. To enable this attestation to
	// be used with the *replay protection* feature, set this to `true`. The
	// default value is `false`.
	LimitedUse bool `json:"limitedUse,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AttestationStatement") 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. "AttestationStatement") 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 GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse: Response
// message for the ExchangeAppAttestAttestation method.
type GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse struct {
	// AppCheckToken: Encapsulates an App Check token.
	AppCheckToken *GoogleFirebaseAppcheckV1AppCheckToken `json:"appCheckToken,omitempty"`
	// Artifact: An artifact that can be used in future calls to
	// ExchangeAppAttestAssertion.
	Artifact string `json:"artifact,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AppCheckToken") 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. "AppCheckToken") 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 GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangeCustomTokenRequest: Request message for the
// ExchangeCustomToken method.
type GoogleFirebaseAppcheckV1ExchangeCustomTokenRequest struct {
	// CustomToken: Required. A custom token signed using your project's Admin SDK
	// service account credentials.
	CustomToken string `json:"customToken,omitempty"`
	// Jti: Optional. When `limited_use` is set to `true`, this field specifies the
	// desired `jti` claim (Section 4.1.7 of RFC 7519) in the returned App Check
	// token. *Limited use* App Check tokens with the same `jti` will be counted as
	// the same token for the purposes of replay protection. An error is returned
	// if this field is specified without setting `limited_use` to `true`. The size
	// of this field is limited to 500 bytes. If specified, its length must be at
	// least 16 bytes. If this field is omitted or is empty and `limited_use` is
	// set to `true`, a randomly generated `jti` claim with length between 16 and
	// 500 bytes (inclusive) will be used in the returned App Check token. Leaving
	// this field empty is only recommended if your custom attestation provider
	// itself is not vulnerable to replay attacks. When `limited_use` is set to
	// `false`, the presence and the contents of the `jti` claim in the returned
	// App Check token are unspecified. To ensure that the returned App Check token
	// is eligible for limited-use functionality, set `limited_use` to `true`.
	Jti string `json:"jti,omitempty"`
	// LimitedUse: Specifies whether this attestation is for use in a *limited use*
	// (`true`) or *session based* (`false`) context. To enable this attestation to
	// be used with the *replay protection* feature, set this to `true`. The
	// default value is `false`.
	LimitedUse bool `json:"limitedUse,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CustomToken") 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. "CustomToken") 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 GoogleFirebaseAppcheckV1ExchangeCustomTokenRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangeCustomTokenRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangeDebugTokenRequest: Request message for the
// ExchangeDebugToken method.
type GoogleFirebaseAppcheckV1ExchangeDebugTokenRequest struct {
	// DebugToken: Required. A debug token secret. This string must match a debug
	// token secret previously created using CreateDebugToken.
	DebugToken string `json:"debugToken,omitempty"`
	// LimitedUse: Specifies whether this attestation is for use in a *limited use*
	// (`true`) or *session based* (`false`) context. To enable this attestation to
	// be used with the *replay protection* feature, set this to `true`. The
	// default value is `false`.
	LimitedUse bool `json:"limitedUse,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DebugToken") 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. "DebugToken") 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 GoogleFirebaseAppcheckV1ExchangeDebugTokenRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangeDebugTokenRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangeDeviceCheckTokenRequest: Request message for
// the ExchangeDeviceCheckToken method.
type GoogleFirebaseAppcheckV1ExchangeDeviceCheckTokenRequest struct {
	// DeviceToken: Required. The `device_token` as returned by Apple's client-side
	// DeviceCheck API
	// (https://developer.apple.com/documentation/devicecheck/dcdevice). This is
	// the base64 encoded `Data` (Swift) or `NSData` (ObjC) object.
	DeviceToken string `json:"deviceToken,omitempty"`
	// LimitedUse: Specifies whether this attestation is for use in a *limited use*
	// (`true`) or *session based* (`false`) context. To enable this attestation to
	// be used with the *replay protection* feature, set this to `true`. The
	// default value is `false`.
	LimitedUse bool `json:"limitedUse,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeviceToken") 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. "DeviceToken") 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 GoogleFirebaseAppcheckV1ExchangeDeviceCheckTokenRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangeDeviceCheckTokenRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangePlayIntegrityTokenRequest: Request message
// for the ExchangePlayIntegrityToken method.
type GoogleFirebaseAppcheckV1ExchangePlayIntegrityTokenRequest struct {
	// LimitedUse: Specifies whether this attestation is for use in a *limited use*
	// (`true`) or *session based* (`false`) context. To enable this attestation to
	// be used with the *replay protection* feature, set this to `true`. The
	// default value is `false`.
	LimitedUse bool `json:"limitedUse,omitempty"`
	// PlayIntegrityToken: Required. The integrity verdict response token from Play
	// Integrity
	// (https://developer.android.com/google/play/integrity/verdict#decrypt-verify)
	// issued to your app.
	PlayIntegrityToken string `json:"playIntegrityToken,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LimitedUse") 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. "LimitedUse") 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 GoogleFirebaseAppcheckV1ExchangePlayIntegrityTokenRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangePlayIntegrityTokenRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangeRecaptchaEnterpriseTokenRequest: Request
// message for the ExchangeRecaptchaEnterpriseToken method.
type GoogleFirebaseAppcheckV1ExchangeRecaptchaEnterpriseTokenRequest struct {
	// LimitedUse: Specifies whether this attestation is for use in a *limited use*
	// (`true`) or *session based* (`false`) context. To enable this attestation to
	// be used with the *replay protection* feature, set this to `true`. The
	// default value is `false`.
	LimitedUse bool `json:"limitedUse,omitempty"`
	// RecaptchaEnterpriseToken: Required. The reCAPTCHA token as returned by the
	// reCAPTCHA Enterprise JavaScript API
	// (https://cloud.google.com/recaptcha-enterprise/docs/instrument-web-pages).
	RecaptchaEnterpriseToken string `json:"recaptchaEnterpriseToken,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LimitedUse") 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. "LimitedUse") 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 GoogleFirebaseAppcheckV1ExchangeRecaptchaEnterpriseTokenRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangeRecaptchaEnterpriseTokenRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ExchangeRecaptchaV3TokenRequest: Request message for
// the ExchangeRecaptchaV3Token method.
type GoogleFirebaseAppcheckV1ExchangeRecaptchaV3TokenRequest struct {
	// LimitedUse: Specifies whether this attestation is for use in a *limited use*
	// (`true`) or *session based* (`false`) context. To enable this attestation to
	// be used with the *replay protection* feature, set this to `true`. The
	// default value is `false`.
	LimitedUse bool `json:"limitedUse,omitempty"`
	// RecaptchaV3Token: Required. The reCAPTCHA token as returned by the reCAPTCHA
	// v3 JavaScript API (https://developers.google.com/recaptcha/docs/v3).
	RecaptchaV3Token string `json:"recaptchaV3Token,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LimitedUse") 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. "LimitedUse") 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 GoogleFirebaseAppcheckV1ExchangeRecaptchaV3TokenRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ExchangeRecaptchaV3TokenRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1GenerateAppAttestChallengeRequest: Request message
// for the GenerateAppAttestChallenge method.
type GoogleFirebaseAppcheckV1GenerateAppAttestChallengeRequest struct {
}

// GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse: Response message
// for the GenerateAppAttestChallenge method.
type GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse struct {
	// Challenge: A one-time use challenge for the client to pass to the App Attest
	// API.
	Challenge string `json:"challenge,omitempty"`
	// Ttl: The duration from the time this challenge is minted until its
	// expiration. This field is intended to ease client-side token management,
	// since the client may have clock skew, but is still able to accurately
	// measure a duration.
	Ttl string `json:"ttl,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Challenge") 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. "Challenge") 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 GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeRequest: Request
// message for the GeneratePlayIntegrityChallenge method.
type GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeRequest struct {
}

// GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeResponse: Response
// message for the GeneratePlayIntegrityChallenge method.
type GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeResponse struct {
	// Challenge: A one-time use challenge
	// (https://developer.android.com/google/play/integrity/verdict#protect-against-replay-attacks)
	// for the client to pass to the Play Integrity API.
	Challenge string `json:"challenge,omitempty"`
	// Ttl: The duration from the time this challenge is minted until its
	// expiration. This field is intended to ease client-side token management,
	// since the client may have clock skew, but is still able to accurately
	// measure a duration.
	Ttl string `json:"ttl,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Challenge") 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. "Challenge") 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 GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ListDebugTokensResponse: Response message for the
// ListDebugTokens method.
type GoogleFirebaseAppcheckV1ListDebugTokensResponse struct {
	// DebugTokens: The DebugTokens retrieved.
	DebugTokens []*GoogleFirebaseAppcheckV1DebugToken `json:"debugTokens,omitempty"`
	// NextPageToken: If the result list is too large to fit in a single response,
	// then a token is returned. If the string is empty or omitted, then this
	// response is the last page of results. This token can be used in a subsequent
	// call to ListDebugTokens to find the next group of DebugTokens. Page tokens
	// are short-lived and should not be persisted.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DebugTokens") 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. "DebugTokens") 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 GoogleFirebaseAppcheckV1ListDebugTokensResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ListDebugTokensResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ListResourcePoliciesResponse: Response message for
// the ListResourcePolicies method.
type GoogleFirebaseAppcheckV1ListResourcePoliciesResponse struct {
	// NextPageToken: If the result list is too large to fit in a single response,
	// then a token is returned. If the string is empty or omitted, then this
	// response is the last page of results. This token can be used in a subsequent
	// call to ListResourcePolicies to find the next group of ResourcePolicy
	// objects. Page tokens are short-lived and should not be persisted.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// ResourcePolicies: The ResourcePolicy objects retrieved.
	ResourcePolicies []*GoogleFirebaseAppcheckV1ResourcePolicy `json:"resourcePolicies,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 GoogleFirebaseAppcheckV1ListResourcePoliciesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ListResourcePoliciesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1ListServicesResponse: Response message for the
// ListServices method.
type GoogleFirebaseAppcheckV1ListServicesResponse struct {
	// NextPageToken: If the result list is too large to fit in a single response,
	// then a token is returned. If the string is empty or omitted, then this
	// response is the last page of results. This token can be used in a subsequent
	// call to ListServices to find the next group of Services. Page tokens are
	// short-lived and should not be persisted.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Services: The Services retrieved.
	Services []*GoogleFirebaseAppcheckV1Service `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 GoogleFirebaseAppcheckV1ListServicesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ListServicesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1PlayIntegrityConfig: An app's Play Integrity
// configuration object. This configuration controls certain properties of the
// `AppCheckToken` returned by ExchangePlayIntegrityToken, such as its ttl.
// Note that your registered SHA-256 certificate fingerprints are used to
// validate tokens issued by the Play Integrity API; please register them via
// the Firebase Console or programmatically via the Firebase Management Service
// (https://firebase.google.com/docs/projects/api/reference/rest/v1beta1/projects.androidApps.sha/create).
type GoogleFirebaseAppcheckV1PlayIntegrityConfig struct {
	// AccountDetails: Specifies account requirements for Android devices running
	// your app. These settings correspond to requirements on the **account
	// details** field
	// (https://developer.android.com/google/play/integrity/verdicts#account-details-field)
	// obtained from the Play Integrity API. See the default responses table
	// (https://developer.android.com/google/play/integrity/setup#default) for a
	// quick summary. The default values for these settings work for most apps, and
	// are recommended.
	AccountDetails *GoogleFirebaseAppcheckV1PlayIntegrityConfigAccountDetails `json:"accountDetails,omitempty"`
	// AppIntegrity: Specifies application integrity requirements for Android
	// devices running your app. These settings correspond to requirements on the
	// **application integrity** field
	// (https://developer.android.com/google/play/integrity/verdicts#application-integrity-field)
	// obtained from the Play Integrity API. See the default responses table
	// (https://developer.android.com/google/play/integrity/setup#default) for a
	// quick summary. The default values for these settings work for most apps, and
	// are recommended.
	AppIntegrity *GoogleFirebaseAppcheckV1PlayIntegrityConfigAppIntegrity `json:"appIntegrity,omitempty"`
	// DeviceIntegrity: Specifies device integrity requirements for Android devices
	// running your app. These settings correspond to requirements on the **device
	// integrity** field
	// (https://developer.android.com/google/play/integrity/verdicts#device-integrity-field)
	// obtained from the Play Integrity API. See the default responses table
	// (https://developer.android.com/google/play/integrity/setup#default) for a
	// quick summary. Warning: There are also conditional
	// (https://developer.android.com/google/play/integrity/setup#conditional) as
	// well as optional
	// (https://developer.android.com/google/play/integrity/setup#optional_device_information)
	// responses that you can receive, but requires additional explicit opt-in from
	// you. The App Check API is **not** responsible for any such opt-ins. The
	// default values for these settings work for most apps, and are recommended.
	DeviceIntegrity *GoogleFirebaseAppcheckV1PlayIntegrityConfigDeviceIntegrity `json:"deviceIntegrity,omitempty"`
	// Name: Required. The relative resource name of the Play Integrity
	// configuration object, in the format: ```
	// projects/{project_number}/apps/{app_id}/playIntegrityConfig ```
	Name string `json:"name,omitempty"`
	// TokenTtl: Specifies the duration for which App Check tokens exchanged from
	// Play Integrity tokens will be valid. If unset, a default value of 1 hour is
	// assumed. Must be between 30 minutes and 7 days, inclusive.
	TokenTtl string `json:"tokenTtl,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AccountDetails") 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. "AccountDetails") 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 GoogleFirebaseAppcheckV1PlayIntegrityConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1PlayIntegrityConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1PlayIntegrityConfigAccountDetails: A settings object
// specifying account requirements for Android devices running your app. These
// settings correspond to requirements on the **account details** field
// (https://developer.android.com/google/play/integrity/verdicts#account-details-field)
// obtained from the Play Integrity API. See the default responses table
// (https://developer.android.com/google/play/integrity/setup#default) for a
// quick summary. The default values for these settings work for most apps, and
// are recommended.
type GoogleFirebaseAppcheckV1PlayIntegrityConfigAccountDetails struct {
	// RequireLicensed: Specifies whether the caller must have received the
	// `LICENSED` verdict
	// (https://developer.android.com/google/play/integrity/verdicts#account-details-field).
	// For additional details about scenarios where your users will receive this
	// `LICENSED` label, see the default responses table
	// (https://developer.android.com/google/play/integrity/setup#default). If set
	// to `true`, apps without the `LICENSED` app licensing verdict will be
	// rejected. If set to `false`, any app licensing verdict is allowed. The
	// default value is `false`.
	RequireLicensed bool `json:"requireLicensed,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RequireLicensed") 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. "RequireLicensed") 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 GoogleFirebaseAppcheckV1PlayIntegrityConfigAccountDetails) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1PlayIntegrityConfigAccountDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1PlayIntegrityConfigAppIntegrity: A settings object
// specifying application integrity requirements for Android devices running
// your app. These settings correspond to requirements on the **application
// integrity** field
// (https://developer.android.com/google/play/integrity/verdicts#application-integrity-field)
// obtained from the Play Integrity API. See the default responses table
// (https://developer.android.com/google/play/integrity/setup#default) for a
// quick summary. The default values for these settings work for most apps, and
// are recommended.
type GoogleFirebaseAppcheckV1PlayIntegrityConfigAppIntegrity struct {
	// AllowUnrecognizedVersion: Specifies whether your running app is allowed to
	// have the `UNRECOGNIZED_VERSION` app recognition verdict
	// (https://developer.android.com/google/play/integrity/verdicts#application-integrity-field).
	// Note that the app recognition verdict `PLAY_RECOGNIZED` is a strong,
	// comprehensive integrity signal that takes into account various other
	// signals, including conditional and optional device integrity responses that
	// you have opted into. If your app is published off-Play, this field should be
	// set to `true` to allow instances of your app installed from off-Play sources
	// to function. If set to `false`, only `PLAY_RECOGNIZED` verdicts are allowed,
	// and both `UNRECOGNIZED_VERSION` and `UNEVALUATED` will be rejected. If set
	// to `true`, any app recognition verdict is allowed. The default value is
	// `false`.
	AllowUnrecognizedVersion bool `json:"allowUnrecognizedVersion,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AllowUnrecognizedVersion")
	// 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. "AllowUnrecognizedVersion") 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 GoogleFirebaseAppcheckV1PlayIntegrityConfigAppIntegrity) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1PlayIntegrityConfigAppIntegrity
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1PlayIntegrityConfigDeviceIntegrity: A settings
// object specifying device integrity requirements for Android devices running
// your app. These settings correspond to requirements on the **device
// integrity** field
// (https://developer.android.com/google/play/integrity/verdicts#device-integrity-field)
// obtained from the Play Integrity API. See the default responses table
// (https://developer.android.com/google/play/integrity/setup#default) for a
// quick summary. Warning: There are also conditional
// (https://developer.android.com/google/play/integrity/setup#conditional) as
// well as optional
// (https://developer.android.com/google/play/integrity/setup#optional_device_information)
// responses that you can receive, but requires additional explicit opt-in from
// you. The App Check API is **not** responsible for any such opt-ins. The
// default values for these settings work for most apps, and are recommended.
type GoogleFirebaseAppcheckV1PlayIntegrityConfigDeviceIntegrity struct {
	// MinDeviceRecognitionLevel: Specifies the minimum device integrity level in
	// order for the device to be considered valid. Any device with a device
	// recognition verdict lower than this level will be rejected. If this is
	// unspecified, the default level is `NO_INTEGRITY`.
	//
	// Possible values:
	//   "DEVICE_RECOGNITION_LEVEL_UNSPECIFIED" - Default value. Do not specify
	// this value directly. If this value is detected in a configuration, it will
	// have the same effect as the value `NO_INTEGRITY`.
	//   "NO_INTEGRITY" - If this level is set, no explicit device integrity label
	// requirements will be checked. However, because Play Integrity's other
	// features may perform (and require) their own intrinsic device integrity
	// checks, your `app_integrity` and `account_details` settings may still cause
	// some device integrity checks to be performed.
	//   "MEETS_BASIC_INTEGRITY" - This level corresponds to the
	// `MEETS_BASIC_INTEGRITY` [optional device recognition
	// label](https://developer.android.com/google/play/integrity/verdicts#optional-
	// device-labels). This value represents the most basic level of device
	// integrity, and is the minimum allowed in App Check's standard implementation
	// of Play Integrity. Warning: Because this is an optional response, you
	// **must** first explicitly [opt in your app in the Play
	// Console](https://developer.android.com/google/play/integrity/setup#optional)
	// in order to receive this label. Without this opt-in, **your app may break**
	// for any user whose device is eligible for `MEETS_BASIC_INTEGRITY` but not
	// `MEETS_DEVICE_INTEGRITY`. This API is **not** responsible for any such
	// opt-ins.
	//   "MEETS_DEVICE_INTEGRITY" - This level corresponds to the
	// `MEETS_DEVICE_INTEGRITY` [device recognition
	// verdict](https://developer.android.com/google/play/integrity/verdicts#device-
	// integrity-field). Any app integrated with Play Integrity will automatically
	// be eligible to receive this label without any additional action from you. At
	// this level, devices that have the `MEETS_BASIC_INTEGRITY` label but **not**
	// the `MEETS_DEVICE_INTEGRITY` label will be rejected.
	//   "MEETS_STRONG_INTEGRITY" - This level corresponds to the
	// `MEETS_STRONG_INTEGRITY` [optional device recognition
	// label](https://developer.android.com/google/play/integrity/verdicts#optional-
	// device-labels). This value represents the highest level of device integrity.
	// At this level, devices that have the `MEETS_BASIC_INTEGRITY` or
	// `MEETS_DEVICE_INTEGRITY` but **not** the `MEETS_STRONG_INTEGRITY` label will
	// be rejected. Warning: Because this is an optional response, you **must**
	// first explicitly [opt in your app in the Play
	// Console](https://developer.android.com/google/play/integrity/setup#optional)
	// in order to receive this label. Without this opt-in, **your app may break**
	// for any user whose device is eligible for `MEETS_STRONG_INTEGRITY`. This API
	// is **not** responsible for any such opt-ins.
	MinDeviceRecognitionLevel string `json:"minDeviceRecognitionLevel,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MinDeviceRecognitionLevel")
	// 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. "MinDeviceRecognitionLevel") 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 GoogleFirebaseAppcheckV1PlayIntegrityConfigDeviceIntegrity) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1PlayIntegrityConfigDeviceIntegrity
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1PublicJwk: A JWK as specified by section 4 of RFC
// 7517 (https://tools.ietf.org/html/rfc7517#section-4) and section 6.3.1 of
// RFC 7518 (https://tools.ietf.org/html/rfc7518#section-6.3.1).
type GoogleFirebaseAppcheckV1PublicJwk struct {
	// Alg: See section 4.4 of RFC 7517
	// (https://tools.ietf.org/html/rfc7517#section-4.4).
	Alg string `json:"alg,omitempty"`
	// E: See section 6.3.1.2 of RFC 7518
	// (https://tools.ietf.org/html/rfc7518#section-6.3.1.2).
	E string `json:"e,omitempty"`
	// Kid: See section 4.5 of RFC 7517
	// (https://tools.ietf.org/html/rfc7517#section-4.5).
	Kid string `json:"kid,omitempty"`
	// Kty: See section 4.1 of RFC 7517
	// (https://tools.ietf.org/html/rfc7517#section-4.1).
	Kty string `json:"kty,omitempty"`
	// N: See section 6.3.1.1 of RFC 7518
	// (https://tools.ietf.org/html/rfc7518#section-6.3.1.1).
	N string `json:"n,omitempty"`
	// Use: See section 4.2 of RFC 7517
	// (https://tools.ietf.org/html/rfc7517#section-4.2).
	Use string `json:"use,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Alg") 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. "Alg") 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 GoogleFirebaseAppcheckV1PublicJwk) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1PublicJwk
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1PublicJwkSet: The currently active set of public
// keys that can be used to verify App Check tokens. This object is a JWK set
// as specified by section 5 of RFC 7517
// (https://tools.ietf.org/html/rfc7517#section-5). For security, the response
// **must not** be cached for longer than six hours.
type GoogleFirebaseAppcheckV1PublicJwkSet struct {
	// Keys: The set of public keys. See section 5.1 of RFC 7517
	// (https://tools.ietf.org/html/rfc7517#section-5).
	Keys []*GoogleFirebaseAppcheckV1PublicJwk `json:"keys,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Keys") 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. "Keys") 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 GoogleFirebaseAppcheckV1PublicJwkSet) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1PublicJwkSet
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig: An app's reCAPTCHA
// Enterprise configuration object. This configuration is used by
// ExchangeRecaptchaEnterpriseToken to validate reCAPTCHA tokens issued to apps
// by reCAPTCHA Enterprise. It also controls certain properties of the returned
// `AppCheckToken`, such as its ttl.
type GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig struct {
	// Name: Required. The relative resource name of the reCAPTCHA Enterprise
	// configuration object, in the format: ```
	// projects/{project_number}/apps/{app_id}/recaptchaEnterpriseConfig ```
	Name string `json:"name,omitempty"`
	// RiskAnalysis: Specifies risk tolerance and requirements for your
	// application. These settings correspond to requirements on the
	// **`riskAnalysis`**
	// (https://cloud.google.com/recaptcha/docs/interpret-assessment-website#interpret_assessment)
	// tuple in the assessment obtained from reCAPTCHA Enterprise. The default
	// values for these settings work for most apps, and are recommended.
	RiskAnalysis *GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfigRiskAnalysis `json:"riskAnalysis,omitempty"`
	// SiteKey: The score-based site key created in reCAPTCHA Enterprise
	// (https://cloud.google.com/recaptcha-enterprise/docs/create-key#creating_a_site_key)
	// used to invoke reCAPTCHA and generate the reCAPTCHA tokens
	// (https://cloud.google.com/recaptcha-enterprise/docs/instrument-web-pages)
	// for your application. Important: This is *not* the `site_secret` (as it is
	// in reCAPTCHA v3), but rather your score-based reCAPTCHA Enterprise site key.
	SiteKey string `json:"siteKey,omitempty"`
	// TokenTtl: Specifies the duration for which App Check tokens exchanged from
	// reCAPTCHA Enterprise tokens will be valid. If unset, a default value of 1
	// hour is assumed. Must be between 30 minutes and 7 days, inclusive.
	TokenTtl string `json:"tokenTtl,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// 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 GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfigRiskAnalysis: A settings
// object specifying risk tolerance and requirements for your application.
// These settings correspond to requirements on the **`riskAnalysis`**
// (https://cloud.google.com/recaptcha/docs/interpret-assessment-website#interpret_assessment)
// tuple in the assessment obtained from reCAPTCHA Enterprise. The default
// values for these settings work for most apps, and are recommended.
type GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfigRiskAnalysis struct {
	// MinValidScore: Specifies a minimum score required for a reCAPTCHA token to
	// be considered valid. If its score is greater than or equal to this value, it
	// will be accepted; otherwise, it will be rejected. The value must be between
	// 0.0 and 1.0. The default value is 0.5.
	MinValidScore float64 `json:"minValidScore,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MinValidScore") 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. "MinValidScore") 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 GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfigRiskAnalysis) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfigRiskAnalysis
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// GoogleFirebaseAppcheckV1RecaptchaV3Config: An app's reCAPTCHA v3
// configuration object. This configuration is used by ExchangeRecaptchaV3Token
// to validate reCAPTCHA tokens issued to apps by reCAPTCHA v3. It also
// controls certain properties of the returned `AppCheckToken`, such as its
// ttl.
type GoogleFirebaseAppcheckV1RecaptchaV3Config struct {
	// MinValidScore: Specifies a minimum score required for a reCAPTCHA token to
	// be considered valid. If its score is greater than or equal to this value, it
	// will be accepted; otherwise, it will be rejected. The value must be between
	// 0.0 and 1.0. The default value is 0.5.
	MinValidScore float64 `json:"minValidScore,omitempty"`
	// Name: Required. The relative resource name of the reCAPTCHA v3 configuration
	// object, in the format: ```
	// projects/{project_number}/apps/{app_id}/recaptchaV3Config ```
	Name string `json:"name,omitempty"`
	// SiteSecret: Required. Input only. The site secret used to identify your
	// service for reCAPTCHA v3 verification. For security reasons, this field will
	// never be populated in any response.
	SiteSecret string `json:"siteSecret,omitempty"`
	// SiteSecretSet: Output only. Whether the `site_secret` field was previously
	// set. Since we will never return the `site_secret` field, this field is the
	// only way to find out whether it was previously set.
	SiteSecretSet bool `json:"siteSecretSet,omitempty"`
	// TokenTtl: Specifies the duration for which App Check tokens exchanged from
	// reCAPTCHA tokens will be valid. If unset, a default value of 1 day is
	// assumed. Must be between 30 minutes and 7 days, inclusive.
	TokenTtl string `json:"tokenTtl,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "MinValidScore") 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. "MinValidScore") 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 GoogleFirebaseAppcheckV1RecaptchaV3Config) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1RecaptchaV3Config
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// GoogleFirebaseAppcheckV1ResourcePolicy: App Check enforcement policy for a
// specific resource of a Google service supported by App Check. Note that this
// policy will override the service-level configuration.
type GoogleFirebaseAppcheckV1ResourcePolicy struct {
	// EnforcementMode: Required. The baseline protection EnforcementMode for this
	// resource. This will override the service-level baseline protection
	// EnforcementMode.
	//
	// Possible values:
	//   "OFF" - When a particular protection is set to this mode, that protection
	// is not applied for the service or resource, nor are metrics related to that
	// protection collected. Though the relevant App Check protection is not
	// applied, other applicable protections outside of App Check, such as user
	// authorization, are still applied. An unconfigured EnforcementMode is in this
	// mode by default.
	//   "UNENFORCED" - When a particular protection is set to this mode, that
	// protection is not enforced for the service or resource. Metrics related to
	// that protection are collected to help you decide when to turn on
	// enforcement. These metrics will show the portion of traffic that is deemed
	// invalid by that protection, but that traffic will not be rejected until you
	// turn on enforcement. This `UNENFORCED` mode is also known as monitoring-only
	// mode. Though the relevant App Check protection is not enforced, other
	// applicable protections outside of App Check, such as user authorization, are
	// still applied. Some services require certain conditions to be met before
	// they will work with App Check, such as requiring you to upgrade to a
	// specific service tier. Until those requirements are met for a service, this
	// `UNENFORCED` setting will have no effect and App Check will not work with
	// that service.
	//   "ENFORCED" - When a particular protection is set to this mode, that
	// protection is enforced for the service or resource. It will reject any
	// traffic not accompanied by an App Check token that it deems valid. There are
	// some exceptions depending on the service; for example, some services will
	// still allow requests bearing the developer's privileged service account
	// credentials without an App Check token. App Check metrics continue to be
	// collected to help you detect issues with your App Check integration and
	// monitor the composition of your callers. While the service is protected by
	// App Check, other applicable protections outside of App Check, such as user
	// authorization, continue to be applied at the same time. Use caution when
	// choosing to enforce App Check protections. If your users have not updated to
	// a version of your app that meets the requirements of the relevant App Check
	// protection, their app may stop working. App Check metrics can help you
	// decide when to enforce that protection on your services and resources. If
	// you have not yet published your app, you should enable enforcement as soon
	// as you verify that your App Check implementation is correct, since there are
	// no outdated clients in use. Some services require certain conditions to be
	// met before they will work with App Check, such as requiring you to upgrade
	// to a specific service tier. Until those requirements are met for a service,
	// this `ENFORCED` setting will have no effect and App Check will not work with
	// that service.
	EnforcementMode string `json:"enforcementMode,omitempty"`
	// Etag: This checksum is computed by the server based on the value of other
	// fields, and may be sent on update and delete requests to ensure the client
	// has an up-to-date value before proceeding. This etag is strongly validated
	// as defined by RFC 7232.
	Etag string `json:"etag,omitempty"`
	// Name: Required. Identifier. The relative name of the resource policy object,
	// in the format: ```
	// projects/{project_number}/services/{service_id}/resourcePolicies/{resource_po
	// licy_id} ``` Note that the `service_id` element must be a supported service
	// ID. Currently, the following service IDs are supported: *
	// `oauth2.googleapis.com` (Google Identity for iOS) `resource_policy_id` is a
	// system-generated UID.
	Name string `json:"name,omitempty"`
	// TargetResource: Required. Service specific name of the resource object to
	// which this policy applies, in the format: * **iOS OAuth clients** (Google
	// Identity for iOS):
	// `//oauth2.googleapis.com/projects/{project_number}/oauthClients/{oauth_client
	// _id}` Note that the resource must belong to the service specified in the
	// `name` and be from the same project as this policy, but the resource is
	// allowed to be missing at the time of creation of this policy; in that case,
	// we make a best-effort attempt at respecting this policy, but it may not have
	// any effect until the resource is fully created.
	TargetResource string `json:"targetResource,omitempty"`
	// UpdateTime: Output only. Timestamp when this resource policy configuration
	// object was most recently updated.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "EnforcementMode") 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. "EnforcementMode") 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 GoogleFirebaseAppcheckV1ResourcePolicy) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1ResourcePolicy
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1Service: The enforcement configuration for a
// Firebase service supported by App Check.
type GoogleFirebaseAppcheckV1Service struct {
	// EnforcementMode: Required. The baseline protection EnforcementMode for this
	// service.
	//
	// Possible values:
	//   "OFF" - When a particular protection is set to this mode, that protection
	// is not applied for the service or resource, nor are metrics related to that
	// protection collected. Though the relevant App Check protection is not
	// applied, other applicable protections outside of App Check, such as user
	// authorization, are still applied. An unconfigured EnforcementMode is in this
	// mode by default.
	//   "UNENFORCED" - When a particular protection is set to this mode, that
	// protection is not enforced for the service or resource. Metrics related to
	// that protection are collected to help you decide when to turn on
	// enforcement. These metrics will show the portion of traffic that is deemed
	// invalid by that protection, but that traffic will not be rejected until you
	// turn on enforcement. This `UNENFORCED` mode is also known as monitoring-only
	// mode. Though the relevant App Check protection is not enforced, other
	// applicable protections outside of App Check, such as user authorization, are
	// still applied. Some services require certain conditions to be met before
	// they will work with App Check, such as requiring you to upgrade to a
	// specific service tier. Until those requirements are met for a service, this
	// `UNENFORCED` setting will have no effect and App Check will not work with
	// that service.
	//   "ENFORCED" - When a particular protection is set to this mode, that
	// protection is enforced for the service or resource. It will reject any
	// traffic not accompanied by an App Check token that it deems valid. There are
	// some exceptions depending on the service; for example, some services will
	// still allow requests bearing the developer's privileged service account
	// credentials without an App Check token. App Check metrics continue to be
	// collected to help you detect issues with your App Check integration and
	// monitor the composition of your callers. While the service is protected by
	// App Check, other applicable protections outside of App Check, such as user
	// authorization, continue to be applied at the same time. Use caution when
	// choosing to enforce App Check protections. If your users have not updated to
	// a version of your app that meets the requirements of the relevant App Check
	// protection, their app may stop working. App Check metrics can help you
	// decide when to enforce that protection on your services and resources. If
	// you have not yet published your app, you should enable enforcement as soon
	// as you verify that your App Check implementation is correct, since there are
	// no outdated clients in use. Some services require certain conditions to be
	// met before they will work with App Check, such as requiring you to upgrade
	// to a specific service tier. Until those requirements are met for a service,
	// this `ENFORCED` setting will have no effect and App Check will not work with
	// that service.
	EnforcementMode string `json:"enforcementMode,omitempty"`
	// Etag: Optional. This checksum is computed by the server based on the value
	// of other fields, and may be sent on update and delete requests to ensure the
	// client has an up-to-date value before proceeding. This etag is strongly
	// validated as defined by RFC 7232.
	Etag string `json:"etag,omitempty"`
	// Name: Required. The relative resource name of the service configuration
	// object, in the format: ``` projects/{project_number}/services/{service_id}
	// ``` Note that the `service_id` element must be a supported service ID.
	// Currently, the following service IDs are supported. Firebase and Google
	// Cloud services: * `identitytoolkit.googleapis.com` (Firebase Authentication)
	// * `firebasedataconnect.googleapis.com` (Firebase SQL Connect) *
	// `firestore.googleapis.com` (Cloud Firestore) *
	// `firebasedatabase.googleapis.com` (Firebase Realtime Database) *
	// `firebasestorage.googleapis.com` (Cloud Storage for Firebase) *
	// `firebaseml.googleapis.com` (Firebase AI Logic) Google Maps Platform
	// services: * `maps-backend.googleapis.com` (Maps JavaScript API) *
	// `places.googleapis.com` (Places API (New)) Other supported Google services:
	// * `oauth2.googleapis.com` (Google Identity for iOS) Note: While all the
	// supported `service_id`s may appear to be subdomains of `googleapis.com`, the
	// `service_id` has no semantic meaning beyond identifying the service to App
	// Check. It is not intended to represent the actual domain to which your apps
	// send traffic, nor is it necessarily the API that should be enabled to use
	// the service. For information on using these Google services, consult their
	// documentation.
	Name string `json:"name,omitempty"`
	// ReplayProtection: Optional. The replay protection EnforcementMode for this
	// service. Note that this field cannot be set to a level higher than that of
	// baseline protection. For example, if the enforcement mode for baseline
	// protection is set to `UNENFORCED`, this field cannot be set to `ENFORCED`.
	// In order to enforce replay protection, you must first enforce App Check's
	// baseline protection. An HTTP 400 error will be returned in this case. By
	// default, this field is set to `OFF`. Setting this field to `UNENFORCED` or
	// `ENFORCED` is considered opting into replay protection. Opting in can impact
	// your requests by adding some latency and sometimes cost (depending on your
	// attestation provider). To opt out of replay protection after opting in, set
	// this field to `OFF`.
	//
	// Possible values:
	//   "OFF" - When a particular protection is set to this mode, that protection
	// is not applied for the service or resource, nor are metrics related to that
	// protection collected. Though the relevant App Check protection is not
	// applied, other applicable protections outside of App Check, such as user
	// authorization, are still applied. An unconfigured EnforcementMode is in this
	// mode by default.
	//   "UNENFORCED" - When a particular protection is set to this mode, that
	// protection is not enforced for the service or resource. Metrics related to
	// that protection are collected to help you decide when to turn on
	// enforcement. These metrics will show the portion of traffic that is deemed
	// invalid by that protection, but that traffic will not be rejected until you
	// turn on enforcement. This `UNENFORCED` mode is also known as monitoring-only
	// mode. Though the relevant App Check protection is not enforced, other
	// applicable protections outside of App Check, such as user authorization, are
	// still applied. Some services require certain conditions to be met before
	// they will work with App Check, such as requiring you to upgrade to a
	// specific service tier. Until those requirements are met for a service, this
	// `UNENFORCED` setting will have no effect and App Check will not work with
	// that service.
	//   "ENFORCED" - When a particular protection is set to this mode, that
	// protection is enforced for the service or resource. It will reject any
	// traffic not accompanied by an App Check token that it deems valid. There are
	// some exceptions depending on the service; for example, some services will
	// still allow requests bearing the developer's privileged service account
	// credentials without an App Check token. App Check metrics continue to be
	// collected to help you detect issues with your App Check integration and
	// monitor the composition of your callers. While the service is protected by
	// App Check, other applicable protections outside of App Check, such as user
	// authorization, continue to be applied at the same time. Use caution when
	// choosing to enforce App Check protections. If your users have not updated to
	// a version of your app that meets the requirements of the relevant App Check
	// protection, their app may stop working. App Check metrics can help you
	// decide when to enforce that protection on your services and resources. If
	// you have not yet published your app, you should enable enforcement as soon
	// as you verify that your App Check implementation is correct, since there are
	// no outdated clients in use. Some services require certain conditions to be
	// met before they will work with App Check, such as requiring you to upgrade
	// to a specific service tier. Until those requirements are met for a service,
	// this `ENFORCED` setting will have no effect and App Check will not work with
	// that service.
	ReplayProtection string `json:"replayProtection,omitempty"`
	// UpdateTime: Output only. Timestamp when this service configuration object
	// was most recently updated.
	UpdateTime string `json:"updateTime,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "EnforcementMode") 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. "EnforcementMode") 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 GoogleFirebaseAppcheckV1Service) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1Service
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1UpdateResourcePolicyRequest: Request message for the
// UpdateResourcePolicy method as well as an individual update message for the
// BatchUpdateResourcePolicies method.
type GoogleFirebaseAppcheckV1UpdateResourcePolicyRequest struct {
	// ResourcePolicy: Required. The ResourcePolicy to update. The ResourcePolicy's
	// `name` field is used to identify the ResourcePolicy to be updated, in the
	// format: ```
	// projects/{project_number}/services/{service_id}/resourcePolicies/{resource_po
	// licy_id} ``` Note that the `service_id` element must be a supported service
	// ID. Consult the ResourcePolicy.name field for a list of supported service
	// IDs.
	ResourcePolicy *GoogleFirebaseAppcheckV1ResourcePolicy `json:"resourcePolicy,omitempty"`
	// UpdateMask: Required. A comma-separated list of names of fields in the
	// ResourcePolicy to update. Example: `enforcement_mode`.
	UpdateMask string `json:"updateMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ResourcePolicy") 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. "ResourcePolicy") 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 GoogleFirebaseAppcheckV1UpdateResourcePolicyRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1UpdateResourcePolicyRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleFirebaseAppcheckV1UpdateServiceRequest: Request message for the
// UpdateService method as well as an individual update message for the
// BatchUpdateServices method.
type GoogleFirebaseAppcheckV1UpdateServiceRequest struct {
	// Service: Required. The Service to update. The Service's `name` field is used
	// to identify the Service to be updated, in the format: ```
	// projects/{project_number}/services/{service_id} ``` Note that the
	// `service_id` element must be a supported service ID. Consult the
	// Service.name field for a list of supported service IDs.
	Service *GoogleFirebaseAppcheckV1Service `json:"service,omitempty"`
	// UpdateMask: Required. A comma-separated list of names of fields in the
	// Service to update. Example: `enforcement_mode`.
	UpdateMask string `json:"updateMask,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 GoogleFirebaseAppcheckV1UpdateServiceRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleFirebaseAppcheckV1UpdateServiceRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleProtobufEmpty: A generic empty message that you can re-use to avoid
// defining duplicated empty messages in your APIs. A typical example is to use
// it as the request or the response type of an API method. For instance:
// service Foo { rpc Bar(google.protobuf.Empty) returns
// (google.protobuf.Empty); }
type GoogleProtobufEmpty struct {
	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
}

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

// Get: Returns a public JWK set as specified by RFC 7517
// (https://tools.ietf.org/html/rfc7517) that can be used to verify App Check
// tokens. Exactly one of the public keys in the returned set will successfully
// validate any App Check token that is currently valid.
//
//   - name: The relative resource name to the public JWK set. Must always be
//     exactly the string `jwks`.
func (r *JwksService) Get(name string) *JwksGetCall {
	c := &JwksGetCall{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 *JwksGetCall) Fields(s ...googleapi.Field) *JwksGetCall {
	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 *JwksGetCall) IfNoneMatch(entityTag string) *JwksGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *JwksGetCall) Context(ctx context.Context) *JwksGetCall {
	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 *JwksGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *JwksGetCall) 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", "firebaseappcheck.jwks.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.jwks.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1PublicJwkSet.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 *JwksGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1PublicJwkSet, 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 := &GoogleFirebaseAppcheckV1PublicJwkSet{
		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", "firebaseappcheck.jwks.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type OauthClientsExchangeAppAttestAssertionCall struct {
	s                                                         *Service
	appid                                                     string
	googlefirebaseappcheckv1exchangeappattestassertionrequest *GoogleFirebaseAppcheckV1ExchangeAppAttestAssertionRequest
	urlParams_                                                gensupport.URLParams
	ctx_                                                      context.Context
	header_                                                   http.Header
}

// ExchangeAppAttestAssertion: Accepts an App Attest assertion and an artifact
// previously obtained from ExchangeAppAttestAttestation and verifies those
// with Apple. If valid, returns an AppCheckToken.
//
//   - app: The relative resource name of the iOS app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *OauthClientsService) ExchangeAppAttestAssertion(appid string, googlefirebaseappcheckv1exchangeappattestassertionrequest *GoogleFirebaseAppcheckV1ExchangeAppAttestAssertionRequest) *OauthClientsExchangeAppAttestAssertionCall {
	c := &OauthClientsExchangeAppAttestAssertionCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangeappattestassertionrequest = googlefirebaseappcheckv1exchangeappattestassertionrequest
	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 *OauthClientsExchangeAppAttestAssertionCall) Fields(s ...googleapi.Field) *OauthClientsExchangeAppAttestAssertionCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *OauthClientsExchangeAppAttestAssertionCall) Context(ctx context.Context) *OauthClientsExchangeAppAttestAssertionCall {
	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 *OauthClientsExchangeAppAttestAssertionCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *OauthClientsExchangeAppAttestAssertionCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangeappattestassertionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeAppAttestAssertion")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.oauthClients.exchangeAppAttestAssertion", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.oauthClients.exchangeAppAttestAssertion" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *OauthClientsExchangeAppAttestAssertionCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.oauthClients.exchangeAppAttestAssertion", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type OauthClientsExchangeAppAttestAttestationCall struct {
	s                                                           *Service
	appid                                                       string
	googlefirebaseappcheckv1exchangeappattestattestationrequest *GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationRequest
	urlParams_                                                  gensupport.URLParams
	ctx_                                                        context.Context
	header_                                                     http.Header
}

// ExchangeAppAttestAttestation: Accepts an App Attest CBOR attestation and
// verifies it with Apple using your preconfigured team and bundle IDs. If
// valid, returns an attestation artifact that can later be exchanged for an
// AppCheckToken using ExchangeAppAttestAssertion. For convenience and
// performance, this method's response object will also contain an
// AppCheckToken (if the verification is successful).
//
//   - app: The relative resource name of the iOS app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *OauthClientsService) ExchangeAppAttestAttestation(appid string, googlefirebaseappcheckv1exchangeappattestattestationrequest *GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationRequest) *OauthClientsExchangeAppAttestAttestationCall {
	c := &OauthClientsExchangeAppAttestAttestationCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangeappattestattestationrequest = googlefirebaseappcheckv1exchangeappattestattestationrequest
	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 *OauthClientsExchangeAppAttestAttestationCall) Fields(s ...googleapi.Field) *OauthClientsExchangeAppAttestAttestationCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *OauthClientsExchangeAppAttestAttestationCall) Context(ctx context.Context) *OauthClientsExchangeAppAttestAttestationCall {
	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 *OauthClientsExchangeAppAttestAttestationCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *OauthClientsExchangeAppAttestAttestationCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangeappattestattestationrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeAppAttestAttestation")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.oauthClients.exchangeAppAttestAttestation", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.oauthClients.exchangeAppAttestAttestation" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse.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 *OauthClientsExchangeAppAttestAttestationCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse, 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 := &GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse{
		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", "firebaseappcheck.oauthClients.exchangeAppAttestAttestation", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type OauthClientsExchangeDebugTokenCall struct {
	s                                                 *Service
	appid                                             string
	googlefirebaseappcheckv1exchangedebugtokenrequest *GoogleFirebaseAppcheckV1ExchangeDebugTokenRequest
	urlParams_                                        gensupport.URLParams
	ctx_                                              context.Context
	header_                                           http.Header
}

// ExchangeDebugToken: Validates a debug token secret that you have previously
// created using CreateDebugToken. If valid, returns an AppCheckToken. Note
// that a restrictive quota is enforced on this method to prevent accidental
// exposure of the app to abuse.
//
//   - app: The relative resource name of the app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *OauthClientsService) ExchangeDebugToken(appid string, googlefirebaseappcheckv1exchangedebugtokenrequest *GoogleFirebaseAppcheckV1ExchangeDebugTokenRequest) *OauthClientsExchangeDebugTokenCall {
	c := &OauthClientsExchangeDebugTokenCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangedebugtokenrequest = googlefirebaseappcheckv1exchangedebugtokenrequest
	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 *OauthClientsExchangeDebugTokenCall) Fields(s ...googleapi.Field) *OauthClientsExchangeDebugTokenCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *OauthClientsExchangeDebugTokenCall) Context(ctx context.Context) *OauthClientsExchangeDebugTokenCall {
	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 *OauthClientsExchangeDebugTokenCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *OauthClientsExchangeDebugTokenCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangedebugtokenrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeDebugToken")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.oauthClients.exchangeDebugToken", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.oauthClients.exchangeDebugToken" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *OauthClientsExchangeDebugTokenCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.oauthClients.exchangeDebugToken", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type OauthClientsGenerateAppAttestChallengeCall struct {
	s                                                         *Service
	appid                                                     string
	googlefirebaseappcheckv1generateappattestchallengerequest *GoogleFirebaseAppcheckV1GenerateAppAttestChallengeRequest
	urlParams_                                                gensupport.URLParams
	ctx_                                                      context.Context
	header_                                                   http.Header
}

// GenerateAppAttestChallenge: Generates a challenge that protects the
// integrity of an immediately following call to ExchangeAppAttestAttestation
// or ExchangeAppAttestAssertion. A challenge should not be reused for multiple
// calls.
//
//   - app: The relative resource name of the iOS app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *OauthClientsService) GenerateAppAttestChallenge(appid string, googlefirebaseappcheckv1generateappattestchallengerequest *GoogleFirebaseAppcheckV1GenerateAppAttestChallengeRequest) *OauthClientsGenerateAppAttestChallengeCall {
	c := &OauthClientsGenerateAppAttestChallengeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1generateappattestchallengerequest = googlefirebaseappcheckv1generateappattestchallengerequest
	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 *OauthClientsGenerateAppAttestChallengeCall) Fields(s ...googleapi.Field) *OauthClientsGenerateAppAttestChallengeCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *OauthClientsGenerateAppAttestChallengeCall) Context(ctx context.Context) *OauthClientsGenerateAppAttestChallengeCall {
	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 *OauthClientsGenerateAppAttestChallengeCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *OauthClientsGenerateAppAttestChallengeCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1generateappattestchallengerequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:generateAppAttestChallenge")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.oauthClients.generateAppAttestChallenge", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.oauthClients.generateAppAttestChallenge" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse.ServerResponse.He
// ader 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 *OauthClientsGenerateAppAttestChallengeCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse, 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 := &GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse{
		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", "firebaseappcheck.oauthClients.generateAppAttestChallenge", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsExchangeAppAttestAssertionCall struct {
	s                                                         *Service
	appid                                                     string
	googlefirebaseappcheckv1exchangeappattestassertionrequest *GoogleFirebaseAppcheckV1ExchangeAppAttestAssertionRequest
	urlParams_                                                gensupport.URLParams
	ctx_                                                      context.Context
	header_                                                   http.Header
}

// ExchangeAppAttestAssertion: Accepts an App Attest assertion and an artifact
// previously obtained from ExchangeAppAttestAttestation and verifies those
// with Apple. If valid, returns an AppCheckToken.
//
//   - app: The relative resource name of the iOS app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) ExchangeAppAttestAssertion(appid string, googlefirebaseappcheckv1exchangeappattestassertionrequest *GoogleFirebaseAppcheckV1ExchangeAppAttestAssertionRequest) *ProjectsAppsExchangeAppAttestAssertionCall {
	c := &ProjectsAppsExchangeAppAttestAssertionCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangeappattestassertionrequest = googlefirebaseappcheckv1exchangeappattestassertionrequest
	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 *ProjectsAppsExchangeAppAttestAssertionCall) Fields(s ...googleapi.Field) *ProjectsAppsExchangeAppAttestAssertionCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsExchangeAppAttestAssertionCall) Context(ctx context.Context) *ProjectsAppsExchangeAppAttestAssertionCall {
	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 *ProjectsAppsExchangeAppAttestAssertionCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsExchangeAppAttestAssertionCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangeappattestassertionrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeAppAttestAssertion")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.exchangeAppAttestAssertion", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.exchangeAppAttestAssertion" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *ProjectsAppsExchangeAppAttestAssertionCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.projects.apps.exchangeAppAttestAssertion", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsExchangeAppAttestAttestationCall struct {
	s                                                           *Service
	appid                                                       string
	googlefirebaseappcheckv1exchangeappattestattestationrequest *GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationRequest
	urlParams_                                                  gensupport.URLParams
	ctx_                                                        context.Context
	header_                                                     http.Header
}

// ExchangeAppAttestAttestation: Accepts an App Attest CBOR attestation and
// verifies it with Apple using your preconfigured team and bundle IDs. If
// valid, returns an attestation artifact that can later be exchanged for an
// AppCheckToken using ExchangeAppAttestAssertion. For convenience and
// performance, this method's response object will also contain an
// AppCheckToken (if the verification is successful).
//
//   - app: The relative resource name of the iOS app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) ExchangeAppAttestAttestation(appid string, googlefirebaseappcheckv1exchangeappattestattestationrequest *GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationRequest) *ProjectsAppsExchangeAppAttestAttestationCall {
	c := &ProjectsAppsExchangeAppAttestAttestationCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangeappattestattestationrequest = googlefirebaseappcheckv1exchangeappattestattestationrequest
	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 *ProjectsAppsExchangeAppAttestAttestationCall) Fields(s ...googleapi.Field) *ProjectsAppsExchangeAppAttestAttestationCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsExchangeAppAttestAttestationCall) Context(ctx context.Context) *ProjectsAppsExchangeAppAttestAttestationCall {
	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 *ProjectsAppsExchangeAppAttestAttestationCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsExchangeAppAttestAttestationCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangeappattestattestationrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeAppAttestAttestation")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.exchangeAppAttestAttestation", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.exchangeAppAttestAttestation" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse.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 *ProjectsAppsExchangeAppAttestAttestationCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse, 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 := &GoogleFirebaseAppcheckV1ExchangeAppAttestAttestationResponse{
		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", "firebaseappcheck.projects.apps.exchangeAppAttestAttestation", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsExchangeCustomTokenCall struct {
	s                                                  *Service
	appid                                              string
	googlefirebaseappcheckv1exchangecustomtokenrequest *GoogleFirebaseAppcheckV1ExchangeCustomTokenRequest
	urlParams_                                         gensupport.URLParams
	ctx_                                               context.Context
	header_                                            http.Header
}

// ExchangeCustomToken: Validates a custom token signed using your project's
// Admin SDK service account credentials. If valid, returns an AppCheckToken.
//
//   - app: The relative resource name of the app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) ExchangeCustomToken(appid string, googlefirebaseappcheckv1exchangecustomtokenrequest *GoogleFirebaseAppcheckV1ExchangeCustomTokenRequest) *ProjectsAppsExchangeCustomTokenCall {
	c := &ProjectsAppsExchangeCustomTokenCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangecustomtokenrequest = googlefirebaseappcheckv1exchangecustomtokenrequest
	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 *ProjectsAppsExchangeCustomTokenCall) Fields(s ...googleapi.Field) *ProjectsAppsExchangeCustomTokenCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsExchangeCustomTokenCall) Context(ctx context.Context) *ProjectsAppsExchangeCustomTokenCall {
	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 *ProjectsAppsExchangeCustomTokenCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsExchangeCustomTokenCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangecustomtokenrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeCustomToken")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.exchangeCustomToken", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.exchangeCustomToken" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *ProjectsAppsExchangeCustomTokenCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.projects.apps.exchangeCustomToken", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsExchangeDebugTokenCall struct {
	s                                                 *Service
	appid                                             string
	googlefirebaseappcheckv1exchangedebugtokenrequest *GoogleFirebaseAppcheckV1ExchangeDebugTokenRequest
	urlParams_                                        gensupport.URLParams
	ctx_                                              context.Context
	header_                                           http.Header
}

// ExchangeDebugToken: Validates a debug token secret that you have previously
// created using CreateDebugToken. If valid, returns an AppCheckToken. Note
// that a restrictive quota is enforced on this method to prevent accidental
// exposure of the app to abuse.
//
//   - app: The relative resource name of the app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) ExchangeDebugToken(appid string, googlefirebaseappcheckv1exchangedebugtokenrequest *GoogleFirebaseAppcheckV1ExchangeDebugTokenRequest) *ProjectsAppsExchangeDebugTokenCall {
	c := &ProjectsAppsExchangeDebugTokenCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangedebugtokenrequest = googlefirebaseappcheckv1exchangedebugtokenrequest
	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 *ProjectsAppsExchangeDebugTokenCall) Fields(s ...googleapi.Field) *ProjectsAppsExchangeDebugTokenCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsExchangeDebugTokenCall) Context(ctx context.Context) *ProjectsAppsExchangeDebugTokenCall {
	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 *ProjectsAppsExchangeDebugTokenCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsExchangeDebugTokenCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangedebugtokenrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeDebugToken")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.exchangeDebugToken", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.exchangeDebugToken" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *ProjectsAppsExchangeDebugTokenCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.projects.apps.exchangeDebugToken", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsExchangeDeviceCheckTokenCall struct {
	s                                                       *Service
	appid                                                   string
	googlefirebaseappcheckv1exchangedevicechecktokenrequest *GoogleFirebaseAppcheckV1ExchangeDeviceCheckTokenRequest
	urlParams_                                              gensupport.URLParams
	ctx_                                                    context.Context
	header_                                                 http.Header
}

// ExchangeDeviceCheckToken: Accepts a `device_token`
// (https://developer.apple.com/documentation/devicecheck/dcdevice) issued by
// DeviceCheck, and attempts to validate it with Apple. If valid, returns an
// AppCheckToken.
//
//   - app: The relative resource name of the iOS app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) ExchangeDeviceCheckToken(appid string, googlefirebaseappcheckv1exchangedevicechecktokenrequest *GoogleFirebaseAppcheckV1ExchangeDeviceCheckTokenRequest) *ProjectsAppsExchangeDeviceCheckTokenCall {
	c := &ProjectsAppsExchangeDeviceCheckTokenCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangedevicechecktokenrequest = googlefirebaseappcheckv1exchangedevicechecktokenrequest
	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 *ProjectsAppsExchangeDeviceCheckTokenCall) Fields(s ...googleapi.Field) *ProjectsAppsExchangeDeviceCheckTokenCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsExchangeDeviceCheckTokenCall) Context(ctx context.Context) *ProjectsAppsExchangeDeviceCheckTokenCall {
	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 *ProjectsAppsExchangeDeviceCheckTokenCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsExchangeDeviceCheckTokenCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangedevicechecktokenrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeDeviceCheckToken")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.exchangeDeviceCheckToken", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.exchangeDeviceCheckToken" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *ProjectsAppsExchangeDeviceCheckTokenCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.projects.apps.exchangeDeviceCheckToken", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsExchangePlayIntegrityTokenCall struct {
	s                                                         *Service
	appid                                                     string
	googlefirebaseappcheckv1exchangeplayintegritytokenrequest *GoogleFirebaseAppcheckV1ExchangePlayIntegrityTokenRequest
	urlParams_                                                gensupport.URLParams
	ctx_                                                      context.Context
	header_                                                   http.Header
}

// ExchangePlayIntegrityToken: Validates an integrity verdict response token
// from Play Integrity
// (https://developer.android.com/google/play/integrity/verdict#decrypt-verify).
// If valid, returns an AppCheckToken.
//
//   - app: The relative resource name of the Android app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) ExchangePlayIntegrityToken(appid string, googlefirebaseappcheckv1exchangeplayintegritytokenrequest *GoogleFirebaseAppcheckV1ExchangePlayIntegrityTokenRequest) *ProjectsAppsExchangePlayIntegrityTokenCall {
	c := &ProjectsAppsExchangePlayIntegrityTokenCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangeplayintegritytokenrequest = googlefirebaseappcheckv1exchangeplayintegritytokenrequest
	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 *ProjectsAppsExchangePlayIntegrityTokenCall) Fields(s ...googleapi.Field) *ProjectsAppsExchangePlayIntegrityTokenCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsExchangePlayIntegrityTokenCall) Context(ctx context.Context) *ProjectsAppsExchangePlayIntegrityTokenCall {
	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 *ProjectsAppsExchangePlayIntegrityTokenCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsExchangePlayIntegrityTokenCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangeplayintegritytokenrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangePlayIntegrityToken")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.exchangePlayIntegrityToken", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.exchangePlayIntegrityToken" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *ProjectsAppsExchangePlayIntegrityTokenCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.projects.apps.exchangePlayIntegrityToken", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsExchangeRecaptchaEnterpriseTokenCall struct {
	s                                                               *Service
	appid                                                           string
	googlefirebaseappcheckv1exchangerecaptchaenterprisetokenrequest *GoogleFirebaseAppcheckV1ExchangeRecaptchaEnterpriseTokenRequest
	urlParams_                                                      gensupport.URLParams
	ctx_                                                            context.Context
	header_                                                         http.Header
}

// ExchangeRecaptchaEnterpriseToken: Validates a reCAPTCHA Enterprise response
// token
// (https://cloud.google.com/recaptcha-enterprise/docs/create-assessment#retrieve_token).
// If valid, returns an AppCheckToken.
//
//   - app: The relative resource name of the web app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) ExchangeRecaptchaEnterpriseToken(appid string, googlefirebaseappcheckv1exchangerecaptchaenterprisetokenrequest *GoogleFirebaseAppcheckV1ExchangeRecaptchaEnterpriseTokenRequest) *ProjectsAppsExchangeRecaptchaEnterpriseTokenCall {
	c := &ProjectsAppsExchangeRecaptchaEnterpriseTokenCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangerecaptchaenterprisetokenrequest = googlefirebaseappcheckv1exchangerecaptchaenterprisetokenrequest
	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 *ProjectsAppsExchangeRecaptchaEnterpriseTokenCall) Fields(s ...googleapi.Field) *ProjectsAppsExchangeRecaptchaEnterpriseTokenCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsExchangeRecaptchaEnterpriseTokenCall) Context(ctx context.Context) *ProjectsAppsExchangeRecaptchaEnterpriseTokenCall {
	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 *ProjectsAppsExchangeRecaptchaEnterpriseTokenCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsExchangeRecaptchaEnterpriseTokenCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangerecaptchaenterprisetokenrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeRecaptchaEnterpriseToken")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.exchangeRecaptchaEnterpriseToken", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.exchangeRecaptchaEnterpriseToken" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *ProjectsAppsExchangeRecaptchaEnterpriseTokenCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.projects.apps.exchangeRecaptchaEnterpriseToken", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsExchangeRecaptchaV3TokenCall struct {
	s                                                       *Service
	appid                                                   string
	googlefirebaseappcheckv1exchangerecaptchav3tokenrequest *GoogleFirebaseAppcheckV1ExchangeRecaptchaV3TokenRequest
	urlParams_                                              gensupport.URLParams
	ctx_                                                    context.Context
	header_                                                 http.Header
}

// ExchangeRecaptchaV3Token: Validates a reCAPTCHA v3 response token
// (https://developers.google.com/recaptcha/docs/v3). If valid, returns an
// AppCheckToken.
//
//   - app: The relative resource name of the web app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) ExchangeRecaptchaV3Token(appid string, googlefirebaseappcheckv1exchangerecaptchav3tokenrequest *GoogleFirebaseAppcheckV1ExchangeRecaptchaV3TokenRequest) *ProjectsAppsExchangeRecaptchaV3TokenCall {
	c := &ProjectsAppsExchangeRecaptchaV3TokenCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1exchangerecaptchav3tokenrequest = googlefirebaseappcheckv1exchangerecaptchav3tokenrequest
	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 *ProjectsAppsExchangeRecaptchaV3TokenCall) Fields(s ...googleapi.Field) *ProjectsAppsExchangeRecaptchaV3TokenCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsExchangeRecaptchaV3TokenCall) Context(ctx context.Context) *ProjectsAppsExchangeRecaptchaV3TokenCall {
	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 *ProjectsAppsExchangeRecaptchaV3TokenCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsExchangeRecaptchaV3TokenCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1exchangerecaptchav3tokenrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:exchangeRecaptchaV3Token")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.exchangeRecaptchaV3Token", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.exchangeRecaptchaV3Token" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppCheckToken.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 *ProjectsAppsExchangeRecaptchaV3TokenCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppCheckToken, 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 := &GoogleFirebaseAppcheckV1AppCheckToken{
		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", "firebaseappcheck.projects.apps.exchangeRecaptchaV3Token", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsGenerateAppAttestChallengeCall struct {
	s                                                         *Service
	appid                                                     string
	googlefirebaseappcheckv1generateappattestchallengerequest *GoogleFirebaseAppcheckV1GenerateAppAttestChallengeRequest
	urlParams_                                                gensupport.URLParams
	ctx_                                                      context.Context
	header_                                                   http.Header
}

// GenerateAppAttestChallenge: Generates a challenge that protects the
// integrity of an immediately following call to ExchangeAppAttestAttestation
// or ExchangeAppAttestAssertion. A challenge should not be reused for multiple
// calls.
//
//   - app: The relative resource name of the iOS app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) GenerateAppAttestChallenge(appid string, googlefirebaseappcheckv1generateappattestchallengerequest *GoogleFirebaseAppcheckV1GenerateAppAttestChallengeRequest) *ProjectsAppsGenerateAppAttestChallengeCall {
	c := &ProjectsAppsGenerateAppAttestChallengeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1generateappattestchallengerequest = googlefirebaseappcheckv1generateappattestchallengerequest
	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 *ProjectsAppsGenerateAppAttestChallengeCall) Fields(s ...googleapi.Field) *ProjectsAppsGenerateAppAttestChallengeCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsGenerateAppAttestChallengeCall) Context(ctx context.Context) *ProjectsAppsGenerateAppAttestChallengeCall {
	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 *ProjectsAppsGenerateAppAttestChallengeCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsGenerateAppAttestChallengeCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1generateappattestchallengerequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:generateAppAttestChallenge")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.generateAppAttestChallenge", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.generateAppAttestChallenge" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse.ServerResponse.He
// ader 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 *ProjectsAppsGenerateAppAttestChallengeCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse, 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 := &GoogleFirebaseAppcheckV1GenerateAppAttestChallengeResponse{
		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", "firebaseappcheck.projects.apps.generateAppAttestChallenge", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsGeneratePlayIntegrityChallengeCall struct {
	s                                                             *Service
	appid                                                         string
	googlefirebaseappcheckv1generateplayintegritychallengerequest *GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeRequest
	urlParams_                                                    gensupport.URLParams
	ctx_                                                          context.Context
	header_                                                       http.Header
}

// GeneratePlayIntegrityChallenge: Generates a challenge that protects the
// integrity of an immediately following integrity verdict request to the Play
// Integrity API. The next call to ExchangePlayIntegrityToken using the
// resulting integrity token will verify the presence and validity of the
// challenge. A challenge should not be reused for multiple calls.
//
//   - app: The relative resource name of the app, in the format: ```
//     projects/{project_number}/apps/{app_id} ``` If necessary, the
//     `project_number` element can be replaced with the project ID of the
//     Firebase project. Learn more about using project identifiers in Google's
//     AIP 2510 (https://google.aip.dev/cloud/2510) standard.
func (r *ProjectsAppsService) GeneratePlayIntegrityChallenge(appid string, googlefirebaseappcheckv1generateplayintegritychallengerequest *GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeRequest) *ProjectsAppsGeneratePlayIntegrityChallengeCall {
	c := &ProjectsAppsGeneratePlayIntegrityChallengeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.appid = appid
	c.googlefirebaseappcheckv1generateplayintegritychallengerequest = googlefirebaseappcheckv1generateplayintegritychallengerequest
	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 *ProjectsAppsGeneratePlayIntegrityChallengeCall) Fields(s ...googleapi.Field) *ProjectsAppsGeneratePlayIntegrityChallengeCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsGeneratePlayIntegrityChallengeCall) Context(ctx context.Context) *ProjectsAppsGeneratePlayIntegrityChallengeCall {
	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 *ProjectsAppsGeneratePlayIntegrityChallengeCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsGeneratePlayIntegrityChallengeCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1generateplayintegritychallengerequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+app}:generatePlayIntegrityChallenge")
	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{
		"app": c.appid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.generatePlayIntegrityChallenge", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.generatePlayIntegrityChallenge" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeResponse.ServerRespons
// e.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 *ProjectsAppsGeneratePlayIntegrityChallengeCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeResponse, 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 := &GoogleFirebaseAppcheckV1GeneratePlayIntegrityChallengeResponse{
		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", "firebaseappcheck.projects.apps.generatePlayIntegrityChallenge", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsAppAttestConfigBatchGetCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// BatchGet: Atomically gets the AppAttestConfigs for the specified list of
// apps.
//
//   - parent: The parent project name shared by all AppAttestConfigs being
//     retrieved, in the format ``` projects/{project_number} ``` The parent
//     collection in the `name` field of any resource being retrieved must match
//     this field, or the entire batch fails.
func (r *ProjectsAppsAppAttestConfigService) BatchGet(parent string) *ProjectsAppsAppAttestConfigBatchGetCall {
	c := &ProjectsAppsAppAttestConfigBatchGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Names sets the optional parameter "names": Required. The relative resource
// names of the AppAttestConfigs to retrieve, in the format ```
// projects/{project_number}/apps/{app_id}/appAttestConfig ``` A maximum of 100
// objects can be retrieved in a batch.
func (c *ProjectsAppsAppAttestConfigBatchGetCall) Names(names ...string) *ProjectsAppsAppAttestConfigBatchGetCall {
	c.urlParams_.SetMulti("names", append([]string{}, names...))
	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 *ProjectsAppsAppAttestConfigBatchGetCall) Fields(s ...googleapi.Field) *ProjectsAppsAppAttestConfigBatchGetCall {
	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 *ProjectsAppsAppAttestConfigBatchGetCall) IfNoneMatch(entityTag string) *ProjectsAppsAppAttestConfigBatchGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsAppAttestConfigBatchGetCall) Context(ctx context.Context) *ProjectsAppsAppAttestConfigBatchGetCall {
	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 *ProjectsAppsAppAttestConfigBatchGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsAppAttestConfigBatchGetCall) 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/{+parent}/apps/-/appAttestConfig:batchGet")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.appAttestConfig.batchGet", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.appAttestConfig.batchGet" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1BatchGetAppAttestConfigsResponse.ServerResponse.Head
// er 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 *ProjectsAppsAppAttestConfigBatchGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1BatchGetAppAttestConfigsResponse, 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 := &GoogleFirebaseAppcheckV1BatchGetAppAttestConfigsResponse{
		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", "firebaseappcheck.projects.apps.appAttestConfig.batchGet", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the AppAttestConfig for the specified app.
//
//   - name: The relative resource name of the AppAttestConfig, in the format:
//     ``` projects/{project_number}/apps/{app_id}/appAttestConfig ```.
func (r *ProjectsAppsAppAttestConfigService) Get(name string) *ProjectsAppsAppAttestConfigGetCall {
	c := &ProjectsAppsAppAttestConfigGetCall{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 *ProjectsAppsAppAttestConfigGetCall) Fields(s ...googleapi.Field) *ProjectsAppsAppAttestConfigGetCall {
	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 *ProjectsAppsAppAttestConfigGetCall) IfNoneMatch(entityTag string) *ProjectsAppsAppAttestConfigGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsAppAttestConfigGetCall) Context(ctx context.Context) *ProjectsAppsAppAttestConfigGetCall {
	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 *ProjectsAppsAppAttestConfigGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsAppAttestConfigGetCall) 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", "firebaseappcheck.projects.apps.appAttestConfig.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.appAttestConfig.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppAttestConfig.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 *ProjectsAppsAppAttestConfigGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppAttestConfig, 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 := &GoogleFirebaseAppcheckV1AppAttestConfig{
		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", "firebaseappcheck.projects.apps.appAttestConfig.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsAppAttestConfigPatchCall struct {
	s                                       *Service
	name                                    string
	googlefirebaseappcheckv1appattestconfig *GoogleFirebaseAppcheckV1AppAttestConfig
	urlParams_                              gensupport.URLParams
	ctx_                                    context.Context
	header_                                 http.Header
}

// Patch: Updates the AppAttestConfig for the specified app. While this
// configuration is incomplete or invalid, the app will be unable to exchange
// AppAttest tokens for App Check tokens.
//
//   - name: The relative resource name of the App Attest configuration object,
//     in the format: ``` projects/{project_number}/apps/{app_id}/appAttestConfig
//     ```.
func (r *ProjectsAppsAppAttestConfigService) Patch(name string, googlefirebaseappcheckv1appattestconfig *GoogleFirebaseAppcheckV1AppAttestConfig) *ProjectsAppsAppAttestConfigPatchCall {
	c := &ProjectsAppsAppAttestConfigPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlefirebaseappcheckv1appattestconfig = googlefirebaseappcheckv1appattestconfig
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. A
// comma-separated list of names of fields in the AppAttestConfig to update.
// Example: `token_ttl`.
func (c *ProjectsAppsAppAttestConfigPatchCall) UpdateMask(updateMask string) *ProjectsAppsAppAttestConfigPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsAppsAppAttestConfigPatchCall) Fields(s ...googleapi.Field) *ProjectsAppsAppAttestConfigPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsAppAttestConfigPatchCall) Context(ctx context.Context) *ProjectsAppsAppAttestConfigPatchCall {
	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 *ProjectsAppsAppAttestConfigPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsAppAttestConfigPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1appattestconfig)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	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", "firebaseappcheck.projects.apps.appAttestConfig.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.appAttestConfig.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1AppAttestConfig.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 *ProjectsAppsAppAttestConfigPatchCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1AppAttestConfig, 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 := &GoogleFirebaseAppcheckV1AppAttestConfig{
		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", "firebaseappcheck.projects.apps.appAttestConfig.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsDebugTokensCreateCall struct {
	s                                  *Service
	parent                             string
	googlefirebaseappcheckv1debugtoken *GoogleFirebaseAppcheckV1DebugToken
	urlParams_                         gensupport.URLParams
	ctx_                               context.Context
	header_                            http.Header
}

// Create: Creates a new DebugToken for the specified app. For security
// reasons, after the creation operation completes, the `token` field cannot be
// updated or retrieved, but you can revoke the debug token using
// DeleteDebugToken. Each app can have a maximum of 20 debug tokens.
//
//   - parent: The relative resource name of the parent app in which the
//     specified DebugToken will be created, in the format: ```
//     projects/{project_number}/apps/{app_id} ```.
func (r *ProjectsAppsDebugTokensService) Create(parent string, googlefirebaseappcheckv1debugtoken *GoogleFirebaseAppcheckV1DebugToken) *ProjectsAppsDebugTokensCreateCall {
	c := &ProjectsAppsDebugTokensCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlefirebaseappcheckv1debugtoken = googlefirebaseappcheckv1debugtoken
	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 *ProjectsAppsDebugTokensCreateCall) Fields(s ...googleapi.Field) *ProjectsAppsDebugTokensCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsDebugTokensCreateCall) Context(ctx context.Context) *ProjectsAppsDebugTokensCreateCall {
	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 *ProjectsAppsDebugTokensCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsDebugTokensCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1debugtoken)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/debugTokens")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.debugTokens.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.debugTokens.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1DebugToken.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 *ProjectsAppsDebugTokensCreateCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1DebugToken, 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 := &GoogleFirebaseAppcheckV1DebugToken{
		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", "firebaseappcheck.projects.apps.debugTokens.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsDebugTokensDeleteCall struct {
	s          *Service
	name       string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Deletes the specified DebugToken. A deleted debug token cannot be
// used to exchange for an App Check token. Use this method when you suspect
// the secret `token` has been compromised or when you no longer need the debug
// token.
//
//   - name: The relative resource name of the DebugToken to delete, in the
//     format: ```
//     projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```.
func (r *ProjectsAppsDebugTokensService) Delete(name string) *ProjectsAppsDebugTokensDeleteCall {
	c := &ProjectsAppsDebugTokensDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Etag sets the optional parameter "etag": The checksum to be validated
// against the current DebugToken, to ensure the client has an up-to-date value
// before proceeding. This checksum is computed by the server based on the
// values of fields in the DebugToken object, and can be obtained from the
// DebugToken object received from the last CreateDebugToken, GetDebugToken,
// ListDebugTokens, or UpdateDebugToken call. This etag is strongly validated
// as defined by RFC 7232.
func (c *ProjectsAppsDebugTokensDeleteCall) Etag(etag string) *ProjectsAppsDebugTokensDeleteCall {
	c.urlParams_.Set("etag", etag)
	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 *ProjectsAppsDebugTokensDeleteCall) Fields(s ...googleapi.Field) *ProjectsAppsDebugTokensDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsDebugTokensDeleteCall) Context(ctx context.Context) *ProjectsAppsDebugTokensDeleteCall {
	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 *ProjectsAppsDebugTokensDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsDebugTokensDeleteCall) 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/{+name}")
	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{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.debugTokens.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.debugTokens.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.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 *ProjectsAppsDebugTokensDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, 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 := &GoogleProtobufEmpty{
		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", "firebaseappcheck.projects.apps.debugTokens.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the specified DebugToken. For security reasons, the `token` field
// is never populated in the response.
//
//   - name: The relative resource name of the debug token, in the format: ```
//     projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```.
func (r *ProjectsAppsDebugTokensService) Get(name string) *ProjectsAppsDebugTokensGetCall {
	c := &ProjectsAppsDebugTokensGetCall{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 *ProjectsAppsDebugTokensGetCall) Fields(s ...googleapi.Field) *ProjectsAppsDebugTokensGetCall {
	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 *ProjectsAppsDebugTokensGetCall) IfNoneMatch(entityTag string) *ProjectsAppsDebugTokensGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsDebugTokensGetCall) Context(ctx context.Context) *ProjectsAppsDebugTokensGetCall {
	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 *ProjectsAppsDebugTokensGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsDebugTokensGetCall) 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", "firebaseappcheck.projects.apps.debugTokens.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.debugTokens.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1DebugToken.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 *ProjectsAppsDebugTokensGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1DebugToken, 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 := &GoogleFirebaseAppcheckV1DebugToken{
		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", "firebaseappcheck.projects.apps.debugTokens.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsDebugTokensListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists all DebugTokens for the specified app. For security reasons, the
// `token` field is never populated in the response.
//
//   - parent: The relative resource name of the parent app for which to list
//     each associated DebugToken, in the format: ```
//     projects/{project_number}/apps/{app_id} ```.
func (r *ProjectsAppsDebugTokensService) List(parent string) *ProjectsAppsDebugTokensListCall {
	c := &ProjectsAppsDebugTokensListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// DebugTokens to return in the response. Note that an app can have at most 20
// debug tokens. The server may return fewer than this at its own discretion.
// If no value is specified (or too large a value is specified), the server
// will impose its own limit.
func (c *ProjectsAppsDebugTokensListCall) PageSize(pageSize int64) *ProjectsAppsDebugTokensListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Token returned from a
// previous call to ListDebugTokens indicating where in the set of DebugTokens
// to resume listing. Provide this to retrieve the subsequent page. When
// paginating, all other parameters provided to ListDebugTokens must match the
// call that provided the page token; if they do not match, the result is
// undefined.
func (c *ProjectsAppsDebugTokensListCall) PageToken(pageToken string) *ProjectsAppsDebugTokensListCall {
	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 *ProjectsAppsDebugTokensListCall) Fields(s ...googleapi.Field) *ProjectsAppsDebugTokensListCall {
	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 *ProjectsAppsDebugTokensListCall) IfNoneMatch(entityTag string) *ProjectsAppsDebugTokensListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsDebugTokensListCall) Context(ctx context.Context) *ProjectsAppsDebugTokensListCall {
	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 *ProjectsAppsDebugTokensListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsDebugTokensListCall) 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/{+parent}/debugTokens")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.debugTokens.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.debugTokens.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1ListDebugTokensResponse.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 *ProjectsAppsDebugTokensListCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1ListDebugTokensResponse, 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 := &GoogleFirebaseAppcheckV1ListDebugTokensResponse{
		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", "firebaseappcheck.projects.apps.debugTokens.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 *ProjectsAppsDebugTokensListCall) Pages(ctx context.Context, f func(*GoogleFirebaseAppcheckV1ListDebugTokensResponse) 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 ProjectsAppsDebugTokensPatchCall struct {
	s                                  *Service
	name                               string
	googlefirebaseappcheckv1debugtoken *GoogleFirebaseAppcheckV1DebugToken
	urlParams_                         gensupport.URLParams
	ctx_                               context.Context
	header_                            http.Header
}

// Patch: Updates the specified DebugToken. For security reasons, the `token`
// field cannot be updated, nor will it be populated in the response, but you
// can revoke the debug token using DeleteDebugToken.
//
//   - name: The relative resource name of the debug token, in the format: ```
//     projects/{project_number}/apps/{app_id}/debugTokens/{debug_token_id} ```.
func (r *ProjectsAppsDebugTokensService) Patch(name string, googlefirebaseappcheckv1debugtoken *GoogleFirebaseAppcheckV1DebugToken) *ProjectsAppsDebugTokensPatchCall {
	c := &ProjectsAppsDebugTokensPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlefirebaseappcheckv1debugtoken = googlefirebaseappcheckv1debugtoken
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. A
// comma-separated list of names of fields in the DebugToken to update.
// Example: `display_name`.
func (c *ProjectsAppsDebugTokensPatchCall) UpdateMask(updateMask string) *ProjectsAppsDebugTokensPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsAppsDebugTokensPatchCall) Fields(s ...googleapi.Field) *ProjectsAppsDebugTokensPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsDebugTokensPatchCall) Context(ctx context.Context) *ProjectsAppsDebugTokensPatchCall {
	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 *ProjectsAppsDebugTokensPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsDebugTokensPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1debugtoken)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	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", "firebaseappcheck.projects.apps.debugTokens.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.debugTokens.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1DebugToken.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 *ProjectsAppsDebugTokensPatchCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1DebugToken, 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 := &GoogleFirebaseAppcheckV1DebugToken{
		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", "firebaseappcheck.projects.apps.debugTokens.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsDeviceCheckConfigBatchGetCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// BatchGet: Atomically gets the DeviceCheckConfigs for the specified list of
// apps. For security reasons, the `private_key` field is never populated in
// the response.
//
//   - parent: The parent project name shared by all DeviceCheckConfigs being
//     retrieved, in the format ``` projects/{project_number} ``` The parent
//     collection in the `name` field of any resource being retrieved must match
//     this field, or the entire batch fails.
func (r *ProjectsAppsDeviceCheckConfigService) BatchGet(parent string) *ProjectsAppsDeviceCheckConfigBatchGetCall {
	c := &ProjectsAppsDeviceCheckConfigBatchGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Names sets the optional parameter "names": Required. The relative resource
// names of the DeviceCheckConfigs to retrieve, in the format ```
// projects/{project_number}/apps/{app_id}/deviceCheckConfig ``` A maximum of
// 100 objects can be retrieved in a batch.
func (c *ProjectsAppsDeviceCheckConfigBatchGetCall) Names(names ...string) *ProjectsAppsDeviceCheckConfigBatchGetCall {
	c.urlParams_.SetMulti("names", append([]string{}, names...))
	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 *ProjectsAppsDeviceCheckConfigBatchGetCall) Fields(s ...googleapi.Field) *ProjectsAppsDeviceCheckConfigBatchGetCall {
	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 *ProjectsAppsDeviceCheckConfigBatchGetCall) IfNoneMatch(entityTag string) *ProjectsAppsDeviceCheckConfigBatchGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsDeviceCheckConfigBatchGetCall) Context(ctx context.Context) *ProjectsAppsDeviceCheckConfigBatchGetCall {
	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 *ProjectsAppsDeviceCheckConfigBatchGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsDeviceCheckConfigBatchGetCall) 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/{+parent}/apps/-/deviceCheckConfig:batchGet")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.deviceCheckConfig.batchGet", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.deviceCheckConfig.batchGet" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1BatchGetDeviceCheckConfigsResponse.ServerResponse.He
// ader 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 *ProjectsAppsDeviceCheckConfigBatchGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1BatchGetDeviceCheckConfigsResponse, 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 := &GoogleFirebaseAppcheckV1BatchGetDeviceCheckConfigsResponse{
		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", "firebaseappcheck.projects.apps.deviceCheckConfig.batchGet", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the DeviceCheckConfig for the specified app. For security reasons,
// the `private_key` field is never populated in the response.
//
//   - name: The relative resource name of the DeviceCheckConfig, in the format:
//     ``` projects/{project_number}/apps/{app_id}/deviceCheckConfig ```.
func (r *ProjectsAppsDeviceCheckConfigService) Get(name string) *ProjectsAppsDeviceCheckConfigGetCall {
	c := &ProjectsAppsDeviceCheckConfigGetCall{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 *ProjectsAppsDeviceCheckConfigGetCall) Fields(s ...googleapi.Field) *ProjectsAppsDeviceCheckConfigGetCall {
	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 *ProjectsAppsDeviceCheckConfigGetCall) IfNoneMatch(entityTag string) *ProjectsAppsDeviceCheckConfigGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsDeviceCheckConfigGetCall) Context(ctx context.Context) *ProjectsAppsDeviceCheckConfigGetCall {
	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 *ProjectsAppsDeviceCheckConfigGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsDeviceCheckConfigGetCall) 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", "firebaseappcheck.projects.apps.deviceCheckConfig.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.deviceCheckConfig.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1DeviceCheckConfig.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 *ProjectsAppsDeviceCheckConfigGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1DeviceCheckConfig, 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 := &GoogleFirebaseAppcheckV1DeviceCheckConfig{
		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", "firebaseappcheck.projects.apps.deviceCheckConfig.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsDeviceCheckConfigPatchCall struct {
	s                                         *Service
	name                                      string
	googlefirebaseappcheckv1devicecheckconfig *GoogleFirebaseAppcheckV1DeviceCheckConfig
	urlParams_                                gensupport.URLParams
	ctx_                                      context.Context
	header_                                   http.Header
}

// Patch: Updates the DeviceCheckConfig for the specified app. While this
// configuration is incomplete or invalid, the app will be unable to exchange
// DeviceCheck tokens for App Check tokens. For security reasons, the
// `private_key` field is never populated in the response.
//
//   - name: The relative resource name of the DeviceCheck configuration object,
//     in the format: ```
//     projects/{project_number}/apps/{app_id}/deviceCheckConfig ```.
func (r *ProjectsAppsDeviceCheckConfigService) Patch(name string, googlefirebaseappcheckv1devicecheckconfig *GoogleFirebaseAppcheckV1DeviceCheckConfig) *ProjectsAppsDeviceCheckConfigPatchCall {
	c := &ProjectsAppsDeviceCheckConfigPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlefirebaseappcheckv1devicecheckconfig = googlefirebaseappcheckv1devicecheckconfig
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. A
// comma-separated list of names of fields in the DeviceCheckConfig to update.
// Example: `key_id,private_key`.
func (c *ProjectsAppsDeviceCheckConfigPatchCall) UpdateMask(updateMask string) *ProjectsAppsDeviceCheckConfigPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsAppsDeviceCheckConfigPatchCall) Fields(s ...googleapi.Field) *ProjectsAppsDeviceCheckConfigPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsDeviceCheckConfigPatchCall) Context(ctx context.Context) *ProjectsAppsDeviceCheckConfigPatchCall {
	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 *ProjectsAppsDeviceCheckConfigPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsDeviceCheckConfigPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1devicecheckconfig)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	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", "firebaseappcheck.projects.apps.deviceCheckConfig.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.deviceCheckConfig.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1DeviceCheckConfig.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 *ProjectsAppsDeviceCheckConfigPatchCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1DeviceCheckConfig, 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 := &GoogleFirebaseAppcheckV1DeviceCheckConfig{
		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", "firebaseappcheck.projects.apps.deviceCheckConfig.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsPlayIntegrityConfigBatchGetCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// BatchGet: Atomically gets the PlayIntegrityConfigs for the specified list of
// apps.
//
//   - parent: The parent project name shared by all PlayIntegrityConfigs being
//     retrieved, in the format ``` projects/{project_number} ``` The parent
//     collection in the `name` field of any resource being retrieved must match
//     this field, or the entire batch fails.
func (r *ProjectsAppsPlayIntegrityConfigService) BatchGet(parent string) *ProjectsAppsPlayIntegrityConfigBatchGetCall {
	c := &ProjectsAppsPlayIntegrityConfigBatchGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Names sets the optional parameter "names": Required. The relative resource
// names of the PlayIntegrityConfigs to retrieve, in the format ```
// projects/{project_number}/apps/{app_id}/playIntegrityConfig ``` A maximum of
// 100 objects can be retrieved in a batch.
func (c *ProjectsAppsPlayIntegrityConfigBatchGetCall) Names(names ...string) *ProjectsAppsPlayIntegrityConfigBatchGetCall {
	c.urlParams_.SetMulti("names", append([]string{}, names...))
	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 *ProjectsAppsPlayIntegrityConfigBatchGetCall) Fields(s ...googleapi.Field) *ProjectsAppsPlayIntegrityConfigBatchGetCall {
	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 *ProjectsAppsPlayIntegrityConfigBatchGetCall) IfNoneMatch(entityTag string) *ProjectsAppsPlayIntegrityConfigBatchGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsPlayIntegrityConfigBatchGetCall) Context(ctx context.Context) *ProjectsAppsPlayIntegrityConfigBatchGetCall {
	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 *ProjectsAppsPlayIntegrityConfigBatchGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsPlayIntegrityConfigBatchGetCall) 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/{+parent}/apps/-/playIntegrityConfig:batchGet")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.playIntegrityConfig.batchGet", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.playIntegrityConfig.batchGet" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1BatchGetPlayIntegrityConfigsResponse.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 *ProjectsAppsPlayIntegrityConfigBatchGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1BatchGetPlayIntegrityConfigsResponse, 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 := &GoogleFirebaseAppcheckV1BatchGetPlayIntegrityConfigsResponse{
		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", "firebaseappcheck.projects.apps.playIntegrityConfig.batchGet", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the PlayIntegrityConfig for the specified app.
//
//   - name: The relative resource name of the PlayIntegrityConfig, in the
//     format: ``` projects/{project_number}/apps/{app_id}/playIntegrityConfig
//     ```.
func (r *ProjectsAppsPlayIntegrityConfigService) Get(name string) *ProjectsAppsPlayIntegrityConfigGetCall {
	c := &ProjectsAppsPlayIntegrityConfigGetCall{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 *ProjectsAppsPlayIntegrityConfigGetCall) Fields(s ...googleapi.Field) *ProjectsAppsPlayIntegrityConfigGetCall {
	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 *ProjectsAppsPlayIntegrityConfigGetCall) IfNoneMatch(entityTag string) *ProjectsAppsPlayIntegrityConfigGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsPlayIntegrityConfigGetCall) Context(ctx context.Context) *ProjectsAppsPlayIntegrityConfigGetCall {
	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 *ProjectsAppsPlayIntegrityConfigGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsPlayIntegrityConfigGetCall) 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", "firebaseappcheck.projects.apps.playIntegrityConfig.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.playIntegrityConfig.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1PlayIntegrityConfig.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 *ProjectsAppsPlayIntegrityConfigGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1PlayIntegrityConfig, 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 := &GoogleFirebaseAppcheckV1PlayIntegrityConfig{
		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", "firebaseappcheck.projects.apps.playIntegrityConfig.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsPlayIntegrityConfigPatchCall struct {
	s                                           *Service
	name                                        string
	googlefirebaseappcheckv1playintegrityconfig *GoogleFirebaseAppcheckV1PlayIntegrityConfig
	urlParams_                                  gensupport.URLParams
	ctx_                                        context.Context
	header_                                     http.Header
}

// Patch: Updates the PlayIntegrityConfig for the specified app. While this
// configuration is incomplete or invalid, the app will be unable to exchange
// Play Integrity tokens for App Check tokens.
//
//   - name: The relative resource name of the Play Integrity configuration
//     object, in the format: ```
//     projects/{project_number}/apps/{app_id}/playIntegrityConfig ```.
func (r *ProjectsAppsPlayIntegrityConfigService) Patch(name string, googlefirebaseappcheckv1playintegrityconfig *GoogleFirebaseAppcheckV1PlayIntegrityConfig) *ProjectsAppsPlayIntegrityConfigPatchCall {
	c := &ProjectsAppsPlayIntegrityConfigPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlefirebaseappcheckv1playintegrityconfig = googlefirebaseappcheckv1playintegrityconfig
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. A
// comma-separated list of names of fields in the PlayIntegrityConfig to
// update. Example: `token_ttl`.
func (c *ProjectsAppsPlayIntegrityConfigPatchCall) UpdateMask(updateMask string) *ProjectsAppsPlayIntegrityConfigPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsAppsPlayIntegrityConfigPatchCall) Fields(s ...googleapi.Field) *ProjectsAppsPlayIntegrityConfigPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsPlayIntegrityConfigPatchCall) Context(ctx context.Context) *ProjectsAppsPlayIntegrityConfigPatchCall {
	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 *ProjectsAppsPlayIntegrityConfigPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsPlayIntegrityConfigPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1playintegrityconfig)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	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", "firebaseappcheck.projects.apps.playIntegrityConfig.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.playIntegrityConfig.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1PlayIntegrityConfig.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 *ProjectsAppsPlayIntegrityConfigPatchCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1PlayIntegrityConfig, 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 := &GoogleFirebaseAppcheckV1PlayIntegrityConfig{
		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", "firebaseappcheck.projects.apps.playIntegrityConfig.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// BatchGet: Atomically gets the RecaptchaEnterpriseConfigs for the specified
// list of apps.
//
//   - parent: The parent project name shared by all RecaptchaEnterpriseConfigs
//     being retrieved, in the format ``` projects/{project_number} ``` The
//     parent collection in the `name` field of any resource being retrieved must
//     match this field, or the entire batch fails.
func (r *ProjectsAppsRecaptchaEnterpriseConfigService) BatchGet(parent string) *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall {
	c := &ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Names sets the optional parameter "names": Required. The relative resource
// names of the RecaptchaEnterpriseConfigs to retrieve, in the format: ```
// projects/{project_number}/apps/{app_id}/recaptchaEnterpriseConfig ``` A
// maximum of 100 objects can be retrieved in a batch.
func (c *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall) Names(names ...string) *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall {
	c.urlParams_.SetMulti("names", append([]string{}, names...))
	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 *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall) Fields(s ...googleapi.Field) *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall {
	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 *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall) IfNoneMatch(entityTag string) *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall) Context(ctx context.Context) *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall {
	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 *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall) 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/{+parent}/apps/-/recaptchaEnterpriseConfig:batchGet")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.batchGet", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.batchGet" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1BatchGetRecaptchaEnterpriseConfigsResponse.ServerRes
// ponse.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 *ProjectsAppsRecaptchaEnterpriseConfigBatchGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1BatchGetRecaptchaEnterpriseConfigsResponse, 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 := &GoogleFirebaseAppcheckV1BatchGetRecaptchaEnterpriseConfigsResponse{
		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", "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.batchGet", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the RecaptchaEnterpriseConfig for the specified app.
//
//   - name: The relative resource name of the RecaptchaEnterpriseConfig, in the
//     format: ```
//     projects/{project_number}/apps/{app_id}/recaptchaEnterpriseConfig ```.
func (r *ProjectsAppsRecaptchaEnterpriseConfigService) Get(name string) *ProjectsAppsRecaptchaEnterpriseConfigGetCall {
	c := &ProjectsAppsRecaptchaEnterpriseConfigGetCall{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 *ProjectsAppsRecaptchaEnterpriseConfigGetCall) Fields(s ...googleapi.Field) *ProjectsAppsRecaptchaEnterpriseConfigGetCall {
	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 *ProjectsAppsRecaptchaEnterpriseConfigGetCall) IfNoneMatch(entityTag string) *ProjectsAppsRecaptchaEnterpriseConfigGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsRecaptchaEnterpriseConfigGetCall) Context(ctx context.Context) *ProjectsAppsRecaptchaEnterpriseConfigGetCall {
	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 *ProjectsAppsRecaptchaEnterpriseConfigGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsRecaptchaEnterpriseConfigGetCall) 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", "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig.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 *ProjectsAppsRecaptchaEnterpriseConfigGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig, 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 := &GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig{
		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", "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsRecaptchaEnterpriseConfigPatchCall struct {
	s                                                 *Service
	name                                              string
	googlefirebaseappcheckv1recaptchaenterpriseconfig *GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig
	urlParams_                                        gensupport.URLParams
	ctx_                                              context.Context
	header_                                           http.Header
}

// Patch: Updates the RecaptchaEnterpriseConfig for the specified app. While
// this configuration is incomplete or invalid, the app will be unable to
// exchange reCAPTCHA Enterprise tokens for App Check tokens.
//
//   - name: The relative resource name of the reCAPTCHA Enterprise configuration
//     object, in the format: ```
//     projects/{project_number}/apps/{app_id}/recaptchaEnterpriseConfig ```.
func (r *ProjectsAppsRecaptchaEnterpriseConfigService) Patch(name string, googlefirebaseappcheckv1recaptchaenterpriseconfig *GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig) *ProjectsAppsRecaptchaEnterpriseConfigPatchCall {
	c := &ProjectsAppsRecaptchaEnterpriseConfigPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlefirebaseappcheckv1recaptchaenterpriseconfig = googlefirebaseappcheckv1recaptchaenterpriseconfig
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. A
// comma-separated list of names of fields in the RecaptchaEnterpriseConfig to
// update. Example: `site_key`.
func (c *ProjectsAppsRecaptchaEnterpriseConfigPatchCall) UpdateMask(updateMask string) *ProjectsAppsRecaptchaEnterpriseConfigPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsAppsRecaptchaEnterpriseConfigPatchCall) Fields(s ...googleapi.Field) *ProjectsAppsRecaptchaEnterpriseConfigPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsRecaptchaEnterpriseConfigPatchCall) Context(ctx context.Context) *ProjectsAppsRecaptchaEnterpriseConfigPatchCall {
	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 *ProjectsAppsRecaptchaEnterpriseConfigPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsRecaptchaEnterpriseConfigPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1recaptchaenterpriseconfig)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	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", "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig.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 *ProjectsAppsRecaptchaEnterpriseConfigPatchCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig, 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 := &GoogleFirebaseAppcheckV1RecaptchaEnterpriseConfig{
		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", "firebaseappcheck.projects.apps.recaptchaEnterpriseConfig.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsRecaptchaV3ConfigBatchGetCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// BatchGet: Atomically gets the RecaptchaV3Configs for the specified list of
// apps. For security reasons, the `site_secret` field is never populated in
// the response.
//
//   - parent: The parent project name shared by all RecaptchaV3Configs being
//     retrieved, in the format ``` projects/{project_number} ``` The parent
//     collection in the `name` field of any resource being retrieved must match
//     this field, or the entire batch fails.
func (r *ProjectsAppsRecaptchaV3ConfigService) BatchGet(parent string) *ProjectsAppsRecaptchaV3ConfigBatchGetCall {
	c := &ProjectsAppsRecaptchaV3ConfigBatchGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Names sets the optional parameter "names": Required. The relative resource
// names of the RecaptchaV3Configs to retrieve, in the format: ```
// projects/{project_number}/apps/{app_id}/recaptchaV3Config ``` A maximum of
// 100 objects can be retrieved in a batch.
func (c *ProjectsAppsRecaptchaV3ConfigBatchGetCall) Names(names ...string) *ProjectsAppsRecaptchaV3ConfigBatchGetCall {
	c.urlParams_.SetMulti("names", append([]string{}, names...))
	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 *ProjectsAppsRecaptchaV3ConfigBatchGetCall) Fields(s ...googleapi.Field) *ProjectsAppsRecaptchaV3ConfigBatchGetCall {
	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 *ProjectsAppsRecaptchaV3ConfigBatchGetCall) IfNoneMatch(entityTag string) *ProjectsAppsRecaptchaV3ConfigBatchGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsRecaptchaV3ConfigBatchGetCall) Context(ctx context.Context) *ProjectsAppsRecaptchaV3ConfigBatchGetCall {
	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 *ProjectsAppsRecaptchaV3ConfigBatchGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsRecaptchaV3ConfigBatchGetCall) 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/{+parent}/apps/-/recaptchaV3Config:batchGet")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.apps.recaptchaV3Config.batchGet", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.recaptchaV3Config.batchGet" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1BatchGetRecaptchaV3ConfigsResponse.ServerResponse.He
// ader 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 *ProjectsAppsRecaptchaV3ConfigBatchGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1BatchGetRecaptchaV3ConfigsResponse, 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 := &GoogleFirebaseAppcheckV1BatchGetRecaptchaV3ConfigsResponse{
		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", "firebaseappcheck.projects.apps.recaptchaV3Config.batchGet", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the RecaptchaV3Config for the specified app. For security reasons,
// the `site_secret` field is never populated in the response.
//
//   - name: The relative resource name of the RecaptchaV3Config, in the format:
//     ``` projects/{project_number}/apps/{app_id}/recaptchaV3Config ```.
func (r *ProjectsAppsRecaptchaV3ConfigService) Get(name string) *ProjectsAppsRecaptchaV3ConfigGetCall {
	c := &ProjectsAppsRecaptchaV3ConfigGetCall{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 *ProjectsAppsRecaptchaV3ConfigGetCall) Fields(s ...googleapi.Field) *ProjectsAppsRecaptchaV3ConfigGetCall {
	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 *ProjectsAppsRecaptchaV3ConfigGetCall) IfNoneMatch(entityTag string) *ProjectsAppsRecaptchaV3ConfigGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsRecaptchaV3ConfigGetCall) Context(ctx context.Context) *ProjectsAppsRecaptchaV3ConfigGetCall {
	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 *ProjectsAppsRecaptchaV3ConfigGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsRecaptchaV3ConfigGetCall) 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", "firebaseappcheck.projects.apps.recaptchaV3Config.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.recaptchaV3Config.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1RecaptchaV3Config.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 *ProjectsAppsRecaptchaV3ConfigGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1RecaptchaV3Config, 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 := &GoogleFirebaseAppcheckV1RecaptchaV3Config{
		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", "firebaseappcheck.projects.apps.recaptchaV3Config.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsAppsRecaptchaV3ConfigPatchCall struct {
	s                                         *Service
	name                                      string
	googlefirebaseappcheckv1recaptchav3config *GoogleFirebaseAppcheckV1RecaptchaV3Config
	urlParams_                                gensupport.URLParams
	ctx_                                      context.Context
	header_                                   http.Header
}

// Patch: Updates the RecaptchaV3Config for the specified app. While this
// configuration is incomplete or invalid, the app will be unable to exchange
// reCAPTCHA v3 tokens for App Check tokens. For security reasons, the
// `site_secret` field is never populated in the response.
//
//   - name: The relative resource name of the reCAPTCHA v3 configuration object,
//     in the format: ```
//     projects/{project_number}/apps/{app_id}/recaptchaV3Config ```.
func (r *ProjectsAppsRecaptchaV3ConfigService) Patch(name string, googlefirebaseappcheckv1recaptchav3config *GoogleFirebaseAppcheckV1RecaptchaV3Config) *ProjectsAppsRecaptchaV3ConfigPatchCall {
	c := &ProjectsAppsRecaptchaV3ConfigPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlefirebaseappcheckv1recaptchav3config = googlefirebaseappcheckv1recaptchav3config
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. A
// comma-separated list of names of fields in the RecaptchaV3Config to update.
// Example: `site_secret`.
func (c *ProjectsAppsRecaptchaV3ConfigPatchCall) UpdateMask(updateMask string) *ProjectsAppsRecaptchaV3ConfigPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsAppsRecaptchaV3ConfigPatchCall) Fields(s ...googleapi.Field) *ProjectsAppsRecaptchaV3ConfigPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsAppsRecaptchaV3ConfigPatchCall) Context(ctx context.Context) *ProjectsAppsRecaptchaV3ConfigPatchCall {
	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 *ProjectsAppsRecaptchaV3ConfigPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsAppsRecaptchaV3ConfigPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1recaptchav3config)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	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", "firebaseappcheck.projects.apps.recaptchaV3Config.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.apps.recaptchaV3Config.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1RecaptchaV3Config.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 *ProjectsAppsRecaptchaV3ConfigPatchCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1RecaptchaV3Config, 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 := &GoogleFirebaseAppcheckV1RecaptchaV3Config{
		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", "firebaseappcheck.projects.apps.recaptchaV3Config.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsServicesBatchUpdateCall struct {
	s                                                  *Service
	parent                                             string
	googlefirebaseappcheckv1batchupdateservicesrequest *GoogleFirebaseAppcheckV1BatchUpdateServicesRequest
	urlParams_                                         gensupport.URLParams
	ctx_                                               context.Context
	header_                                            http.Header
}

// BatchUpdate: Atomically updates the specified Service configurations.
//
//   - parent: The parent project name shared by all Service configurations being
//     updated, in the format ``` projects/{project_number} ``` The parent
//     collection in the `name` field of any resource being updated must match
//     this field, or the entire batch fails.
func (r *ProjectsServicesService) BatchUpdate(parent string, googlefirebaseappcheckv1batchupdateservicesrequest *GoogleFirebaseAppcheckV1BatchUpdateServicesRequest) *ProjectsServicesBatchUpdateCall {
	c := &ProjectsServicesBatchUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlefirebaseappcheckv1batchupdateservicesrequest = googlefirebaseappcheckv1batchupdateservicesrequest
	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 *ProjectsServicesBatchUpdateCall) Fields(s ...googleapi.Field) *ProjectsServicesBatchUpdateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesBatchUpdateCall) Context(ctx context.Context) *ProjectsServicesBatchUpdateCall {
	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 *ProjectsServicesBatchUpdateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1batchupdateservicesrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/services:batchUpdate")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.services.batchUpdate", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.batchUpdate" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1BatchUpdateServicesResponse.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 *ProjectsServicesBatchUpdateCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1BatchUpdateServicesResponse, 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 := &GoogleFirebaseAppcheckV1BatchUpdateServicesResponse{
		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", "firebaseappcheck.projects.services.batchUpdate", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the Service configuration for the specified service name.
//
//   - name: The relative resource name of the Service to retrieve, in the
//     format: ``` projects/{project_number}/services/{service_id} ``` Note that
//     the `service_id` element must be a supported service ID. Consult the
//     Service.name field for a list of supported service IDs.
func (r *ProjectsServicesService) Get(name string) *ProjectsServicesGetCall {
	c := &ProjectsServicesGetCall{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 *ProjectsServicesGetCall) Fields(s ...googleapi.Field) *ProjectsServicesGetCall {
	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 *ProjectsServicesGetCall) IfNoneMatch(entityTag string) *ProjectsServicesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesGetCall) Context(ctx context.Context) *ProjectsServicesGetCall {
	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 *ProjectsServicesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesGetCall) 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", "firebaseappcheck.projects.services.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1Service.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 *ProjectsServicesGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1Service, 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 := &GoogleFirebaseAppcheckV1Service{
		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", "firebaseappcheck.projects.services.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsServicesListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists all Service configurations for the specified project. Only
// Services which were explicitly configured using UpdateService or
// BatchUpdateServices will be returned.
//
//   - parent: The relative resource name of the parent project for which to list
//     each associated Service, in the format: ``` projects/{project_number} ```.
func (r *ProjectsServicesService) List(parent string) *ProjectsServicesListCall {
	c := &ProjectsServicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// Services to return in the response. Only explicitly configured services are
// returned. The server may return fewer than this at its own discretion. If no
// value is specified (or too large a value is specified), the server will
// impose its own limit.
func (c *ProjectsServicesListCall) PageSize(pageSize int64) *ProjectsServicesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Token returned from a
// previous call to ListServices indicating where in the set of Services to
// resume listing. Provide this to retrieve the subsequent page. When
// paginating, all other parameters provided to ListServices must match the
// call that provided the page token; if they do not match, the result is
// undefined.
func (c *ProjectsServicesListCall) PageToken(pageToken string) *ProjectsServicesListCall {
	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 *ProjectsServicesListCall) Fields(s ...googleapi.Field) *ProjectsServicesListCall {
	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 *ProjectsServicesListCall) IfNoneMatch(entityTag string) *ProjectsServicesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesListCall) Context(ctx context.Context) *ProjectsServicesListCall {
	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 *ProjectsServicesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesListCall) 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/{+parent}/services")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.services.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1ListServicesResponse.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 *ProjectsServicesListCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1ListServicesResponse, 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 := &GoogleFirebaseAppcheckV1ListServicesResponse{
		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", "firebaseappcheck.projects.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 *ProjectsServicesListCall) Pages(ctx context.Context, f func(*GoogleFirebaseAppcheckV1ListServicesResponse) 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 ProjectsServicesPatchCall struct {
	s                               *Service
	name                            string
	googlefirebaseappcheckv1service *GoogleFirebaseAppcheckV1Service
	urlParams_                      gensupport.URLParams
	ctx_                            context.Context
	header_                         http.Header
}

// Patch: Updates the specified Service configuration.
//
//   - name: The relative resource name of the service configuration object, in
//     the format: ``` projects/{project_number}/services/{service_id} ``` Note
//     that the `service_id` element must be a supported service ID. Currently,
//     the following service IDs are supported. Firebase and Google Cloud
//     services: * `identitytoolkit.googleapis.com` (Firebase Authentication) *
//     `firebasedataconnect.googleapis.com` (Firebase SQL Connect) *
//     `firestore.googleapis.com` (Cloud Firestore) *
//     `firebasedatabase.googleapis.com` (Firebase Realtime Database) *
//     `firebasestorage.googleapis.com` (Cloud Storage for Firebase) *
//     `firebaseml.googleapis.com` (Firebase AI Logic) Google Maps Platform
//     services: * `maps-backend.googleapis.com` (Maps JavaScript API) *
//     `places.googleapis.com` (Places API (New)) Other supported Google
//     services: * `oauth2.googleapis.com` (Google Identity for iOS) Note: While
//     all the supported `service_id`s may appear to be subdomains of
//     `googleapis.com`, the `service_id` has no semantic meaning beyond
//     identifying the service to App Check. It is not intended to represent the
//     actual domain to which your apps send traffic, nor is it necessarily the
//     API that should be enabled to use the service. For information on using
//     these Google services, consult their documentation.
func (r *ProjectsServicesService) Patch(name string, googlefirebaseappcheckv1service *GoogleFirebaseAppcheckV1Service) *ProjectsServicesPatchCall {
	c := &ProjectsServicesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlefirebaseappcheckv1service = googlefirebaseappcheckv1service
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. A
// comma-separated list of names of fields in the Service to update. Example:
// `enforcement_mode`.
func (c *ProjectsServicesPatchCall) UpdateMask(updateMask string) *ProjectsServicesPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsServicesPatchCall) Fields(s ...googleapi.Field) *ProjectsServicesPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesPatchCall) Context(ctx context.Context) *ProjectsServicesPatchCall {
	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 *ProjectsServicesPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1service)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	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", "firebaseappcheck.projects.services.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1Service.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 *ProjectsServicesPatchCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1Service, 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 := &GoogleFirebaseAppcheckV1Service{
		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", "firebaseappcheck.projects.services.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsServicesResourcePoliciesBatchUpdateCall struct {
	s                                                          *Service
	parent                                                     string
	googlefirebaseappcheckv1batchupdateresourcepoliciesrequest *GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesRequest
	urlParams_                                                 gensupport.URLParams
	ctx_                                                       context.Context
	header_                                                    http.Header
}

// BatchUpdate: Atomically updates the specified ResourcePolicy configurations.
//
//   - parent: The parent service name, in the format ```
//     projects/{project_number}/services/{service_id} ``` The parent collection
//     in the `name` field of any resource being updated must match this field,
//     or the entire batch fails.
func (r *ProjectsServicesResourcePoliciesService) BatchUpdate(parent string, googlefirebaseappcheckv1batchupdateresourcepoliciesrequest *GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesRequest) *ProjectsServicesResourcePoliciesBatchUpdateCall {
	c := &ProjectsServicesResourcePoliciesBatchUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlefirebaseappcheckv1batchupdateresourcepoliciesrequest = googlefirebaseappcheckv1batchupdateresourcepoliciesrequest
	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 *ProjectsServicesResourcePoliciesBatchUpdateCall) Fields(s ...googleapi.Field) *ProjectsServicesResourcePoliciesBatchUpdateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesResourcePoliciesBatchUpdateCall) Context(ctx context.Context) *ProjectsServicesResourcePoliciesBatchUpdateCall {
	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 *ProjectsServicesResourcePoliciesBatchUpdateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesResourcePoliciesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1batchupdateresourcepoliciesrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/resourcePolicies:batchUpdate")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.services.resourcePolicies.batchUpdate", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.resourcePolicies.batchUpdate" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesResponse.ServerResponse.H
// eader 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 *ProjectsServicesResourcePoliciesBatchUpdateCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesResponse, 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 := &GoogleFirebaseAppcheckV1BatchUpdateResourcePoliciesResponse{
		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", "firebaseappcheck.projects.services.resourcePolicies.batchUpdate", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsServicesResourcePoliciesCreateCall struct {
	s                                      *Service
	parent                                 string
	googlefirebaseappcheckv1resourcepolicy *GoogleFirebaseAppcheckV1ResourcePolicy
	urlParams_                             gensupport.URLParams
	ctx_                                   context.Context
	header_                                http.Header
}

// Create: Creates the specified ResourcePolicy configuration.
//
//   - parent: The relative resource name of the parent Service in which the
//     specified ResourcePolicy will be created, in the format: ```
//     projects/{project_number}/services/{service_id} ``` Note that the
//     `service_id` element must be a supported service ID. Consult the
//     ResourcePolicy.name field for a list of supported service IDs.
func (r *ProjectsServicesResourcePoliciesService) Create(parent string, googlefirebaseappcheckv1resourcepolicy *GoogleFirebaseAppcheckV1ResourcePolicy) *ProjectsServicesResourcePoliciesCreateCall {
	c := &ProjectsServicesResourcePoliciesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlefirebaseappcheckv1resourcepolicy = googlefirebaseappcheckv1resourcepolicy
	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 *ProjectsServicesResourcePoliciesCreateCall) Fields(s ...googleapi.Field) *ProjectsServicesResourcePoliciesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesResourcePoliciesCreateCall) Context(ctx context.Context) *ProjectsServicesResourcePoliciesCreateCall {
	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 *ProjectsServicesResourcePoliciesCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesResourcePoliciesCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1resourcepolicy)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/resourcePolicies")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.services.resourcePolicies.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.resourcePolicies.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1ResourcePolicy.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 *ProjectsServicesResourcePoliciesCreateCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1ResourcePolicy, 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 := &GoogleFirebaseAppcheckV1ResourcePolicy{
		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", "firebaseappcheck.projects.services.resourcePolicies.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsServicesResourcePoliciesDeleteCall struct {
	s          *Service
	name       string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Deletes the specified ResourcePolicy configuration.
//
//   - name: The relative resource name of the ResourcePolicy to delete, in the
//     format: ```
//     projects/{project_number}/services/{service_id}/resourcePolicies/{resource_
//     policy_id} ```.
func (r *ProjectsServicesResourcePoliciesService) Delete(name string) *ProjectsServicesResourcePoliciesDeleteCall {
	c := &ProjectsServicesResourcePoliciesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Etag sets the optional parameter "etag": The checksum to be validated
// against the current ResourcePolicy, to ensure the client has an up-to-date
// value before proceeding. This checksum is computed by the server based on
// the values of fields in the ResourcePolicy object, and can be obtained from
// the ResourcePolicy object received from the last CreateResourcePolicy,
// GetResourcePolicy, ListResourcePolicies, UpdateResourcePolicy, or
// BatchUpdateResourcePolicies call. This etag is strongly validated as defined
// by RFC 7232.
func (c *ProjectsServicesResourcePoliciesDeleteCall) Etag(etag string) *ProjectsServicesResourcePoliciesDeleteCall {
	c.urlParams_.Set("etag", etag)
	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 *ProjectsServicesResourcePoliciesDeleteCall) Fields(s ...googleapi.Field) *ProjectsServicesResourcePoliciesDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesResourcePoliciesDeleteCall) Context(ctx context.Context) *ProjectsServicesResourcePoliciesDeleteCall {
	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 *ProjectsServicesResourcePoliciesDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesResourcePoliciesDeleteCall) 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/{+name}")
	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{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.services.resourcePolicies.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.resourcePolicies.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.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 *ProjectsServicesResourcePoliciesDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, 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 := &GoogleProtobufEmpty{
		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", "firebaseappcheck.projects.services.resourcePolicies.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Get: Gets the requested ResourcePolicy configuration.
//
//   - name: The relative resource name of the ResourcePolicy to retrieve, in the
//     format: ```
//     projects/{project_number}/services/{service_id}/resourcePolicies/{resource_
//     policy_id} ``` Note that the `service_id` element must be a supported
//     service ID. Consult the ResourcePolicy.name field for a list of supported
//     service IDs.
func (r *ProjectsServicesResourcePoliciesService) Get(name string) *ProjectsServicesResourcePoliciesGetCall {
	c := &ProjectsServicesResourcePoliciesGetCall{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 *ProjectsServicesResourcePoliciesGetCall) Fields(s ...googleapi.Field) *ProjectsServicesResourcePoliciesGetCall {
	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 *ProjectsServicesResourcePoliciesGetCall) IfNoneMatch(entityTag string) *ProjectsServicesResourcePoliciesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesResourcePoliciesGetCall) Context(ctx context.Context) *ProjectsServicesResourcePoliciesGetCall {
	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 *ProjectsServicesResourcePoliciesGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesResourcePoliciesGetCall) 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", "firebaseappcheck.projects.services.resourcePolicies.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.resourcePolicies.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1ResourcePolicy.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 *ProjectsServicesResourcePoliciesGetCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1ResourcePolicy, 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 := &GoogleFirebaseAppcheckV1ResourcePolicy{
		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", "firebaseappcheck.projects.services.resourcePolicies.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsServicesResourcePoliciesListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists all ResourcePolicy configurations for the specified project and
// service.
//
//   - parent: The relative resource name of the parent Service for which to list
//     each associated ResourcePolicy, in the format: ```
//     projects/{project_number}/services/{service_id} ``` Note that the
//     `service_id` element must be a supported service ID. Consult the
//     ResourcePolicy.name field for a list of supported service IDs.
func (r *ProjectsServicesResourcePoliciesService) List(parent string) *ProjectsServicesResourcePoliciesListCall {
	c := &ProjectsServicesResourcePoliciesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Filters the results by the
// specified rule. For the exact syntax of this field, please consult the
// AIP-160 (https://google.aip.dev/160) standard. Currently, since the only
// fields in the ResourcePolicy resource are the scalar fields
// `enforcement_mode` and `target_resource`, this method does not support the
// traversal operator (`.`) or the has operator (`:`). Here are some examples
// of valid filters: * `enforcement_mode = ENFORCED` * `target_resource =
// "//oauth2.googleapis.com/projects/12345/oauthClients/" * `enforcement_mode
// = ENFORCED AND target_resource =
// "//oauth2.googleapis.com/projects/12345/oauthClients/"
func (c *ProjectsServicesResourcePoliciesListCall) Filter(filter string) *ProjectsServicesResourcePoliciesListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// ResourcePolicy objects to return in the response. The server may return
// fewer than this at its own discretion. If no value is specified (or too
// large a value is specified), the server will impose its own limit.
func (c *ProjectsServicesResourcePoliciesListCall) PageSize(pageSize int64) *ProjectsServicesResourcePoliciesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Token returned from a
// previous call to ListResourcePolicies indicating where in the set of
// ResourcePolicy objects to resume listing. Provide this to retrieve the
// subsequent page. When paginating, all other parameters provided to
// ListResourcePolicies must match the call that provided the page token; if
// they do not match, the result is undefined.
func (c *ProjectsServicesResourcePoliciesListCall) PageToken(pageToken string) *ProjectsServicesResourcePoliciesListCall {
	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 *ProjectsServicesResourcePoliciesListCall) Fields(s ...googleapi.Field) *ProjectsServicesResourcePoliciesListCall {
	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 *ProjectsServicesResourcePoliciesListCall) IfNoneMatch(entityTag string) *ProjectsServicesResourcePoliciesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesResourcePoliciesListCall) Context(ctx context.Context) *ProjectsServicesResourcePoliciesListCall {
	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 *ProjectsServicesResourcePoliciesListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesResourcePoliciesListCall) 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/{+parent}/resourcePolicies")
	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{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebaseappcheck.projects.services.resourcePolicies.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.resourcePolicies.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1ListResourcePoliciesResponse.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 *ProjectsServicesResourcePoliciesListCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1ListResourcePoliciesResponse, 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 := &GoogleFirebaseAppcheckV1ListResourcePoliciesResponse{
		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", "firebaseappcheck.projects.services.resourcePolicies.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 *ProjectsServicesResourcePoliciesListCall) Pages(ctx context.Context, f func(*GoogleFirebaseAppcheckV1ListResourcePoliciesResponse) 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 ProjectsServicesResourcePoliciesPatchCall struct {
	s                                      *Service
	name                                   string
	googlefirebaseappcheckv1resourcepolicy *GoogleFirebaseAppcheckV1ResourcePolicy
	urlParams_                             gensupport.URLParams
	ctx_                                   context.Context
	header_                                http.Header
}

// Patch: Updates the specified ResourcePolicy configuration.
//
//   - name: Identifier. The relative name of the resource policy object, in the
//     format: ```
//     projects/{project_number}/services/{service_id}/resourcePolicies/{resource_
//     policy_id} ``` Note that the `service_id` element must be a supported
//     service ID. Currently, the following service IDs are supported: *
//     `oauth2.googleapis.com` (Google Identity for iOS) `resource_policy_id` is
//     a system-generated UID.
func (r *ProjectsServicesResourcePoliciesService) Patch(name string, googlefirebaseappcheckv1resourcepolicy *GoogleFirebaseAppcheckV1ResourcePolicy) *ProjectsServicesResourcePoliciesPatchCall {
	c := &ProjectsServicesResourcePoliciesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlefirebaseappcheckv1resourcepolicy = googlefirebaseappcheckv1resourcepolicy
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. A
// comma-separated list of names of fields in the ResourcePolicy to update.
// Example: `enforcement_mode`.
func (c *ProjectsServicesResourcePoliciesPatchCall) UpdateMask(updateMask string) *ProjectsServicesResourcePoliciesPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	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 *ProjectsServicesResourcePoliciesPatchCall) Fields(s ...googleapi.Field) *ProjectsServicesResourcePoliciesPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsServicesResourcePoliciesPatchCall) Context(ctx context.Context) *ProjectsServicesResourcePoliciesPatchCall {
	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 *ProjectsServicesResourcePoliciesPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsServicesResourcePoliciesPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.googlefirebaseappcheckv1resourcepolicy)
	if err != nil {
		return nil, err
	}
	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("PATCH", urls, body)
	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", "firebaseappcheck.projects.services.resourcePolicies.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebaseappcheck.projects.services.resourcePolicies.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleFirebaseAppcheckV1ResourcePolicy.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 *ProjectsServicesResourcePoliciesPatchCall) Do(opts ...googleapi.CallOption) (*GoogleFirebaseAppcheckV1ResourcePolicy, 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 := &GoogleFirebaseAppcheckV1ResourcePolicy{
		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", "firebaseappcheck.projects.services.resourcePolicies.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}
