// 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 databasecenter provides access to the Database Center API.
//
// For product documentation, see: https://docs.cloud.google.com/database-center/docs/overview
//
// # 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/databasecenter/v1beta"
//	...
//	ctx := context.Background()
//	databasecenterService, err := databasecenter.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
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	databasecenterService, err := databasecenter.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, ...)
//	databasecenterService, err := databasecenter.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package databasecenter // import "google.golang.org/api/databasecenter/v1beta"

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 = "databasecenter:v1beta"
const apiName = "databasecenter"
const apiVersion = "v1beta"
const basePath = "https://databasecenter.googleapis.com/"
const basePathTemplate = "https://databasecenter.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://databasecenter.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"
)

// 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",
	)
	// 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.Folders = NewFoldersService(s)
	s.Organizations = NewOrganizationsService(s)
	s.Projects = NewProjectsService(s)
	s.V1beta = NewV1betaService(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

	Folders *FoldersService

	Organizations *OrganizationsService

	Projects *ProjectsService

	V1beta *V1betaService
}

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

func NewFoldersService(s *Service) *FoldersService {
	rs := &FoldersService{s: s}
	return rs
}

type FoldersService struct {
	s *Service
}

func NewOrganizationsService(s *Service) *OrganizationsService {
	rs := &OrganizationsService{s: s}
	return rs
}

type OrganizationsService struct {
	s *Service
}

func NewProjectsService(s *Service) *ProjectsService {
	rs := &ProjectsService{s: s}
	return rs
}

type ProjectsService struct {
	s *Service
}

func NewV1betaService(s *Service) *V1betaService {
	rs := &V1betaService{s: s}
	return rs
}

type V1betaService struct {
	s *Service
}

// AdditionalDetail: Details related to signal.
type AdditionalDetail struct {
	// AutomatedBackupPolicyInfo: Automated backup policy information applies to
	// signals with type SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY.
	AutomatedBackupPolicyInfo *AutomatedBackupPolicyInfo `json:"automatedBackupPolicyInfo,omitempty"`
	// BackupRunInfo: Backup run information applies to signals with types
	// SIGNAL_TYPE_LAST_BACKUP_FAILED and SIGNAL_TYPE_LAST_BACKUP_OLD.
	BackupRunInfo *BackupRunInfo `json:"backupRunInfo,omitempty"`
	// DeletionProtectionInfo: Deletion protection information applies to signals
	// with type SIGNAL_TYPE_NO_DELETION_PROTECTION
	DeletionProtectionInfo *DeletionProtectionInfo `json:"deletionProtectionInfo,omitempty"`
	// InefficientQueryInfo: Inefficient query information applies to signals with
	// type SIGNAL_TYPE_INEFFICIENT_QUERY.
	InefficientQueryInfo *InefficientQueryInfo `json:"inefficientQueryInfo,omitempty"`
	// MaintenanceRecommendationInfo: Maintenance recommendation information
	// applies to signals with type SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES.
	MaintenanceRecommendationInfo *MaintenanceRecommendationInfo `json:"maintenanceRecommendationInfo,omitempty"`
	// OutdatedMinorVersionInfo: Outdated minor version information applies to
	// signals with type SIGNAL_TYPE_OUTDATED_MINOR_VERSION.
	OutdatedMinorVersionInfo *OutdatedMinorVersionInfo `json:"outdatedMinorVersionInfo,omitempty"`
	// RecommendationInfo: Recommendation information applies to recommendations.
	RecommendationInfo *RecommendationInfo `json:"recommendationInfo,omitempty"`
	// ResourceSuspensionInfo: Resource suspension information applies to signals
	// with type SIGNAL_TYPE_RESOURCE_SUSPENDED.
	ResourceSuspensionInfo *ResourceSuspensionInfo `json:"resourceSuspensionInfo,omitempty"`
	// SccInfo: SCC information applies to SCC signals.
	SccInfo *SCCInfo `json:"sccInfo,omitempty"`
	// ShortBackupRetentionInfo: Short backup retention information applies to
	// signals with type SIGNAL_TYPE_SHORT_BACKUP_RETENTION.
	ShortBackupRetentionInfo *RetentionSettingsInfo `json:"shortBackupRetentionInfo,omitempty"`
	// SignalEventTime: Event time when signal was recorded by source service.
	SignalEventTime string `json:"signalEventTime,omitempty"`
	// SignalSource: Where the signal is coming from.
	//
	// Possible values:
	//   "SIGNAL_SOURCE_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_SOURCE_RESOURCE_METADATA" - Signal comes from resource metadata.
	//   "SIGNAL_SOURCE_SECURITY_FINDINGS" - Signal comes from SCC findings.
	//   "SIGNAL_SOURCE_RECOMMENDER" - Signal comes from recommender hub.
	//   "SIGNAL_SOURCE_MODERN_OBSERVABILITY" - Signal comes from modern
	// observability platform.
	SignalSource string `json:"signalSource,omitempty"`
	// SignalType: Type of the signal.
	//
	// Possible values:
	//   "SIGNAL_TYPE_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED" - Represents if a resource is
	// protected by automatic failover. Checks for resources that are configured to
	// have redundancy within a region that enables automatic failover.
	//   "SIGNAL_TYPE_GROUP_MULTIREGIONAL" - Represents if a group is replicating
	// across regions. Checks for resources that are configured to have redundancy,
	// and ongoing replication, across regions.
	//   "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY" - Represents if a resource has an
	// automated backup policy.
	//   "SIGNAL_TYPE_SHORT_BACKUP_RETENTION" - Represents if a resources has a
	// short backup retention period.
	//   "SIGNAL_TYPE_LAST_BACKUP_FAILED" - Represents if the last backup of a
	// resource failed.
	//   "SIGNAL_TYPE_LAST_BACKUP_OLD" - Represents if the last backup of a
	// resource is older than some threshold value.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 2.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.3.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.2.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.1.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0" - Represents if a resource
	// violates CIS Controls 8.0.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53" - Represents if a resource violates
	// NIST 800-53.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5" - Represents if a resource violates
	// NIST 800-53 R5.
	//   "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0" - Represents if a
	// resource violates NIST Cybersecurity Framework 1.0.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001" - Represents if a resource violates
	// ISO-27001.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022" - Represents if a resource violates
	// ISO 27001 2022.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1" - Represents if a resource violates
	// PCI-DSS v3.2.1.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0" - Represents if a resource violates
	// PCI-DSS v4.0.
	//   "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4" - Represents if a resource
	// violates Cloud Controls Matrix v4.0.
	//   "SIGNAL_TYPE_VIOLATES_HIPAA" - Represents if a resource violates HIPAA.
	//   "SIGNAL_TYPE_VIOLATES_SOC2_V2017" - Represents if a resource violates SOC2
	// v2017.
	//   "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING" - Represents if
	// log_checkpoints database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED" - Represents if the log_duration
	// database flag for a Cloud SQL for PostgreSQL instance is not set to on.
	//   "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING" - Represents if the
	// log_error_verbosity database flag for a Cloud SQL for PostgreSQL instance is
	// not set to default or stricter (default or terse).
	//   "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED" - Represents if the
	// log_lock_waits database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_LOGGING_MOST_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set appropriately.
	//   "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance does not have an appropriate severity level.
	//   "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING" - Represents if the log_min_messages
	// database flag for a Cloud SQL for PostgreSQL instance is not set to warning
	// or another recommended value.
	//   "SIGNAL_TYPE_QUERY_STATS_LOGGED" - Represents if the databaseFlags
	// property of instance metadata for the log_executor_status field is set to
	// on.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME" - Represents if the
	// log_hostname database flag for a Cloud SQL for PostgreSQL instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS" - Represents if the
	// log_parser_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS" - Represents if the
	// log_planner_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS" - Represents if the
	// log_statement database flag for a Cloud SQL for PostgreSQL instance is not
	// set to DDL (all data definition statements).
	//   "SIGNAL_TYPE_LOGGING_QUERY_STATS" - Represents if the log_statement_stats
	// database flag for a Cloud SQL for PostgreSQL instance is not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES" - Represents if the
	// log_temp_files database flag for a Cloud SQL for PostgreSQL instance is not
	// set to "0". (NOTE: 0 = ON)
	//   "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED" - Represents if the user
	// connections database flag for a Cloud SQL for SQL Server instance is
	// configured.
	//   "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED" - Represents if the user options
	// database flag for Cloud SQL SQL Server instance is configured or not.
	//   "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS" - Represents if a resource is
	// exposed to public access.
	//   "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS" - Represents if a resources requires
	// all incoming connections to use SSL or not.
	//   "SIGNAL_TYPE_NO_ROOT_PASSWORD" - Represents if a Cloud SQL database has a
	// password configured for the root account or not.
	//   "SIGNAL_TYPE_WEAK_ROOT_PASSWORD" - Represents if a Cloud SQL database has
	// a weak password configured for the root account.
	//   "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED" - Represents if a SQL
	// database instance is not encrypted with customer-managed encryption keys
	// (CMEK).
	//   "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED" - Represents if The
	// contained database authentication database flag for a Cloud SQL for SQL
	// Server instance is not set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS" - Represents if he external
	// scripts enabled database flag for a Cloud SQL for SQL Server instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS" - Represents if the local_infile
	// database flag for a Cloud SQL for MySQL instance is not set to off.
	//   "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED" - Represents if the
	// log_connections database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED" - Represents if the
	// log_disconnections database flag for a Cloud SQL for PostgreSQL instance is
	// not set to on.
	//   "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO" - Represents if the
	// log_min_duration_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set to -1.
	//   "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS" - Represents if the remote access
	// database flag for a Cloud SQL for SQL Server instance is not set to off.
	//   "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED" - Represents if the
	// skip_show_database database flag for a Cloud SQL for MySQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED" - Represents if the 3625
	// (trace flag) database flag for a Cloud SQL for SQL Server instance is not
	// set to on.
	//   "SIGNAL_TYPE_PUBLIC_IP_ENABLED" - Represents if public IP is enabled.
	//   "SIGNAL_TYPE_IDLE" - Represents idle instance helps to reduce costs.
	//   "SIGNAL_TYPE_OVERPROVISIONED" - Represents instances that are
	// unnecessarily large for given workload.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES" - Represents high number of
	// concurrently opened tables.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES" - Represents high table count close to
	// SLA limit.
	//   "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION" - Represents high number of
	// unvacuumed transactions
	//   "SIGNAL_TYPE_UNDERPROVISIONED" - Represents need for more CPU and/or
	// memory
	//   "SIGNAL_TYPE_OUT_OF_DISK" - Represents out of disk.
	//   "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY" - Represents server
	// certificate is near expiry.
	//   "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED" - Represents database auditing is
	// disabled.
	//   "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS" - Represents not restricted to
	// authorized networks.
	//   "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP" - Represents violate org
	// policy restrict public ip.
	//   "SIGNAL_TYPE_QUOTA_LIMIT" - Cluster nearing quota limit
	//   "SIGNAL_TYPE_NO_PASSWORD_POLICY" - No password policy set on resources
	//   "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT" - Performance impact of
	// connections settings
	//   "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT" - Performance impact of
	// temporary tables settings
	//   "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT" - Performance impact of
	// transaction logs settings
	//   "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES" - Performance impact of high
	// joins without indexes
	//   "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES" - Detects events where a
	// database superuser (postgres for PostgreSQL servers or root for MySQL users)
	// writes to non-system tables.
	//   "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS" - Detects events where a
	// database user or role has been granted all privileges to a database, or to
	// all tables, procedures, or functions in a schema.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket outside of the
	// organization.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket that is owned by
	// the organization and is publicly accessible.
	//   "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM" - Detects if a database
	// instance is using a weak password hash algorithm.
	//   "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY" - Detects if a database instance has
	// no user password policy set.
	//   "SIGNAL_TYPE_HOT_NODE" - Detects if a database instance/cluster has a hot
	// node.
	//   "SIGNAL_TYPE_NO_DELETION_PROTECTION" - Deletion Protection Disabled for
	// the resource
	//   "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY" - Detects if a database instance
	// has no point in time recovery enabled.
	//   "SIGNAL_TYPE_RESOURCE_SUSPENDED" - Detects if a database instance/cluster
	// has suspended resources.
	//   "SIGNAL_TYPE_EXPENSIVE_COMMANDS" - Detects that expensive commands are
	// being run on a database instance impacting overall performance.
	//   "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED" - Indicates that the
	// instance does not have a maintenance policy configured.
	//   "SIGNAL_TYPE_INEFFICIENT_QUERY" - Indicates that the instance has
	// inefficient queries detected.
	//   "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD" - Indicates that the instance has
	// read intensive workload.
	//   "SIGNAL_TYPE_MEMORY_LIMIT" - Indicates that the instance is nearing memory
	// limit.
	//   "SIGNAL_TYPE_MAX_SERVER_MEMORY" - Indicates that the instance's max server
	// memory is configured higher than the recommended value.
	//   "SIGNAL_TYPE_LARGE_ROWS" - Indicates that the database has large rows
	// beyond the recommended limit.
	//   "SIGNAL_TYPE_HIGH_WRITE_PRESSURE" - Heavy write pressure on the database
	// rows.
	//   "SIGNAL_TYPE_HIGH_READ_PRESSURE" - Heavy read pressure on the database
	// rows.
	//   "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED" - Encryption org policy
	// not satisfied.
	//   "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED" - Location org policy not
	// satisfied.
	//   "SIGNAL_TYPE_OUTDATED_MINOR_VERSION" - Outdated DB minor version.
	//   "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED" - Schema not optimized.
	//   "SIGNAL_TYPE_REPLICATION_LAG" - Replication delay.
	//   "SIGNAL_TYPE_OUTDATED_CLIENT" - Outdated client.
	//   "SIGNAL_TYPE_DATABOOST_DISABLED" - Databoost is disabled.
	//   "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES" - Recommended maintenance
	// policy.
	//   "SIGNAL_TYPE_EXTENDED_SUPPORT" - Resource version is in extended support.
	//   "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE" - Represents a database version
	// nearing end of life.
	//   "SIGNAL_TYPE_HIGH_MAINTENANCE_DOWNTIME_RISK" - Indicates a high risk of
	// maintenance downtime.
	//   "SIGNAL_TYPE_LOW_CACHE_HIT_AND_MAINTENANCE_DOWNTIME" - Indicates both a
	// low cache hit rate and a risk of maintenance downtime.
	//   "SIGNAL_TYPE_MISSING_ENHANCED_PROTECTION" - Indicates that the resource is
	// missing enhanced protection.
	SignalType string `json:"signalType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AutomatedBackupPolicyInfo")
	// 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. "AutomatedBackupPolicyInfo") 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 AdditionalDetail) MarshalJSON() ([]byte, error) {
	type NoMethod AdditionalDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Affiliation: Affiliation information of a resource
type Affiliation struct {
	// FullResourceName: Optional. Full resource name
	FullResourceName string `json:"fullResourceName,omitempty"`
	// Lineages: Optional. Multiple lineages can be created from a resource. For
	// example, a resource can be replicated to multiple target resources. In this
	// case, there will be multiple lineages for the resource, one for each target
	// resource.
	Lineages []*Lineage `json:"lineages,omitempty"`
	// ResourceId: Optional. resource id of affiliated resource
	ResourceId string `json:"resourceId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FullResourceName") 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. "FullResourceName") 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 Affiliation) MarshalJSON() ([]byte, error) {
	type NoMethod Affiliation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AggregateFleetResponse: The response message to aggregate a fleet by some
// group by fields.
type AggregateFleetResponse struct {
	// NextPageToken: A token that can be sent as `page_token` to retrieve the next
	// page. If this field is omitted, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// ResourceGroupsTotalCount: Count of all resource groups in the fleet. This
	// includes counts from all pages.
	ResourceGroupsTotalCount int64 `json:"resourceGroupsTotalCount,omitempty"`
	// ResourceTotalCount: Count of all resources in the fleet. This includes
	// counts from all pages.
	ResourceTotalCount int64 `json:"resourceTotalCount,omitempty"`
	// Rows: Represents a row grouped by the fields in the input.
	Rows []*AggregateFleetRow `json:"rows,omitempty"`
	// TotalSize: Output only. The total number of rows in the entire list.
	TotalSize int64 `json:"totalSize,omitempty,string"`
	// Unreachable: Unordered list. List of unreachable regions from where data
	// could not be retrieved.
	Unreachable []string `json:"unreachable,omitempty"`

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

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

// AggregateFleetRow: Individual row grouped by a particular dimension.
type AggregateFleetRow struct {
	// DeltaDetails: Optional. Delta counts and details of resources which were
	// added to/deleted from fleet.
	DeltaDetails *DeltaDetails `json:"deltaDetails,omitempty"`
	// Dimension: Group by dimension.
	Dimension []*Dimension `json:"dimension,omitempty"`
	// ResourceGroupsCount: Number of resource groups that have a particular
	// dimension.
	ResourceGroupsCount int64 `json:"resourceGroupsCount,omitempty"`
	// ResourcesCount: Number of resources that have a particular dimension.
	ResourcesCount int64 `json:"resourcesCount,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeltaDetails") 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. "DeltaDetails") 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 AggregateFleetRow) MarshalJSON() ([]byte, error) {
	type NoMethod AggregateFleetRow
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AggregateIssueStatsRequest: AggregateIssueStatsRequest represents the input
// to the AggregateIssueStats method.
type AggregateIssueStatsRequest struct {
	// BaselineDate: Optional. The baseline date w.r.t. which the delta counts are
	// calculated. If not set, delta counts are not included in the response and
	// the response indicates the current state of the fleet.
	BaselineDate *Date `json:"baselineDate,omitempty"`
	// Filter: Optional. The expression to filter resources. Supported fields are:
	// `full_resource_name`, `resource_type`, `container`, `product.type`,
	// `product.engine`, `product.version`, `location`, `labels`, `issues`, fields
	// of availability_info, data_protection_info,'resource_name', etc. The
	// expression is a list of zero or more restrictions combined via logical
	// operators `AND` and `OR`. When `AND` and `OR` are both used in the
	// expression, parentheses must be appropriately used to group the
	// combinations. Example: `location="us-east1" Example:
	// `container="projects/123" OR container="projects/456" Example:
	// `(container="projects/123" OR container="projects/456") AND
	// location="us-east1"
	Filter string `json:"filter,omitempty"`
	// Parent: Required. Parent can be a project, a folder, or an organization. The
	// search is limited to the resources within the `scope`. The allowed values
	// are: * projects/{PROJECT_ID} (e.g., "projects/foo-bar") *
	// projects/{PROJECT_NUMBER} (e.g., "projects/12345678") *
	// folders/{FOLDER_NUMBER} (e.g., "folders/1234567") *
	// organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
	Parent string `json:"parent,omitempty"`
	// SignalTypeGroups: Optional. Lists of signal types that are issues.
	SignalTypeGroups []*SignalTypeGroup `json:"signalTypeGroups,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BaselineDate") 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. "BaselineDate") 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 AggregateIssueStatsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod AggregateIssueStatsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AggregateIssueStatsResponse: The response message containing one of more
// group of relevant health issues for database resources.
type AggregateIssueStatsResponse struct {
	// IssueGroupStats: List of issue group stats where each group contains stats
	// for resources having a particular combination of relevant issues.
	IssueGroupStats []*IssueGroupStats `json:"issueGroupStats,omitempty"`
	// TotalResourceGroupsCount: Total count of the resource filtered in based on
	// the user given filter.
	TotalResourceGroupsCount int64 `json:"totalResourceGroupsCount,omitempty"`
	// TotalResourcesCount: Total count of the resources filtered in based on the
	// user given filter.
	TotalResourcesCount int64 `json:"totalResourcesCount,omitempty"`
	// Unreachable: Unordered list. List of unreachable regions from where data
	// could not be retrieved.
	Unreachable []string `json:"unreachable,omitempty"`

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

// AggregateQueryStatsRequest: AggregateQueryStatsRequest represents the input
// to the AggregateQueryStats method.
type AggregateQueryStatsRequest struct {
	// Filter: Optional. The expression to filter resources. Supported fields are:
	// `full_resource_name`, `resource_type`, `container`, `product.type`,
	// `product.engine`, `product.version`, `location`, `labels`, `issues`, fields
	// of availability_info, data_protection_info,'resource_name', etc. The
	// expression is a list of zero or more restrictions combined via logical
	// operators `AND` and `OR`. When `AND` and `OR` are both used in the
	// expression, parentheses must be appropriately used to group the
	// combinations. Example: `location="us-east1" Example:
	// `container="projects/123" OR container="projects/456" Example:
	// `(container="projects/123" OR container="projects/456") AND
	// location="us-east1" Additional specific fields for query stats are:
	// `metric_window`, `query_hash`, `normalized_query`. Example:
	// `metric_window="LAST_ONE_DAY" (Possible values for `metric_window` are:
	// `LAST_ONE_DAY`, `LAST_ONE_WEEK`, `LAST_TWO_WEEKS`) Example:
	// `query_hash="12345678" Example: `normalized_query="SELECT * FROM table"
	Filter string `json:"filter,omitempty"`
	// OrderBy: Optional. The expression to order the results by. Example:
	// `order_by="execution_count" Example: `order_by="execution_count desc"
	// Supported order by fields are `execution_count`, `rows_processed`,
	// `total_cpu_time`, `avg_cpu_time`.
	OrderBy string `json:"orderBy,omitempty"`
	// PageSize: Optional. If unspecified, at most 100 query stats will be
	// returned. The maximum value is 1000; values above 1000 will be coerced to
	// 1000.
	PageSize int64 `json:"pageSize,omitempty"`
	// PageToken: Optional. A page token, received from a previous
	// `AggregateQueryStatsRequest` call. Provide this to retrieve the subsequent
	// page. All parameters except page_token should match the parameters in the
	// call that provided the page token.
	PageToken string `json:"pageToken,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Filter") 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. "Filter") 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 AggregateQueryStatsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod AggregateQueryStatsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AggregateQueryStatsResponse: The response message containing relevant query
// stats for database resources.
type AggregateQueryStatsResponse struct {
	// NextPageToken: A token that can be sent as `page_token` to retrieve the next
	// page. If this field is omitted, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// QueryStats: List of query stats where each group contains stats for
	// resources having a particular combination of relevant query stats.
	QueryStats []*QueryStatsInfo `json:"queryStats,omitempty"`
	// Unreachable: Unordered list. List of unreachable regions from where data
	// could not be retrieved.
	Unreachable []string `json:"unreachable,omitempty"`

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

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

// AutomatedBackupPolicyInfo: Automated backup policy signal info
type AutomatedBackupPolicyInfo struct {
	// IsEnabled: Is automated policy enabled.
	IsEnabled bool `json:"isEnabled,omitempty"`
	// SubResource: Optional. Sub resource details associated with the signal.
	SubResource *SubResource `json:"subResource,omitempty"`
	// ForceSendFields is a list of field names (e.g. "IsEnabled") 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. "IsEnabled") 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 AutomatedBackupPolicyInfo) MarshalJSON() ([]byte, error) {
	type NoMethod AutomatedBackupPolicyInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BackupDRConfig: BackupDRConfig to capture the backup and disaster recovery
// details of database resource.
type BackupDRConfig struct {
	// BackupdrManaged: Indicates if the resource is managed by BackupDR.
	BackupdrManaged bool `json:"backupdrManaged,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BackupdrManaged") 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. "BackupdrManaged") 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 BackupDRConfig) MarshalJSON() ([]byte, error) {
	type NoMethod BackupDRConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BackupRunInfo: Metadata about latest backup run state for a database
// resource.
type BackupRunInfo struct {
	// EndTime: The time the backup operation completed.
	EndTime string `json:"endTime,omitempty"`
	// ErrorMessage: Additional information about the error encountered.
	ErrorMessage string `json:"errorMessage,omitempty"`
	// OperationErrorType: Optional. OperationErrorType to expose specific error
	// when backup operation of database resource failed, that is state is FAILED.
	//
	// Possible values:
	//   "OPERATION_ERROR_TYPE_UNSPECIFIED" - UNSPECIFIED means operation error
	// type is not known or available.
	//   "KMS_KEY_ERROR" - Key destroyed, expired, not found, unreachable or
	// permission denied.
	//   "DATABASE_ERROR" - Database is not accessible.
	//   "STOCKOUT_ERROR" - The zone or region does not have sufficient resources
	// to handle the request at the moment.
	//   "CANCELLATION_ERROR" - User initiated cancellation.
	//   "SQLSERVER_ERROR" - SQL server specific error.
	//   "INTERNAL_ERROR" - Any other internal error.
	OperationErrorType string `json:"operationErrorType,omitempty"`
	// StartTime: The time the backup operation started.
	StartTime string `json:"startTime,omitempty"`
	// State: Output only. The state of this run.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Unspecified.
	//   "SUCCEEDED" - The backup succeeded.
	//   "FAILED" - The backup was unsuccessful.
	State string `json:"state,omitempty"`
	// SubResource: Optional. Sub resource details associated with the backup run.
	SubResource *SubResource `json:"subResource,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTime") 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. "EndTime") 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 BackupRunInfo) MarshalJSON() ([]byte, error) {
	type NoMethod BackupRunInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DatabaseResource: DatabaseResource represents every individually configured
// database unit representing compute and/or storage.
type DatabaseResource struct {
	// Affiliations: Optional. Affiliation details of the resource.
	Affiliations []*Affiliation `json:"affiliations,omitempty"`
	// BackupdrConfig: Optional. Backup and disaster recovery details for the
	// resource.
	BackupdrConfig *BackupDRConfig `json:"backupdrConfig,omitempty"`
	// ChildResources: List of children associated with a database group.
	ChildResources []*DatabaseResource `json:"childResources,omitempty"`
	// Container: Specifies where the resource is created. For Google Cloud
	// resources, it is the full name of the project.
	Container string `json:"container,omitempty"`
	// Edition: The edition of the resource.
	//
	// Possible values:
	//   "EDITION_UNSPECIFIED" - Default, to make it consistent with instance
	// edition enum.
	//   "EDITION_ENTERPRISE" - Represents the enterprise edition.
	//   "EDITION_ENTERPRISE_PLUS" - Represents the enterprise plus edition.
	//   "EDITION_STANDARD" - Represents the standard edition.
	Edition string `json:"edition,omitempty"`
	// FullResourceName: The full resource name, based on CAIS resource name format
	// https://cloud.google.com/asset-inventory/docs/resource-name-format Example:
	// `//cloudsql.googleapis.com/projects/project-number/instances/mysql-1`
	// `//cloudsql.googleapis.com/projects/project-number/instances/postgres-1`
	// `//spanner.googleapis.com/projects/project-number/instances/spanner-instance-
	// 1`
	// `//alloydb.googleapis.com/projects/project-number/locations/us-central1/clust
	// ers/c1`
	// `//alloydb.googleapis.com/projects/project-number/locations/us-central1/clust
	// ers/c1/instances/i1`
	FullResourceName string `json:"fullResourceName,omitempty"`
	// Labels: Labels applied on the resource. The requirements for labels assigned
	// to Google Cloud resources may be found at
	// https://cloud.google.com/resource-manager/docs/labels-overview#requirements
	Labels []*Label `json:"labels,omitempty"`
	// Location: The location of the resources. It supports returning only regional
	// locations in Google Cloud. These are of the form: "us-central1", "us-east1",
	// etc. See https://cloud.google.com/about/locations for a list of such
	// regions.
	Location string `json:"location,omitempty"`
	// MachineConfig: Machine configuration like CPU, memory, etc for the resource.
	MachineConfig *MachineConfig `json:"machineConfig,omitempty"`
	// MaintenanceInfo: Optional. The maintenance information of the resource.
	MaintenanceInfo *MaintenanceInfo `json:"maintenanceInfo,omitempty"`
	// Metrics: Observable metrics for the resource e.g. CPU utilization, memory
	// utilization, etc.
	Metrics *Metrics `json:"metrics,omitempty"`
	// Product: The product this resource represents.
	Product *Product `json:"product,omitempty"`
	// ResourceCategory: The category of the resource.
	//
	// Possible values:
	//   "RESOURCE_CATEGORY_UNSPECIFIED" - Unspecified.
	//   "INSTANCE" - A resource that is an Instance.
	//   "CLUSTER" - A resource that is a Cluster.
	//   "DATABASE" - A resource that is a Database.
	//   "DATASET" - A resource that is a Dataset.
	//   "RESERVATION" - A resource that is a Reservation.
	ResourceCategory string `json:"resourceCategory,omitempty"`
	// ResourceName: The name of the resource(The last part of the full resource
	// name). Example: For full resource name -
	// `//cloudsql.googleapis.com/projects/project-number/instances/mysql-1`,
	// resource name - `mysql-1` For full resource name -
	// `//cloudsql.googleapis.com/projects/project-number/instances/postgres-1` ,
	// resource name - `postgres-1` Note: In some cases, there might be more than
	// one resource with the same resource name.
	ResourceName string `json:"resourceName,omitempty"`
	// ResourceType: The type of resource defined according to the pattern:
	// {Service Name}/{Type}. Ex: sqladmin.googleapis.com/Instance
	// alloydb.googleapis.com/Cluster alloydb.googleapis.com/Instance
	// spanner.googleapis.com/Instance
	ResourceType string `json:"resourceType,omitempty"`
	// SignalGroups: The list of signal groups and count of issues related to the
	// resource. Only those signals which have been requested would be included.
	SignalGroups []*SignalGroup `json:"signalGroups,omitempty"`
	// SubResourceType: Subtype of the resource specified at creation time.
	//
	// Possible values:
	//   "SUB_RESOURCE_TYPE_UNSPECIFIED" - Unspecified.
	//   "SUB_RESOURCE_TYPE_PRIMARY" - A resource acting as a primary.
	//   "SUB_RESOURCE_TYPE_SECONDARY" - A resource acting as a secondary.
	//   "SUB_RESOURCE_TYPE_READ_REPLICA" - A resource acting as a read-replica.
	//   "SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY" - A resource acting as an external
	// primary.
	//   "SUB_RESOURCE_TYPE_READ_POOL" - A resource acting as a read pool.
	//   "SUB_RESOURCE_TYPE_RESERVATION" - Represents a reservation resource.
	//   "SUB_RESOURCE_TYPE_DATASET" - Represents a dataset resource.
	//   "SUB_RESOURCE_TYPE_OTHER" - For the rest of the categories.
	SubResourceType string `json:"subResourceType,omitempty"`
	// Tags: Tags applied on the resource. The requirements for tags assigned to
	// Google Cloud resources may be found at
	// https://cloud.google.com/resource-manager/docs/tags/tags-overview
	Tags []*Tag `json:"tags,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Affiliations") 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. "Affiliations") 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 DatabaseResource) MarshalJSON() ([]byte, error) {
	type NoMethod DatabaseResource
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DatabaseResourceGroup: DatabaseResourceGroup represents all resources that
// serve a common data set. It is considered notionally as a single entity,
// powered by any number of units of compute and storage.
type DatabaseResourceGroup struct {
	// RootResources: A database resource that serves as a root of the group of
	// database resources. It is repeated just in case we have the concept of
	// multiple roots in the future, however, it will only be populated with a
	// single value for now.
	RootResources []*DatabaseResource `json:"rootResources,omitempty"`
	// SignalGroups: The filtered signal groups and the count of issues associated
	// with the resources that have been filtered in.
	SignalGroups []*IssueCount `json:"signalGroups,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RootResources") 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. "RootResources") 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 DatabaseResourceGroup) MarshalJSON() ([]byte, error) {
	type NoMethod DatabaseResourceGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DatabaseResourceIssue: DatabaseResource and Issue associated with it.
type DatabaseResourceIssue struct {
	// Resource: Resource associated with the issue.
	Resource *DatabaseResource `json:"resource,omitempty"`
	// Signal: Signal associated with the issue.
	Signal *Signal `json:"signal,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Resource") 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. "Resource") 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 DatabaseResourceIssue) MarshalJSON() ([]byte, error) {
	type NoMethod DatabaseResourceIssue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Date: Represents a whole or partial calendar date, such as a birthday. The
// time of day and time zone are either specified elsewhere or are
// insignificant. The date is relative to the Gregorian Calendar. This can
// represent one of the following: * A full date, with non-zero year, month,
// and day values. * A month and day, with a zero year (for example, an
// anniversary). * A year on its own, with a zero month and a zero day. * A
// year and month, with a zero day (for example, a credit card expiration
// date). Related types: * google.type.TimeOfDay * google.type.DateTime *
// google.protobuf.Timestamp
type Date struct {
	// Day: Day of a month. Must be from 1 to 31 and valid for the year and month,
	// or 0 to specify a year by itself or a year and month where the day isn't
	// significant.
	Day int64 `json:"day,omitempty"`
	// Month: Month of a year. Must be from 1 to 12, or 0 to specify a year without
	// a month and day.
	Month int64 `json:"month,omitempty"`
	// Year: Year of the date. Must be from 1 to 9999, or 0 to specify a date
	// without a year.
	Year int64 `json:"year,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Day") 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. "Day") 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 Date) MarshalJSON() ([]byte, error) {
	type NoMethod Date
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DeletionProtectionInfo: Deletion protection signal info for a database
// resource.
type DeletionProtectionInfo struct {
	// DeletionProtectionEnabled: Is deletion protection enabled.
	DeletionProtectionEnabled bool `json:"deletionProtectionEnabled,omitempty"`
	// SubResource: Optional. Sub resource details associated with the signal.
	SubResource *SubResource `json:"subResource,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeletionProtectionEnabled")
	// 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. "DeletionProtectionEnabled") 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 DeletionProtectionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod DeletionProtectionInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DeltaDetails: Captures the details of items that have increased or decreased
// in some bucket when compared to some point in history. It is currently used
// to capture the delta of resources that have been added or removed in the
// fleet as well as to capture the resources that have a change in Issue/Signal
// status.
type DeltaDetails struct {
	// DecreasedResources: Details of resources that have decreased.
	DecreasedResources []*ResourceDetails `json:"decreasedResources,omitempty"`
	// IncreasedResources: Details of resources that have increased.
	IncreasedResources []*ResourceDetails `json:"increasedResources,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DecreasedResources") 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. "DecreasedResources") 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 DeltaDetails) MarshalJSON() ([]byte, error) {
	type NoMethod DeltaDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Dimension: Dimension used to aggregate the fleet.
type Dimension struct {
	// Container: Specifies where the resource is created. For Google Cloud
	// resources, it is the full name of the project.
	Container string `json:"container,omitempty"`
	// Edition: The edition of the resource.
	//
	// Possible values:
	//   "EDITION_UNSPECIFIED" - Default, to make it consistent with instance
	// edition enum.
	//   "EDITION_ENTERPRISE" - Represents the enterprise edition.
	//   "EDITION_ENTERPRISE_PLUS" - Represents the enterprise plus edition.
	//   "EDITION_STANDARD" - Represents the standard edition.
	Edition string `json:"edition,omitempty"`
	// HasDenyMaintenanceSchedules: Whether the resource has deny maintenance
	// schedules.
	HasDenyMaintenanceSchedules bool `json:"hasDenyMaintenanceSchedules,omitempty"`
	// HasMaintenanceSchedule: Whether the resource has a maintenance schedule.
	HasMaintenanceSchedule bool `json:"hasMaintenanceSchedule,omitempty"`
	// LabelKey: Label key of the resource.
	LabelKey string `json:"labelKey,omitempty"`
	// LabelSource: Label source of the resource.
	LabelSource string `json:"labelSource,omitempty"`
	// LabelValue: Label value of the resource.
	LabelValue string `json:"labelValue,omitempty"`
	// Location: The location of the resources. It supports returning only regional
	// locations in Google Cloud.
	Location string `json:"location,omitempty"`
	// ManagementType: The management type of the resource.
	//
	// Possible values:
	//   "MANAGEMENT_TYPE_UNSPECIFIED" - Unspecified.
	//   "MANAGEMENT_TYPE_GCP_MANAGED" - Google-managed resource.
	//   "MANAGEMENT_TYPE_SELF_MANAGED" - Self-managed resource.
	ManagementType string `json:"managementType,omitempty"`
	// ProductEngine: Engine refers to underlying database binary running in an
	// instance.
	//
	// Possible values:
	//   "ENGINE_UNSPECIFIED" - UNSPECIFIED means engine type is not known or
	// available.
	//   "ENGINE_MYSQL" - MySQL binary running as an engine in the database
	// instance.
	//   "ENGINE_POSTGRES" - Postgres binary running as engine in database
	// instance.
	//   "ENGINE_SQL_SERVER" - SQLServer binary running as engine in database
	// instance.
	//   "ENGINE_NATIVE" - Native database binary running as engine in instance.
	//   "ENGINE_MEMORYSTORE_FOR_REDIS" - Memorystore with Redis dialect.
	//   "ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER" - Memorystore with Redis cluster
	// dialect.
	//   "ENGINE_MEMORSTORE_FOR_VALKEY" - Deprecated: Use
	// ENGINE_MEMORYSTORE_FOR_VALKEY instead.
	//   "ENGINE_MEMORYSTORE_FOR_VALKEY" - Memorystore with Valkey dialect.
	//   "ENGINE_FIRESTORE_WITH_NATIVE_MODE" - Firestore with native mode.
	//   "ENGINE_FIRESTORE_WITH_DATASTORE_MODE" - Firestore with datastore mode.
	//   "ENGINE_EXADATA_ORACLE" - Oracle Exadata engine.
	//   "ENGINE_ADB_SERVERLESS_ORACLE" - Oracle Autonomous DB Serverless engine.
	//   "ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE" - Firestore with
	// MongoDB compatibility.
	//   "ENGINE_OTHER" - Other refers to rest of other database engine. This is to
	// be when engine is known, but it is not present in this enum.
	ProductEngine string `json:"productEngine,omitempty"`
	// ProductType: Type to identify a product
	//
	// Possible values:
	//   "PRODUCT_TYPE_UNSPECIFIED" - PRODUCT_TYPE_UNSPECIFIED means product type
	// is not known or that the user didn't provide this field in the request.
	//   "PRODUCT_TYPE_CLOUD_SQL" - Cloud SQL product area in Google Cloud
	//   "PRODUCT_TYPE_ALLOYDB" - AlloyDB product area in Google Cloud
	//   "PRODUCT_TYPE_SPANNER" - Spanner product area in Google Cloud
	//   "PRODUCT_TYPE_BIGTABLE" - Bigtable product area in Google Cloud
	//   "PRODUCT_TYPE_MEMORYSTORE" - Memorystore product area in Google Cloud
	//   "PRODUCT_TYPE_FIRESTORE" - Firestore product area in Google Cloud
	//   "PRODUCT_TYPE_COMPUTE_ENGINE" - Compute Engine self managed databases
	//   "PRODUCT_TYPE_ORACLE_ON_GCP" - Oracle product area in Google Cloud
	//   "PRODUCT_TYPE_BIGQUERY" - BigQuery product area in Google Cloud
	//   "PRODUCT_TYPE_OTHER" - Other refers to rest of other product type. This is
	// to be when product type is known, but it is not present in this enum.
	ProductType string `json:"productType,omitempty"`
	// ProductVersion: Version of the underlying database engine
	ProductVersion string `json:"productVersion,omitempty"`
	// ResourceCategory: The category of the resource.
	//
	// Possible values:
	//   "RESOURCE_CATEGORY_UNSPECIFIED" - Unspecified.
	//   "INSTANCE" - A resource that is an Instance.
	//   "CLUSTER" - A resource that is a Cluster.
	//   "DATABASE" - A resource that is a Database.
	//   "DATASET" - A resource that is a Dataset.
	//   "RESERVATION" - A resource that is a Reservation.
	ResourceCategory string `json:"resourceCategory,omitempty"`
	// ResourceType: The type of resource defined according to the pattern:
	// {Service Name}/{Type}. Ex: sqladmin.googleapis.com/Instance
	// alloydb.googleapis.com/Cluster alloydb.googleapis.com/Instance
	// spanner.googleapis.com/Instance
	ResourceType string `json:"resourceType,omitempty"`
	// SubResourceType: Subtype of the resource specified at creation time.
	//
	// Possible values:
	//   "SUB_RESOURCE_TYPE_UNSPECIFIED" - Unspecified.
	//   "SUB_RESOURCE_TYPE_PRIMARY" - A resource acting as a primary.
	//   "SUB_RESOURCE_TYPE_SECONDARY" - A resource acting as a secondary.
	//   "SUB_RESOURCE_TYPE_READ_REPLICA" - A resource acting as a read-replica.
	//   "SUB_RESOURCE_TYPE_EXTERNAL_PRIMARY" - A resource acting as an external
	// primary.
	//   "SUB_RESOURCE_TYPE_READ_POOL" - A resource acting as a read pool.
	//   "SUB_RESOURCE_TYPE_RESERVATION" - Represents a reservation resource.
	//   "SUB_RESOURCE_TYPE_DATASET" - Represents a dataset resource.
	//   "SUB_RESOURCE_TYPE_OTHER" - For the rest of the categories.
	SubResourceType string `json:"subResourceType,omitempty"`
	// TagInherited: Tag inheritance value of the resource.
	TagInherited bool `json:"tagInherited,omitempty"`
	// TagKey: Tag key of the resource.
	TagKey string `json:"tagKey,omitempty"`
	// TagSource: Tag source of the resource.
	TagSource string `json:"tagSource,omitempty"`
	// TagValue: Tag value of the resource.
	TagValue string `json:"tagValue,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Container") 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. "Container") 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 Dimension) MarshalJSON() ([]byte, error) {
	type NoMethod Dimension
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InefficientQueryInfo: Metadata about inefficient query signal info for a
// database resource.
type InefficientQueryInfo struct {
	// Database: Name of the database where index is required. For example, "db1",
	// which is the name of the database present in the instance.
	Database string `json:"database,omitempty"`
	// ImpactedQueriesCount: Count of queries to be impacted if index is applied
	ImpactedQueriesCount int64 `json:"impactedQueriesCount,omitempty,string"`
	// SqlIndexStatement: SQL statement of the index. Based on the ddl type, this
	// will be either CREATE INDEX or DROP INDEX.
	SqlIndexStatement string `json:"sqlIndexStatement,omitempty"`
	// StorageCostBytes: Cost of additional disk usage in bytes
	StorageCostBytes int64 `json:"storageCostBytes,omitempty,string"`
	// Table: Name of the table where index is required
	Table string `json:"table,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Database") 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. "Database") 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 InefficientQueryInfo) MarshalJSON() ([]byte, error) {
	type NoMethod InefficientQueryInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// IssueCount: Count of issues for a group of signals.
type IssueCount struct {
	// DisplayName: Title of a signal group corresponding to the request.
	DisplayName string `json:"displayName,omitempty"`
	// IssueCount: The count of the number of issues associated with those
	// resources that are explicitly filtered in by the filters present in the
	// request. A signal is an issue when its SignalStatus field is set to
	// SIGNAL_STATUS_ISSUE.
	IssueCount int64 `json:"issueCount,omitempty"`
	// 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 IssueCount) MarshalJSON() ([]byte, error) {
	type NoMethod IssueCount
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// IssueGroupStats: IssueGroupStats refers to stats for a particulare
// combination of relevant health issues of database resources.
type IssueGroupStats struct {
	// DisplayName: Database resource level health card name. This will corresponds
	// to one of the requested input group names.
	DisplayName string `json:"displayName,omitempty"`
	// HealthyResourceGroupsCount: The number of resource groups from the total
	// groups as defined above that are healthy with respect to all of the
	// specified issues.
	HealthyResourceGroupsCount int64 `json:"healthyResourceGroupsCount,omitempty"`
	// HealthyResourcesCount: The number of resources from the total defined above
	// in field total_resources_count that are healthy with respect to all of the
	// specified issues.
	HealthyResourcesCount int64 `json:"healthyResourcesCount,omitempty"`
	// IssueStats: List of issues stats containing count of resources having
	// particular issue category.
	IssueStats []*IssueStats `json:"issueStats,omitempty"`
	// ResourceGroupsCount: Total count of the groups of resources returned by the
	// filter that also have one or more resources for which any of the specified
	// issues are applicable.
	ResourceGroupsCount int64 `json:"resourceGroupsCount,omitempty"`
	// ResourcesCount: Total count of resources returned by the filter for which
	// any of the specified issues are applicable.
	ResourcesCount int64 `json:"resourcesCount,omitempty"`
	// 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 IssueGroupStats) MarshalJSON() ([]byte, error) {
	type NoMethod IssueGroupStats
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// IssueStats: IssueStats holds stats for a particular signal category.
type IssueStats struct {
	// DeltaDetails: Optional. Delta counts and details of resources for which
	// issue was raised or fixed.
	DeltaDetails *DeltaDetails `json:"deltaDetails,omitempty"`
	// IssueSeverity: Severity of the issue.
	//
	// Possible values:
	//   "ISSUE_SEVERITY_UNSPECIFIED" - Unspecified.
	//   "ISSUE_SEVERITY_LOW" - Low severity.
	//   "ISSUE_SEVERITY_MEDIUM" - Medium severity.
	//   "ISSUE_SEVERITY_HIGH" - High severity.
	//   "ISSUE_SEVERITY_CRITICAL" - Critical severity.
	//   "ISSUE_SEVERITY_IRRELEVANT" - Irrelevant severity. This means the issue
	// should not be surfaced at all.
	IssueSeverity string `json:"issueSeverity,omitempty"`
	// ResourceCount: Number of resources having issues of a given type.
	ResourceCount int64 `json:"resourceCount,omitempty"`
	// SignalType: Type of signal which is an issue.
	//
	// Possible values:
	//   "SIGNAL_TYPE_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED" - Represents if a resource is
	// protected by automatic failover. Checks for resources that are configured to
	// have redundancy within a region that enables automatic failover.
	//   "SIGNAL_TYPE_GROUP_MULTIREGIONAL" - Represents if a group is replicating
	// across regions. Checks for resources that are configured to have redundancy,
	// and ongoing replication, across regions.
	//   "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY" - Represents if a resource has an
	// automated backup policy.
	//   "SIGNAL_TYPE_SHORT_BACKUP_RETENTION" - Represents if a resources has a
	// short backup retention period.
	//   "SIGNAL_TYPE_LAST_BACKUP_FAILED" - Represents if the last backup of a
	// resource failed.
	//   "SIGNAL_TYPE_LAST_BACKUP_OLD" - Represents if the last backup of a
	// resource is older than some threshold value.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 2.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.3.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.2.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.1.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0" - Represents if a resource
	// violates CIS Controls 8.0.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53" - Represents if a resource violates
	// NIST 800-53.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5" - Represents if a resource violates
	// NIST 800-53 R5.
	//   "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0" - Represents if a
	// resource violates NIST Cybersecurity Framework 1.0.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001" - Represents if a resource violates
	// ISO-27001.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022" - Represents if a resource violates
	// ISO 27001 2022.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1" - Represents if a resource violates
	// PCI-DSS v3.2.1.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0" - Represents if a resource violates
	// PCI-DSS v4.0.
	//   "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4" - Represents if a resource
	// violates Cloud Controls Matrix v4.0.
	//   "SIGNAL_TYPE_VIOLATES_HIPAA" - Represents if a resource violates HIPAA.
	//   "SIGNAL_TYPE_VIOLATES_SOC2_V2017" - Represents if a resource violates SOC2
	// v2017.
	//   "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING" - Represents if
	// log_checkpoints database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED" - Represents if the log_duration
	// database flag for a Cloud SQL for PostgreSQL instance is not set to on.
	//   "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING" - Represents if the
	// log_error_verbosity database flag for a Cloud SQL for PostgreSQL instance is
	// not set to default or stricter (default or terse).
	//   "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED" - Represents if the
	// log_lock_waits database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_LOGGING_MOST_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set appropriately.
	//   "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance does not have an appropriate severity level.
	//   "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING" - Represents if the log_min_messages
	// database flag for a Cloud SQL for PostgreSQL instance is not set to warning
	// or another recommended value.
	//   "SIGNAL_TYPE_QUERY_STATS_LOGGED" - Represents if the databaseFlags
	// property of instance metadata for the log_executor_status field is set to
	// on.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME" - Represents if the
	// log_hostname database flag for a Cloud SQL for PostgreSQL instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS" - Represents if the
	// log_parser_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS" - Represents if the
	// log_planner_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS" - Represents if the
	// log_statement database flag for a Cloud SQL for PostgreSQL instance is not
	// set to DDL (all data definition statements).
	//   "SIGNAL_TYPE_LOGGING_QUERY_STATS" - Represents if the log_statement_stats
	// database flag for a Cloud SQL for PostgreSQL instance is not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES" - Represents if the
	// log_temp_files database flag for a Cloud SQL for PostgreSQL instance is not
	// set to "0". (NOTE: 0 = ON)
	//   "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED" - Represents if the user
	// connections database flag for a Cloud SQL for SQL Server instance is
	// configured.
	//   "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED" - Represents if the user options
	// database flag for Cloud SQL SQL Server instance is configured or not.
	//   "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS" - Represents if a resource is
	// exposed to public access.
	//   "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS" - Represents if a resources requires
	// all incoming connections to use SSL or not.
	//   "SIGNAL_TYPE_NO_ROOT_PASSWORD" - Represents if a Cloud SQL database has a
	// password configured for the root account or not.
	//   "SIGNAL_TYPE_WEAK_ROOT_PASSWORD" - Represents if a Cloud SQL database has
	// a weak password configured for the root account.
	//   "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED" - Represents if a SQL
	// database instance is not encrypted with customer-managed encryption keys
	// (CMEK).
	//   "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED" - Represents if The
	// contained database authentication database flag for a Cloud SQL for SQL
	// Server instance is not set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS" - Represents if he external
	// scripts enabled database flag for a Cloud SQL for SQL Server instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS" - Represents if the local_infile
	// database flag for a Cloud SQL for MySQL instance is not set to off.
	//   "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED" - Represents if the
	// log_connections database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED" - Represents if the
	// log_disconnections database flag for a Cloud SQL for PostgreSQL instance is
	// not set to on.
	//   "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO" - Represents if the
	// log_min_duration_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set to -1.
	//   "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS" - Represents if the remote access
	// database flag for a Cloud SQL for SQL Server instance is not set to off.
	//   "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED" - Represents if the
	// skip_show_database database flag for a Cloud SQL for MySQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED" - Represents if the 3625
	// (trace flag) database flag for a Cloud SQL for SQL Server instance is not
	// set to on.
	//   "SIGNAL_TYPE_PUBLIC_IP_ENABLED" - Represents if public IP is enabled.
	//   "SIGNAL_TYPE_IDLE" - Represents idle instance helps to reduce costs.
	//   "SIGNAL_TYPE_OVERPROVISIONED" - Represents instances that are
	// unnecessarily large for given workload.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES" - Represents high number of
	// concurrently opened tables.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES" - Represents high table count close to
	// SLA limit.
	//   "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION" - Represents high number of
	// unvacuumed transactions
	//   "SIGNAL_TYPE_UNDERPROVISIONED" - Represents need for more CPU and/or
	// memory
	//   "SIGNAL_TYPE_OUT_OF_DISK" - Represents out of disk.
	//   "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY" - Represents server
	// certificate is near expiry.
	//   "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED" - Represents database auditing is
	// disabled.
	//   "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS" - Represents not restricted to
	// authorized networks.
	//   "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP" - Represents violate org
	// policy restrict public ip.
	//   "SIGNAL_TYPE_QUOTA_LIMIT" - Cluster nearing quota limit
	//   "SIGNAL_TYPE_NO_PASSWORD_POLICY" - No password policy set on resources
	//   "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT" - Performance impact of
	// connections settings
	//   "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT" - Performance impact of
	// temporary tables settings
	//   "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT" - Performance impact of
	// transaction logs settings
	//   "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES" - Performance impact of high
	// joins without indexes
	//   "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES" - Detects events where a
	// database superuser (postgres for PostgreSQL servers or root for MySQL users)
	// writes to non-system tables.
	//   "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS" - Detects events where a
	// database user or role has been granted all privileges to a database, or to
	// all tables, procedures, or functions in a schema.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket outside of the
	// organization.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket that is owned by
	// the organization and is publicly accessible.
	//   "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM" - Detects if a database
	// instance is using a weak password hash algorithm.
	//   "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY" - Detects if a database instance has
	// no user password policy set.
	//   "SIGNAL_TYPE_HOT_NODE" - Detects if a database instance/cluster has a hot
	// node.
	//   "SIGNAL_TYPE_NO_DELETION_PROTECTION" - Deletion Protection Disabled for
	// the resource
	//   "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY" - Detects if a database instance
	// has no point in time recovery enabled.
	//   "SIGNAL_TYPE_RESOURCE_SUSPENDED" - Detects if a database instance/cluster
	// has suspended resources.
	//   "SIGNAL_TYPE_EXPENSIVE_COMMANDS" - Detects that expensive commands are
	// being run on a database instance impacting overall performance.
	//   "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED" - Indicates that the
	// instance does not have a maintenance policy configured.
	//   "SIGNAL_TYPE_INEFFICIENT_QUERY" - Indicates that the instance has
	// inefficient queries detected.
	//   "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD" - Indicates that the instance has
	// read intensive workload.
	//   "SIGNAL_TYPE_MEMORY_LIMIT" - Indicates that the instance is nearing memory
	// limit.
	//   "SIGNAL_TYPE_MAX_SERVER_MEMORY" - Indicates that the instance's max server
	// memory is configured higher than the recommended value.
	//   "SIGNAL_TYPE_LARGE_ROWS" - Indicates that the database has large rows
	// beyond the recommended limit.
	//   "SIGNAL_TYPE_HIGH_WRITE_PRESSURE" - Heavy write pressure on the database
	// rows.
	//   "SIGNAL_TYPE_HIGH_READ_PRESSURE" - Heavy read pressure on the database
	// rows.
	//   "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED" - Encryption org policy
	// not satisfied.
	//   "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED" - Location org policy not
	// satisfied.
	//   "SIGNAL_TYPE_OUTDATED_MINOR_VERSION" - Outdated DB minor version.
	//   "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED" - Schema not optimized.
	//   "SIGNAL_TYPE_REPLICATION_LAG" - Replication delay.
	//   "SIGNAL_TYPE_OUTDATED_CLIENT" - Outdated client.
	//   "SIGNAL_TYPE_DATABOOST_DISABLED" - Databoost is disabled.
	//   "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES" - Recommended maintenance
	// policy.
	//   "SIGNAL_TYPE_EXTENDED_SUPPORT" - Resource version is in extended support.
	//   "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE" - Represents a database version
	// nearing end of life.
	//   "SIGNAL_TYPE_HIGH_MAINTENANCE_DOWNTIME_RISK" - Indicates a high risk of
	// maintenance downtime.
	//   "SIGNAL_TYPE_LOW_CACHE_HIT_AND_MAINTENANCE_DOWNTIME" - Indicates both a
	// low cache hit rate and a risk of maintenance downtime.
	//   "SIGNAL_TYPE_MISSING_ENHANCED_PROTECTION" - Indicates that the resource is
	// missing enhanced protection.
	SignalType string `json:"signalType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeltaDetails") 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. "DeltaDetails") 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 IssueStats) MarshalJSON() ([]byte, error) {
	type NoMethod IssueStats
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Label: Label is a key value pair applied to a resource.
type Label struct {
	// Key: The key part of the label.
	Key string `json:"key,omitempty"`
	// Source: The source of the Label. Source is empty if the label is directly
	// attached to the resource and not inherited.
	Source string `json:"source,omitempty"`
	// Value: The value part of the label.
	Value string `json:"value,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Key") 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. "Key") 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 Label) MarshalJSON() ([]byte, error) {
	type NoMethod Label
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Lineage: lineage information of the affiliated resources This captures
// source, target and process which created the lineage.
type Lineage struct {
	// ProcessFqn: Optional. FQN of process which created the lineage i.e.
	// dataplex, datastream etc.
	ProcessFqn string `json:"processFqn,omitempty"`
	// ProcessType: Optional. Type of process which created the lineage.
	//
	// Possible values:
	//   "PROCESS_TYPE_UNSPECIFIED" - Unspecified process type.
	//   "COMPOSER" - Composer process type.
	//   "DATASTREAM" - Datastream process type.
	//   "DATAFLOW" - Dataflow process type.
	//   "BIGQUERY" - Bigquery process type.
	//   "DATA_FUSION" - Data fusion process type.
	//   "DATAPROC" - Dataproc process type.
	ProcessType string `json:"processType,omitempty"`
	// SourceFqn: Optional. FQN of source table / column
	SourceFqn string `json:"sourceFqn,omitempty"`
	// TargetFqn: Optional. FQN of target table / column
	TargetFqn string `json:"targetFqn,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ProcessFqn") 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. "ProcessFqn") 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 Lineage) MarshalJSON() ([]byte, error) {
	type NoMethod Lineage
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MachineConfig: MachineConfig describes the configuration of a machine
// specific to a Database Resource.
type MachineConfig struct {
	// BaselineSlotCount: Optional. Baseline slots for BigQuery Reservations.
	// Baseline slots are in increments of 50.
	BaselineSlotCount int64 `json:"baselineSlotCount,omitempty,string"`
	// MaxReservationSlotCount: Optional. Max slots for BigQuery Reservations. Max
	// slots are in increments of 50.
	MaxReservationSlotCount int64 `json:"maxReservationSlotCount,omitempty,string"`
	// MemorySizeBytes: Memory size in bytes.
	MemorySizeBytes int64 `json:"memorySizeBytes,omitempty,string"`
	// ShardCount: Optional. The number of Shards (if applicable).
	ShardCount int64 `json:"shardCount,omitempty"`
	// VcpuCount: Optional. The number of vCPUs (if applicable).
	VcpuCount float64 `json:"vcpuCount,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BaselineSlotCount") 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. "BaselineSlotCount") 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 MachineConfig) MarshalJSON() ([]byte, error) {
	type NoMethod MachineConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// MaintenanceInfo: MaintenanceInfo to capture the maintenance details of
// database resource.
type MaintenanceInfo struct {
	// CurrentVersionReleaseDate: Output only. The date when the maintenance
	// version was released.
	CurrentVersionReleaseDate *Date `json:"currentVersionReleaseDate,omitempty"`
	// DenyMaintenanceSchedules: Optional. List of Deny maintenance period for the
	// database resource.
	DenyMaintenanceSchedules []*ResourceMaintenanceDenySchedule `json:"denyMaintenanceSchedules,omitempty"`
	// MaintenanceSchedule: Optional. Maintenance window for the database resource.
	MaintenanceSchedule *ResourceMaintenanceSchedule `json:"maintenanceSchedule,omitempty"`
	// MaintenanceVersion: Output only. Current Maintenance version of the database
	// resource. Example: "MYSQL_8_0_41.R20250531.01_15"
	MaintenanceVersion string `json:"maintenanceVersion,omitempty"`
	// PossibleFailureReasons: Output only. List of possible reasons why the
	// maintenance is not completed. This is an optional field and is only
	// populated if there are any reasons for failures recorded for the maintenance
	// by DB Center. FAILURE maintenance status may not always have a failure
	// reason.
	//
	// Possible values:
	//   "POSSIBLE_FAILURE_REASON_UNSPECIFIED" - Failure reason is unspecified.
	//   "POSSIBLE_FAILURE_REASON_DENY_POLICY_CONFLICT" - Maintenance may not be
	// completed because there is a deny policy overlapping with upcoming
	// maintenance schedule.
	//   "POSSIBLE_FAILURE_REASON_INSTANCE_IN_STOPPED_STATE" - Maintenance may not
	// be completed because the instance is stopped.
	PossibleFailureReasons []string `json:"possibleFailureReasons,omitempty"`
	// PreviousMaintenanceVersion: Output only. Previous maintenance version of the
	// database resource. Example: "MYSQL_8_0_41.R20250531.01_15". This is
	// available once a minor version maintenance is complete on a database
	// resource.
	PreviousMaintenanceVersion string `json:"previousMaintenanceVersion,omitempty"`
	// State: Output only. Resource maintenance state. This is to capture the
	// current state of the maintenance.
	//
	// Possible values:
	//   "MAINTENANCE_STATE_UNSPECIFIED" - Status is unspecified.
	//   "MAINTENANCE_STATE_SCHEDULED" - Maintenance is scheduled.
	//   "MAINTENANCE_STATE_IN_PROGRESS" - Maintenance is in progress.
	//   "MAINTENANCE_STATE_COMPLETED" - Maintenance is completed.
	//   "MAINTENANCE_STATE_FAILED" - Maintenance has failed.
	State string `json:"state,omitempty"`
	// UpcomingMaintenance: Output only. Upcoming maintenance window for the
	// database resource. This is only populated for an engine, if upcoming
	// maintenance is scheduled for the resource. This schedule is generated per
	// engine and engine version, and there is only one upcoming maintenance window
	// at any given time. In case of upcoming maintenance, the maintenance_state
	// will be set to SCHEDULED first, and then IN_PROGRESS when the maintenance
	// window starts.
	UpcomingMaintenance *UpcomingMaintenance `json:"upcomingMaintenance,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CurrentVersionReleaseDate")
	// 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. "CurrentVersionReleaseDate") 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 MaintenanceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod MaintenanceInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MaintenanceRecommendationInfo: Info associated with maintenance
// recommendation.
type MaintenanceRecommendationInfo struct {
	// ResourceMaintenanceSchedules: Optional. List of recommended maintenance
	// schedules for the database resource.
	ResourceMaintenanceSchedules []*ResourceMaintenanceSchedule `json:"resourceMaintenanceSchedules,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "ResourceMaintenanceSchedules") 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. "ResourceMaintenanceSchedules") 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 MaintenanceRecommendationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod MaintenanceRecommendationInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MetricData: MetricData represents the metric data for a database resource.
type MetricData struct {
	// ObservationTime: The time the metric was observed in the metric source
	// service.
	ObservationTime string `json:"observationTime,omitempty"`
	// Value: The value associated with the metric.
	Value *TypedValue `json:"value,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ObservationTime") 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. "ObservationTime") 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 MetricData) MarshalJSON() ([]byte, error) {
	type NoMethod MetricData
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Metrics: Metrics represents the metrics for a database resource.
type Metrics struct {
	// CurrentMemoryUsedBytes: Current memory used by the resource in bytes.
	CurrentMemoryUsedBytes *MetricData `json:"currentMemoryUsedBytes,omitempty"`
	// CurrentStorageUsedBytes: Current storage used by the resource in bytes.
	CurrentStorageUsedBytes *MetricData `json:"currentStorageUsedBytes,omitempty"`
	// NodeCount: Number of nodes in instance for spanner or bigtable.
	NodeCount *MetricData `json:"nodeCount,omitempty"`
	// P95CpuUtilization: P95 CPU utilization observed for the resource. The value
	// is a fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some
	// cases).
	P95CpuUtilization *MetricData `json:"p95CpuUtilization,omitempty"`
	// P99CpuUtilization: P99 CPU utilization observed for the resource. The value
	// is a fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some
	// cases).
	P99CpuUtilization *MetricData `json:"p99CpuUtilization,omitempty"`
	// PeakMemoryUtilization: Peak memory utilization observed for the resource.
	// The value is a fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in
	// some cases).
	PeakMemoryUtilization *MetricData `json:"peakMemoryUtilization,omitempty"`
	// PeakNumberConnections: Peak number of connections observed for the resource.
	// The value is a positive integer.
	PeakNumberConnections *MetricData `json:"peakNumberConnections,omitempty"`
	// PeakStorageUtilization: Peak storage utilization observed for the resource.
	// The value is a fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in
	// some cases).
	PeakStorageUtilization *MetricData `json:"peakStorageUtilization,omitempty"`
	// ProcessingUnitCount: Number of processing units in spanner.
	ProcessingUnitCount *MetricData `json:"processingUnitCount,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CurrentMemoryUsedBytes") 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. "CurrentMemoryUsedBytes") 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 Metrics) MarshalJSON() ([]byte, error) {
	type NoMethod Metrics
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OutdatedMinorVersionInfo: Info associated with outdated minor version.
type OutdatedMinorVersionInfo struct {
	// RecommendedMinorVersion: Recommended minor version of the underlying
	// database engine. Example values: For MySQL, it could be "8.0.35", "5.7.25"
	// etc. For PostgreSQL, it could be "14.4", "15.5" etc.
	RecommendedMinorVersion string `json:"recommendedMinorVersion,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RecommendedMinorVersion") 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. "RecommendedMinorVersion") 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 OutdatedMinorVersionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod OutdatedMinorVersionInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Product: Product specification for databasecenter resources.
type Product struct {
	// Engine: Optional. The specific engine that the underlying database is
	// running.
	//
	// Possible values:
	//   "ENGINE_UNSPECIFIED" - UNSPECIFIED means engine type is not known or
	// available.
	//   "ENGINE_MYSQL" - MySQL binary running as an engine in the database
	// instance.
	//   "ENGINE_POSTGRES" - Postgres binary running as engine in database
	// instance.
	//   "ENGINE_SQL_SERVER" - SQLServer binary running as engine in database
	// instance.
	//   "ENGINE_NATIVE" - Native database binary running as engine in instance.
	//   "ENGINE_MEMORYSTORE_FOR_REDIS" - Memorystore with Redis dialect.
	//   "ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER" - Memorystore with Redis cluster
	// dialect.
	//   "ENGINE_MEMORSTORE_FOR_VALKEY" - Deprecated: Use
	// ENGINE_MEMORYSTORE_FOR_VALKEY instead.
	//   "ENGINE_MEMORYSTORE_FOR_VALKEY" - Memorystore with Valkey dialect.
	//   "ENGINE_FIRESTORE_WITH_NATIVE_MODE" - Firestore with native mode.
	//   "ENGINE_FIRESTORE_WITH_DATASTORE_MODE" - Firestore with datastore mode.
	//   "ENGINE_EXADATA_ORACLE" - Oracle Exadata engine.
	//   "ENGINE_ADB_SERVERLESS_ORACLE" - Oracle Autonomous DB Serverless engine.
	//   "ENGINE_FIRESTORE_WITH_MONGODB_COMPATIBILITY_MODE" - Firestore with
	// MongoDB compatibility.
	//   "ENGINE_OTHER" - Other refers to rest of other database engine. This is to
	// be when engine is known, but it is not present in this enum.
	Engine string `json:"engine,omitempty"`
	// MinorVersion: Optional. Minor version of the underlying database engine.
	// Example values: For MySQL, it could be "8.0.35", "5.7.25" etc. For
	// PostgreSQL, it could be "14.4", "15.5" etc.
	MinorVersion string `json:"minorVersion,omitempty"`
	// Type: Optional. Type of specific database product. It could be CloudSQL,
	// AlloyDB etc..
	//
	// Possible values:
	//   "PRODUCT_TYPE_UNSPECIFIED" - PRODUCT_TYPE_UNSPECIFIED means product type
	// is not known or that the user didn't provide this field in the request.
	//   "PRODUCT_TYPE_CLOUD_SQL" - Cloud SQL product area in Google Cloud
	//   "PRODUCT_TYPE_ALLOYDB" - AlloyDB product area in Google Cloud
	//   "PRODUCT_TYPE_SPANNER" - Spanner product area in Google Cloud
	//   "PRODUCT_TYPE_BIGTABLE" - Bigtable product area in Google Cloud
	//   "PRODUCT_TYPE_MEMORYSTORE" - Memorystore product area in Google Cloud
	//   "PRODUCT_TYPE_FIRESTORE" - Firestore product area in Google Cloud
	//   "PRODUCT_TYPE_COMPUTE_ENGINE" - Compute Engine self managed databases
	//   "PRODUCT_TYPE_ORACLE_ON_GCP" - Oracle product area in Google Cloud
	//   "PRODUCT_TYPE_BIGQUERY" - BigQuery product area in Google Cloud
	//   "PRODUCT_TYPE_OTHER" - Other refers to rest of other product type. This is
	// to be when product type is known, but it is not present in this enum.
	Type string `json:"type,omitempty"`
	// Version: Optional. Version of the underlying database engine. Example
	// values: For MySQL, it could be "8.0", "5.7" etc. For Postgres, it could be
	// "14", "15" etc.
	Version string `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Engine") 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. "Engine") 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 Product) MarshalJSON() ([]byte, error) {
	type NoMethod Product
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// QueryDatabaseResourceGroupsRequest: QueryDatabaseResourceGroupsRequest is
// the request to get a list of database groups.
type QueryDatabaseResourceGroupsRequest struct {
	// Filter: Optional. The expression to filter resources. The following fields
	// are filterable: * full_resource_name * resource_type * container *
	// product.type * product.engine * product.version * location * labels *
	// resource_category * machine_config.cpu_count *
	// machine_config.memory_size_bytes * machine_config.shard_count *
	// resource_name * tags * backupdr_config.backupdr_managed * edition The
	// expression is a list of zero or more restrictions combined via logical
	// operators `AND` and `OR`. When `AND` and `OR` are both used in the
	// expression, parentheses must be appropriately used to group the
	// combinations. Example: `location="us-east1" Example:
	// `container="projects/123" OR container="projects/456" Example:
	// `(container="projects/123" OR container="projects/456") AND
	// location="us-east1" Example: `full_resource_name=~"test" Example:
	// `full_resource_name=~"test.*master"
	Filter string `json:"filter,omitempty"`
	// OrderBy: Optional. A field that specifies the sort order of the results. The
	// following fields are sortable: * full_resource_name * product.type *
	// product.engine * product.version * container * issue_count *
	// machine_config.vcpu_count * machine_config.memory_size_bytes *
	// machine_config.shard_count * resource_name * issue_severity * signal_type *
	// location * resource_type * instance_type * edition *
	// metrics.p99_cpu_utilization * metrics.p95_cpu_utilization *
	// metrics.current_storage_used_bytes * metrics.node_count *
	// metrics.processing_unit_count * metrics.current_memory_used_bytes *
	// metrics.peak_storage_utilization * metrics.peak_number_connections *
	// metrics.peak_memory_utilization The default order is ascending. Add "DESC"
	// after the field name to indicate descending order. Add "ASC" after the field
	// name to indicate ascending order. It only supports a single field at a time.
	// For example: `order_by = "full_resource_name" sorts response in ascending
	// order `order_by = "full_resource_name DESC" sorts response in descending
	// order `order_by = "issue_count DESC" sorts response in descending order of
	// count of all issues associated with a resource. More explicitly, `order_by =
	// "full_resource_name, product" is not supported.
	OrderBy string `json:"orderBy,omitempty"`
	// PageSize: Optional. If unspecified, at most 50 resource groups will be
	// returned. The maximum value is 1000; values above 1000 will be coerced to
	// 1000.
	PageSize int64 `json:"pageSize,omitempty"`
	// PageToken: Optional. A page token, received from a previous
	// `QueryDatabaseResourceGroupsRequest` call. Provide this to retrieve the
	// subsequent page. All parameters except page_token should match the
	// parameters in the call that provided the page page token.
	PageToken string `json:"pageToken,omitempty"`
	// Parent: Required. Parent can be a project, a folder, or an organization. The
	// search is limited to the resources within the `scope`. The allowed values
	// are: * projects/{PROJECT_ID} (e.g., "projects/foo-bar") *
	// projects/{PROJECT_NUMBER} (e.g., "projects/12345678") *
	// folders/{FOLDER_NUMBER} (e.g., "folders/1234567") *
	// organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
	Parent string `json:"parent,omitempty"`
	// SignalFilters: Optional. Filters based on signals. The list will be ORed
	// together and then ANDed with the `filters` field above.
	SignalFilters []*SignalFilter `json:"signalFilters,omitempty"`
	// SignalProductsFilters: Optional. Filters based on signal and product. The
	// filter list will be ORed across pairs and ANDed within a signal and products
	// pair.
	SignalProductsFilters []*SignalProductsFilters `json:"signalProductsFilters,omitempty"`
	// SignalTypeGroups: Optional. Groups of signal types that are requested.
	SignalTypeGroups []*SignalTypeGroup `json:"signalTypeGroups,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Filter") 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. "Filter") 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 QueryDatabaseResourceGroupsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod QueryDatabaseResourceGroupsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// QueryDatabaseResourceGroupsResponse: QueryDatabaseResourceGroupsResponse
// represents the response message containing a list of resource groups.
type QueryDatabaseResourceGroupsResponse struct {
	// NextPageToken: A token that can be sent as `page_token` to retrieve the next
	// page. If this field is omitted, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// ResourceGroups: List of database resource groups that pass the filter.
	ResourceGroups []*DatabaseResourceGroup `json:"resourceGroups,omitempty"`
	// TotalSize: Output only. The total number of resource groups in the entire
	// list.
	TotalSize int64 `json:"totalSize,omitempty,string"`
	// Unreachable: Unordered list. List of unreachable regions from where data
	// could not be retrieved.
	Unreachable []string `json:"unreachable,omitempty"`

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

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

// QueryIssuesRequest: QueryIssuesRequest is the request to get a list of
// issues.
type QueryIssuesRequest struct {
	// Filter: Optional. Supported fields are: 'product', `location`,
	// `issue_severity`, 'tags', 'labels',
	Filter string `json:"filter,omitempty"`
	// OrderBy: Optional. Following fields are sortable: SignalType Product
	// Location IssueSeverity The default order is ascending. Add "DESC" after the
	// field name to indicate descending order. Add "ASC" after the field name to
	// indicate ascending order. It only supports a single field at a time.
	OrderBy string `json:"orderBy,omitempty"`
	// PageSize: Optional. If unspecified, at most 50 issues will be returned. The
	// maximum value is 1000; values above 1000 will be coerced to 1000.
	PageSize int64 `json:"pageSize,omitempty"`
	// PageToken: Optional. A page token, received from a previous `QueryIssues`
	// call. Provide this to retrieve the subsequent page. All parameters except
	// page size should match the parameters used in the call that provided the
	// page token.
	PageToken string `json:"pageToken,omitempty"`
	// Parent: Required. Parent can be a project, a folder, or an organization. The
	// list is limited to the one attached to resources within the `scope` that a
	// user has access to. The allowed values are: * projects/{PROJECT_ID} (e.g.,
	// "projects/foo-bar") * projects/{PROJECT_NUMBER} (e.g., "projects/12345678")
	// * folders/{FOLDER_NUMBER} (e.g., "folders/1234567") *
	// organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
	Parent string `json:"parent,omitempty"`
	// SignalProductsFilters: Optional. Filters based on signal and product. The
	// filter list will be ORed across pairs and ANDed within a signal and products
	// pair.
	SignalProductsFilters []*SignalProductsFilters `json:"signalProductsFilters,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Filter") 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. "Filter") 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 QueryIssuesRequest) MarshalJSON() ([]byte, error) {
	type NoMethod QueryIssuesRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// QueryIssuesResponse: QueryIssuesResponse is the response containing a list
// of issues.
type QueryIssuesResponse struct {
	// NextPageToken: A token that can be sent as `page_token` to retrieve the next
	// page. If this field is omitted, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// ResourceIssues: List of issues and resource details.
	ResourceIssues []*DatabaseResourceIssue `json:"resourceIssues,omitempty"`
	// Unreachable: Unordered list. List of unreachable regions from where data
	// could not be retrieved.
	Unreachable []string `json:"unreachable,omitempty"`

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

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

// QueryMetrics: QueryMetrics contains the metrics related to the query
// execution.
type QueryMetrics struct {
	// AvgCpuTime: The average execution period of the query across all runs.
	AvgCpuTime string `json:"avgCpuTime,omitempty"`
	// ExecutionCount: The number of times the query was executed.
	ExecutionCount int64 `json:"executionCount,omitempty,string"`
	// MetricsWindow: The window over which the metrics are aggregated.
	//
	// Possible values:
	//   "METRICS_WINDOW_UNSPECIFIED" - Unspecified. Default value.
	//   "LAST_ONE_DAY" - Metrics are aggregated over the last 1 day.
	//   "LAST_ONE_WEEK" - Metrics are aggregated over the last 7 days.
	//   "LAST_TWO_WEEKS" - Metrics are aggregated over the last 14 days.
	MetricsWindow string `json:"metricsWindow,omitempty"`
	// RowsProcessed: The average number of rows processed by the query across all
	// runs.
	RowsProcessed int64 `json:"rowsProcessed,omitempty,string"`
	// TotalCpuTime: The total CPU time consumed by the query across all runs.
	TotalCpuTime string `json:"totalCpuTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AvgCpuTime") 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. "AvgCpuTime") 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 QueryMetrics) MarshalJSON() ([]byte, error) {
	type NoMethod QueryMetrics
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// QueryProductsResponse: QueryProductsResponse represents the response
// containing a list of products.
type QueryProductsResponse struct {
	// NextPageToken: A token that can be sent as `page_token` to retrieve the next
	// page. If this field is omitted, there are no subsequent pages
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Products: List of database products returned.
	Products []*Product `json:"products,omitempty"`
	// Unreachable: Unordered list. List of unreachable regions from where data
	// could not be retrieved.
	Unreachable []string `json:"unreachable,omitempty"`

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

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

// QueryStats: QueryStats contains the stats for a particular combination of
// query_hash, query_string and resource_type.
type QueryStats struct {
	// InefficientQueryInfo: Information about inefficient query.
	InefficientQueryInfo *InefficientQueryInfo `json:"inefficientQueryInfo,omitempty"`
	// NormalizedQuery: The query string is normalized query without any PII data.
	NormalizedQuery string `json:"normalizedQuery,omitempty"`
	// QueryHash: The query hash of the query.
	QueryHash string `json:"queryHash,omitempty"`
	// QueryMetrics: Metrics related to the query performance.
	QueryMetrics *QueryMetrics `json:"queryMetrics,omitempty"`
	// ResourceIds: The resource ids for which the query stats are collected.
	ResourceIds []*ResourceId `json:"resourceIds,omitempty"`
	// ResourceType: The type of the resource. sqladmin.googleapis.com/Instance
	// alloydb.googleapis.com/Cluster alloydb.googleapis.com/Instance
	ResourceType string `json:"resourceType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "InefficientQueryInfo") 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. "InefficientQueryInfo") 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 QueryStats) MarshalJSON() ([]byte, error) {
	type NoMethod QueryStats
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// QueryStatsInfo: QueryStatsInfo contains the aggregated and detailed query
// stats for a particular combination of relevant query stats for queries
// having same normalized query.
type QueryStatsInfo struct {
	// AggregatedQueryStats: Aggregated query stats for the resources for same
	// normalized query.
	AggregatedQueryStats *QueryStats `json:"aggregatedQueryStats,omitempty"`
	// QueryStats: List of query stats for the resources in the group. This stats
	// is stats at resource level for the resources having same normalized query.
	QueryStats []*QueryStats `json:"queryStats,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AggregatedQueryStats") 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. "AggregatedQueryStats") 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 QueryStatsInfo) MarshalJSON() ([]byte, error) {
	type NoMethod QueryStatsInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RecommendationInfo: Info associated with recommendation.
type RecommendationInfo struct {
	// Recommender: Name of recommendation. Examples:
	// organizations/1234/locations/us-central1/recommenders/google.cloudsql.instanc
	// e.PerformanceRecommender/recommendations/9876
	Recommender string `json:"recommender,omitempty"`
	// RecommenderId: ID of recommender. Examples:
	// "google.cloudsql.instance.PerformanceRecommender"
	RecommenderId string `json:"recommenderId,omitempty"`
	// RecommenderSubtype: Contains an identifier for a subtype of recommendations
	// produced for the same recommender. Subtype is a function of content and
	// impact, meaning a new subtype might be added when significant changes to
	// `content` or `primary_impact.category` are introduced. See the Recommenders
	// section to see a list of subtypes for a given Recommender. Examples: For
	// recommender = "google.cloudsql.instance.PerformanceRecommender",
	// recommender_subtype can be
	// "MYSQL_HIGH_NUMBER_OF_OPEN_TABLES_BEST_PRACTICE"/"POSTGRES_HIGH_TRANSACTION_I
	// D_UTILIZATION_BEST_PRACTICE"
	RecommenderSubtype string `json:"recommenderSubtype,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Recommender") 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. "Recommender") 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 RecommendationInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RecommendationInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RegulatoryStandard: Compliances associated with signals.
type RegulatoryStandard struct {
	// Standard: Name of industry compliance standards, such as such as CIS, PCI,
	// and OWASP.
	Standard string `json:"standard,omitempty"`
	// Version: Version of the standard or benchmark, for example, 1.1.
	Version string `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Standard") 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. "Standard") 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 RegulatoryStandard) MarshalJSON() ([]byte, error) {
	type NoMethod RegulatoryStandard
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ResourceDetails: Capture the resource details for resources that are
// included in the delta counts.
type ResourceDetails struct {
	// Container: Specifies where the resource is created. For Google Cloud
	// resources, it is the full name of the project.
	Container string `json:"container,omitempty"`
	// FullResourceName: Full resource name of the resource.
	FullResourceName string `json:"fullResourceName,omitempty"`
	// Location: Location of the resource.
	Location string `json:"location,omitempty"`
	// Product: Product type of the resource.
	Product *Product `json:"product,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Container") 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. "Container") 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 ResourceDetails) MarshalJSON() ([]byte, error) {
	type NoMethod ResourceDetails
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ResourceId: ResourceId contains the identifier for a database resource,
// including the full resource name, resource type, and product.
type ResourceId struct {
	// FullResourceName: The full resource name of the resource.
	FullResourceName string `json:"fullResourceName,omitempty"`
	// Product: The product of the resource, including the type, engine, and
	// version.
	Product *Product `json:"product,omitempty"`
	// ResourceType: The type of the resource. sqladmin.googleapis.com/Instance
	// alloydb.googleapis.com/Cluster alloydb.googleapis.com/Instance
	ResourceType string `json:"resourceType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "FullResourceName") 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. "FullResourceName") 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 ResourceId) MarshalJSON() ([]byte, error) {
	type NoMethod ResourceId
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ResourceMaintenanceDenySchedule: Deny maintenance period for the database
// resource. It specifies the time range during which the maintenance cannot
// start. This is configured by the customer.
type ResourceMaintenanceDenySchedule struct {
	// EndDate: Optional. Deny period end date.
	EndDate *Date `json:"endDate,omitempty"`
	// StartDate: Optional. The start date of the deny maintenance period.
	StartDate *Date `json:"startDate,omitempty"`
	// Time: Optional. Time in UTC when the deny period starts on start_date and
	// ends on end_date.
	Time *TimeOfDay `json:"time,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndDate") 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. "EndDate") 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 ResourceMaintenanceDenySchedule) MarshalJSON() ([]byte, error) {
	type NoMethod ResourceMaintenanceDenySchedule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ResourceMaintenanceSchedule: Maintenance window for the database resource.
// It specifies preferred time and day of the week and phase in some cases,
// when the maintenance can start.
type ResourceMaintenanceSchedule struct {
	// Day: Optional. Preferred day of the week for maintenance, e.g. MONDAY,
	// TUESDAY, etc.
	//
	// Possible values:
	//   "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified.
	//   "MONDAY" - Monday
	//   "TUESDAY" - Tuesday
	//   "WEDNESDAY" - Wednesday
	//   "THURSDAY" - Thursday
	//   "FRIDAY" - Friday
	//   "SATURDAY" - Saturday
	//   "SUNDAY" - Sunday
	Day string `json:"day,omitempty"`
	// Phase: Optional. Phase of the maintenance window. This is to capture order
	// of maintenance. For example, for Cloud SQL resources, this can be used to
	// capture if the maintenance window is in Week1, Week2, Week5, etc. Non
	// production resources are usually part of early phase. For more details,
	// refer to Cloud SQL resources -
	// https://cloud.google.com/sql/docs/mysql/maintenance
	//
	// Possible values:
	//   "PHASE_UNSPECIFIED" - Phase is unspecified.
	//   "PHASE_WEEK1" - Week 1.
	//   "PHASE_WEEK2" - Week 2.
	//   "PHASE_WEEK5" - Week 5.
	//   "PHASE_ANY" - Any phase.
	Phase string `json:"phase,omitempty"`
	// StartTime: Optional. Preferred time to start the maintenance operation on
	// the specified day.
	StartTime *TimeOfDay `json:"startTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Day") 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. "Day") 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 ResourceMaintenanceSchedule) MarshalJSON() ([]byte, error) {
	type NoMethod ResourceMaintenanceSchedule
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ResourceSuspensionInfo: Resource suspension info for a database resource.
type ResourceSuspensionInfo struct {
	// ResourceSuspended: Is resource suspended.
	ResourceSuspended bool `json:"resourceSuspended,omitempty"`
	// SuspensionReason: Suspension reason for the resource.
	//
	// Possible values:
	//   "SUSPENSION_REASON_UNSPECIFIED" - Suspension reason is unspecified.
	//   "WIPEOUT_HIDE_EVENT" - Wipeout hide event.
	//   "WIPEOUT_PURGE_EVENT" - Wipeout purge event.
	//   "BILLING_DISABLED" - Billing disabled for project
	//   "ABUSER_DETECTED" - Abuse detected for resource
	//   "ENCRYPTION_KEY_INACCESSIBLE" - Encryption key inaccessible.
	//   "REPLICATED_CLUSTER_ENCRYPTION_KEY_INACCESSIBLE" - Replicated cluster
	// encryption key inaccessible.
	SuspensionReason string `json:"suspensionReason,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ResourceSuspended") 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. "ResourceSuspended") 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 ResourceSuspensionInfo) MarshalJSON() ([]byte, error) {
	type NoMethod ResourceSuspensionInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RetentionSettingsInfo: Metadata about backup retention settings for a
// database resource.
type RetentionSettingsInfo struct {
	// DurationBasedRetention: Duration based retention period i.e. 172800 seconds
	// (2 days)
	DurationBasedRetention string `json:"durationBasedRetention,omitempty"`
	// QuantityBasedRetention: Number of backups that will be retained.
	QuantityBasedRetention int64 `json:"quantityBasedRetention,omitempty"`
	// SubResource: Optional. Sub resource details associated with the backup
	// configuration.
	SubResource *SubResource `json:"subResource,omitempty"`
	// TimestampBasedRetentionTime: Timestamp based retention period i.e. till
	// 2024-05-01T00:00:00Z
	TimestampBasedRetentionTime string `json:"timestampBasedRetentionTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DurationBasedRetention") 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. "DurationBasedRetention") 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 RetentionSettingsInfo) MarshalJSON() ([]byte, error) {
	type NoMethod RetentionSettingsInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SCCInfo: Info associated with SCC signals.
type SCCInfo struct {
	// Category: Name by which SCC calls this signal.
	Category string `json:"category,omitempty"`
	// ExternalUri: External URI which points to a SCC page associated with the
	// signal.
	ExternalUri string `json:"externalUri,omitempty"`
	// RegulatoryStandards: Compliances that are associated with the signal.
	RegulatoryStandards []*RegulatoryStandard `json:"regulatoryStandards,omitempty"`
	// Signal: Name of the signal.
	Signal string `json:"signal,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Category") 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. "Category") 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 SCCInfo) MarshalJSON() ([]byte, error) {
	type NoMethod SCCInfo
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Signal: Represents a signal.
type Signal struct {
	// AdditionalDetails: Additional information related to the signal. In the case
	// of composite signals, this field encapsulates details associated with
	// granular signals, having a signal status of "ISSUE"; signals with a status
	// of "OK" are not included. For granular signals, it encompasses information
	// relevant to the signal, regardless of the signal status.
	AdditionalDetails []*AdditionalDetail `json:"additionalDetails,omitempty"`
	// IssueCreateTime: Timestamp when the issue was created (when signal status is
	// ISSUE).
	IssueCreateTime string `json:"issueCreateTime,omitempty"`
	// IssueSeverity: Severity of the issue.
	//
	// Possible values:
	//   "ISSUE_SEVERITY_UNSPECIFIED" - Unspecified.
	//   "ISSUE_SEVERITY_LOW" - Low severity.
	//   "ISSUE_SEVERITY_MEDIUM" - Medium severity.
	//   "ISSUE_SEVERITY_HIGH" - High severity.
	//   "ISSUE_SEVERITY_CRITICAL" - Critical severity.
	//   "ISSUE_SEVERITY_IRRELEVANT" - Irrelevant severity. This means the issue
	// should not be surfaced at all.
	IssueSeverity string `json:"issueSeverity,omitempty"`
	// SignalStatus: Status of the signal.
	//
	// Possible values:
	//   "SIGNAL_STATUS_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_STATUS_NOT_APPLICABLE" - Signal is not applicable to the resource.
	//   "SIGNAL_STATUS_OK" - Signal is not an issue.
	//   "SIGNAL_STATUS_ISSUE" - Signal is an issue.
	//   "SIGNAL_STATUS_NOT_ENABLED" - Signal is not enabled for the resource.
	SignalStatus string `json:"signalStatus,omitempty"`
	// SignalType: Type of the signal.
	//
	// Possible values:
	//   "SIGNAL_TYPE_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED" - Represents if a resource is
	// protected by automatic failover. Checks for resources that are configured to
	// have redundancy within a region that enables automatic failover.
	//   "SIGNAL_TYPE_GROUP_MULTIREGIONAL" - Represents if a group is replicating
	// across regions. Checks for resources that are configured to have redundancy,
	// and ongoing replication, across regions.
	//   "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY" - Represents if a resource has an
	// automated backup policy.
	//   "SIGNAL_TYPE_SHORT_BACKUP_RETENTION" - Represents if a resources has a
	// short backup retention period.
	//   "SIGNAL_TYPE_LAST_BACKUP_FAILED" - Represents if the last backup of a
	// resource failed.
	//   "SIGNAL_TYPE_LAST_BACKUP_OLD" - Represents if the last backup of a
	// resource is older than some threshold value.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 2.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.3.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.2.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.1.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0" - Represents if a resource
	// violates CIS Controls 8.0.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53" - Represents if a resource violates
	// NIST 800-53.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5" - Represents if a resource violates
	// NIST 800-53 R5.
	//   "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0" - Represents if a
	// resource violates NIST Cybersecurity Framework 1.0.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001" - Represents if a resource violates
	// ISO-27001.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022" - Represents if a resource violates
	// ISO 27001 2022.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1" - Represents if a resource violates
	// PCI-DSS v3.2.1.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0" - Represents if a resource violates
	// PCI-DSS v4.0.
	//   "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4" - Represents if a resource
	// violates Cloud Controls Matrix v4.0.
	//   "SIGNAL_TYPE_VIOLATES_HIPAA" - Represents if a resource violates HIPAA.
	//   "SIGNAL_TYPE_VIOLATES_SOC2_V2017" - Represents if a resource violates SOC2
	// v2017.
	//   "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING" - Represents if
	// log_checkpoints database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED" - Represents if the log_duration
	// database flag for a Cloud SQL for PostgreSQL instance is not set to on.
	//   "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING" - Represents if the
	// log_error_verbosity database flag for a Cloud SQL for PostgreSQL instance is
	// not set to default or stricter (default or terse).
	//   "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED" - Represents if the
	// log_lock_waits database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_LOGGING_MOST_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set appropriately.
	//   "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance does not have an appropriate severity level.
	//   "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING" - Represents if the log_min_messages
	// database flag for a Cloud SQL for PostgreSQL instance is not set to warning
	// or another recommended value.
	//   "SIGNAL_TYPE_QUERY_STATS_LOGGED" - Represents if the databaseFlags
	// property of instance metadata for the log_executor_status field is set to
	// on.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME" - Represents if the
	// log_hostname database flag for a Cloud SQL for PostgreSQL instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS" - Represents if the
	// log_parser_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS" - Represents if the
	// log_planner_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS" - Represents if the
	// log_statement database flag for a Cloud SQL for PostgreSQL instance is not
	// set to DDL (all data definition statements).
	//   "SIGNAL_TYPE_LOGGING_QUERY_STATS" - Represents if the log_statement_stats
	// database flag for a Cloud SQL for PostgreSQL instance is not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES" - Represents if the
	// log_temp_files database flag for a Cloud SQL for PostgreSQL instance is not
	// set to "0". (NOTE: 0 = ON)
	//   "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED" - Represents if the user
	// connections database flag for a Cloud SQL for SQL Server instance is
	// configured.
	//   "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED" - Represents if the user options
	// database flag for Cloud SQL SQL Server instance is configured or not.
	//   "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS" - Represents if a resource is
	// exposed to public access.
	//   "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS" - Represents if a resources requires
	// all incoming connections to use SSL or not.
	//   "SIGNAL_TYPE_NO_ROOT_PASSWORD" - Represents if a Cloud SQL database has a
	// password configured for the root account or not.
	//   "SIGNAL_TYPE_WEAK_ROOT_PASSWORD" - Represents if a Cloud SQL database has
	// a weak password configured for the root account.
	//   "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED" - Represents if a SQL
	// database instance is not encrypted with customer-managed encryption keys
	// (CMEK).
	//   "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED" - Represents if The
	// contained database authentication database flag for a Cloud SQL for SQL
	// Server instance is not set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS" - Represents if he external
	// scripts enabled database flag for a Cloud SQL for SQL Server instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS" - Represents if the local_infile
	// database flag for a Cloud SQL for MySQL instance is not set to off.
	//   "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED" - Represents if the
	// log_connections database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED" - Represents if the
	// log_disconnections database flag for a Cloud SQL for PostgreSQL instance is
	// not set to on.
	//   "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO" - Represents if the
	// log_min_duration_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set to -1.
	//   "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS" - Represents if the remote access
	// database flag for a Cloud SQL for SQL Server instance is not set to off.
	//   "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED" - Represents if the
	// skip_show_database database flag for a Cloud SQL for MySQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED" - Represents if the 3625
	// (trace flag) database flag for a Cloud SQL for SQL Server instance is not
	// set to on.
	//   "SIGNAL_TYPE_PUBLIC_IP_ENABLED" - Represents if public IP is enabled.
	//   "SIGNAL_TYPE_IDLE" - Represents idle instance helps to reduce costs.
	//   "SIGNAL_TYPE_OVERPROVISIONED" - Represents instances that are
	// unnecessarily large for given workload.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES" - Represents high number of
	// concurrently opened tables.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES" - Represents high table count close to
	// SLA limit.
	//   "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION" - Represents high number of
	// unvacuumed transactions
	//   "SIGNAL_TYPE_UNDERPROVISIONED" - Represents need for more CPU and/or
	// memory
	//   "SIGNAL_TYPE_OUT_OF_DISK" - Represents out of disk.
	//   "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY" - Represents server
	// certificate is near expiry.
	//   "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED" - Represents database auditing is
	// disabled.
	//   "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS" - Represents not restricted to
	// authorized networks.
	//   "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP" - Represents violate org
	// policy restrict public ip.
	//   "SIGNAL_TYPE_QUOTA_LIMIT" - Cluster nearing quota limit
	//   "SIGNAL_TYPE_NO_PASSWORD_POLICY" - No password policy set on resources
	//   "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT" - Performance impact of
	// connections settings
	//   "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT" - Performance impact of
	// temporary tables settings
	//   "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT" - Performance impact of
	// transaction logs settings
	//   "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES" - Performance impact of high
	// joins without indexes
	//   "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES" - Detects events where a
	// database superuser (postgres for PostgreSQL servers or root for MySQL users)
	// writes to non-system tables.
	//   "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS" - Detects events where a
	// database user or role has been granted all privileges to a database, or to
	// all tables, procedures, or functions in a schema.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket outside of the
	// organization.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket that is owned by
	// the organization and is publicly accessible.
	//   "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM" - Detects if a database
	// instance is using a weak password hash algorithm.
	//   "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY" - Detects if a database instance has
	// no user password policy set.
	//   "SIGNAL_TYPE_HOT_NODE" - Detects if a database instance/cluster has a hot
	// node.
	//   "SIGNAL_TYPE_NO_DELETION_PROTECTION" - Deletion Protection Disabled for
	// the resource
	//   "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY" - Detects if a database instance
	// has no point in time recovery enabled.
	//   "SIGNAL_TYPE_RESOURCE_SUSPENDED" - Detects if a database instance/cluster
	// has suspended resources.
	//   "SIGNAL_TYPE_EXPENSIVE_COMMANDS" - Detects that expensive commands are
	// being run on a database instance impacting overall performance.
	//   "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED" - Indicates that the
	// instance does not have a maintenance policy configured.
	//   "SIGNAL_TYPE_INEFFICIENT_QUERY" - Indicates that the instance has
	// inefficient queries detected.
	//   "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD" - Indicates that the instance has
	// read intensive workload.
	//   "SIGNAL_TYPE_MEMORY_LIMIT" - Indicates that the instance is nearing memory
	// limit.
	//   "SIGNAL_TYPE_MAX_SERVER_MEMORY" - Indicates that the instance's max server
	// memory is configured higher than the recommended value.
	//   "SIGNAL_TYPE_LARGE_ROWS" - Indicates that the database has large rows
	// beyond the recommended limit.
	//   "SIGNAL_TYPE_HIGH_WRITE_PRESSURE" - Heavy write pressure on the database
	// rows.
	//   "SIGNAL_TYPE_HIGH_READ_PRESSURE" - Heavy read pressure on the database
	// rows.
	//   "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED" - Encryption org policy
	// not satisfied.
	//   "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED" - Location org policy not
	// satisfied.
	//   "SIGNAL_TYPE_OUTDATED_MINOR_VERSION" - Outdated DB minor version.
	//   "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED" - Schema not optimized.
	//   "SIGNAL_TYPE_REPLICATION_LAG" - Replication delay.
	//   "SIGNAL_TYPE_OUTDATED_CLIENT" - Outdated client.
	//   "SIGNAL_TYPE_DATABOOST_DISABLED" - Databoost is disabled.
	//   "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES" - Recommended maintenance
	// policy.
	//   "SIGNAL_TYPE_EXTENDED_SUPPORT" - Resource version is in extended support.
	//   "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE" - Represents a database version
	// nearing end of life.
	//   "SIGNAL_TYPE_HIGH_MAINTENANCE_DOWNTIME_RISK" - Indicates a high risk of
	// maintenance downtime.
	//   "SIGNAL_TYPE_LOW_CACHE_HIT_AND_MAINTENANCE_DOWNTIME" - Indicates both a
	// low cache hit rate and a risk of maintenance downtime.
	//   "SIGNAL_TYPE_MISSING_ENHANCED_PROTECTION" - Indicates that the resource is
	// missing enhanced protection.
	SignalType string `json:"signalType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AdditionalDetails") 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. "AdditionalDetails") 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 Signal) MarshalJSON() ([]byte, error) {
	type NoMethod Signal
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SignalFilter: A filter for Signals. If signal_type is left unset, all
// signals should be returned. For example, the following filter returns all
// issues. signal_filter: { signal_status: SIGNAL_STATUS_ISSUE; } Another
// example, the following filter returns issues of the given type:
// signal_filter: { type: SIGNAL_TYPE_NO_PROMOTABLE_REPLICA signal_status:
// ISSUE } If signal_status is left unset or set to SIGNAL_STATE_UNSPECIFIED,
// an error should be returned.
type SignalFilter struct {
	// SignalStatus: Optional. Represents the status of the Signal for which the
	// filter is for.
	//
	// Possible values:
	//   "SIGNAL_STATUS_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_STATUS_NOT_APPLICABLE" - Signal is not applicable to the resource.
	//   "SIGNAL_STATUS_OK" - Signal is not an issue.
	//   "SIGNAL_STATUS_ISSUE" - Signal is an issue.
	//   "SIGNAL_STATUS_NOT_ENABLED" - Signal is not enabled for the resource.
	SignalStatus string `json:"signalStatus,omitempty"`
	// SignalType: Optional. Represents the type of the Signal for which the filter
	// is for.
	//
	// Possible values:
	//   "SIGNAL_TYPE_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED" - Represents if a resource is
	// protected by automatic failover. Checks for resources that are configured to
	// have redundancy within a region that enables automatic failover.
	//   "SIGNAL_TYPE_GROUP_MULTIREGIONAL" - Represents if a group is replicating
	// across regions. Checks for resources that are configured to have redundancy,
	// and ongoing replication, across regions.
	//   "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY" - Represents if a resource has an
	// automated backup policy.
	//   "SIGNAL_TYPE_SHORT_BACKUP_RETENTION" - Represents if a resources has a
	// short backup retention period.
	//   "SIGNAL_TYPE_LAST_BACKUP_FAILED" - Represents if the last backup of a
	// resource failed.
	//   "SIGNAL_TYPE_LAST_BACKUP_OLD" - Represents if the last backup of a
	// resource is older than some threshold value.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 2.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.3.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.2.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.1.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0" - Represents if a resource
	// violates CIS Controls 8.0.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53" - Represents if a resource violates
	// NIST 800-53.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5" - Represents if a resource violates
	// NIST 800-53 R5.
	//   "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0" - Represents if a
	// resource violates NIST Cybersecurity Framework 1.0.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001" - Represents if a resource violates
	// ISO-27001.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022" - Represents if a resource violates
	// ISO 27001 2022.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1" - Represents if a resource violates
	// PCI-DSS v3.2.1.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0" - Represents if a resource violates
	// PCI-DSS v4.0.
	//   "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4" - Represents if a resource
	// violates Cloud Controls Matrix v4.0.
	//   "SIGNAL_TYPE_VIOLATES_HIPAA" - Represents if a resource violates HIPAA.
	//   "SIGNAL_TYPE_VIOLATES_SOC2_V2017" - Represents if a resource violates SOC2
	// v2017.
	//   "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING" - Represents if
	// log_checkpoints database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED" - Represents if the log_duration
	// database flag for a Cloud SQL for PostgreSQL instance is not set to on.
	//   "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING" - Represents if the
	// log_error_verbosity database flag for a Cloud SQL for PostgreSQL instance is
	// not set to default or stricter (default or terse).
	//   "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED" - Represents if the
	// log_lock_waits database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_LOGGING_MOST_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set appropriately.
	//   "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance does not have an appropriate severity level.
	//   "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING" - Represents if the log_min_messages
	// database flag for a Cloud SQL for PostgreSQL instance is not set to warning
	// or another recommended value.
	//   "SIGNAL_TYPE_QUERY_STATS_LOGGED" - Represents if the databaseFlags
	// property of instance metadata for the log_executor_status field is set to
	// on.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME" - Represents if the
	// log_hostname database flag for a Cloud SQL for PostgreSQL instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS" - Represents if the
	// log_parser_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS" - Represents if the
	// log_planner_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS" - Represents if the
	// log_statement database flag for a Cloud SQL for PostgreSQL instance is not
	// set to DDL (all data definition statements).
	//   "SIGNAL_TYPE_LOGGING_QUERY_STATS" - Represents if the log_statement_stats
	// database flag for a Cloud SQL for PostgreSQL instance is not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES" - Represents if the
	// log_temp_files database flag for a Cloud SQL for PostgreSQL instance is not
	// set to "0". (NOTE: 0 = ON)
	//   "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED" - Represents if the user
	// connections database flag for a Cloud SQL for SQL Server instance is
	// configured.
	//   "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED" - Represents if the user options
	// database flag for Cloud SQL SQL Server instance is configured or not.
	//   "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS" - Represents if a resource is
	// exposed to public access.
	//   "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS" - Represents if a resources requires
	// all incoming connections to use SSL or not.
	//   "SIGNAL_TYPE_NO_ROOT_PASSWORD" - Represents if a Cloud SQL database has a
	// password configured for the root account or not.
	//   "SIGNAL_TYPE_WEAK_ROOT_PASSWORD" - Represents if a Cloud SQL database has
	// a weak password configured for the root account.
	//   "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED" - Represents if a SQL
	// database instance is not encrypted with customer-managed encryption keys
	// (CMEK).
	//   "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED" - Represents if The
	// contained database authentication database flag for a Cloud SQL for SQL
	// Server instance is not set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS" - Represents if he external
	// scripts enabled database flag for a Cloud SQL for SQL Server instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS" - Represents if the local_infile
	// database flag for a Cloud SQL for MySQL instance is not set to off.
	//   "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED" - Represents if the
	// log_connections database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED" - Represents if the
	// log_disconnections database flag for a Cloud SQL for PostgreSQL instance is
	// not set to on.
	//   "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO" - Represents if the
	// log_min_duration_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set to -1.
	//   "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS" - Represents if the remote access
	// database flag for a Cloud SQL for SQL Server instance is not set to off.
	//   "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED" - Represents if the
	// skip_show_database database flag for a Cloud SQL for MySQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED" - Represents if the 3625
	// (trace flag) database flag for a Cloud SQL for SQL Server instance is not
	// set to on.
	//   "SIGNAL_TYPE_PUBLIC_IP_ENABLED" - Represents if public IP is enabled.
	//   "SIGNAL_TYPE_IDLE" - Represents idle instance helps to reduce costs.
	//   "SIGNAL_TYPE_OVERPROVISIONED" - Represents instances that are
	// unnecessarily large for given workload.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES" - Represents high number of
	// concurrently opened tables.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES" - Represents high table count close to
	// SLA limit.
	//   "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION" - Represents high number of
	// unvacuumed transactions
	//   "SIGNAL_TYPE_UNDERPROVISIONED" - Represents need for more CPU and/or
	// memory
	//   "SIGNAL_TYPE_OUT_OF_DISK" - Represents out of disk.
	//   "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY" - Represents server
	// certificate is near expiry.
	//   "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED" - Represents database auditing is
	// disabled.
	//   "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS" - Represents not restricted to
	// authorized networks.
	//   "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP" - Represents violate org
	// policy restrict public ip.
	//   "SIGNAL_TYPE_QUOTA_LIMIT" - Cluster nearing quota limit
	//   "SIGNAL_TYPE_NO_PASSWORD_POLICY" - No password policy set on resources
	//   "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT" - Performance impact of
	// connections settings
	//   "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT" - Performance impact of
	// temporary tables settings
	//   "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT" - Performance impact of
	// transaction logs settings
	//   "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES" - Performance impact of high
	// joins without indexes
	//   "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES" - Detects events where a
	// database superuser (postgres for PostgreSQL servers or root for MySQL users)
	// writes to non-system tables.
	//   "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS" - Detects events where a
	// database user or role has been granted all privileges to a database, or to
	// all tables, procedures, or functions in a schema.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket outside of the
	// organization.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket that is owned by
	// the organization and is publicly accessible.
	//   "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM" - Detects if a database
	// instance is using a weak password hash algorithm.
	//   "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY" - Detects if a database instance has
	// no user password policy set.
	//   "SIGNAL_TYPE_HOT_NODE" - Detects if a database instance/cluster has a hot
	// node.
	//   "SIGNAL_TYPE_NO_DELETION_PROTECTION" - Deletion Protection Disabled for
	// the resource
	//   "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY" - Detects if a database instance
	// has no point in time recovery enabled.
	//   "SIGNAL_TYPE_RESOURCE_SUSPENDED" - Detects if a database instance/cluster
	// has suspended resources.
	//   "SIGNAL_TYPE_EXPENSIVE_COMMANDS" - Detects that expensive commands are
	// being run on a database instance impacting overall performance.
	//   "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED" - Indicates that the
	// instance does not have a maintenance policy configured.
	//   "SIGNAL_TYPE_INEFFICIENT_QUERY" - Indicates that the instance has
	// inefficient queries detected.
	//   "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD" - Indicates that the instance has
	// read intensive workload.
	//   "SIGNAL_TYPE_MEMORY_LIMIT" - Indicates that the instance is nearing memory
	// limit.
	//   "SIGNAL_TYPE_MAX_SERVER_MEMORY" - Indicates that the instance's max server
	// memory is configured higher than the recommended value.
	//   "SIGNAL_TYPE_LARGE_ROWS" - Indicates that the database has large rows
	// beyond the recommended limit.
	//   "SIGNAL_TYPE_HIGH_WRITE_PRESSURE" - Heavy write pressure on the database
	// rows.
	//   "SIGNAL_TYPE_HIGH_READ_PRESSURE" - Heavy read pressure on the database
	// rows.
	//   "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED" - Encryption org policy
	// not satisfied.
	//   "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED" - Location org policy not
	// satisfied.
	//   "SIGNAL_TYPE_OUTDATED_MINOR_VERSION" - Outdated DB minor version.
	//   "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED" - Schema not optimized.
	//   "SIGNAL_TYPE_REPLICATION_LAG" - Replication delay.
	//   "SIGNAL_TYPE_OUTDATED_CLIENT" - Outdated client.
	//   "SIGNAL_TYPE_DATABOOST_DISABLED" - Databoost is disabled.
	//   "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES" - Recommended maintenance
	// policy.
	//   "SIGNAL_TYPE_EXTENDED_SUPPORT" - Resource version is in extended support.
	//   "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE" - Represents a database version
	// nearing end of life.
	//   "SIGNAL_TYPE_HIGH_MAINTENANCE_DOWNTIME_RISK" - Indicates a high risk of
	// maintenance downtime.
	//   "SIGNAL_TYPE_LOW_CACHE_HIT_AND_MAINTENANCE_DOWNTIME" - Indicates both a
	// low cache hit rate and a risk of maintenance downtime.
	//   "SIGNAL_TYPE_MISSING_ENHANCED_PROTECTION" - Indicates that the resource is
	// missing enhanced protection.
	SignalType string `json:"signalType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "SignalStatus") 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. "SignalStatus") 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 SignalFilter) MarshalJSON() ([]byte, error) {
	type NoMethod SignalFilter
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SignalGroup: A group of signals and their counts.
type SignalGroup struct {
	// DisplayName: Title of a signal group corresponding to the request.
	DisplayName string `json:"displayName,omitempty"`
	// IssueCount: When applied to a DatabaseResource represents count of issues
	// associated with the resource. A signal is an issue when its SignalStatus
	// field is set to SIGNAL_STATUS_ISSUE.
	IssueCount int64 `json:"issueCount,omitempty"`
	// Signals: List of signals present in the group and associated with the
	// resource. Only applies to a DatabaseResource.
	Signals []*Signal `json:"signals,omitempty"`
	// 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 SignalGroup) MarshalJSON() ([]byte, error) {
	type NoMethod SignalGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SignalProductsFilters: SignalProductsFilters represents a signal and list of
// supported products.
type SignalProductsFilters struct {
	// Products: Optional. Product type of the resource. The version of the product
	// will be ignored in filtering.
	Products []*Product `json:"products,omitempty"`
	// SignalType: Optional. The type of signal.
	//
	// Possible values:
	//   "SIGNAL_TYPE_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED" - Represents if a resource is
	// protected by automatic failover. Checks for resources that are configured to
	// have redundancy within a region that enables automatic failover.
	//   "SIGNAL_TYPE_GROUP_MULTIREGIONAL" - Represents if a group is replicating
	// across regions. Checks for resources that are configured to have redundancy,
	// and ongoing replication, across regions.
	//   "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY" - Represents if a resource has an
	// automated backup policy.
	//   "SIGNAL_TYPE_SHORT_BACKUP_RETENTION" - Represents if a resources has a
	// short backup retention period.
	//   "SIGNAL_TYPE_LAST_BACKUP_FAILED" - Represents if the last backup of a
	// resource failed.
	//   "SIGNAL_TYPE_LAST_BACKUP_OLD" - Represents if the last backup of a
	// resource is older than some threshold value.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 2.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.3.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.2.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.1.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0" - Represents if a resource
	// violates CIS Controls 8.0.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53" - Represents if a resource violates
	// NIST 800-53.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5" - Represents if a resource violates
	// NIST 800-53 R5.
	//   "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0" - Represents if a
	// resource violates NIST Cybersecurity Framework 1.0.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001" - Represents if a resource violates
	// ISO-27001.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022" - Represents if a resource violates
	// ISO 27001 2022.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1" - Represents if a resource violates
	// PCI-DSS v3.2.1.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0" - Represents if a resource violates
	// PCI-DSS v4.0.
	//   "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4" - Represents if a resource
	// violates Cloud Controls Matrix v4.0.
	//   "SIGNAL_TYPE_VIOLATES_HIPAA" - Represents if a resource violates HIPAA.
	//   "SIGNAL_TYPE_VIOLATES_SOC2_V2017" - Represents if a resource violates SOC2
	// v2017.
	//   "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING" - Represents if
	// log_checkpoints database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED" - Represents if the log_duration
	// database flag for a Cloud SQL for PostgreSQL instance is not set to on.
	//   "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING" - Represents if the
	// log_error_verbosity database flag for a Cloud SQL for PostgreSQL instance is
	// not set to default or stricter (default or terse).
	//   "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED" - Represents if the
	// log_lock_waits database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_LOGGING_MOST_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set appropriately.
	//   "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance does not have an appropriate severity level.
	//   "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING" - Represents if the log_min_messages
	// database flag for a Cloud SQL for PostgreSQL instance is not set to warning
	// or another recommended value.
	//   "SIGNAL_TYPE_QUERY_STATS_LOGGED" - Represents if the databaseFlags
	// property of instance metadata for the log_executor_status field is set to
	// on.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME" - Represents if the
	// log_hostname database flag for a Cloud SQL for PostgreSQL instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS" - Represents if the
	// log_parser_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS" - Represents if the
	// log_planner_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS" - Represents if the
	// log_statement database flag for a Cloud SQL for PostgreSQL instance is not
	// set to DDL (all data definition statements).
	//   "SIGNAL_TYPE_LOGGING_QUERY_STATS" - Represents if the log_statement_stats
	// database flag for a Cloud SQL for PostgreSQL instance is not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES" - Represents if the
	// log_temp_files database flag for a Cloud SQL for PostgreSQL instance is not
	// set to "0". (NOTE: 0 = ON)
	//   "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED" - Represents if the user
	// connections database flag for a Cloud SQL for SQL Server instance is
	// configured.
	//   "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED" - Represents if the user options
	// database flag for Cloud SQL SQL Server instance is configured or not.
	//   "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS" - Represents if a resource is
	// exposed to public access.
	//   "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS" - Represents if a resources requires
	// all incoming connections to use SSL or not.
	//   "SIGNAL_TYPE_NO_ROOT_PASSWORD" - Represents if a Cloud SQL database has a
	// password configured for the root account or not.
	//   "SIGNAL_TYPE_WEAK_ROOT_PASSWORD" - Represents if a Cloud SQL database has
	// a weak password configured for the root account.
	//   "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED" - Represents if a SQL
	// database instance is not encrypted with customer-managed encryption keys
	// (CMEK).
	//   "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED" - Represents if The
	// contained database authentication database flag for a Cloud SQL for SQL
	// Server instance is not set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS" - Represents if he external
	// scripts enabled database flag for a Cloud SQL for SQL Server instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS" - Represents if the local_infile
	// database flag for a Cloud SQL for MySQL instance is not set to off.
	//   "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED" - Represents if the
	// log_connections database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED" - Represents if the
	// log_disconnections database flag for a Cloud SQL for PostgreSQL instance is
	// not set to on.
	//   "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO" - Represents if the
	// log_min_duration_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set to -1.
	//   "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS" - Represents if the remote access
	// database flag for a Cloud SQL for SQL Server instance is not set to off.
	//   "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED" - Represents if the
	// skip_show_database database flag for a Cloud SQL for MySQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED" - Represents if the 3625
	// (trace flag) database flag for a Cloud SQL for SQL Server instance is not
	// set to on.
	//   "SIGNAL_TYPE_PUBLIC_IP_ENABLED" - Represents if public IP is enabled.
	//   "SIGNAL_TYPE_IDLE" - Represents idle instance helps to reduce costs.
	//   "SIGNAL_TYPE_OVERPROVISIONED" - Represents instances that are
	// unnecessarily large for given workload.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES" - Represents high number of
	// concurrently opened tables.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES" - Represents high table count close to
	// SLA limit.
	//   "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION" - Represents high number of
	// unvacuumed transactions
	//   "SIGNAL_TYPE_UNDERPROVISIONED" - Represents need for more CPU and/or
	// memory
	//   "SIGNAL_TYPE_OUT_OF_DISK" - Represents out of disk.
	//   "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY" - Represents server
	// certificate is near expiry.
	//   "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED" - Represents database auditing is
	// disabled.
	//   "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS" - Represents not restricted to
	// authorized networks.
	//   "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP" - Represents violate org
	// policy restrict public ip.
	//   "SIGNAL_TYPE_QUOTA_LIMIT" - Cluster nearing quota limit
	//   "SIGNAL_TYPE_NO_PASSWORD_POLICY" - No password policy set on resources
	//   "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT" - Performance impact of
	// connections settings
	//   "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT" - Performance impact of
	// temporary tables settings
	//   "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT" - Performance impact of
	// transaction logs settings
	//   "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES" - Performance impact of high
	// joins without indexes
	//   "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES" - Detects events where a
	// database superuser (postgres for PostgreSQL servers or root for MySQL users)
	// writes to non-system tables.
	//   "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS" - Detects events where a
	// database user or role has been granted all privileges to a database, or to
	// all tables, procedures, or functions in a schema.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket outside of the
	// organization.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket that is owned by
	// the organization and is publicly accessible.
	//   "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM" - Detects if a database
	// instance is using a weak password hash algorithm.
	//   "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY" - Detects if a database instance has
	// no user password policy set.
	//   "SIGNAL_TYPE_HOT_NODE" - Detects if a database instance/cluster has a hot
	// node.
	//   "SIGNAL_TYPE_NO_DELETION_PROTECTION" - Deletion Protection Disabled for
	// the resource
	//   "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY" - Detects if a database instance
	// has no point in time recovery enabled.
	//   "SIGNAL_TYPE_RESOURCE_SUSPENDED" - Detects if a database instance/cluster
	// has suspended resources.
	//   "SIGNAL_TYPE_EXPENSIVE_COMMANDS" - Detects that expensive commands are
	// being run on a database instance impacting overall performance.
	//   "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED" - Indicates that the
	// instance does not have a maintenance policy configured.
	//   "SIGNAL_TYPE_INEFFICIENT_QUERY" - Indicates that the instance has
	// inefficient queries detected.
	//   "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD" - Indicates that the instance has
	// read intensive workload.
	//   "SIGNAL_TYPE_MEMORY_LIMIT" - Indicates that the instance is nearing memory
	// limit.
	//   "SIGNAL_TYPE_MAX_SERVER_MEMORY" - Indicates that the instance's max server
	// memory is configured higher than the recommended value.
	//   "SIGNAL_TYPE_LARGE_ROWS" - Indicates that the database has large rows
	// beyond the recommended limit.
	//   "SIGNAL_TYPE_HIGH_WRITE_PRESSURE" - Heavy write pressure on the database
	// rows.
	//   "SIGNAL_TYPE_HIGH_READ_PRESSURE" - Heavy read pressure on the database
	// rows.
	//   "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED" - Encryption org policy
	// not satisfied.
	//   "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED" - Location org policy not
	// satisfied.
	//   "SIGNAL_TYPE_OUTDATED_MINOR_VERSION" - Outdated DB minor version.
	//   "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED" - Schema not optimized.
	//   "SIGNAL_TYPE_REPLICATION_LAG" - Replication delay.
	//   "SIGNAL_TYPE_OUTDATED_CLIENT" - Outdated client.
	//   "SIGNAL_TYPE_DATABOOST_DISABLED" - Databoost is disabled.
	//   "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES" - Recommended maintenance
	// policy.
	//   "SIGNAL_TYPE_EXTENDED_SUPPORT" - Resource version is in extended support.
	//   "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE" - Represents a database version
	// nearing end of life.
	//   "SIGNAL_TYPE_HIGH_MAINTENANCE_DOWNTIME_RISK" - Indicates a high risk of
	// maintenance downtime.
	//   "SIGNAL_TYPE_LOW_CACHE_HIT_AND_MAINTENANCE_DOWNTIME" - Indicates both a
	// low cache hit rate and a risk of maintenance downtime.
	//   "SIGNAL_TYPE_MISSING_ENHANCED_PROTECTION" - Indicates that the resource is
	// missing enhanced protection.
	SignalType string `json:"signalType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Products") 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. "Products") 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 SignalProductsFilters) MarshalJSON() ([]byte, error) {
	type NoMethod SignalProductsFilters
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SignalTypeGroup: A group of signal types that specifies what the user is
// interested in. Used by QueryDatabaseResourceGroups API. Example:
// signal_type_group { name = "AVAILABILITY" types =
// [SIGNAL_TYPE_NO_PROMOTABLE_REPLICA] }
type SignalTypeGroup struct {
	// DisplayName: Required. The display name of a signal group.
	DisplayName string `json:"displayName,omitempty"`
	// SignalTypes: Optional. List of signal types present in the group.
	//
	// Possible values:
	//   "SIGNAL_TYPE_UNSPECIFIED" - Unspecified.
	//   "SIGNAL_TYPE_RESOURCE_FAILOVER_PROTECTED" - Represents if a resource is
	// protected by automatic failover. Checks for resources that are configured to
	// have redundancy within a region that enables automatic failover.
	//   "SIGNAL_TYPE_GROUP_MULTIREGIONAL" - Represents if a group is replicating
	// across regions. Checks for resources that are configured to have redundancy,
	// and ongoing replication, across regions.
	//   "SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY" - Represents if a resource has an
	// automated backup policy.
	//   "SIGNAL_TYPE_SHORT_BACKUP_RETENTION" - Represents if a resources has a
	// short backup retention period.
	//   "SIGNAL_TYPE_LAST_BACKUP_FAILED" - Represents if the last backup of a
	// resource failed.
	//   "SIGNAL_TYPE_LAST_BACKUP_OLD" - Represents if the last backup of a
	// resource is older than some threshold value.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 2.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.3.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.2.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.1.
	//   "SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0" - Represents if a resource
	// violates CIS Google Cloud Platform Foundation 1.0.
	//   "SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0" - Represents if a resource
	// violates CIS Controls 8.0.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53" - Represents if a resource violates
	// NIST 800-53.
	//   "SIGNAL_TYPE_VIOLATES_NIST_800_53_R5" - Represents if a resource violates
	// NIST 800-53 R5.
	//   "SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0" - Represents if a
	// resource violates NIST Cybersecurity Framework 1.0.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001" - Represents if a resource violates
	// ISO-27001.
	//   "SIGNAL_TYPE_VIOLATES_ISO_27001_V2022" - Represents if a resource violates
	// ISO 27001 2022.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1" - Represents if a resource violates
	// PCI-DSS v3.2.1.
	//   "SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0" - Represents if a resource violates
	// PCI-DSS v4.0.
	//   "SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4" - Represents if a resource
	// violates Cloud Controls Matrix v4.0.
	//   "SIGNAL_TYPE_VIOLATES_HIPAA" - Represents if a resource violates HIPAA.
	//   "SIGNAL_TYPE_VIOLATES_SOC2_V2017" - Represents if a resource violates SOC2
	// v2017.
	//   "SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING" - Represents if
	// log_checkpoints database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED" - Represents if the log_duration
	// database flag for a Cloud SQL for PostgreSQL instance is not set to on.
	//   "SIGNAL_TYPE_VERBOSE_ERROR_LOGGING" - Represents if the
	// log_error_verbosity database flag for a Cloud SQL for PostgreSQL instance is
	// not set to default or stricter (default or terse).
	//   "SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED" - Represents if the
	// log_lock_waits database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_LOGGING_MOST_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set appropriately.
	//   "SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS" - Represents if the
	// log_min_error_statement database flag for a Cloud SQL for PostgreSQL
	// instance does not have an appropriate severity level.
	//   "SIGNAL_TYPE_MINIMAL_ERROR_LOGGING" - Represents if the log_min_messages
	// database flag for a Cloud SQL for PostgreSQL instance is not set to warning
	// or another recommended value.
	//   "SIGNAL_TYPE_QUERY_STATS_LOGGED" - Represents if the databaseFlags
	// property of instance metadata for the log_executor_status field is set to
	// on.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME" - Represents if the
	// log_hostname database flag for a Cloud SQL for PostgreSQL instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATS" - Represents if the
	// log_parser_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATS" - Represents if the
	// log_planner_stats database flag for a Cloud SQL for PostgreSQL instance is
	// not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS" - Represents if the
	// log_statement database flag for a Cloud SQL for PostgreSQL instance is not
	// set to DDL (all data definition statements).
	//   "SIGNAL_TYPE_LOGGING_QUERY_STATS" - Represents if the log_statement_stats
	// database flag for a Cloud SQL for PostgreSQL instance is not set to off.
	//   "SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES" - Represents if the
	// log_temp_files database flag for a Cloud SQL for PostgreSQL instance is not
	// set to "0". (NOTE: 0 = ON)
	//   "SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED" - Represents if the user
	// connections database flag for a Cloud SQL for SQL Server instance is
	// configured.
	//   "SIGNAL_TYPE_USER_OPTIONS_CONFIGURED" - Represents if the user options
	// database flag for Cloud SQL SQL Server instance is configured or not.
	//   "SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS" - Represents if a resource is
	// exposed to public access.
	//   "SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS" - Represents if a resources requires
	// all incoming connections to use SSL or not.
	//   "SIGNAL_TYPE_NO_ROOT_PASSWORD" - Represents if a Cloud SQL database has a
	// password configured for the root account or not.
	//   "SIGNAL_TYPE_WEAK_ROOT_PASSWORD" - Represents if a Cloud SQL database has
	// a weak password configured for the root account.
	//   "SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED" - Represents if a SQL
	// database instance is not encrypted with customer-managed encryption keys
	// (CMEK).
	//   "SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED" - Represents if The
	// contained database authentication database flag for a Cloud SQL for SQL
	// Server instance is not set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS" - Represents if he external
	// scripts enabled database flag for a Cloud SQL for SQL Server instance is not
	// set to off.
	//   "SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS" - Represents if the local_infile
	// database flag for a Cloud SQL for MySQL instance is not set to off.
	//   "SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED" - Represents if the
	// log_connections database flag for a Cloud SQL for PostgreSQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED" - Represents if the
	// log_disconnections database flag for a Cloud SQL for PostgreSQL instance is
	// not set to on.
	//   "SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO" - Represents if the
	// log_min_duration_statement database flag for a Cloud SQL for PostgreSQL
	// instance is not set to -1.
	//   "SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS" - Represents if the remote access
	// database flag for a Cloud SQL for SQL Server instance is not set to off.
	//   "SIGNAL_TYPE_DATABASE_NAMES_EXPOSED" - Represents if the
	// skip_show_database database flag for a Cloud SQL for MySQL instance is not
	// set to on.
	//   "SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED" - Represents if the 3625
	// (trace flag) database flag for a Cloud SQL for SQL Server instance is not
	// set to on.
	//   "SIGNAL_TYPE_PUBLIC_IP_ENABLED" - Represents if public IP is enabled.
	//   "SIGNAL_TYPE_IDLE" - Represents idle instance helps to reduce costs.
	//   "SIGNAL_TYPE_OVERPROVISIONED" - Represents instances that are
	// unnecessarily large for given workload.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES" - Represents high number of
	// concurrently opened tables.
	//   "SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES" - Represents high table count close to
	// SLA limit.
	//   "SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION" - Represents high number of
	// unvacuumed transactions
	//   "SIGNAL_TYPE_UNDERPROVISIONED" - Represents need for more CPU and/or
	// memory
	//   "SIGNAL_TYPE_OUT_OF_DISK" - Represents out of disk.
	//   "SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY" - Represents server
	// certificate is near expiry.
	//   "SIGNAL_TYPE_DATABASE_AUDITING_DISABLED" - Represents database auditing is
	// disabled.
	//   "SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS" - Represents not restricted to
	// authorized networks.
	//   "SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP" - Represents violate org
	// policy restrict public ip.
	//   "SIGNAL_TYPE_QUOTA_LIMIT" - Cluster nearing quota limit
	//   "SIGNAL_TYPE_NO_PASSWORD_POLICY" - No password policy set on resources
	//   "SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT" - Performance impact of
	// connections settings
	//   "SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT" - Performance impact of
	// temporary tables settings
	//   "SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT" - Performance impact of
	// transaction logs settings
	//   "SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES" - Performance impact of high
	// joins without indexes
	//   "SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES" - Detects events where a
	// database superuser (postgres for PostgreSQL servers or root for MySQL users)
	// writes to non-system tables.
	//   "SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS" - Detects events where a
	// database user or role has been granted all privileges to a database, or to
	// all tables, procedures, or functions in a schema.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket outside of the
	// organization.
	//   "SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET" - Detects if
	// database instance data exported to a Cloud Storage bucket that is owned by
	// the organization and is publicly accessible.
	//   "SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM" - Detects if a database
	// instance is using a weak password hash algorithm.
	//   "SIGNAL_TYPE_NO_USER_PASSWORD_POLICY" - Detects if a database instance has
	// no user password policy set.
	//   "SIGNAL_TYPE_HOT_NODE" - Detects if a database instance/cluster has a hot
	// node.
	//   "SIGNAL_TYPE_NO_DELETION_PROTECTION" - Deletion Protection Disabled for
	// the resource
	//   "SIGNAL_TYPE_NO_POINT_IN_TIME_RECOVERY" - Detects if a database instance
	// has no point in time recovery enabled.
	//   "SIGNAL_TYPE_RESOURCE_SUSPENDED" - Detects if a database instance/cluster
	// has suspended resources.
	//   "SIGNAL_TYPE_EXPENSIVE_COMMANDS" - Detects that expensive commands are
	// being run on a database instance impacting overall performance.
	//   "SIGNAL_TYPE_NO_MAINTENANCE_POLICY_CONFIGURED" - Indicates that the
	// instance does not have a maintenance policy configured.
	//   "SIGNAL_TYPE_INEFFICIENT_QUERY" - Indicates that the instance has
	// inefficient queries detected.
	//   "SIGNAL_TYPE_READ_INTENSIVE_WORKLOAD" - Indicates that the instance has
	// read intensive workload.
	//   "SIGNAL_TYPE_MEMORY_LIMIT" - Indicates that the instance is nearing memory
	// limit.
	//   "SIGNAL_TYPE_MAX_SERVER_MEMORY" - Indicates that the instance's max server
	// memory is configured higher than the recommended value.
	//   "SIGNAL_TYPE_LARGE_ROWS" - Indicates that the database has large rows
	// beyond the recommended limit.
	//   "SIGNAL_TYPE_HIGH_WRITE_PRESSURE" - Heavy write pressure on the database
	// rows.
	//   "SIGNAL_TYPE_HIGH_READ_PRESSURE" - Heavy read pressure on the database
	// rows.
	//   "SIGNAL_TYPE_ENCRYPTION_ORG_POLICY_NOT_SATISFIED" - Encryption org policy
	// not satisfied.
	//   "SIGNAL_TYPE_LOCATION_ORG_POLICY_NOT_SATISFIED" - Location org policy not
	// satisfied.
	//   "SIGNAL_TYPE_OUTDATED_MINOR_VERSION" - Outdated DB minor version.
	//   "SIGNAL_TYPE_SCHEMA_NOT_OPTIMIZED" - Schema not optimized.
	//   "SIGNAL_TYPE_REPLICATION_LAG" - Replication delay.
	//   "SIGNAL_TYPE_OUTDATED_CLIENT" - Outdated client.
	//   "SIGNAL_TYPE_DATABOOST_DISABLED" - Databoost is disabled.
	//   "SIGNAL_TYPE_RECOMMENDED_MAINTENANCE_POLICIES" - Recommended maintenance
	// policy.
	//   "SIGNAL_TYPE_EXTENDED_SUPPORT" - Resource version is in extended support.
	//   "SIGNAL_TYPE_VERSION_NEARING_END_OF_LIFE" - Represents a database version
	// nearing end of life.
	//   "SIGNAL_TYPE_HIGH_MAINTENANCE_DOWNTIME_RISK" - Indicates a high risk of
	// maintenance downtime.
	//   "SIGNAL_TYPE_LOW_CACHE_HIT_AND_MAINTENANCE_DOWNTIME" - Indicates both a
	// low cache hit rate and a risk of maintenance downtime.
	//   "SIGNAL_TYPE_MISSING_ENHANCED_PROTECTION" - Indicates that the resource is
	// missing enhanced protection.
	SignalTypes []string `json:"signalTypes,omitempty"`
	// 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 SignalTypeGroup) MarshalJSON() ([]byte, error) {
	type NoMethod SignalTypeGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SubResource: Sub resource details For Spanner/Bigtable instance certain data
// protection settings are at sub resource level like database/table. This
// message is used to capture such sub resource details.
type SubResource struct {
	// Container: Specifies where the resource is created. For Google Cloud
	// resources, it is the full name of the project.
	Container string `json:"container,omitempty"`
	// FullResourceName: Optional. Resource name associated with the sub resource
	// where backup settings are configured.
	// E.g."//spanner.googleapis.com/projects/project1/instances/inst1/databases/db1
	// " for Spanner where backup retention is configured on database within an
	// instance OPTIONAL
	FullResourceName string `json:"fullResourceName,omitempty"`
	// Product: Optional. Product information associated with the sub resource
	// where backup retention settings are configured. e.g. ``` product: { type :
	// PRODUCT_TYPE_SPANNER engine : ENGINE_CLOUD_SPANNER_WITH_POSTGRES_DIALECT }
	// ``` for Spanner where backup is configured on database within an instance
	// OPTIONAL
	Product *Product `json:"product,omitempty"`
	// ResourceType: Optional. Resource type associated with the sub resource where
	// backup settings are configured. E.g. "spanner.googleapis.com/Database" for
	// Spanner where backup retention is configured on database within an instance
	// OPTIONAL
	ResourceType string `json:"resourceType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Container") 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. "Container") 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 SubResource) MarshalJSON() ([]byte, error) {
	type NoMethod SubResource
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Tag: Tag is a key value pair attached to a resource.
type Tag struct {
	// Inherited: Indicates the inheritance status of a tag value attached to the
	// given resource. If the tag value is inherited from one of the resource's
	// ancestors, inherited will be true. If false, then the tag value is directly
	// attached to the resource.
	Inherited bool   `json:"inherited,omitempty"`
	Key       string `json:"key,omitempty"`
	// Source: The source of the tag. According to
	// https://cloud.google.com/resource-manager/docs/tags/tags-overview#tags_and_labels,
	// tags can be created only at the project or organization level. Tags can be
	// inherited from different project as well not just the current project where
	// the database resource is present. Format: "projects/{PROJECT_ID}",
	// "projects/{PROJECT_NUMBER}", "organizations/{ORGANIZATION_ID}"
	Source string `json:"source,omitempty"`
	// Value: The value part of the tag.
	Value string `json:"value,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Inherited") 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. "Inherited") 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 Tag) MarshalJSON() ([]byte, error) {
	type NoMethod Tag
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimeOfDay: Represents a time of day. The date and time zone are either not
// significant or are specified elsewhere. An API may choose to allow leap
// seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.
type TimeOfDay struct {
	// Hours: Hours of a day in 24 hour format. Must be greater than or equal to 0
	// and typically must be less than or equal to 23. An API may choose to allow
	// the value "24:00:00" for scenarios like business closing time.
	Hours int64 `json:"hours,omitempty"`
	// Minutes: Minutes of an hour. Must be greater than or equal to 0 and less
	// than or equal to 59.
	Minutes int64 `json:"minutes,omitempty"`
	// Nanos: Fractions of seconds, in nanoseconds. Must be greater than or equal
	// to 0 and less than or equal to 999,999,999.
	Nanos int64 `json:"nanos,omitempty"`
	// Seconds: Seconds of a minute. Must be greater than or equal to 0 and
	// typically must be less than or equal to 59. An API may allow the value 60 if
	// it allows leap-seconds.
	Seconds int64 `json:"seconds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Hours") 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. "Hours") 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 TimeOfDay) MarshalJSON() ([]byte, error) {
	type NoMethod TimeOfDay
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TypedValue: TypedValue represents the value of the metric based on data
// type.
type TypedValue struct {
	// DoubleValue: The value of the metric as double.
	DoubleValue float64 `json:"doubleValue,omitempty"`
	// Int64Value: The value of the metric as int.
	Int64Value int64 `json:"int64Value,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "DoubleValue") 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. "DoubleValue") 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 TypedValue) MarshalJSON() ([]byte, error) {
	type NoMethod TypedValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// UpcomingMaintenance: Upcoming maintenance window for the database resource.
type UpcomingMaintenance struct {
	// EndTime: Output only. End time of the upcoming maintenance. This is only
	// populated for an engine, if end time is public for the engine.
	EndTime string `json:"endTime,omitempty"`
	// StartTime: Output only. Start time of the upcoming maintenance. Start time
	// is always populated when an upcoming maintenance is scheduled.
	StartTime string `json:"startTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTime") 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. "EndTime") 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 UpcomingMaintenance) MarshalJSON() ([]byte, error) {
	type NoMethod UpcomingMaintenance
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

type FoldersAggregateQueryStatsCall struct {
	s                          *Service
	parent                     string
	aggregatequerystatsrequest *AggregateQueryStatsRequest
	urlParams_                 gensupport.URLParams
	ctx_                       context.Context
	header_                    http.Header
}

// AggregateQueryStats: AggregateQueryStats provides database resource query
// execution statistics.
//
//   - parent: Parent can be a project, a folder, or an organization. The search
//     is limited to the resources within the `parent`. The allowed values are: *
//     projects/{PROJECT_ID} (e.g., "projects/foo-bar") *
//     projects/{PROJECT_NUMBER} (e.g., "projects/12345678") *
//     folders/{FOLDER_NUMBER} (e.g., "folders/1234567") *
//     organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456").
func (r *FoldersService) AggregateQueryStats(parent string, aggregatequerystatsrequest *AggregateQueryStatsRequest) *FoldersAggregateQueryStatsCall {
	c := &FoldersAggregateQueryStatsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.aggregatequerystatsrequest = aggregatequerystatsrequest
	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 *FoldersAggregateQueryStatsCall) Fields(s ...googleapi.Field) *FoldersAggregateQueryStatsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

func (c *FoldersAggregateQueryStatsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.aggregatequerystatsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}:aggregateQueryStats")
	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", "databasecenter.folders.aggregateQueryStats", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "databasecenter.folders.aggregateQueryStats" call.
// Any non-2xx status code is an error. Response headers are in either
// *AggregateQueryStatsResponse.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 *FoldersAggregateQueryStatsCall) Do(opts ...googleapi.CallOption) (*AggregateQueryStatsResponse, 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 := &AggregateQueryStatsResponse{
		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", "databasecenter.folders.aggregateQueryStats", "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 *FoldersAggregateQueryStatsCall) Pages(ctx context.Context, f func(*AggregateQueryStatsResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.aggregatequerystatsrequest.PageToken = pt }(c.aggregatequerystatsrequest.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.aggregatequerystatsrequest.PageToken = x.NextPageToken
	}
}

type OrganizationsAggregateQueryStatsCall struct {
	s                          *Service
	parent                     string
	aggregatequerystatsrequest *AggregateQueryStatsRequest
	urlParams_                 gensupport.URLParams
	ctx_                       context.Context
	header_                    http.Header
}

// AggregateQueryStats: AggregateQueryStats provides database resource query
// execution statistics.
//
//   - parent: Parent can be a project, a folder, or an organization. The search
//     is limited to the resources within the `parent`. The allowed values are: *
//     projects/{PROJECT_ID} (e.g., "projects/foo-bar") *
//     projects/{PROJECT_NUMBER} (e.g., "projects/12345678") *
//     folders/{FOLDER_NUMBER} (e.g., "folders/1234567") *
//     organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456").
func (r *OrganizationsService) AggregateQueryStats(parent string, aggregatequerystatsrequest *AggregateQueryStatsRequest) *OrganizationsAggregateQueryStatsCall {
	c := &OrganizationsAggregateQueryStatsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.aggregatequerystatsrequest = aggregatequerystatsrequest
	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 *OrganizationsAggregateQueryStatsCall) Fields(s ...googleapi.Field) *OrganizationsAggregateQueryStatsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

func (c *OrganizationsAggregateQueryStatsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.aggregatequerystatsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}:aggregateQueryStats")
	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", "databasecenter.organizations.aggregateQueryStats", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "databasecenter.organizations.aggregateQueryStats" call.
// Any non-2xx status code is an error. Response headers are in either
// *AggregateQueryStatsResponse.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 *OrganizationsAggregateQueryStatsCall) Do(opts ...googleapi.CallOption) (*AggregateQueryStatsResponse, 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 := &AggregateQueryStatsResponse{
		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", "databasecenter.organizations.aggregateQueryStats", "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 *OrganizationsAggregateQueryStatsCall) Pages(ctx context.Context, f func(*AggregateQueryStatsResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.aggregatequerystatsrequest.PageToken = pt }(c.aggregatequerystatsrequest.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.aggregatequerystatsrequest.PageToken = x.NextPageToken
	}
}

type ProjectsAggregateQueryStatsCall struct {
	s                          *Service
	parent                     string
	aggregatequerystatsrequest *AggregateQueryStatsRequest
	urlParams_                 gensupport.URLParams
	ctx_                       context.Context
	header_                    http.Header
}

// AggregateQueryStats: AggregateQueryStats provides database resource query
// execution statistics.
//
//   - parent: Parent can be a project, a folder, or an organization. The search
//     is limited to the resources within the `parent`. The allowed values are: *
//     projects/{PROJECT_ID} (e.g., "projects/foo-bar") *
//     projects/{PROJECT_NUMBER} (e.g., "projects/12345678") *
//     folders/{FOLDER_NUMBER} (e.g., "folders/1234567") *
//     organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456").
func (r *ProjectsService) AggregateQueryStats(parent string, aggregatequerystatsrequest *AggregateQueryStatsRequest) *ProjectsAggregateQueryStatsCall {
	c := &ProjectsAggregateQueryStatsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.aggregatequerystatsrequest = aggregatequerystatsrequest
	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 *ProjectsAggregateQueryStatsCall) Fields(s ...googleapi.Field) *ProjectsAggregateQueryStatsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

func (c *ProjectsAggregateQueryStatsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.aggregatequerystatsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta/{+parent}:aggregateQueryStats")
	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", "databasecenter.projects.aggregateQueryStats", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "databasecenter.projects.aggregateQueryStats" call.
// Any non-2xx status code is an error. Response headers are in either
// *AggregateQueryStatsResponse.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 *ProjectsAggregateQueryStatsCall) Do(opts ...googleapi.CallOption) (*AggregateQueryStatsResponse, 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 := &AggregateQueryStatsResponse{
		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", "databasecenter.projects.aggregateQueryStats", "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 *ProjectsAggregateQueryStatsCall) Pages(ctx context.Context, f func(*AggregateQueryStatsResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.aggregatequerystatsrequest.PageToken = pt }(c.aggregatequerystatsrequest.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.aggregatequerystatsrequest.PageToken = x.NextPageToken
	}
}

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

// AggregateFleet: AggregateFleet provides statistics about the fleet grouped
// by various fields.
func (r *V1betaService) AggregateFleet() *V1betaAggregateFleetCall {
	c := &V1betaAggregateFleetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// BaselineDateDay sets the optional parameter "baselineDate.day": Day of a
// month. Must be from 1 to 31 and valid for the year and month, or 0 to
// specify a year by itself or a year and month where the day isn't
// significant.
func (c *V1betaAggregateFleetCall) BaselineDateDay(baselineDateDay int64) *V1betaAggregateFleetCall {
	c.urlParams_.Set("baselineDate.day", fmt.Sprint(baselineDateDay))
	return c
}

// BaselineDateMonth sets the optional parameter "baselineDate.month": Month of
// a year. Must be from 1 to 12, or 0 to specify a year without a month and
// day.
func (c *V1betaAggregateFleetCall) BaselineDateMonth(baselineDateMonth int64) *V1betaAggregateFleetCall {
	c.urlParams_.Set("baselineDate.month", fmt.Sprint(baselineDateMonth))
	return c
}

// BaselineDateYear sets the optional parameter "baselineDate.year": Year of
// the date. Must be from 1 to 9999, or 0 to specify a date without a year.
func (c *V1betaAggregateFleetCall) BaselineDateYear(baselineDateYear int64) *V1betaAggregateFleetCall {
	c.urlParams_.Set("baselineDate.year", fmt.Sprint(baselineDateYear))
	return c
}

// Filter sets the optional parameter "filter": The expression to filter
// resources. Supported fields are: `full_resource_name`, `resource_type`,
// `container`, `product.type`, `product.engine`, `product.version`,
// `location`, `labels`, `issues`, fields of availability_info,
// data_protection_info, 'resource_name', etc. The expression is a list of zero
// or more restrictions combined via logical operators `AND` and `OR`. When
// `AND` and `OR` are both used in the expression, parentheses must be
// appropriately used to group the combinations. Example: `location="us-east1"
// Example: `container="projects/123" OR container="projects/456" Example:
// `(container="projects/123" OR container="projects/456") AND
// location="us-east1"
func (c *V1betaAggregateFleetCall) Filter(filter string) *V1betaAggregateFleetCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// GroupBy sets the optional parameter "groupBy": A field that statistics are
// grouped by. Valid values are any combination of the following: * container *
// product.type * product.engine * product.version * location *
// sub_resource_type * management_type * tag.key * tag.value * tag.source *
// tag.inherited * label.key * label.value * label.source *
// has_maintenance_schedule * has_deny_maintenance_schedules Comma separated
// list.
func (c *V1betaAggregateFleetCall) GroupBy(groupBy string) *V1betaAggregateFleetCall {
	c.urlParams_.Set("groupBy", groupBy)
	return c
}

// OrderBy sets the optional parameter "orderBy": Valid values to order by are:
// * resource_groups_count * resources_count * and all fields supported by
// `group_by` The default order is ascending. Add "DESC" after the field name
// to indicate descending order. Add "ASC" after the field name to indicate
// ascending order. It supports ordering using multiple fields. For example:
// `order_by = "resource_groups_count" sorts response in ascending order
// `order_by = "resource_groups_count DESC" sorts response in descending order
// `order_by = "product.type, product.version DESC, location" orders by type
// in ascending order, version in descending order and location in ascending
// order
func (c *V1betaAggregateFleetCall) OrderBy(orderBy string) *V1betaAggregateFleetCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": If unspecified, at most 50
// items will be returned. The maximum value is 1000; values above 1000 will be
// coerced to 1000.
func (c *V1betaAggregateFleetCall) PageSize(pageSize int64) *V1betaAggregateFleetCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token, received
// from a previous `AggregateFleet` call. Provide this to retrieve the
// subsequent page. All other parameters should match the parameters in the
// call that provided the page token except for page_size which can be
// different.
func (c *V1betaAggregateFleetCall) PageToken(pageToken string) *V1betaAggregateFleetCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Parent sets the optional parameter "parent": Required. Parent can be a
// project, a folder, or an organization. The search is limited to the
// resources within the `scope`. The allowed values are: *
// projects/{PROJECT_ID} (e.g., "projects/foo-bar") * projects/{PROJECT_NUMBER}
// (e.g., "projects/12345678") * folders/{FOLDER_NUMBER} (e.g.,
// "folders/1234567") * organizations/{ORGANIZATION_NUMBER} (e.g.,
// "organizations/123456")
func (c *V1betaAggregateFleetCall) Parent(parent string) *V1betaAggregateFleetCall {
	c.urlParams_.Set("parent", parent)
	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 *V1betaAggregateFleetCall) Fields(s ...googleapi.Field) *V1betaAggregateFleetCall {
	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 *V1betaAggregateFleetCall) IfNoneMatch(entityTag string) *V1betaAggregateFleetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *V1betaAggregateFleetCall) 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, "v1beta:aggregateFleet")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "databasecenter.aggregateFleet", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "databasecenter.aggregateFleet" call.
// Any non-2xx status code is an error. Response headers are in either
// *AggregateFleetResponse.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 *V1betaAggregateFleetCall) Do(opts ...googleapi.CallOption) (*AggregateFleetResponse, 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 := &AggregateFleetResponse{
		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", "databasecenter.aggregateFleet", "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 *V1betaAggregateFleetCall) Pages(ctx context.Context, f func(*AggregateFleetResponse) 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 V1betaAggregateIssueStatsCall struct {
	s                          *Service
	aggregateissuestatsrequest *AggregateIssueStatsRequest
	urlParams_                 gensupport.URLParams
	ctx_                       context.Context
	header_                    http.Header
}

// AggregateIssueStats: AggregateIssueStats provides database resource issues
// statistics.
func (r *V1betaService) AggregateIssueStats(aggregateissuestatsrequest *AggregateIssueStatsRequest) *V1betaAggregateIssueStatsCall {
	c := &V1betaAggregateIssueStatsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.aggregateissuestatsrequest = aggregateissuestatsrequest
	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 *V1betaAggregateIssueStatsCall) Fields(s ...googleapi.Field) *V1betaAggregateIssueStatsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

type V1betaQueryDatabaseResourceGroupsCall struct {
	s                                  *Service
	querydatabaseresourcegroupsrequest *QueryDatabaseResourceGroupsRequest
	urlParams_                         gensupport.URLParams
	ctx_                               context.Context
	header_                            http.Header
}

// QueryDatabaseResourceGroups: QueryDatabaseResourceGroups returns paginated
// results of database groups.
func (r *V1betaService) QueryDatabaseResourceGroups(querydatabaseresourcegroupsrequest *QueryDatabaseResourceGroupsRequest) *V1betaQueryDatabaseResourceGroupsCall {
	c := &V1betaQueryDatabaseResourceGroupsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.querydatabaseresourcegroupsrequest = querydatabaseresourcegroupsrequest
	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 *V1betaQueryDatabaseResourceGroupsCall) Fields(s ...googleapi.Field) *V1betaQueryDatabaseResourceGroupsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

// Do executes the "databasecenter.queryDatabaseResourceGroups" call.
// Any non-2xx status code is an error. Response headers are in either
// *QueryDatabaseResourceGroupsResponse.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 *V1betaQueryDatabaseResourceGroupsCall) Do(opts ...googleapi.CallOption) (*QueryDatabaseResourceGroupsResponse, 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 := &QueryDatabaseResourceGroupsResponse{
		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", "databasecenter.queryDatabaseResourceGroups", "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 *V1betaQueryDatabaseResourceGroupsCall) Pages(ctx context.Context, f func(*QueryDatabaseResourceGroupsResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.querydatabaseresourcegroupsrequest.PageToken = pt }(c.querydatabaseresourcegroupsrequest.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.querydatabaseresourcegroupsrequest.PageToken = x.NextPageToken
	}
}

type V1betaQueryIssuesCall struct {
	s                  *Service
	queryissuesrequest *QueryIssuesRequest
	urlParams_         gensupport.URLParams
	ctx_               context.Context
	header_            http.Header
}

// QueryIssues: QueryIssues provides a list of issues and recommendations that
// a user has access to and that are within the requested scope.
func (r *V1betaService) QueryIssues(queryissuesrequest *QueryIssuesRequest) *V1betaQueryIssuesCall {
	c := &V1betaQueryIssuesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.queryissuesrequest = queryissuesrequest
	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 *V1betaQueryIssuesCall) Fields(s ...googleapi.Field) *V1betaQueryIssuesCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

// Do executes the "databasecenter.queryIssues" call.
// Any non-2xx status code is an error. Response headers are in either
// *QueryIssuesResponse.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 *V1betaQueryIssuesCall) Do(opts ...googleapi.CallOption) (*QueryIssuesResponse, 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 := &QueryIssuesResponse{
		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", "databasecenter.queryIssues", "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 *V1betaQueryIssuesCall) Pages(ctx context.Context, f func(*QueryIssuesResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.queryissuesrequest.PageToken = pt }(c.queryissuesrequest.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.queryissuesrequest.PageToken = x.NextPageToken
	}
}

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

// QueryProducts: QueryProducts provides a list of all possible products which
// can be used to filter database resources.
func (r *V1betaService) QueryProducts() *V1betaQueryProductsCall {
	c := &V1betaQueryProductsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	return c
}

// PageSize sets the optional parameter "pageSize": If unspecified, at most 50
// products will be returned. The maximum value is 1000; values above 1000 will
// be coerced to 1000.
func (c *V1betaQueryProductsCall) PageSize(pageSize int64) *V1betaQueryProductsCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token, received
// from a previous `ListLocations` call. Provide this to retrieve the
// subsequent page. All other parameters except page size should match the call
// that provided the page page token.
func (c *V1betaQueryProductsCall) PageToken(pageToken string) *V1betaQueryProductsCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Parent sets the optional parameter "parent": Required. Parent can be a
// project, a folder, or an organization. The allowed values are: *
// projects/{PROJECT_ID}/locations/{LOCATION}
// (e.g.,"projects/foo-bar/locations/us-central1") *
// projects/{PROJECT_NUMBER}/locations/{LOCATION}
// (e.g.,"projects/12345678/locations/us-central1") *
// folders/{FOLDER_NUMBER}/locations/{LOCATION}
// (e.g.,"folders/1234567/locations/us-central1") *
// organizations/{ORGANIZATION_NUMBER}/locations/{LOCATION}
// (e.g.,"organizations/123456/locations/us-central1") * projects/{PROJECT_ID}
// (e.g., "projects/foo-bar") * projects/{PROJECT_NUMBER} (e.g.,
// "projects/12345678") * folders/{FOLDER_NUMBER} (e.g., "folders/1234567") *
// organizations/{ORGANIZATION_NUMBER} (e.g., "organizations/123456")
func (c *V1betaQueryProductsCall) Parent(parent string) *V1betaQueryProductsCall {
	c.urlParams_.Set("parent", parent)
	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 *V1betaQueryProductsCall) Fields(s ...googleapi.Field) *V1betaQueryProductsCall {
	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 *V1betaQueryProductsCall) IfNoneMatch(entityTag string) *V1betaQueryProductsCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *V1betaQueryProductsCall) 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, "v1beta:queryProducts")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "databasecenter.queryProducts", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "databasecenter.queryProducts" call.
// Any non-2xx status code is an error. Response headers are in either
// *QueryProductsResponse.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 *V1betaQueryProductsCall) Do(opts ...googleapi.CallOption) (*QueryProductsResponse, 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 := &QueryProductsResponse{
		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", "databasecenter.queryProducts", "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 *V1betaQueryProductsCall) Pages(ctx context.Context, f func(*QueryProductsResponse) 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)
	}
}
