// 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 threatintelligence provides access to the Threat Intelligence API.
//
// For product documentation, see: https://docs.cloud.google.com/threatintelligence/
//
// # 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/threatintelligence/v1beta"
//	...
//	ctx := context.Background()
//	threatintelligenceService, err := threatintelligence.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]:
//
//	threatintelligenceService, err := threatintelligence.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, ...)
//	threatintelligenceService, err := threatintelligence.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package threatintelligence // import "google.golang.org/api/threatintelligence/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 = "threatintelligence:v1beta"
const apiName = "threatintelligence"
const apiVersion = "v1beta"
const basePath = "https://threatintelligence.googleapis.com/"
const basePathTemplate = "https://threatintelligence.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://threatintelligence.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.Projects = NewProjectsService(s)
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

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

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

	Projects *ProjectsService
}

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

func NewProjectsService(s *Service) *ProjectsService {
	rs := &ProjectsService{s: s}
	rs.Alerts = NewProjectsAlertsService(s)
	rs.Configurations = NewProjectsConfigurationsService(s)
	rs.Findings = NewProjectsFindingsService(s)
	return rs
}

type ProjectsService struct {
	s *Service

	Alerts *ProjectsAlertsService

	Configurations *ProjectsConfigurationsService

	Findings *ProjectsFindingsService
}

func NewProjectsAlertsService(s *Service) *ProjectsAlertsService {
	rs := &ProjectsAlertsService{s: s}
	rs.Documents = NewProjectsAlertsDocumentsService(s)
	return rs
}

type ProjectsAlertsService struct {
	s *Service

	Documents *ProjectsAlertsDocumentsService
}

func NewProjectsAlertsDocumentsService(s *Service) *ProjectsAlertsDocumentsService {
	rs := &ProjectsAlertsDocumentsService{s: s}
	return rs
}

type ProjectsAlertsDocumentsService struct {
	s *Service
}

func NewProjectsConfigurationsService(s *Service) *ProjectsConfigurationsService {
	rs := &ProjectsConfigurationsService{s: s}
	rs.Revisions = NewProjectsConfigurationsRevisionsService(s)
	return rs
}

type ProjectsConfigurationsService struct {
	s *Service

	Revisions *ProjectsConfigurationsRevisionsService
}

func NewProjectsConfigurationsRevisionsService(s *Service) *ProjectsConfigurationsRevisionsService {
	rs := &ProjectsConfigurationsRevisionsService{s: s}
	return rs
}

type ProjectsConfigurationsRevisionsService struct {
	s *Service
}

func NewProjectsFindingsService(s *Service) *ProjectsFindingsService {
	rs := &ProjectsFindingsService{s: s}
	return rs
}

type ProjectsFindingsService struct {
	s *Service
}

// Alert: Stateful object representing a group of Findings. Key feature to an
// Alert is that it expresses the user's intent towards the findings of that
// group, even those that haven't occurred yet.
type Alert struct {
	// AiSummary: Optional. AI summary of the alert.
	AiSummary string `json:"aiSummary,omitempty"`
	// Audit: Output only. Audit information for the alert.
	Audit *Audit `json:"audit,omitempty"`
	// Configurations: Output only. The resource names of the Configurations bound
	// to this alert. Format: projects/{project}/configurations/{configuration}
	Configurations []string `json:"configurations,omitempty"`
	// Detail: Output only. Details object for the alert, not all alerts will have
	// a details object.
	Detail *AlertDetail `json:"detail,omitempty"`
	// DisplayName: Output only. A short title for the alert.
	DisplayName string `json:"displayName,omitempty"`
	// DuplicateOf: Output only. alert name of the alert this alert is a duplicate
	// of. Format: projects/{project}/alerts/{alert}
	DuplicateOf string `json:"duplicateOf,omitempty"`
	// DuplicatedBy: Output only. alert names of the alerts that are duplicates of
	// this alert. Format: projects/{project}/alerts/{alert}
	DuplicatedBy []string `json:"duplicatedBy,omitempty"`
	// Etag: Optional. If included when updating an alert, this should be set to
	// the current etag of the alert. If the etags do not match, the update will be
	// rejected and an ABORTED error will be returned.
	Etag string `json:"etag,omitempty"`
	// ExternalId: Output only. External ID for the alert. This is used internally
	// to provide protection against out of order updates.
	ExternalId string `json:"externalId,omitempty"`
	// FindingCount: Output only. The number of findings associated with this
	// alert.
	FindingCount int64 `json:"findingCount,omitempty,string"`
	// Findings: Output only. Findings that are covered by this alert.
	Findings []string `json:"findings,omitempty"`
	// Name: Identifier. Server generated name for the alert. format is
	// projects/{project}/alerts/{alert}
	Name string `json:"name,omitempty"`
	// PriorityAnalysis: Output only. High-Precision Priority Analysis for the
	// alert.
	PriorityAnalysis *PriorityAnalysis `json:"priorityAnalysis,omitempty"`
	// RelevanceAnalysis: Output only. High-Precision Relevance Analysis verdict
	// for the alert.
	RelevanceAnalysis *RelevanceAnalysis `json:"relevanceAnalysis,omitempty"`
	// SeverityAnalysis: Output only. High-Precision Severity Analysis for the
	// alert.
	SeverityAnalysis *SeverityAnalysis `json:"severityAnalysis,omitempty"`
	// State: Output only. State of the alert.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Default value, should never be set.
	//   "NEW" - alert is new.
	//   "READ" - alert was read by a human.
	//   "TRIAGED" - alert has been triaged.
	//   "ESCALATED" - alert has been escalated.
	//   "RESOLVED" - alert has been resolved.
	//   "DUPLICATE" - alert is a duplicate of another alert.
	//   "FALSE_POSITIVE" - alert is a false positive and should be ignored.
	//   "NOT_ACTIONABLE" - alert is not actionable.
	//   "BENIGN" - alert is benign.
	//   "TRACKED_EXTERNALLY" - alert is tracked externally.
	State string `json:"state,omitempty"`

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

// AlertDetail: Container for different types of alert details.
type AlertDetail struct {
	// DataLeak: Data Leak alert detail type.
	DataLeak *DataLeakAlertDetail `json:"dataLeak,omitempty"`
	// DetailType: Output only. Name of the detail type. Will be set by the server
	// during creation to the name of the field that is set in the detail union.
	DetailType string `json:"detailType,omitempty"`
	// InitialAccessBroker: Initial Access Broker alert detail type.
	InitialAccessBroker *InitialAccessBrokerAlertDetail `json:"initialAccessBroker,omitempty"`
	// InsiderThreat: Insider Threat alert detail type.
	InsiderThreat *InsiderThreatAlertDetail `json:"insiderThreat,omitempty"`
	// TargetTechnology: Technology Watchlist alert detail type.
	TargetTechnology *TargetTechnologyAlertDetail `json:"targetTechnology,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DataLeak") 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. "DataLeak") 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 AlertDetail) MarshalJSON() ([]byte, error) {
	type NoMethod AlertDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AlertDocument: A document that is associated with an alert.
type AlertDocument struct {
	// AiSummary: Output only. AI summary of the document.
	AiSummary string `json:"aiSummary,omitempty"`
	// Author: Output only. The author of the document.
	Author string `json:"author,omitempty"`
	// CollectionTime: Output only. Time when the origin source collected the
	// intel.
	CollectionTime string `json:"collectionTime,omitempty"`
	// Content: Output only. The content of the document.
	Content string `json:"content,omitempty"`
	// CreateTime: Output only. The timestamp of the original external publication
	// of the document.
	CreateTime string `json:"createTime,omitempty"`
	// IngestTime: Output only. Time when GTI received the intel.
	IngestTime string `json:"ingestTime,omitempty"`
	// LanguageCode: Output only. The language code of the document.
	LanguageCode string `json:"languageCode,omitempty"`
	// Name: Identifier. Server generated name for the alert document. format is
	// projects/{project}/alerts/{alert}/documents/{document}
	Name string `json:"name,omitempty"`
	// Source: Output only. Source of the intel item, e.g. DarkMarket.
	Source string `json:"source,omitempty"`
	// SourceUpdateTime: Output only. Time when the intel was last updated by the
	// source.
	SourceUpdateTime string `json:"sourceUpdateTime,omitempty"`
	// SourceUri: Output only. URI of the intel item from the source.
	SourceUri string `json:"sourceUri,omitempty"`
	// Title: Output only. The title of the document, if available.
	Title string `json:"title,omitempty"`
	// Translation: Output only. The translation of the document, if available.
	Translation *AlertDocumentTranslation `json:"translation,omitempty"`

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

// AlertDocumentTranslation: The translation of an alert document.
type AlertDocumentTranslation struct {
	// TranslatedContent: Output only. The translated content of the document.
	TranslatedContent string `json:"translatedContent,omitempty"`
	// TranslatedTitle: Output only. The translated title of the document.
	TranslatedTitle string `json:"translatedTitle,omitempty"`
	// ForceSendFields is a list of field names (e.g. "TranslatedContent") 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. "TranslatedContent") 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 AlertDocumentTranslation) MarshalJSON() ([]byte, error) {
	type NoMethod AlertDocumentTranslation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Association: Represents an association with a vulnerability.
type Association struct {
	// Id: Required. The ID of the association.
	Id string `json:"id,omitempty"`
	// Type: Required. The type of the association.
	//
	// Possible values:
	//   "THREAT_INTEL_OBJECT_TYPE_UNSPECIFIED" - Unspecified object type.
	//   "THREAT_INTEL_OBJECT_TYPE_THREAT_ACTOR" - Threat actor object type.
	//   "THREAT_INTEL_OBJECT_TYPE_MALWARE" - Malware object type.
	//   "THREAT_INTEL_OBJECT_TYPE_REPORT" - Report object type.
	//   "THREAT_INTEL_OBJECT_TYPE_CAMPAIGN" - Campaign object type.
	//   "THREAT_INTEL_OBJECT_TYPE_IOC_COLLECTION" - IoC Collection object type.
	//   "THREAT_INTEL_OBJECT_TYPE_SOFTWARE_AND_TOOLKITS" - Software and toolkits
	// object type.
	//   "THREAT_INTEL_OBJECT_TYPE_VULNERABILITY" - Vulnerability object type.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Id") 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. "Id") 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 Association) MarshalJSON() ([]byte, error) {
	type NoMethod Association
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Audit: Tracks basic CRUD facts.
type Audit struct {
	// CreateTime: Output only. Time of creation.
	CreateTime string `json:"createTime,omitempty"`
	// Creator: Output only. Agent that created or updated the record, could be a
	// UserId or a JobId.
	Creator string `json:"creator,omitempty"`
	// UpdateTime: Output only. Time of creation or last update.
	UpdateTime string `json:"updateTime,omitempty"`
	// Updater: Output only. Agent that last updated the record, could be a UserId
	// or a JobId.
	Updater string `json:"updater,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Configuration: A configuration represents a behavior an engine should follow
// when producing new findings.
type Configuration struct {
	// Audit: Output only. Audit information for the configuration.
	Audit *Audit `json:"audit,omitempty"`
	// Description: Optional. A description of the configuration.
	Description string `json:"description,omitempty"`
	// Detail: Required. Domain specific details for the configuration.
	Detail *ConfigurationDetail `json:"detail,omitempty"`
	// DisplayName: Output only. Human readable name for the configuration.
	DisplayName string `json:"displayName,omitempty"`
	// Etag: If included when updating a configuration, this should be set to the
	// current etag of the configuration. If the etags do not match, the update
	// will be rejected and an ABORTED error will be returned.
	Etag string `json:"etag,omitempty"`
	// Name: Identifier. Server generated name for the configuration. format is
	// projects/{project}/configurations/{configuration}
	Name string `json:"name,omitempty"`
	// Provider: Required. Name of the service that provides the configuration.
	Provider string `json:"provider,omitempty"`
	// State: Optional. State of the configuration.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Configuration state is unspecified. This is not
	// expected to occur.
	//   "ENABLED" - Configuration is enabled for the customer.
	//   "DISABLED" - Configuration is disabled for the customer.
	//   "DEPRECATED" - Configuration is deprecated, no new configs are allowed to
	// be created.
	State string `json:"state,omitempty"`
	// Version: Optional. A user-manipulatable version. Does not adhere to a
	// specific format
	Version string `json:"version,omitempty"`

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

// ConfigurationDetail: Wrapper class that contains the union struct for all
// the various configuration detail specific classes.
type ConfigurationDetail struct {
	// CustomerProfile: Customer Profile detail config.
	CustomerProfile *CustomerProfileConfig `json:"customerProfile,omitempty"`
	// DetailType: Output only. Name of the detail type. Will be set by the server
	// during creation to the name of the field that is set in the detail union.
	DetailType string `json:"detailType,omitempty"`
	// TechnologyWatchlist: Technology Watchlist detail config.
	TechnologyWatchlist *TechnologyWatchListConfig `json:"technologyWatchlist,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CustomerProfile") 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. "CustomerProfile") 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 ConfigurationDetail) MarshalJSON() ([]byte, error) {
	type NoMethod ConfigurationDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ConfigurationRevision: A ConfigurationRevision is a snapshot of a
// Configuration at a point in time. It is immutable.
type ConfigurationRevision struct {
	// CreateTime: Output only. The time the Revision was created
	CreateTime string `json:"createTime,omitempty"`
	// Name: Identifier. The name of the ConfigurationRevision Format:
	// projects//configurations//revisions/
	Name string `json:"name,omitempty"`
	// Snapshot: The snapshot of the configuration
	Snapshot *Configuration `json:"snapshot,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CustomerProfileCitation: Citation information for the customer profile.
type CustomerProfileCitation struct {
	// CitationId: Required. The citation id for the citation. Should be unique
	// within the profile.
	CitationId string `json:"citationId,omitempty"`
	// Document: Required. The name of the document the citation is from.
	Document string `json:"document,omitempty"`
	// RetrievalTime: The time the citation was retrieved.
	RetrievalTime string `json:"retrievalTime,omitempty"`
	// Source: Required. The source of the citation.
	Source string `json:"source,omitempty"`
	// Uri: Optional. The url of the citation.
	Uri string `json:"uri,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CitationId") 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. "CitationId") 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 CustomerProfileCitation) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileCitation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileCitedString: A string with citation ids.
type CustomerProfileCitedString struct {
	// CitationIds: Optional. The citation ids for the string.
	CitationIds []string `json:"citationIds,omitempty"`
	// Value: Required. The value of the string.
	Value string `json:"value,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CitationIds") 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. "CitationIds") 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 CustomerProfileCitedString) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileCitedString
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileCompany: Company information for the customer profile.
type CustomerProfileCompany struct {
	// CitationIds: Optional. The citation ids for the company.
	CitationIds []string `json:"citationIds,omitempty"`
	// Company: Required. The name of the company.
	Company string `json:"company,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CitationIds") 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. "CitationIds") 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 CustomerProfileCompany) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileCompany
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileConfig: CustomerProfileConfig is the configuration for the
// customer profile.
type CustomerProfileConfig struct {
	// Citations: Optional. Citations for the organization profile.
	Citations []*CustomerProfileCitation `json:"citations,omitempty"`
	// ContactInfo: Optional. Contact information for the organization.
	ContactInfo []*CustomerProfileContactInfo `json:"contactInfo,omitempty"`
	// Executives: Optional. Executives of the organization.
	Executives []*CustomerProfilePerson `json:"executives,omitempty"`
	// Industries: Optional. The industries the organization is involved in.
	Industries []*CustomerProfileIndustry `json:"industries,omitempty"`
	// Locations: Optional. Locations the organization is present or conducts
	// business in.
	Locations []*CustomerProfileLocation `json:"locations,omitempty"`
	// Org: Required. The name of the organization.
	Org string `json:"org,omitempty"`
	// OrgSummary: Optional. A summary of the organization.
	OrgSummary string `json:"orgSummary,omitempty"`
	// ParentCompanies: Optional. The parent companies of the organization.
	ParentCompanies []*CustomerProfileCompany `json:"parentCompanies,omitempty"`
	// Products: Optional. Product information for the organization.
	Products []*CustomerProfileProduct `json:"products,omitempty"`
	// SecurityConsiderations: Optional. Security considerations for the
	// organization.
	SecurityConsiderations *CustomerProfileSecurityConsiderations `json:"securityConsiderations,omitempty"`
	// Summary: Optional. A summarized version of the customer profile.
	Summary *CustomerProfileSummary `json:"summary,omitempty"`
	// TechnologyPresence: Optional. Technology presence of the organization.
	TechnologyPresence string `json:"technologyPresence,omitempty"`
	// WebPresences: Optional. Web presence of the organization.
	WebPresences []*CustomerProfileWebPresence `json:"webPresences,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Citations") 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. "Citations") 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 CustomerProfileConfig) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileContactInfo: Contact information for the customer profile.
type CustomerProfileContactInfo struct {
	// Address: The address of the contact.
	Address string `json:"address,omitempty"`
	// CitationIds: Optional. The citation ids for the contact information.
	CitationIds []string `json:"citationIds,omitempty"`
	// Email: The email address of the contact.
	Email string `json:"email,omitempty"`
	// Label: Optional. The name of the contact.
	Label string `json:"label,omitempty"`
	// Other: The other contact information.
	Other string `json:"other,omitempty"`
	// Phone: The phone number of the contact.
	Phone string `json:"phone,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Address") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Address") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CustomerProfileIndustry: Industry information for the customer profile.
type CustomerProfileIndustry struct {
	// CitationIds: Optional. The citation ids for the industry.
	CitationIds []string `json:"citationIds,omitempty"`
	// Industry: Required. The name of the industry.
	Industry string `json:"industry,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CitationIds") 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. "CitationIds") 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 CustomerProfileIndustry) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileIndustry
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileLocation: Location information for the customer profile.
type CustomerProfileLocation struct {
	// Address: Required. The address of the location.
	Address string `json:"address,omitempty"`
	// Brand: Required. The brand of the location.
	Brand string `json:"brand,omitempty"`
	// CitationIds: Optional. The citation ids for the location.
	CitationIds []string `json:"citationIds,omitempty"`
	// FacilityType: Optional. The type of location.
	FacilityType string `json:"facilityType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Address") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Address") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CustomerProfilePerson: Person information for the customer profile.
type CustomerProfilePerson struct {
	// CitationIds: Optional. The citation ids for the person.
	CitationIds []string `json:"citationIds,omitempty"`
	// Name: Required. The name of the person.
	Name string `json:"name,omitempty"`
	// Title: Optional. The title of the person.
	Title string `json:"title,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CitationIds") 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. "CitationIds") 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 CustomerProfilePerson) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfilePerson
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileProduct: Product information for the customer profile.
type CustomerProfileProduct struct {
	// Brand: Required. The brand of the product.
	Brand string `json:"brand,omitempty"`
	// CitationIds: Optional. The citation ids for the product.
	CitationIds []string `json:"citationIds,omitempty"`
	// Product: Required. The name of the product.
	Product string `json:"product,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Brand") 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. "Brand") 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 CustomerProfileProduct) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileProduct
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileSecurityConsiderations: Security considerations for the
// customer profile.
type CustomerProfileSecurityConsiderations struct {
	// Considerations: Optional. A series of considerations for the security of the
	// organization, such as "high risk of compromise" or "vulnerable to
	// cyberbullying".
	Considerations []string `json:"considerations,omitempty"`
	// Note: Optional. A note about the security considerations.
	Note string `json:"note,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Considerations") 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. "Considerations") 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 CustomerProfileSecurityConsiderations) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileSecurityConsiderations
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileSummary: A summarized version of the customer profile.
// Generated by the backend.
type CustomerProfileSummary struct {
	// AreaServed: Optional. The area the customer serves.
	AreaServed *CustomerProfileCitedString `json:"areaServed,omitempty"`
	// Brands: Optional. A narrative summary of brands.
	Brands *CustomerProfileCitedString `json:"brands,omitempty"`
	// EntityType: Optional. The entity type of the customer.
	EntityType *CustomerProfileCitedString `json:"entityType,omitempty"`
	// Founded: Optional. The date the customer was founded.
	Founded *CustomerProfileCitedString `json:"founded,omitempty"`
	// Headquarters: Optional. The headquarters of the customer.
	Headquarters *CustomerProfileCitedString `json:"headquarters,omitempty"`
	// Industry: Optional. The industry the customer is in.
	Industry *CustomerProfileCitedString `json:"industry,omitempty"`
	// KeyPeopleSummary: Optional. A narrative summary of key people.
	KeyPeopleSummary *CustomerProfileCitedString `json:"keyPeopleSummary,omitempty"`
	// ParentCompany: Optional. The parent company of the customer.
	ParentCompany *CustomerProfileCitedString `json:"parentCompany,omitempty"`
	// PrimaryWebsite: Optional. The primary website of the customer.
	PrimaryWebsite *CustomerProfileCitedString `json:"primaryWebsite,omitempty"`
	// ProductsSummary: Optional. A narrative summary of products.
	ProductsSummary *CustomerProfileCitedString `json:"productsSummary,omitempty"`
	// ServicesSummary: Optional. A narrative summary of services.
	ServicesSummary *CustomerProfileCitedString `json:"servicesSummary,omitempty"`
	// Title: Optional. The official name of the customer.
	Title *CustomerProfileCitedString `json:"title,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AreaServed") 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. "AreaServed") 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 CustomerProfileSummary) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileSummary
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CustomerProfileWebPresence: Web presence information for the customer
// profile.
type CustomerProfileWebPresence struct {
	// CitationIds: Optional. The citation ids for the web presence.
	CitationIds []string `json:"citationIds,omitempty"`
	// Domain: Required. The domain name of the web presence.
	Domain string `json:"domain,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CitationIds") 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. "CitationIds") 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 CustomerProfileWebPresence) MarshalJSON() ([]byte, error) {
	type NoMethod CustomerProfileWebPresence
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DataLeakAlertDetail: Captures the specific details of Data Leak alert.
type DataLeakAlertDetail struct {
	// DiscoveryDocumentIds: Required. Array of ids to accommodate multiple
	// discovery documents
	DiscoveryDocumentIds []string `json:"discoveryDocumentIds,omitempty"`
	// Severity: Required. The severity of the Data Leak alert. Allowed values are:
	// * `LOW` * `MEDIUM` * `HIGH` * `CRITICAL`
	Severity string `json:"severity,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DiscoveryDocumentIds") 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. "DiscoveryDocumentIds") 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 DataLeakAlertDetail) MarshalJSON() ([]byte, error) {
	type NoMethod DataLeakAlertDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DataLeakFindingDetail: A detail object for a Data Leak finding.
type DataLeakFindingDetail struct {
	// DocumentId: Required. The unique identifier of the document that triggered
	// the Data Leak finding. This ID can be used to retrieve the content of the
	// document for further analysis.
	DocumentId string `json:"documentId,omitempty"`
	// MatchScore: Required. Reference to the match score of the Data Leak finding.
	// This is a float value greater than 0 and less than or equal to 1 calculated
	// by the matching engine based on the similarity of the document and the user
	// provided configurations.
	MatchScore float64 `json:"matchScore,omitempty"`
	// Severity: Required. The severity of the Data Leak finding. This indicates
	// the potential impact of the threat.
	//
	// Possible values:
	//   "SEVERITY_UNSPECIFIED" - Default value, should never be set.
	//   "LOW" - Low severity.
	//   "MEDIUM" - Medium severity.
	//   "HIGH" - High severity.
	//   "CRITICAL" - Critical severity.
	Severity string `json:"severity,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DocumentId") 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. "DocumentId") 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 DataLeakFindingDetail) MarshalJSON() ([]byte, error) {
	type NoMethod DataLeakFindingDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// EnumerateAlertFacetsResponse: Response message for EnumerateAlertFacets.
type EnumerateAlertFacetsResponse struct {
	// Facets: List of facets and the counts.
	Facets []*Facet `json:"facets,omitempty"`

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

// Evidence: Details the evidence used to determine the relevance verdict.
type Evidence struct {
	// CommonThemes: A list of semantic themes or concepts found to be common,
	// related, or aligned between the sources, supporting the verdict.
	CommonThemes []string `json:"commonThemes,omitempty"`
	// DistinctThemes: A list of semantic themes or descriptions unique to one
	// source or semantically distant.
	DistinctThemes []string `json:"distinctThemes,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CommonThemes") 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. "CommonThemes") 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 Evidence) MarshalJSON() ([]byte, error) {
	type NoMethod Evidence
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Facet: Facet represents a sub element of a resource for filtering. The
// results from this method are used to populate the filterable facets in the
// UI.
type Facet struct {
	// Facet: Name of the facet. This is also the string that needs to be used in
	// the filtering expression.
	Facet string `json:"facet,omitempty"`
	// FacetCounts: List of counts for the facet (if categorical).
	FacetCounts []*FacetCount `json:"facetCounts,omitempty"`
	// FacetType: The type of the facet. Options include "string", "int", "float",
	// "bool", "enum", "timestamp", "user" and are useful to show the right sort of
	// UI controls when building a AIP-160 style filtering string.
	FacetType string `json:"facetType,omitempty"`
	// MaxValue: Max value of the facet stringified based on type. Will be
	// populated and formatted the same as min_value.
	MaxValue string `json:"maxValue,omitempty"`
	// MinValue: Min value of the facet stringified based on type. This is only
	// populated for facets that have a clear ordering, for types like enum it will
	// be left empty. Timestamps will be formatted using RFC3339.
	MinValue string `json:"minValue,omitempty"`
	// TotalCount: Total number of records that contain this facet with ANY value.
	TotalCount int64 `json:"totalCount,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Facet") 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. "Facet") 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 Facet) MarshalJSON() ([]byte, error) {
	type NoMethod Facet
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FacetCount: FacetCount represents a count of records with each facet value.
type FacetCount struct {
	// Count: Count of records with the value.
	Count int64 `json:"count,omitempty"`
	// Value: Value of the facet stringified. Timestamps will be formatted using
	// RFC3339.
	Value string `json:"value,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Count") 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. "Count") 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 FacetCount) MarshalJSON() ([]byte, error) {
	type NoMethod FacetCount
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Finding: A ‘stateless’ and a point in time event that a check produced a
// result of interest.
type Finding struct {
	// AiSummary: Optional. AI summary of the finding.
	AiSummary string `json:"aiSummary,omitempty"`
	// Alert: Optional. Name of the alert that this finding is bound to.
	Alert string `json:"alert,omitempty"`
	// Audit: Output only. Audit data about the finding.
	Audit *Audit `json:"audit,omitempty"`
	// Configurations: Optional. Configuration names that are bound to this
	// finding.
	Configurations []string `json:"configurations,omitempty"`
	// Detail: Required. Holder of the domain specific details of the finding.
	Detail *FindingDetail `json:"detail,omitempty"`
	// DisplayName: Required. A short descriptive title for the finding <= 250
	// chars. EX: "Actor 'baddy' offering $1000 for credentials of 'goodguy'".
	DisplayName string `json:"displayName,omitempty"`
	// Name: Identifier. Server generated name for the finding (leave clear during
	// creation). Format: projects/{project}/findings/{finding}
	Name string `json:"name,omitempty"`
	// Provider: Required. Logical source of this finding (name of the sub-engine).
	Provider string `json:"provider,omitempty"`
	// RelevanceAnalysis: Output only. High-Precision Relevance Analysis verdict
	// for the finding.
	RelevanceAnalysis *RelevanceAnalysis `json:"relevanceAnalysis,omitempty"`
	// ReoccurrenceTimes: Output only. When identical finding (same labels and same
	// details) has re-occurred.
	ReoccurrenceTimes []string `json:"reoccurrenceTimes,omitempty"`
	// Severity: Optional. Deprecated: Use the `severity_analysis` field instead.
	// Base severity score from the finding source.
	Severity float64 `json:"severity,omitempty"`
	// SeverityAnalysis: Output only. High-Precision Severity Analysis verdict for
	// the finding.
	SeverityAnalysis *SeverityAnalysis `json:"severityAnalysis,omitempty"`

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

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

// FindingDetail: Wrapper class that contains the union struct for all the
// various findings detail specific classes.
type FindingDetail struct {
	// DataLeak: Data Leak finding detail type.
	DataLeak *DataLeakFindingDetail `json:"dataLeak,omitempty"`
	// DetailType: Output only. Name of the detail type. Will be set by the server
	// during creation to the name of the field that is set in the detail union.
	DetailType string `json:"detailType,omitempty"`
	// InitialAccessBroker: Initial Access Broker finding detail type.
	InitialAccessBroker *InitialAccessBrokerFindingDetail `json:"initialAccessBroker,omitempty"`
	// InsiderThreat: Insider Threat finding detail type.
	InsiderThreat *InsiderThreatFindingDetail `json:"insiderThreat,omitempty"`
	// TargetTechnology: Technology Watchlist finding detail type.
	TargetTechnology *TargetTechnologyFindingDetail `json:"targetTechnology,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DataLeak") 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. "DataLeak") 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 FindingDetail) MarshalJSON() ([]byte, error) {
	type NoMethod FindingDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GenerateOrgProfileConfigurationRequest: Request message for
// GenerateOrgProfileConfiguration.
type GenerateOrgProfileConfigurationRequest struct {
	// DisplayName: Required. The display name of the organization to generate the
	// profile for.
	DisplayName string `json:"displayName,omitempty"`
	// Domain: Required. The domain of the organization to generate the profile
	// for.
	Domain string `json:"domain,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 GenerateOrgProfileConfigurationRequest) MarshalJSON() ([]byte, error) {
	type NoMethod GenerateOrgProfileConfigurationRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InitialAccessBrokerAlertDetail: Captures the specific details of
// InitialAccessBroker (IAB) alert.
type InitialAccessBrokerAlertDetail struct {
	// DiscoveryDocumentIds: Required. Array of ids to accommodate multiple
	// discovery documents
	DiscoveryDocumentIds []string `json:"discoveryDocumentIds,omitempty"`
	// Severity: Required. The severity of the Initial Access Broker (IAB) alert.
	// Allowed values are: * `LOW` * `MEDIUM` * `HIGH` * `CRITICAL`
	Severity string `json:"severity,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DiscoveryDocumentIds") 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. "DiscoveryDocumentIds") 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 InitialAccessBrokerAlertDetail) MarshalJSON() ([]byte, error) {
	type NoMethod InitialAccessBrokerAlertDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InitialAccessBrokerFindingDetail: A detail object for an Initial Access
// Broker (IAB) finding.
type InitialAccessBrokerFindingDetail struct {
	// DocumentId: Required. The unique identifier of the document that triggered
	// the IAB finding. This ID can be used to retrieve the content of the document
	// for further analysis.
	DocumentId string `json:"documentId,omitempty"`
	// MatchScore: Required. Reference to the match score of the IAB finding. This
	// is a float value between 0 and 1 calculated by the matching engine based on
	// the similarity of the document and the user provided configurations.
	MatchScore float64 `json:"matchScore,omitempty"`
	// Severity: Required. The severity of the IAB finding. This indicates the
	// potential impact of the threat.
	//
	// Possible values:
	//   "SEVERITY_UNSPECIFIED"
	//   "LOW"
	//   "MEDIUM"
	//   "HIGH"
	//   "CRITICAL"
	Severity string `json:"severity,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DocumentId") 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. "DocumentId") 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 InitialAccessBrokerFindingDetail) MarshalJSON() ([]byte, error) {
	type NoMethod InitialAccessBrokerFindingDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// InsiderThreatAlertDetail: Captures the specific details of InsiderThreat
// alert.
type InsiderThreatAlertDetail struct {
	// DiscoveryDocumentIds: Required. Array of ids to accommodate multiple
	// discovery documents
	DiscoveryDocumentIds []string `json:"discoveryDocumentIds,omitempty"`
	// Severity: Required. The severity of the Insider Threat alert. Allowed values
	// are: * `LOW` * `MEDIUM` * `HIGH` * `CRITICAL`
	Severity string `json:"severity,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DiscoveryDocumentIds") 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. "DiscoveryDocumentIds") 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 InsiderThreatAlertDetail) MarshalJSON() ([]byte, error) {
	type NoMethod InsiderThreatAlertDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// InsiderThreatFindingDetail: A detail object for a InsiderThreat finding.
type InsiderThreatFindingDetail struct {
	// DocumentId: Required. The unique identifier of the document that triggered
	// the InsiderThreat finding. This ID can be used to retrieve the content of
	// the document for further analysis.
	DocumentId string `json:"documentId,omitempty"`
	// MatchScore: Required. Reference to the match score of the InsiderThreat
	// finding. This is a float value greater than 0 and less than or equal to 1
	// calculated by the matching engine based on the similarity of the document
	// and the user provided configurations.
	MatchScore float64 `json:"matchScore,omitempty"`
	// Severity: Required. The severity of the InsiderThreat finding. This
	// indicates the potential impact of the threat.
	//
	// Possible values:
	//   "SEVERITY_UNSPECIFIED" - Default value, should never be set.
	//   "LOW" - Low severity.
	//   "MEDIUM" - Medium severity.
	//   "HIGH" - High severity.
	//   "CRITICAL" - Critical severity.
	Severity string `json:"severity,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DocumentId") 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. "DocumentId") 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 InsiderThreatFindingDetail) MarshalJSON() ([]byte, error) {
	type NoMethod InsiderThreatFindingDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// ListAlertsResponse: Response message for ListAlerts.
type ListAlertsResponse struct {
	// Alerts: List of alerts.
	Alerts []*Alert `json:"alerts,omitempty"`
	// NextPageToken: Page token.
	NextPageToken string `json:"nextPageToken,omitempty"`

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

// ListConfigurationRevisionsResponse: Response message for
// ListConfigurationRevisions.
type ListConfigurationRevisionsResponse struct {
	// NextPageToken: A token, which 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"`
	// Revisions: The Configuration Revisions associated with the specified
	// Configuration
	Revisions []*ConfigurationRevision `json:"revisions,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 ListConfigurationRevisionsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListConfigurationRevisionsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListConfigurationsResponse: Response message for ListConfigurations.
type ListConfigurationsResponse struct {
	// Configurations: List of configurations.
	Configurations []*Configuration `json:"configurations,omitempty"`
	// NextPageToken: Page token.
	NextPageToken string `json:"nextPageToken,omitempty"`

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

// ListFindingsResponse: Response message for ListFindings.
type ListFindingsResponse struct {
	// Findings: List of findings.
	Findings []*Finding `json:"findings,omitempty"`
	// NextPageToken: Page token.
	NextPageToken string `json:"nextPageToken,omitempty"`

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

// MarkAlertAsBenignRequest: Request message for MarkAlertAsBenign.
type MarkAlertAsBenignRequest struct {
}

// MarkAlertAsDuplicateRequest: Request message for MarkAlertAsDuplicate.
type MarkAlertAsDuplicateRequest struct {
	// DuplicateOf: Optional. Name of the alert to mark as a duplicate of. Format:
	// projects/{project}/alerts/{alert}
	DuplicateOf string `json:"duplicateOf,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DuplicateOf") 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. "DuplicateOf") 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 MarkAlertAsDuplicateRequest) MarshalJSON() ([]byte, error) {
	type NoMethod MarkAlertAsDuplicateRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MarkAlertAsEscalatedRequest: Request message for MarkAlertAsEscalated.
type MarkAlertAsEscalatedRequest struct {
}

// MarkAlertAsFalsePositiveRequest: Request message for
// MarkAlertAsFalsePositive.
type MarkAlertAsFalsePositiveRequest struct {
}

// MarkAlertAsNotActionableRequest: Request message for
// MarkAlertAsNotActionable.
type MarkAlertAsNotActionableRequest struct {
}

// MarkAlertAsReadRequest: Request message for MarkAlertAsRead.
type MarkAlertAsReadRequest struct {
}

// MarkAlertAsResolvedRequest: Request message for MarkAlertAsResolved.
type MarkAlertAsResolvedRequest struct {
}

// MarkAlertAsTrackedExternallyRequest: Request message for
// MarkAlertAsTrackedExternally.
type MarkAlertAsTrackedExternallyRequest struct {
}

// MarkAlertAsTriagedRequest: Request message for MarkAlertAsTriaged.
type MarkAlertAsTriagedRequest struct {
}

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

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

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

// PriorityAnalysis: Structured priority analysis for a threat.
type PriorityAnalysis struct {
	// Confidence: The level of confidence in the given verdict.
	//
	// Possible values:
	//   "CONFIDENCE_LEVEL_UNSPECIFIED" - Default value. Confidence level is not
	// specified.
	//   "CONFIDENCE_LEVEL_LOW" - Low confidence in the verdict.
	//   "CONFIDENCE_LEVEL_MEDIUM" - Medium confidence in the verdict.
	//   "CONFIDENCE_LEVEL_HIGH" - High confidence in the verdict.
	Confidence string `json:"confidence,omitempty"`
	// PriorityLevel: The level of Priority.
	//
	// Possible values:
	//   "PRIORITY_LEVEL_UNSPECIFIED" - Default value, should never be set.
	//   "PRIORITY_LEVEL_LOW" - Low Priority.
	//   "PRIORITY_LEVEL_MEDIUM" - Medium Priority.
	//   "PRIORITY_LEVEL_HIGH" - High Priority.
	//   "PRIORITY_LEVEL_CRITICAL" - Critical Priority.
	PriorityLevel string `json:"priorityLevel,omitempty"`
	// Reasoning: Human-readable explanation from the model, detailing why a
	// particular result is considered to have a certain priority.
	Reasoning string `json:"reasoning,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Confidence") 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. "Confidence") 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 PriorityAnalysis) MarshalJSON() ([]byte, error) {
	type NoMethod PriorityAnalysis
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ProductFix: Contains details about a product fix.
type ProductFix struct {
	// DisplayName: Required. The name of the fix. Ex: "Magento".
	DisplayName string `json:"displayName,omitempty"`
	// PublishTime: Optional. The published time of the fix.
	PublishTime string `json:"publishTime,omitempty"`
	// SourceId: Required. The source ID of the fix. Ex: "APPSEC-1420".
	SourceId string `json:"sourceId,omitempty"`
	// Uri: Optional. The URI of the fix.
	Uri string `json:"uri,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 ProductFix) MarshalJSON() ([]byte, error) {
	type NoMethod ProductFix
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// PublicExploit: Contains details about a public exploit.
type PublicExploit struct {
	// ExploitGrade: Optional. The grade of the exploit. Ex: "non-weaponized".
	//
	// Possible values:
	//   "EXPLOIT_GRADE_UNSPECIFIED" - Unspecified exploit grade.
	//   "UNEVALUATED" - Unevaluated exploit grade.
	//   "PROOF_OF_CONCEPT" - Proof-of-concept exploit grade.
	//   "NON_WEAPONIZED" - Non-weaponized exploit grade.
	//   "WEAPONIZED" - Weaponized exploit grade.
	//   "SCANNER" - Scanner exploit grade.
	//   "FAKE" - Fake exploit grade.
	ExploitGrade string `json:"exploitGrade,omitempty"`
	// ExploitName: Required. The name of the exploit. Ex: "Magentounauth.php.txt".
	ExploitName string `json:"exploitName,omitempty"`
	// ExploitReliability: Optional. The reliability of the exploit. Ex:
	// "Unreviewed".
	//
	// Possible values:
	//   "EXPLOIT_RELIABILITY_UNSPECIFIED" - Unspecified exploit reliability.
	//   "UNREVIEWED" - Confirmed exploit reliability.
	//   "REVIEWED" - Uncorroborated exploit reliability.
	//   "TESTED" - Unconfirmed exploit reliability.
	ExploitReliability string `json:"exploitReliability,omitempty"`
	// ReleaseTime: Optional. The release time of the exploit.
	ReleaseTime string `json:"releaseTime,omitempty"`
	// SizeBytes: Optional. The size of the exploit.
	SizeBytes int64 `json:"sizeBytes,omitempty,string"`
	// Uri: Optional. The URI of the exploit.
	Uri string `json:"uri,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExploitGrade") 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. "ExploitGrade") 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 PublicExploit) MarshalJSON() ([]byte, error) {
	type NoMethod PublicExploit
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RelevanceAnalysis: Structured relevance analysis for a threat.
type RelevanceAnalysis struct {
	// Confidence: The level of confidence in the given verdict.
	//
	// Possible values:
	//   "CONFIDENCE_LEVEL_UNSPECIFIED" - Default value. Confidence level is not
	// specified.
	//   "CONFIDENCE_LEVEL_LOW" - Low confidence in the verdict.
	//   "CONFIDENCE_LEVEL_MEDIUM" - Medium confidence in the verdict.
	//   "CONFIDENCE_LEVEL_HIGH" - High confidence in the verdict.
	Confidence string `json:"confidence,omitempty"`
	// Evidence: Evidence supporting the verdict, including matched and unmatched
	// items.
	Evidence *Evidence `json:"evidence,omitempty"`
	// Reasoning: Human-readable explanation from the matcher, detailing why a
	// particular result is considered relevant or not relevant.
	Reasoning string `json:"reasoning,omitempty"`
	// RelevanceLevel: The level of relevance.
	//
	// Possible values:
	//   "RELEVANCE_LEVEL_UNSPECIFIED" - Default value, should never be set.
	//   "RELEVANCE_LEVEL_LOW" - Low Relevance.
	//   "RELEVANCE_LEVEL_MEDIUM" - Medium Relevance.
	//   "RELEVANCE_LEVEL_HIGH" - High Relevance.
	RelevanceLevel string `json:"relevanceLevel,omitempty"`
	// Relevant: Indicates whether the threat is considered relevant.
	Relevant bool `json:"relevant,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Confidence") 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. "Confidence") 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 RelevanceAnalysis) MarshalJSON() ([]byte, error) {
	type NoMethod RelevanceAnalysis
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SearchFindingsResponse: Response message for SearchFindings.
type SearchFindingsResponse struct {
	// Findings: List of findings.
	Findings []*Finding `json:"findings,omitempty"`
	// NextPageToken: Page token.
	NextPageToken string `json:"nextPageToken,omitempty"`

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

// SeverityAnalysis: Structured severity analysis for a threat.
type SeverityAnalysis struct {
	// Confidence: The level of confidence in the given verdict.
	//
	// Possible values:
	//   "CONFIDENCE_LEVEL_UNSPECIFIED" - Default value. Confidence level is not
	// specified.
	//   "CONFIDENCE_LEVEL_LOW" - Low confidence in the verdict.
	//   "CONFIDENCE_LEVEL_MEDIUM" - Medium confidence in the verdict.
	//   "CONFIDENCE_LEVEL_HIGH" - High confidence in the verdict.
	Confidence string `json:"confidence,omitempty"`
	// Reasoning: Human-readable explanation from the model, detailing why a
	// particular result is considered to have a certain severity.
	Reasoning string `json:"reasoning,omitempty"`
	// SeverityLevel: The level of severity.
	//
	// Possible values:
	//   "SEVERITY_LEVEL_UNSPECIFIED" - Default value, should never be set.
	//   "SEVERITY_LEVEL_LOW" - Low Severity.
	//   "SEVERITY_LEVEL_MEDIUM" - Medium Severity.
	//   "SEVERITY_LEVEL_HIGH" - High Severity.
	SeverityLevel string `json:"severityLevel,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Confidence") 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. "Confidence") 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 SeverityAnalysis) MarshalJSON() ([]byte, error) {
	type NoMethod SeverityAnalysis
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

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

// TargetTechnologyAlertDetail: Contains details for a technology watchlist
// alert.
type TargetTechnologyAlertDetail struct {
	// VulnerabilityMatch: Optional. The vulnerability match details.
	VulnerabilityMatch *VulnerabilityMatch `json:"vulnerabilityMatch,omitempty"`
	// ForceSendFields is a list of field names (e.g. "VulnerabilityMatch") 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. "VulnerabilityMatch") 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 TargetTechnologyAlertDetail) MarshalJSON() ([]byte, error) {
	type NoMethod TargetTechnologyAlertDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TargetTechnologyFindingDetail: Contains details for a technology watchlist
// finding.
type TargetTechnologyFindingDetail struct {
	// VulnerabilityMatch: Optional. The vulnerability match details.
	VulnerabilityMatch *VulnerabilityMatch `json:"vulnerabilityMatch,omitempty"`
	// ForceSendFields is a list of field names (e.g. "VulnerabilityMatch") 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. "VulnerabilityMatch") 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 TargetTechnologyFindingDetail) MarshalJSON() ([]byte, error) {
	type NoMethod TargetTechnologyFindingDetail
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TechnologyWatchListAlertThreshold: TechnologyWatchListAlertThreshold
// contains the thresholds for alerting.
type TechnologyWatchListAlertThreshold struct {
	// CvssScoreMinimum: Optional. The minimum CVSS score for the alert. Evaluates
	// to CVSS v3 when available with a fallback to v2 and v4. Ex: 7.0. Valid range
	// is [0.0, 10.0].
	CvssScoreMinimum float64 `json:"cvssScoreMinimum,omitempty"`
	// EpssScoreMinimum: Optional. The minimum epss score for the alert. Ex: 0.8.
	// Valid range is [0.0, 1.0].
	EpssScoreMinimum float64 `json:"epssScoreMinimum,omitempty"`
	// ExploitationStates: Optional. The exploitation states of the alert.
	//
	// Possible values:
	//   "EXPLOITATION_STATE_UNSPECIFIED" - Unspecified exploitation state.
	//   "EXPLOITATION_STATE_NO_KNOWN" - No known exploitation.
	//   "EXPLOITATION_STATE_REPORTED" - Exploitation has been reported.
	//   "EXPLOITATION_STATE_SUSPECTED" - Exploitation is suspected.
	//   "EXPLOITATION_STATE_CONFIRMED" - Exploitation is confirmed.
	//   "EXPLOITATION_STATE_WIDESPREAD" - Widespread exploitation.
	ExploitationStates []string `json:"exploitationStates,omitempty"`
	// PriorityMinimum: Optional. The minimum priority for the alert.
	//
	// Possible values:
	//   "PRIORITY_UNSPECIFIED" - Unspecified priority.
	//   "P0" - Priority level 0.
	//   "P1" - Priority level 1.
	//   "P2" - Priority level 2.
	//   "P3" - Priority level 3.
	//   "P4" - Priority level 4.
	PriorityMinimum string `json:"priorityMinimum,omitempty"`
	// RiskRatingMinimum: Optional. The minimum risk rating for the alert.
	//
	// Possible values:
	//   "RISK_RATING_UNSPECIFIED" - Unspecified risk rating. This is the default
	// value when the risk rating is not set.
	//   "LOW" - Low risk rating.
	//   "MEDIUM" - Medium risk rating.
	//   "HIGH" - High risk rating.
	//   "CRITICAL" - Critical risk rating.
	//   "UNRATED" - The vulnerability has been assessed, but a specific risk
	// rating could not be determined or assigned.
	RiskRatingMinimum string `json:"riskRatingMinimum,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CvssScoreMinimum") 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. "CvssScoreMinimum") 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 TechnologyWatchListAlertThreshold) MarshalJSON() ([]byte, error) {
	type NoMethod TechnologyWatchListAlertThreshold
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// TechnologyWatchListConfig: TechnologyWatchListConfig is the configuration
// for the technology watchlist.
type TechnologyWatchListConfig struct {
	// AlertThreshold: Optional. Alert thresholds to effectively reduce noise.
	AlertThreshold *TechnologyWatchListAlertThreshold `json:"alertThreshold,omitempty"`
	// Technologies: Optional. List of vendor, technology or cpe fingerprint.
	// example: Microsoft office 360 Apache Server 3.5
	// cpe:2.3:a:microsoft:outlook:*:*:*:*:*:*:*:*
	Technologies []string `json:"technologies,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AlertThreshold") 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. "AlertThreshold") 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 TechnologyWatchListConfig) MarshalJSON() ([]byte, error) {
	type NoMethod TechnologyWatchListConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// UpsertConfigurationResponse: Response message for UpsertConfiguration.
type UpsertConfigurationResponse struct {
	// Configuration: Output only. Created configuration ID with server assigned
	// id.
	Configuration string `json:"configuration,omitempty"`

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

// VulnerabilityMatch: Contains details about a vulnerability match.
type VulnerabilityMatch struct {
	// Associations: Optional. Associated threat actors, malware, etc. This is
	// embedded as a snapshot because the details of the association at the time of
	// the vulnerability match are important for context and reporting.
	Associations []*Association `json:"associations,omitempty"`
	// CollectionId: Required. The collection ID of the vulnerability. Ex:
	// "vulnerability--cve-2025-9876".
	CollectionId string `json:"collectionId,omitempty"`
	// CveId: Required. The CVE ID of the vulnerability. Ex: "CVE-2025-9876". See
	// https://www.cve.org/ for more information.
	CveId string `json:"cveId,omitempty"`
	// Cvss3Score: Required. The CVSS score of the vulnerability. Evaluates to CVSS
	// v3 when available with a fallback to v2 and v4. Example: 6.4.
	Cvss3Score float64 `json:"cvss3Score,omitempty"`
	// Description: Required. A description of the vulnerability.
	Description string `json:"description,omitempty"`
	// DisclosureTime: Optional. The disclosure time of the vulnerability.
	DisclosureTime string `json:"disclosureTime,omitempty"`
	// EpssScore: Optional. The EPSS score, representing the probability of
	// exploitation. Example: 0.87.
	EpssScore float64 `json:"epssScore,omitempty"`
	// ExploitationConsequences: Optional. List of exploitation consequences for
	// the vulnerability.
	//
	// Possible values:
	//   "EXPLOITATION_CONSEQUENCE_UNSPECIFIED" - Unspecified exploitation
	// consequence.
	//   "CODE_EXECUTION" - Code execution consequence.
	//   "COMMAND_EXECUTION" - Command execution consequence.
	//   "DATA_LOSS" - Data loss consequence.
	//   "DATA_MANIPULATION" - Data manipulation consequence.
	//   "DENIAL_OF_SERVICE" - Denial-of-Service consequence.
	//   "INFORMATION_DISCLOSURE" - Information disclosure consequence.
	//   "UNAUTHORIZED_ACCESS" - Unauthorized access consequence.
	//   "PRIVILEGE_ESCALATION" - Privilege escalation consequence.
	//   "SANDBOX_ESCAPE" - Sandbox escape consequence.
	//   "SECURITY_BYPASS" - Security bypass consequence.
	//   "CONTAINER_ESCAPE" - Container escape consequence.
	//   "SPOOFING" - Spoofing consequence.
	ExploitationConsequences []string `json:"exploitationConsequences,omitempty"`
	// ExploitationState: Required. The exploitation state of the vulnerability.
	//
	// Possible values:
	//   "EXPLOITATION_STATE_UNSPECIFIED" - Unspecified exploitation state.
	//   "EXPLOITATION_STATE_NO_KNOWN" - No known exploitation.
	//   "EXPLOITATION_STATE_REPORTED" - Exploitation has been reported.
	//   "EXPLOITATION_STATE_SUSPECTED" - Exploitation is suspected.
	//   "EXPLOITATION_STATE_CONFIRMED" - Exploitation is confirmed.
	//   "EXPLOITATION_STATE_WIDESPREAD" - Widespread exploitation.
	ExploitationState string `json:"exploitationState,omitempty"`
	// ExploitationVectors: Optional. List of exploitation vectors for the
	// vulnerability.
	//
	// Possible values:
	//   "EXPLOITATION_VECTOR_UNSPECIFIED" - Unspecified exploitation vector.
	//   "ADMINISTRATIVE_INTERFACE" - Administrative interface vector.
	//   "BLUETOOTH_ACCESS" - Bluetooth access vector.
	//   "BROWSER" - Browser vector.
	//   "COMPROMISED_COMMUNICATION_CHANNEL" - Compromised communication channel
	// vector.
	//   "EMAIL" - Email vector.
	//   "EXPOSED_WEB_APPLICATION" - Exposed web application vector.
	//   "LOCAL_NETWORK_ACCESS" - Local network access vector.
	//   "MALICIOUS_APPLICATION" - Malicious application vector.
	//   "MALICIOUS_FILE" - Malicious file vector.
	//   "MALICIOUS_SERVER" - Malicious server vector.
	//   "OPEN_PORT" - Open port vector.
	//   "PHYSICAL_ACCESS" - Physical access vector.
	//   "SHORT_RANGE_RADIO" - Short range radio vector.
	//   "UNSPECIFIED_LOCAL_VECTOR" - Unspecified local vector.
	//   "UNSPECIFIED_REMOTE_VECTOR" - Unspecified remote vector.
	//   "VPN_ACCESS" - VPN access vector.
	//   "WIFI_ACCESS" - WiFi access vector.
	ExploitationVectors []string `json:"exploitationVectors,omitempty"`
	// MatchedTechnologies: Optional. The specific technologies from the configured
	// watchlist that triggered the match. Ex: "Apache Struts".
	MatchedTechnologies []string `json:"matchedTechnologies,omitempty"`
	// Priority: Optional. The priority level of the vulnerability data. Ex: "P1".
	//
	// Possible values:
	//   "PRIORITY_UNSPECIFIED" - Unspecified priority.
	//   "P0" - Priority level 0.
	//   "P1" - Priority level 1.
	//   "P2" - Priority level 2.
	//   "P3" - Priority level 3.
	//   "P4" - Priority level 4.
	Priority string `json:"priority,omitempty"`
	// ProductFixes: Optional. List of product fixes for the vulnerability.
	ProductFixes []*ProductFix `json:"productFixes,omitempty"`
	// PublicExploits: Optional. List of public exploits.
	PublicExploits []*PublicExploit `json:"publicExploits,omitempty"`
	// PubliclyAvailableExploit: Output only. Whether a publicly available exploit
	// exists.
	PubliclyAvailableExploit bool `json:"publiclyAvailableExploit,omitempty"`
	// RiskRating: Required. The risk rating of the vulnerability.
	//
	// Possible values:
	//   "RISK_RATING_UNSPECIFIED" - Unspecified risk rating. This is the default
	// value when the risk rating is not set.
	//   "LOW" - Low risk rating.
	//   "MEDIUM" - Medium risk rating.
	//   "HIGH" - High risk rating.
	//   "CRITICAL" - Critical risk rating.
	//   "UNRATED" - The vulnerability has been assessed, but a specific risk
	// rating could not be determined or assigned.
	RiskRating string `json:"riskRating,omitempty"`
	// Technologies: Required. All technologies affected by the vulnerability. Ex:
	// "Apache Struts".
	Technologies []string `json:"technologies,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Associations") 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. "Associations") 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 VulnerabilityMatch) MarshalJSON() ([]byte, error) {
	type NoMethod VulnerabilityMatch
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

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

// GenerateOrgProfile: Triggers the generation of a Customer Profile for a
// project.
//
//   - name: The name of the project to generate the profile for. Format:
//     projects/{project}.
func (r *ProjectsService) GenerateOrgProfile(name string, generateorgprofileconfigurationrequest *GenerateOrgProfileConfigurationRequest) *ProjectsGenerateOrgProfileCall {
	c := &ProjectsGenerateOrgProfileCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.generateorgprofileconfigurationrequest = generateorgprofileconfigurationrequest
	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 *ProjectsGenerateOrgProfileCall) Fields(s ...googleapi.Field) *ProjectsGenerateOrgProfileCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Benign: Marks an alert as benign - BENIGN.
//
//   - name: Name of the alert to mark as a benign. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) Benign(name string, markalertasbenignrequest *MarkAlertAsBenignRequest) *ProjectsAlertsBenignCall {
	c := &ProjectsAlertsBenignCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertasbenignrequest = markalertasbenignrequest
	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 *ProjectsAlertsBenignCall) Fields(s ...googleapi.Field) *ProjectsAlertsBenignCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Duplicate: Marks an alert as a duplicate of another alert. - DUPLICATE.
//
//   - name: Name of the alert to mark as a duplicate. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) Duplicate(name string, markalertasduplicaterequest *MarkAlertAsDuplicateRequest) *ProjectsAlertsDuplicateCall {
	c := &ProjectsAlertsDuplicateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertasduplicaterequest = markalertasduplicaterequest
	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 *ProjectsAlertsDuplicateCall) Fields(s ...googleapi.Field) *ProjectsAlertsDuplicateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// EnumerateFacets: EnumerateAlertFacets returns the facets and the number of
// alerts that meet the filter criteria and have that value for each facet.
//
// - parent: Parent of the alerts.
func (r *ProjectsAlertsService) EnumerateFacets(parent string) *ProjectsAlertsEnumerateFacetsCall {
	c := &ProjectsAlertsEnumerateFacetsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Filter on what alerts will be
// enumerated.
func (c *ProjectsAlertsEnumerateFacetsCall) Filter(filter string) *ProjectsAlertsEnumerateFacetsCall {
	c.urlParams_.Set("filter", filter)
	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 *ProjectsAlertsEnumerateFacetsCall) Fields(s ...googleapi.Field) *ProjectsAlertsEnumerateFacetsCall {
	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 *ProjectsAlertsEnumerateFacetsCall) IfNoneMatch(entityTag string) *ProjectsAlertsEnumerateFacetsCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsAlertsEnumerateFacetsCall) 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/{+parent}/alerts:enumerateFacets")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.alerts.enumerateFacets", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

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

// Escalate: Marks an alert as escalated - ESCALATED.
//
//   - name: Name of the alert to mark as escalated. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) Escalate(name string, markalertasescalatedrequest *MarkAlertAsEscalatedRequest) *ProjectsAlertsEscalateCall {
	c := &ProjectsAlertsEscalateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertasescalatedrequest = markalertasescalatedrequest
	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 *ProjectsAlertsEscalateCall) Fields(s ...googleapi.Field) *ProjectsAlertsEscalateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// FalsePositive: Marks an alert as a false positive - FALSE_POSITIVE.
//
//   - name: Name of the alert to mark as a false positive. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) FalsePositive(name string, markalertasfalsepositiverequest *MarkAlertAsFalsePositiveRequest) *ProjectsAlertsFalsePositiveCall {
	c := &ProjectsAlertsFalsePositiveCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertasfalsepositiverequest = markalertasfalsepositiverequest
	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 *ProjectsAlertsFalsePositiveCall) Fields(s ...googleapi.Field) *ProjectsAlertsFalsePositiveCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Get: Get an alert by name.
//
// - name: Name of the alert to get. Format: projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) Get(name string) *ProjectsAlertsGetCall {
	c := &ProjectsAlertsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsAlertsGetCall) Fields(s ...googleapi.Field) *ProjectsAlertsGetCall {
	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 *ProjectsAlertsGetCall) IfNoneMatch(entityTag string) *ProjectsAlertsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsAlertsGetCall) 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/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.alerts.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

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

// List: Get a list of alerts that meet the filter criteria.
//
// - parent: Parent of the alerts. Format: projects/{project}.
func (r *ProjectsAlertsService) List(parent string) *ProjectsAlertsListCall {
	c := &ProjectsAlertsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Filter criteria. Supported
// fields for filtering include: * `audit.create_time` * `audit.creator` *
// `audit.update_time` * `audit.updater` *
// `detail.data_leak.discovery_document_ids` * `detail.data_leak.severity` *
// `detail.detail_type` * `detail.initial_access_broker.discovery_document_ids`
// * `detail.initial_access_broker.severity` *
// `detail.insider_threat.discovery_document_ids` *
// `detail.insider_threat.severity` * `finding_count` *
// `priority_analysis.priority_level` * `relevance_analysis.confidence` *
// `relevance_analysis.relevance_level` * `relevance_analysis.relevant` *
// `severity_analysis.severity_level` * `state` Examples: * `detail.detail_type
// = "initial_access_broker" * `detail.detail_type != "data_leak" *
// `detail.insider_threat.severity = "HIGH" * `audit.create_time >=
// "2026-04-03T00:00:00Z" AND audit.create_time < "2026-04-06T00:00:00Z" *
// `state = "NEW" OR state = "TRIAGED" * `severity_analysis.severity_level =
// "SEVERITY_LEVEL_CRITICAL"
func (c *ProjectsAlertsListCall) Filter(filter string) *ProjectsAlertsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Order by criteria in the csv
// format: "field1, field2 desc" or "field1, field2" or "field1 asc, field2".
// If a field is specified without `asc` or `desc`, ascending order is used by
// default. Supported fields for ordering are identical to those supported for
// filtering. Examples: * `audit.create_time desc` * `audit.update_time asc` *
// `audit.create_time desc, severity_analysis.severity_level desc`
func (c *ProjectsAlertsListCall) OrderBy(orderBy string) *ProjectsAlertsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Page size. Default to 100
// alerts per page. Maximum is 1000 alerts per page.
func (c *ProjectsAlertsListCall) PageSize(pageSize int64) *ProjectsAlertsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

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

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsAlertsListCall) Fields(s ...googleapi.Field) *ProjectsAlertsListCall {
	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 *ProjectsAlertsListCall) IfNoneMatch(entityTag string) *ProjectsAlertsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsAlertsListCall) 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/{+parent}/alerts")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.alerts.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsAlertsListCall) Pages(ctx context.Context, f func(*ListAlertsResponse) 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 ProjectsAlertsNotActionableCall struct {
	s                               *Service
	name                            string
	markalertasnotactionablerequest *MarkAlertAsNotActionableRequest
	urlParams_                      gensupport.URLParams
	ctx_                            context.Context
	header_                         http.Header
}

// NotActionable: Marks an alert as not actionable - NOT_ACTIONABLE.
//
//   - name: Name of the alert to mark as a not actionable. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) NotActionable(name string, markalertasnotactionablerequest *MarkAlertAsNotActionableRequest) *ProjectsAlertsNotActionableCall {
	c := &ProjectsAlertsNotActionableCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertasnotactionablerequest = markalertasnotactionablerequest
	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 *ProjectsAlertsNotActionableCall) Fields(s ...googleapi.Field) *ProjectsAlertsNotActionableCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Read: Marks an alert as read - READ.
//
//   - name: Name of the alert to mark as read. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) Read(name string, markalertasreadrequest *MarkAlertAsReadRequest) *ProjectsAlertsReadCall {
	c := &ProjectsAlertsReadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertasreadrequest = markalertasreadrequest
	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 *ProjectsAlertsReadCall) Fields(s ...googleapi.Field) *ProjectsAlertsReadCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Resolve: Marks an alert to closed state - RESOLVED.
//
//   - name: Name of the alert to mark as resolved. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) Resolve(name string, markalertasresolvedrequest *MarkAlertAsResolvedRequest) *ProjectsAlertsResolveCall {
	c := &ProjectsAlertsResolveCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertasresolvedrequest = markalertasresolvedrequest
	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 *ProjectsAlertsResolveCall) Fields(s ...googleapi.Field) *ProjectsAlertsResolveCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// TrackExternally: Marks an alert as tracked externally - TRACKED_EXTERNALLY.
//
//   - name: Name of the alert to mark as tracked externally. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) TrackExternally(name string, markalertastrackedexternallyrequest *MarkAlertAsTrackedExternallyRequest) *ProjectsAlertsTrackExternallyCall {
	c := &ProjectsAlertsTrackExternallyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertastrackedexternallyrequest = markalertastrackedexternallyrequest
	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 *ProjectsAlertsTrackExternallyCall) Fields(s ...googleapi.Field) *ProjectsAlertsTrackExternallyCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Triage: Marks an alert as triaged - TRIAGED.
//
//   - name: Name of the alert to mark as a triaged. Format:
//     projects/{project}/alerts/{alert}.
func (r *ProjectsAlertsService) Triage(name string, markalertastriagedrequest *MarkAlertAsTriagedRequest) *ProjectsAlertsTriageCall {
	c := &ProjectsAlertsTriageCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.markalertastriagedrequest = markalertastriagedrequest
	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 *ProjectsAlertsTriageCall) Fields(s ...googleapi.Field) *ProjectsAlertsTriageCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Get: Gets a specific document associated with an alert.
//
//   - name: Name of the alert document to get. Format:
//     projects/{project}/alerts/{alert}/documents/{document}.
func (r *ProjectsAlertsDocumentsService) Get(name string) *ProjectsAlertsDocumentsGetCall {
	c := &ProjectsAlertsDocumentsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsAlertsDocumentsGetCall) Fields(s ...googleapi.Field) *ProjectsAlertsDocumentsGetCall {
	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 *ProjectsAlertsDocumentsGetCall) IfNoneMatch(entityTag string) *ProjectsAlertsDocumentsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsAlertsDocumentsGetCall) 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/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.alerts.documents.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

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

// Get: Get a configuration by name.
//
//   - name: Name of the configuration to get. Format:
//     vaults/{vault}/configurations/{configuration}.
func (r *ProjectsConfigurationsService) Get(name string) *ProjectsConfigurationsGetCall {
	c := &ProjectsConfigurationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsConfigurationsGetCall) Fields(s ...googleapi.Field) *ProjectsConfigurationsGetCall {
	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 *ProjectsConfigurationsGetCall) IfNoneMatch(entityTag string) *ProjectsConfigurationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsConfigurationsGetCall) 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/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.configurations.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

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

// List: Get a list of configurations that meet the filter criteria.
//
// - parent: Parent of the configuration. Format: vaults/{vault}.
func (r *ProjectsConfigurationsService) List(parent string) *ProjectsConfigurationsListCall {
	c := &ProjectsConfigurationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Filter criteria.
func (c *ProjectsConfigurationsListCall) Filter(filter string) *ProjectsConfigurationsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Order by criteria in the csv
// format: "field1,field2 desc" or "field1,field2" or "field1 asc, field2".
func (c *ProjectsConfigurationsListCall) OrderBy(orderBy string) *ProjectsConfigurationsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Page size.
func (c *ProjectsConfigurationsListCall) PageSize(pageSize int64) *ProjectsConfigurationsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Page token.
func (c *ProjectsConfigurationsListCall) PageToken(pageToken string) *ProjectsConfigurationsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsConfigurationsListCall) Fields(s ...googleapi.Field) *ProjectsConfigurationsListCall {
	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 *ProjectsConfigurationsListCall) IfNoneMatch(entityTag string) *ProjectsConfigurationsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsConfigurationsListCall) 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/{+parent}/configurations")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.configurations.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsConfigurationsListCall) Pages(ctx context.Context, f func(*ListConfigurationsResponse) 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 ProjectsConfigurationsUpsertCall struct {
	s             *Service
	parent        string
	configuration *Configuration
	urlParams_    gensupport.URLParams
	ctx_          context.Context
	header_       http.Header
}

// Upsert: Creates or updates a configuration.
//
// - parent: Parent of the configuration.
func (r *ProjectsConfigurationsService) Upsert(parent string, configuration *Configuration) *ProjectsConfigurationsUpsertCall {
	c := &ProjectsConfigurationsUpsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.configuration = configuration
	return c
}

// PublishTime sets the optional parameter "publishTime": Time that the
// configuration should be considered to have been published. This is an
// advanced feature used when onboarding and bulk loading data from other
// systems. Do not set this field without consulting with the API team.
func (c *ProjectsConfigurationsUpsertCall) PublishTime(publishTime string) *ProjectsConfigurationsUpsertCall {
	c.urlParams_.Set("publishTime", publishTime)
	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 *ProjectsConfigurationsUpsertCall) Fields(s ...googleapi.Field) *ProjectsConfigurationsUpsertCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// List: List configuration revisions that meet the filter criteria.
//
// - parent: The name of the Configuration to retrieve Revisions for.
func (r *ProjectsConfigurationsRevisionsService) List(parent string) *ProjectsConfigurationsRevisionsListCall {
	c := &ProjectsConfigurationsRevisionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": An AIP-160 filter string
func (c *ProjectsConfigurationsRevisionsListCall) Filter(filter string) *ProjectsConfigurationsRevisionsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Specify ordering of response
func (c *ProjectsConfigurationsRevisionsListCall) OrderBy(orderBy string) *ProjectsConfigurationsRevisionsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Page Size
func (c *ProjectsConfigurationsRevisionsListCall) PageSize(pageSize int64) *ProjectsConfigurationsRevisionsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token provided by
// the API
func (c *ProjectsConfigurationsRevisionsListCall) PageToken(pageToken string) *ProjectsConfigurationsRevisionsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsConfigurationsRevisionsListCall) Fields(s ...googleapi.Field) *ProjectsConfigurationsRevisionsListCall {
	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 *ProjectsConfigurationsRevisionsListCall) IfNoneMatch(entityTag string) *ProjectsConfigurationsRevisionsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsConfigurationsRevisionsListCall) 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/{+parent}/revisions")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.configurations.revisions.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsConfigurationsRevisionsListCall) Pages(ctx context.Context, f func(*ListConfigurationRevisionsResponse) 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 ProjectsFindingsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Get a finding by name. The `name` field should have the format:
// `projects/{project}/findings/{finding}`
//
// - name: Name of the finding to get.
func (r *ProjectsFindingsService) Get(name string) *ProjectsFindingsGetCall {
	c := &ProjectsFindingsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsFindingsGetCall) Fields(s ...googleapi.Field) *ProjectsFindingsGetCall {
	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 *ProjectsFindingsGetCall) IfNoneMatch(entityTag string) *ProjectsFindingsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsFindingsGetCall) 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/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.findings.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

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

// List: Get a list of findings that meet the filter criteria. The `parent`
// field in ListFindingsRequest should have the format: projects/{project}
//
// - parent: Parent of the findings.
func (r *ProjectsFindingsService) List(parent string) *ProjectsFindingsListCall {
	c := &ProjectsFindingsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Filter criteria.
func (c *ProjectsFindingsListCall) Filter(filter string) *ProjectsFindingsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// OrderBy sets the optional parameter "orderBy": Order by criteria in the csv
// format: "field1,field2 desc" or "field1,field2" or "field1 asc, field2".
func (c *ProjectsFindingsListCall) OrderBy(orderBy string) *ProjectsFindingsListCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Page size.
func (c *ProjectsFindingsListCall) PageSize(pageSize int64) *ProjectsFindingsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Page token.
func (c *ProjectsFindingsListCall) PageToken(pageToken string) *ProjectsFindingsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsFindingsListCall) Fields(s ...googleapi.Field) *ProjectsFindingsListCall {
	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 *ProjectsFindingsListCall) IfNoneMatch(entityTag string) *ProjectsFindingsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsFindingsListCall) 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/{+parent}/findings")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.findings.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsFindingsListCall) Pages(ctx context.Context, f func(*ListFindingsResponse) 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 ProjectsFindingsSearchCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Search: SearchFindings is a more powerful version of ListFindings that
// supports complex queries like "findings for alerts" using functions such as
// `has_alert` in the query string. The `parent` field in SearchFindingsRequest
// should have the format: projects/{project} Example to search for findings
// for a specific issue:
// `has_alert("name=\"projects/gti-12345/alerts/alert-12345\"")`
//
// - parent: Parent of the findings. Format: vaults/{vault}.
func (r *ProjectsFindingsService) Search(parent string) *ProjectsFindingsSearchCall {
	c := &ProjectsFindingsSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// OrderBy sets the optional parameter "orderBy": Order by criteria in the csv
// format: "field1,field2 desc" or "field1,field2" or "field1 asc, field2".
func (c *ProjectsFindingsSearchCall) OrderBy(orderBy string) *ProjectsFindingsSearchCall {
	c.urlParams_.Set("orderBy", orderBy)
	return c
}

// PageSize sets the optional parameter "pageSize": Page size.
func (c *ProjectsFindingsSearchCall) PageSize(pageSize int64) *ProjectsFindingsSearchCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": Page token.
func (c *ProjectsFindingsSearchCall) PageToken(pageToken string) *ProjectsFindingsSearchCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Query sets the optional parameter "query": Query on what findings will be
// returned. This supports the same filter criteria as
// FindingService.ListFindings as well as the following relationship query
// `has_alert`. Example: -
// `has_alert("name=\"projects/gti-12345/alerts/alert-12345\"")`
func (c *ProjectsFindingsSearchCall) Query(query string) *ProjectsFindingsSearchCall {
	c.urlParams_.Set("query", query)
	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 *ProjectsFindingsSearchCall) Fields(s ...googleapi.Field) *ProjectsFindingsSearchCall {
	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 *ProjectsFindingsSearchCall) IfNoneMatch(entityTag string) *ProjectsFindingsSearchCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsFindingsSearchCall) 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/{+parent}/findings:search")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "threatintelligence.projects.findings.search", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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