// 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 firebasecrashlytics provides access to the Firebase Crashlytics API.
//
// For product documentation, see: https://firebase.google.com/docs/crashlytics
//
// # 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/firebasecrashlytics/v1alpha"
//	...
//	ctx := context.Background()
//	firebasecrashlyticsService, err := firebasecrashlytics.NewService(ctx)
//
// In this example, Google Application Default Credentials are used for
// authentication. For information on how to create and obtain Application
// Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
//
// # Other authentication options
//
// By default, all available scopes (see "Constants") are used to authenticate.
// To restrict scopes, use [google.golang.org/api/option.WithScopes]:
//
//	firebasecrashlyticsService, err := firebasecrashlytics.NewService(ctx, option.WithScopes(firebasecrashlytics.FirebaseScope))
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	firebasecrashlyticsService, err := firebasecrashlytics.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, ...)
//	firebasecrashlyticsService, err := firebasecrashlytics.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package firebasecrashlytics // import "google.golang.org/api/firebasecrashlytics/v1alpha"

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 = "firebasecrashlytics:v1alpha"
const apiName = "firebasecrashlytics"
const apiVersion = "v1alpha"
const basePath = "https://firebasecrashlytics.googleapis.com/"
const basePathTemplate = "https://firebasecrashlytics.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://firebasecrashlytics.mtls.googleapis.com/"

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

	// View and administer all your Firebase data and settings
	FirebaseScope = "https://www.googleapis.com/auth/firebase"
)

// NewService creates a new Service.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
	scopesOption := internaloption.WithDefaultScopes(
		"https://www.googleapis.com/auth/cloud-platform",
		"https://www.googleapis.com/auth/firebase",
	)
	// NOTE: prepend, so we don't override user-specified scopes.
	opts = append([]option.ClientOption{scopesOption}, opts...)
	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
	opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate))
	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
	opts = append(opts, internaloption.EnableNewAuthLibrary())
	client, endpoint, err := htransport.NewClient(ctx, opts...)
	if err != nil {
		return nil, err
	}
	s := &Service{client: client, BasePath: basePath, logger: internaloption.GetLogger(opts)}
	s.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.Apps = NewProjectsAppsService(s)
	return rs
}

type ProjectsService struct {
	s *Service

	Apps *ProjectsAppsService
}

func NewProjectsAppsService(s *Service) *ProjectsAppsService {
	rs := &ProjectsAppsService{s: s}
	rs.Events = NewProjectsAppsEventsService(s)
	rs.Issues = NewProjectsAppsIssuesService(s)
	rs.Reports = NewProjectsAppsReportsService(s)
	rs.Users = NewProjectsAppsUsersService(s)
	return rs
}

type ProjectsAppsService struct {
	s *Service

	Events *ProjectsAppsEventsService

	Issues *ProjectsAppsIssuesService

	Reports *ProjectsAppsReportsService

	Users *ProjectsAppsUsersService
}

func NewProjectsAppsEventsService(s *Service) *ProjectsAppsEventsService {
	rs := &ProjectsAppsEventsService{s: s}
	return rs
}

type ProjectsAppsEventsService struct {
	s *Service
}

func NewProjectsAppsIssuesService(s *Service) *ProjectsAppsIssuesService {
	rs := &ProjectsAppsIssuesService{s: s}
	rs.Notes = NewProjectsAppsIssuesNotesService(s)
	return rs
}

type ProjectsAppsIssuesService struct {
	s *Service

	Notes *ProjectsAppsIssuesNotesService
}

func NewProjectsAppsIssuesNotesService(s *Service) *ProjectsAppsIssuesNotesService {
	rs := &ProjectsAppsIssuesNotesService{s: s}
	return rs
}

type ProjectsAppsIssuesNotesService struct {
	s *Service
}

func NewProjectsAppsReportsService(s *Service) *ProjectsAppsReportsService {
	rs := &ProjectsAppsReportsService{s: s}
	return rs
}

type ProjectsAppsReportsService struct {
	s *Service
}

func NewProjectsAppsUsersService(s *Service) *ProjectsAppsUsersService {
	rs := &ProjectsAppsUsersService{s: s}
	return rs
}

type ProjectsAppsUsersService struct {
	s *Service
}

// BatchGetEventsResponse: Response message for the BatchGetEvents method.
type BatchGetEventsResponse struct {
	// Events: The list of retrieved events.
	Events []*Event `json:"events,omitempty"`

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

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

// BatchUpdateIssuesRequest: Request message for the BatchUpdateIssues method.
type BatchUpdateIssuesRequest struct {
	// Requests: Required. The request message specifying the resources to update.
	// A maximum of 100 issues can be modified in a batch.
	Requests []*UpdateIssueRequest `json:"requests,omitempty"`
	// UpdateMask: Optional. The list of Issue fields to update. If this is set,
	// the update_mask field in the UpdateIssueRequest messages must either be
	// empty or match this field.
	UpdateMask string `json:"updateMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Requests") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Requests") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// BatchUpdateIssuesResponse: Response message for the BatchUpdateIssues
// method.
type BatchUpdateIssuesResponse struct {
	// Issues: Issues updated in the same order as in BatchUpdateIssuesRequest.
	Issues []*Issue `json:"issues,omitempty"`

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

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

// Breadcrumb: Analytics events recorded during the session.
type Breadcrumb struct {
	// EventTime: Device timestamp for the event.
	EventTime string `json:"eventTime,omitempty"`
	// Params: Event parameters.
	Params map[string]string `json:"params,omitempty"`
	// Title: Analytic event name.
	Title string `json:"title,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EventTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EventTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Browser: Web browser metadata.
type Browser struct {
	// Browser: Browser name.
	Browser string `json:"browser,omitempty"`
	// DisplayName: Browser name and version number. Formatted to be suitable for
	// passing to BrowserFilter.
	DisplayName string `json:"displayName,omitempty"`
	// DisplayVersion: Browser display version number.
	DisplayVersion string `json:"displayVersion,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Browser") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Browser") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// DeleteUserCrashReportsResponse: Response message for the
// DeleteUserCrashReports method. All crash reports associated with the
// specified user will be deleted typically within 24 hours of receiving the
// crash report.
type DeleteUserCrashReportsResponse struct {
	// TargetCompleteTime: Target time to complete the delete crash reports
	// operation.
	TargetCompleteTime string `json:"targetCompleteTime,omitempty"`

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

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

// Device: Mobile device metadata.
type Device struct {
	// Architecture: Device processor architecture.
	Architecture string `json:"architecture,omitempty"`
	// CompanyName: An invariant name of the manufacturer that submitted this
	// product in its most recognizable public form, e.g. "Google".
	CompanyName string `json:"companyName,omitempty"`
	// DisplayName: Full device name, suitable for passing to DeviceFilter. Format:
	// "manufacturer (model)".
	DisplayName string `json:"displayName,omitempty"`
	// FormFactor: See FormFactor message.
	//
	// Possible values:
	//   "FORM_FACTOR_UNSPECIFIED" - Unknown.
	//   "PHONE" - Includes mobile phones, small foldables and other form factors
	// not fitting the other categories.
	//   "TABLET" - Includes tablets and larger foldables.
	//   "DESKTOP" - Includes desktops, laptops, Chromebooks, etc.
	//   "TV" - Includes televisions and set-tops.
	//   "WATCH" - Includes both watches and other wearables.
	FormFactor string `json:"formFactor,omitempty"`
	// Manufacturer: Device brand name which is consistent with
	// android.os.Build.BRAND.
	Manufacturer string `json:"manufacturer,omitempty"`
	// MarketingName: Marketing name, most recognizable public form, e.g. "Pixel
	// 6".
	MarketingName string `json:"marketingName,omitempty"`
	// Model: The model name which is consistent with android.os.Build.MODEL, e.g.
	// ("SPH-L710", "GT-I9300").
	Model string `json:"model,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Architecture") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Architecture") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

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

// Error: A non-fatal error and its stacktrace, only from Apple apps.
type Error struct {
	// Blamed: True when the Crashlytics analysis has determined that the
	// stacktrace in this error is where the fault occurred.
	Blamed bool `json:"blamed,omitempty"`
	// Code: Error code associated with the app's custom logged NSError.
	Code int64 `json:"code,omitempty,string"`
	// Frames: The frames in the error's stacktrace.
	Frames []*Frame `json:"frames,omitempty"`
	// Queue: The queue on which the thread was running.
	Queue string `json:"queue,omitempty"`
	// Subtitle: The subtitle of the error.
	Subtitle string `json:"subtitle,omitempty"`
	// Title: The title of the error.
	Title string `json:"title,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Blamed") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Blamed") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Event: The message describing a single Crashlytics event. Related to
// BigQuery export schema, which can be found at Export Crashlytics data to
// BigQuery
// (https://firebase.google.com/docs/crashlytics/bigquery-export#dataset-schema-crashlytics)
type Event struct {
	// AppOrientation: App orientation at the time of the crash (portrait or
	// landscape).
	AppOrientation string `json:"appOrientation,omitempty"`
	// BlameFrame: The stack trace frame blamed by Crashlytics processing. May not
	// be present in future analyzer.
	BlameFrame *Frame `json:"blameFrame,omitempty"`
	// Breadcrumbs: Analytics events recorded by the analytics SDK during the
	// session.
	Breadcrumbs []*Breadcrumb `json:"breadcrumbs,omitempty"`
	// Browser: Browser and version.
	Browser *Browser `json:"browser,omitempty"`
	// BuildStamp: Metadata provided by the app's build system, including version
	// control repository info.
	BuildStamp string `json:"buildStamp,omitempty"`
	// BundleOrPackage: The bundle name for iOS apps or the package name of Android
	// apps. Format: "com.mycompany.myapp".
	BundleOrPackage string `json:"bundleOrPackage,omitempty"`
	// CrashlyticsSdkVersion: Crashlytics SDK version.
	CrashlyticsSdkVersion string `json:"crashlyticsSdkVersion,omitempty"`
	// CustomKeys: Custom keys set by the developer during the session.
	CustomKeys map[string]string `json:"customKeys,omitempty"`
	// Device: Mobile device metadata.
	Device *Device `json:"device,omitempty"`
	// DeviceOrientation: Device orientation at the time of the crash (portrait or
	// landscape).
	DeviceOrientation string `json:"deviceOrientation,omitempty"`
	// Errors: Apple only. A non-fatal error captured by the iOS SDK and its
	// stacktrace.
	Errors []*Error `json:"errors,omitempty"`
	// EventId: Output only. Immutable. The unique event identifier is assigned
	// during processing.
	EventId string `json:"eventId,omitempty"`
	// EventTime: Device timestamp that the event was recorded.
	EventTime string `json:"eventTime,omitempty"`
	// Exceptions: Android and web only. Exceptions that occurred during this
	// event. Nested exceptions are presented in reverse chronological order, so
	// that the last record is the first exception thrown.
	Exceptions []*Exception `json:"exceptions,omitempty"`
	// InstallationUuid: Unique identifier for the device-app installation. This
	// field is used to compute the unique number of impacted users.
	InstallationUuid string `json:"installationUuid,omitempty"`
	// Issue: Details for the [Issue] assigned to this [Event].
	Issue *Issue `json:"issue,omitempty"`
	// IssueSubtitle: The subtitle of the issue in which the event was grouped.
	// This is usually a symbol or an exception message.
	IssueSubtitle string `json:"issueSubtitle,omitempty"`
	// IssueTitle: The title of the issue in which the event was grouped. This is
	// usually a source file or method name.
	IssueTitle string `json:"issueTitle,omitempty"`
	// IssueVariant: Details for the [IssueVariant] assigned to this [Event].
	IssueVariant *IssueVariant `json:"issueVariant,omitempty"`
	// Logs: Log messages recorded by the developer during the session.
	Logs []*Log `json:"logs,omitempty"`
	// Memory: Mobile device memory usage.
	Memory *Memory `json:"memory,omitempty"`
	// Name: Required. Output only. Immutable. Identifier. The name of the event
	// resource. Format: "projects/{project}/apps/{app_id}/events/{event}".
	Name string `json:"name,omitempty"`
	// OperatingSystem: Operating system and version.
	OperatingSystem *OperatingSystem `json:"operatingSystem,omitempty"`
	// Platform: ANDROID, IOS, or WEB.
	Platform string `json:"platform,omitempty"`
	// ProcessState: The state of the app process at the time of the event.
	ProcessState string `json:"processState,omitempty"`
	// ReceivedTime: Server timestamp that the event was received by Crashlytics.
	ReceivedTime string `json:"receivedTime,omitempty"`
	// RoutePath: Output only. Web only. The route path of the web application when
	// the event occurred, excluding query parameters and fragment.
	RoutePath string `json:"routePath,omitempty"`
	// SessionId: Unique identifier for the Firebase session.
	SessionId string `json:"sessionId,omitempty"`
	// Storage: Mobile device disk/flash usage.
	Storage *Storage `json:"storage,omitempty"`
	// Threads: Application threads present at the time the event was recorded.
	// Each contains a stacktrace. One thread will be blamed for the error.
	Threads []*Thread `json:"threads,omitempty"`
	// User: End user identifiers for the device owner.
	User *User `json:"user,omitempty"`
	// Version: Mobile application version.
	Version *Version `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AppOrientation") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AppOrientation") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Exception: A Java or Javascript exception and its stacktrace. Only from
// Android or web apps.
type Exception struct {
	// Blamed: True when the Crashlytics analysis has determined that this thread
	// is where the fault occurred.
	Blamed bool `json:"blamed,omitempty"`
	// ExceptionMessage: A message associated with the exception.
	ExceptionMessage string `json:"exceptionMessage,omitempty"`
	// Frames: The frames in the exception's stacktrace.
	Frames []*Frame `json:"frames,omitempty"`
	// Nested: True for all but the last-thrown exception (i.e. the first record).
	Nested bool `json:"nested,omitempty"`
	// Subtitle: The subtitle of the exception.
	Subtitle string `json:"subtitle,omitempty"`
	// Title: The title of the exception.
	Title string `json:"title,omitempty"`
	// Type: The exception type e.g. java.lang.IllegalStateException.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Blamed") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Blamed") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// FirebaseSessionEvent: Sessions recorded by the Firebase App Quality Sessions
// SDK.
type FirebaseSessionEvent struct {
	// Device: Mobile device metadata.
	Device *Device `json:"device,omitempty"`
	// EventTime: The start timestamp for the session event.
	EventTime string `json:"eventTime,omitempty"`
	// EventType: Session event type. The SDK only supports SESSION_START events at
	// this time.
	//
	// Possible values:
	//   "SESSION_EVENT_TYPE_UNKNOWN" - Unknown.
	//   "SESSION_START" - Application session started.
	EventType string `json:"eventType,omitempty"`
	// FirebaseInstallationId: Uniquely identifies a device with Firebase apps
	// installed.
	FirebaseInstallationId string `json:"firebaseInstallationId,omitempty"`
	// FirstSessionId: The identifier of the first session since the last cold
	// start. This id and the session_id will be the same for app launches.
	FirstSessionId string `json:"firstSessionId,omitempty"`
	// OperatingSystem: Operating system and version.
	OperatingSystem *OperatingSystem `json:"operatingSystem,omitempty"`
	// SessionId: Unique identifier for the Firebase session.
	SessionId string `json:"sessionId,omitempty"`
	// SessionIndex: Indicates the number of sessions since the last cold start.
	SessionIndex int64 `json:"sessionIndex,omitempty"`
	// Version: Mobile application version numbers.
	Version *Version `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Device") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Device") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Frame: A frame in a stacktrace.
type Frame struct {
	// Address: The address in the binary image which contains the code. Present
	// for native frames.
	Address int64 `json:"address,omitempty,string"`
	// Blamed: True when the Crashlytics analysis has determined that this frame is
	// likely to be the cause of the error.
	Blamed bool `json:"blamed,omitempty"`
	// Column: The column on the line.
	Column int64 `json:"column,omitempty,string"`
	// File: The name of the source file in which the frame is found.
	File string `json:"file,omitempty"`
	// Library: The display name of the library that includes the frame.
	Library string `json:"library,omitempty"`
	// Line: The line number in the file of the frame.
	Line int64 `json:"line,omitempty,string"`
	// Offset: The byte offset into the binary image that contains the code.
	// Present for native frames.
	Offset int64 `json:"offset,omitempty,string"`
	// Owner: One of DEVELOPER, VENDOR, RUNTIME, PLATFORM, or SYSTEM.
	Owner string `json:"owner,omitempty"`
	// Symbol: The frame symbol after it has been deobfuscated or symbolicated. The
	// raw symbol from the device if it could not be hydrated.
	Symbol string `json:"symbol,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 Frame) MarshalJSON() ([]byte, error) {
	type NoMethod Frame
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// IntervalMetrics: A set of computed metric values for a time interval
type IntervalMetrics struct {
	// EndTime: The end of the interval covered by the computation.
	EndTime string `json:"endTime,omitempty"`
	// EventsCount: The total count of events in the interval.
	EventsCount int64 `json:"eventsCount,omitempty,string"`
	// ImpactedUsersCount: The number of distinct users in the set of events.
	ImpactedUsersCount int64 `json:"impactedUsersCount,omitempty,string"`
	// SessionsCount: The number of distinct sessions in the set of events.
	SessionsCount int64 `json:"sessionsCount,omitempty,string"`
	// StartTime: The start of the interval covered by the computation.
	StartTime string `json:"startTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTime") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Issue: An issue describes a set of similar events that have been analyzed by
// Crashlytics and grouped together. All events within an issue will be of the
// same error_type: crash, non-fatal exception or ANR. All events within an
// issue will contain similar stack traces in their blamed thread.
type Issue struct {
	// ErrorType: Output only. Immutable. Indicates whether this issue is a crash,
	// non-fatal exception, or ANR.
	//
	// Possible values:
	//   "ERROR_TYPE_UNSPECIFIED" - Unknown.
	//   "FATAL" - Fatal crash event.
	//   "NON_FATAL" - Non-fatal event, such as a caught Java exception or NSError
	// on iOS.
	//   "ANR" - Application not responding error, Android only.
	ErrorType string `json:"errorType,omitempty"`
	// FirstSeenTime: Output only. Immutable. The first time this issue was seen.
	FirstSeenTime string `json:"firstSeenTime,omitempty"`
	// FirstSeenVersion: Output only. Immutable. The first app display_version in
	// which this issue was seen, populated for mobile issues only.
	FirstSeenVersion string `json:"firstSeenVersion,omitempty"`
	// Id: Output only. Immutable. Unique identifier for the issue.
	Id string `json:"id,omitempty"`
	// LastSeenTime: Output only. The most recent time this issue was seen.
	LastSeenTime string `json:"lastSeenTime,omitempty"`
	// LastSeenVersion: Output only. The most recent app display_version in which
	// this issue was seen, populated for mobile issues only.
	LastSeenVersion string `json:"lastSeenVersion,omitempty"`
	// Name: Required. Output only. Immutable. Identifier. The name of the issue
	// resource. Format: "projects/{project}/apps/{app}/issues/{issue}".
	Name string `json:"name,omitempty"`
	// NotesCount: Output only. The number of notes attached to an issue.
	NotesCount int64 `json:"notesCount,omitempty,string"`
	// SampleEvent: Output only. The resource name for a sample event in this
	// issue.
	SampleEvent string `json:"sampleEvent,omitempty"`
	// Signals: Output only. Immutable. Distinctive characteristics assigned by the
	// Crashlytics analyzer.
	Signals []*IssueSignals `json:"signals,omitempty"`
	// State: Output only. Indicates whether this issue is open, closed or muted.
	// For details on how issue states change without user actions, see Regressed
	// Issues
	// (https://firebase.google.com/docs/crashlytics/troubleshooting?platform=ios#regressed-issues).
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Unknown.
	//   "OPEN" - Ongoing issue.
	//   "CLOSED" - Issue resolved.
	//   "MUTED" - Issue muted. No alerts will be fired for this issue.
	State string `json:"state,omitempty"`
	// StateUpdateTime: Output only. The time at which the issue state was last
	// changed.
	StateUpdateTime string `json:"stateUpdateTime,omitempty"`
	// Subtitle: Output only. Immutable. Caption subtitle. This is usually a symbol
	// or an exception message.
	Subtitle string `json:"subtitle,omitempty"`
	// Title: Output only. Immutable. Caption title. This is usually a source file
	// or method name.
	Title string `json:"title,omitempty"`
	// Uri: Output only. Provides a link to the Issue on the Firebase console. When
	// this Issue is obtained as part of a Report, then the link will be configured
	// with the same time interval and filters as the request.
	Uri string `json:"uri,omitempty"`
	// Variants: Output only. Immutable. The top 12 variants (subgroups) within the
	// issue. Variants group events within an issue that are very similar. A single
	// result implies that the variant is the same as the parent issue. This field
	// will be empty when multiple issues are requested. Request a single issue to
	// list variants.
	Variants []*IssueVariant `json:"variants,omitempty"`

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

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

// IssueSignals: Distinctive characteristics assigned by the Crashlytics
// analyzer.
type IssueSignals struct {
	// Description: Output only. Supporting detail information.
	Description string `json:"description,omitempty"`
	// Signal: Output only. The signal name.
	//
	// Possible values:
	//   "SIGNAL_UNSPECIFIED" - Default.
	//   "SIGNAL_EARLY" - Indicates an issue that is impacting end users early in
	// the app session.
	//   "SIGNAL_FRESH" - Indicates newly detected issues.
	//   "SIGNAL_REGRESSED" - Indicates previously closed issues which have been
	// detected again.
	//   "SIGNAL_REPETITIVE" - Indicates issues impacting some end users multiple
	// times.
	Signal string `json:"signal,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Description") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Description") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// IssueVariant: A variant is a subgroup of an issue where all events have very
// similar stack traces. Issues may contain one or more variants.
type IssueVariant struct {
	// Id: Output only. Immutable. Distinct identifier for the variant.
	Id string `json:"id,omitempty"`
	// SampleEvent: Output only. The resource name for a sample event in this
	// variant.
	SampleEvent string `json:"sampleEvent,omitempty"`
	// Uri: Output only. Provides a link to the variant on the Firebase console.
	// When this variant is obtained as part of a Report, then the link will be
	// configured with the same time interval and filters as the request.
	Uri string `json:"uri,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 IssueVariant) MarshalJSON() ([]byte, error) {
	type NoMethod IssueVariant
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListEventsResponse: Response message for the ListEvents method.
type ListEventsResponse struct {
	// Events: Returns one element per event, in descending order the by event
	// timestamp.
	Events []*Event `json:"events,omitempty"`
	// NextPageToken: A pagination token to retrieve the next page of events. The
	// next page will have earlier or later events depending on the request's
	// ordering. If this field is not present, there are no subsequent events.
	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. "Events") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Events") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// ListNotesResponse: Response message for the ListNotes method.
type ListNotesResponse struct {
	// NextPageToken: A pagination token to retrieve the next page of notes. If
	// this field is not present, there are no subsequent notes.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Notes: Returns notes ordered descending by the timestamp.
	Notes []*Note `json:"notes,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 ListNotesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListNotesResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListReportsResponse: Response method for the ListReports method. The
// response will always include all of the available reports.
type ListReportsResponse struct {
	// Reports: The report objects returned will contain their names and usage
	// instructions, but include no results. Use the `GetReport` method to run the
	// report and obtain the paged results.
	Reports []*Report `json:"reports,omitempty"`

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

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

// Log: Developer-provided log lines recorded during the session.
type Log struct {
	// LogTime: Device timestamp when the line was logged.
	LogTime string `json:"logTime,omitempty"`
	// Message: Log message.
	Message string `json:"message,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LogTime") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LogTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Memory: Mobile device memory usage.
type Memory struct {
	// Free: Bytes free.
	Free int64 `json:"free,omitempty,string"`
	// Used: Bytes in use.
	Used int64 `json:"used,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Free") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Free") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Note: Developer notes for an issue.
type Note struct {
	// Author: Output only. The email of the author of the note.
	Author string `json:"author,omitempty"`
	// Body: Immutable. The body of the note.
	Body string `json:"body,omitempty"`
	// CreateTime: Output only. Time when the note was created.
	CreateTime string `json:"createTime,omitempty"`
	// Name: Output only. Identifier. Format:
	// "projects/{project}/apps/app/issues/{issue}/notes/{note}".
	Name string `json:"name,omitempty"`

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

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

// OperatingSystem: Mobile device operating system metadata.
type OperatingSystem struct {
	// DeviceType: The device category (mobile, tablet, desktop).
	DeviceType string `json:"deviceType,omitempty"`
	// DisplayName: Name and version number. Formatted to be suitable for passing
	// to OperatingSystemFilter.
	DisplayName string `json:"displayName,omitempty"`
	// DisplayVersion: Operating system display version number.
	DisplayVersion string `json:"displayVersion,omitempty"`
	// ModificationState: Indicates if the OS has been modified or "jailbroken".
	ModificationState string `json:"modificationState,omitempty"`
	// Os: Operating system name.
	Os string `json:"os,omitempty"`
	// Type: The OS type on Apple platforms (iOS, iPadOS, etc.).
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeviceType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DeviceType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// PlayTrack: Describes a release track in the Play Developer Console.
type PlayTrack struct {
	// Title: User-generated or auto-generated name of the track. PROD and INTERNAL
	// track types always have auto-generated names, e.g. "prod" and "internal"
	// respectively. Tracks of type EARLY_ACCESS always have a user-generated name.
	// Other track types do not have any guarantees, might have user-generated or
	// auto-generated names.
	Title string `json:"title,omitempty"`
	// Type: The type of track (prod, internal, etc...).
	//
	// Possible values:
	//   "TRACK_TYPE_UNSPECIFIED" - Unknown.
	//   "TRACK_TYPE_PROD" - Production.
	//   "TRACK_TYPE_INTERNAL" - Internal testing.
	//   "TRACK_TYPE_OPEN_TESTING" - Open testing.
	//   "TRACK_TYPE_CLOSED_TESTING" - Closed testing.
	//   "TRACK_TYPE_EARLY_ACCESS" - Early access.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Title") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Title") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Report: Response message for the GetReport method. A report consists of the
// results of a query over an application's events. The events may be filtered
// by various criteria defined in the filters proto. The result will consist of
// a number of paginated groups, of a type relevant to the report such as
// issues or device models.
type Report struct {
	// DisplayName: Output only. The displayable title of the report.
	DisplayName string `json:"displayName,omitempty"`
	// Groups: Aggregate event statistics in the report will be grouped by a
	// dimension, such as by issue or by version. The response contains one element
	// per group, and all ReportGroup messages will have the same parent field.
	Groups []*ReportGroup `json:"groups,omitempty"`
	// Name: The name of the report. Format:
	// "projects/{project}/apps/{app_id}/reports/{report}".
	Name string `json:"name,omitempty"`
	// NextPageToken: Output only. A page token used to retrieve additional report
	// groups. If this field is not present, there are no subsequent pages
	// available to retrieve.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// TotalSize: Output only. The total number of groups retrievable by the
	// request.
	TotalSize int64 `json:"totalSize,omitempty"`
	// Usage: Usage instructions for the report with a description of the result
	// metrics. This field contains a description of the underlying query and
	// describes the expected response data with any known caveats. This string can
	// be displayed in the UI of any integration that offers comprehensive access
	// to all Crashlytics reports.
	Usage string `json:"usage,omitempty"`

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

// ReportGroup: A group of results in an EventReport. In any report, the
// group_parent field is strictly the same type for all of the groups in any
// collection.
type ReportGroup struct {
	// Browser: Browser metrics group.
	Browser *Browser `json:"browser,omitempty"`
	// Device: Device metrics group.
	Device *Device `json:"device,omitempty"`
	// Issue: Issue metrics group.
	Issue *Issue `json:"issue,omitempty"`
	// Metrics: Scalar metrics will contain a single object covering the entire
	// interval, while time-dimensioned graphs will contain one per time grain.
	Metrics []*IntervalMetrics `json:"metrics,omitempty"`
	// OperatingSystem: Operating system metrics group.
	OperatingSystem *OperatingSystem `json:"operatingSystem,omitempty"`
	// Subgroups: When applicable, this field contains additional nested groupings.
	// For example, events can be grouped by operating system and by operating
	// system version.
	Subgroups []*ReportGroup `json:"subgroups,omitempty"`
	// Variant: Issue variant metrics group.
	Variant *IssueVariant `json:"variant,omitempty"`
	// Version: Version metrics group.
	Version *Version `json:"version,omitempty"`
	// WebMetricsGroup: Web metrics group.
	WebMetricsGroup *WebMetricsGroup `json:"webMetricsGroup,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Browser") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Browser") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Storage: Mobile device disk/flash usage. Not reported for all devices.
type Storage struct {
	// Free: Bytes free.
	Free int64 `json:"free,omitempty,string"`
	// Used: Bytes used.
	Used int64 `json:"used,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Free") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Free") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Thread: An application thread.
type Thread struct {
	// Blamed: True when the Crashlytics analysis has determined that the
	// stacktrace in this thread is where the fault occurred.
	Blamed bool `json:"blamed,omitempty"`
	// CrashAddress: The address of the signal that caused the application to
	// crash. Only present on crashed native threads.
	CrashAddress int64 `json:"crashAddress,omitempty,string"`
	// Crashed: True when the thread has crashed.
	Crashed bool `json:"crashed,omitempty"`
	// Frames: The frames in the thread's stacktrace.
	Frames []*Frame `json:"frames,omitempty"`
	// Name: The name of the thread.
	Name string `json:"name,omitempty"`
	// Queue: The queue on which the thread was running.
	Queue string `json:"queue,omitempty"`
	// Signal: The name of the signal that caused the app to crash. Only present on
	// crashed native threads.
	Signal string `json:"signal,omitempty"`
	// SignalCode: The code of the signal that caused the app to crash. Only
	// present on crashed native threads.
	SignalCode string `json:"signalCode,omitempty"`
	// Subtitle: The subtitle of the thread.
	Subtitle string `json:"subtitle,omitempty"`
	// SysThreadId: The system id of the thread, only available for ANR threads.
	SysThreadId int64 `json:"sysThreadId,omitempty,string"`
	// ThreadId: The id of the thread, only available for ANR threads.
	ThreadId int64 `json:"threadId,omitempty,string"`
	// ThreadState: Output only. The state of the thread at the time the ANR
	// occurred.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Thread state unspecified.
	//   "THREAD_STATE_TERMINATED" - Thread was terminated.
	//   "THREAD_STATE_RUNNABLE" - Thread was runnable.
	//   "THREAD_STATE_TIMED_WAITING" - Thread was waiting with a timeout.
	//   "THREAD_STATE_BLOCKED" - Thread was blocked.
	//   "THREAD_STATE_WAITING" - Thread was waiting.
	//   "THREAD_STATE_NEW" - Thread was started, yet to run anything.
	//   "THREAD_STATE_NATIVE_RUNNABLE" - The thread was native and we could not
	// heuristically determine that it was was waiting, so assume it's runnable.
	//   "THREAD_STATE_NATIVE_WAITING" - We heuristically determined that the
	// thread is waiting.
	ThreadState string `json:"threadState,omitempty"`
	// Title: The title of the thread.
	Title string `json:"title,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Blamed") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Blamed") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// UpdateIssueRequest: Request message for the UpdateIssue method.
type UpdateIssueRequest struct {
	// Issue: Required. The issue to update. The issue's `name` field is used to
	// identify the issue to update. Format:
	// "projects/{project}/apps/{app}/issues/{issue}".
	Issue *Issue `json:"issue,omitempty"`
	// UpdateMask: Optional. The list of Issue fields to update. Currently only
	// "state" is mutable.
	UpdateMask string `json:"updateMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Issue") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Issue") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// User: Developer-provided end user identifiers.
type User struct {
	// Id: User id if provided by the app developer.
	Id string `json:"id,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 User) MarshalJSON() ([]byte, error) {
	type NoMethod User
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Version: Application software version.
type Version struct {
	// BuildVersion: Mobile only. One display_version can have many build_version.
	// On Android, strictly the same as "version code". On iOS, strictly the same
	// as "build number" or CFBundleVersion.
	BuildVersion string `json:"buildVersion,omitempty"`
	// DisplayName: Compound readable string containing both display and build
	// versions. Format: "display_version (build_version)" e.g. "1.2.3 (456)". This
	// string can be used for filtering with the VersionFilter.display_name field.
	DisplayName string `json:"displayName,omitempty"`
	// DisplayVersion: Readable version string, e.g. "1.2.3". On Android, strictly
	// the same as "version name". On iOS, strictly the same as "version number" or
	// CFBundleShortVersionString.
	DisplayVersion string `json:"displayVersion,omitempty"`
	// Tracks: Indicates releases which have artifacts that are currently available
	// in the Play Store to the target audience of the track. Versions may be
	// available in multiple tracks.
	Tracks []*PlayTrack `json:"tracks,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BuildVersion") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BuildVersion") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// WebMetricsGroup: Represents a grouping for metrics specific to web
// applications.
type WebMetricsGroup struct {
	// Id: The id of the web metrics group
	Id string `json:"id,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 WebMetricsGroup) MarshalJSON() ([]byte, error) {
	type NoMethod WebMetricsGroup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

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

// BatchGet: Fetch a batch of up to 100 events by name.
//
//   - parent: The firebase application. Format:
//     "projects/{project}/apps/{app_id}".
func (r *ProjectsAppsEventsService) BatchGet(parent string) *ProjectsAppsEventsBatchGetCall {
	c := &ProjectsAppsEventsBatchGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Names sets the optional parameter "names": Required. The resource names of
// the desired events. A maximum of 100 events can be retrieved in a batch.
// Format: "projects/{project}/apps/{app_id}/events/{event_id}". The app_id and
// event_id are required, but project may be "-" to conserve space in long
// URIs.
func (c *ProjectsAppsEventsBatchGetCall) Names(names ...string) *ProjectsAppsEventsBatchGetCall {
	c.urlParams_.SetMulti("names", append([]string{}, names...))
	return c
}

// ReadMask sets the optional parameter "readMask": The list of Event fields to
// include in the response. If omitted, the full event is returned.
func (c *ProjectsAppsEventsBatchGetCall) ReadMask(readMask string) *ProjectsAppsEventsBatchGetCall {
	c.urlParams_.Set("readMask", readMask)
	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 *ProjectsAppsEventsBatchGetCall) Fields(s ...googleapi.Field) *ProjectsAppsEventsBatchGetCall {
	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 *ProjectsAppsEventsBatchGetCall) IfNoneMatch(entityTag string) *ProjectsAppsEventsBatchGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

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

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

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

// List: List the events for an issue matching filter criteria, sorted in
// descending order by timestamp.
//
//   - parent: The Firebase application. Format:
//     "projects/{project}/apps/{app_id}".
func (r *ProjectsAppsEventsService) List(parent string) *ProjectsAppsEventsListCall {
	c := &ProjectsAppsEventsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// FilterBrowserDisplayNames sets the optional parameter
// "filter.browser.displayNames": Only count events from the given browser.
// This string matches Browser.display_name. Format: "name (display_version)"
// e.g. "Chrome (123)", or just "name" for all possible versions, e.g. simply
// "Chrome".
func (c *ProjectsAppsEventsListCall) FilterBrowserDisplayNames(filterBrowserDisplayNames ...string) *ProjectsAppsEventsListCall {
	c.urlParams_.SetMulti("filter.browser.displayNames", append([]string{}, filterBrowserDisplayNames...))
	return c
}

// FilterDeviceDisplayNames sets the optional parameter
// "filter.device.displayNames": Only counts events from the given Device
// model. This string matches Device.display_name. Format: "manufacturer
// (model)" e.g. "Google (Pixel 6)", or just "manufacturer" for all possible
// models, e.g. simply "Google". Note that a device's marketing_name field can
// not be used for filtering.
func (c *ProjectsAppsEventsListCall) FilterDeviceDisplayNames(filterDeviceDisplayNames ...string) *ProjectsAppsEventsListCall {
	c.urlParams_.SetMulti("filter.device.displayNames", append([]string{}, filterDeviceDisplayNames...))
	return c
}

// FilterDeviceFormFactors sets the optional parameter
// "filter.device.formFactors": Only counts events from devices with the given
// form factor (e.g. phone or tablet).
//
// Possible values:
//
//	"FORM_FACTOR_UNSPECIFIED" - Unknown.
//	"PHONE" - Includes mobile phones, small foldables and other form factors
//
// not fitting the other categories.
//
//	"TABLET" - Includes tablets and larger foldables.
//	"DESKTOP" - Includes desktops, laptops, Chromebooks, etc.
//	"TV" - Includes televisions and set-tops.
//	"WATCH" - Includes both watches and other wearables.
func (c *ProjectsAppsEventsListCall) FilterDeviceFormFactors(filterDeviceFormFactors ...string) *ProjectsAppsEventsListCall {
	c.urlParams_.SetMulti("filter.device.formFactors", append([]string{}, filterDeviceFormFactors...))
	return c
}

// FilterIntervalEndTime sets the optional parameter "filter.interval.endTime":
// Exclusive end of the interval. If specified, a Timestamp matching this
// interval will have to be before the end.
func (c *ProjectsAppsEventsListCall) FilterIntervalEndTime(filterIntervalEndTime string) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("filter.interval.endTime", filterIntervalEndTime)
	return c
}

// FilterIntervalStartTime sets the optional parameter
// "filter.interval.startTime": Inclusive start of the interval. If specified,
// a Timestamp matching this interval will have to be the same or after the
// start.
func (c *ProjectsAppsEventsListCall) FilterIntervalStartTime(filterIntervalStartTime string) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("filter.interval.startTime", filterIntervalStartTime)
	return c
}

// FilterIssueContent sets the optional parameter "filter.issue.content": A
// space separated list of filter terms matched against the contents of the
// issue. Contents include the title and the stack trace. Matches must begin at
// alphanumeric tokens, i.e., 'util.Sorted' matches 'java.util.SortedSet' but
// not 'myutil.SortedArray'. The filter matches if all filter terms match. All
// non-alphanumeric characters are ignored for matching. Filtering is assumed
// to be prefix-search and order-independent unless phrases are surrounded by
// "". Any terms contained in quotes are searched using exact-match (given
// filter term "foo", we will not return "foobar"), and must appear in the
// order given exactly. To get order-dependence but prefix-search, use a *
// within the quotes ("abc foo*" will match "abc foobar", but not "foo abc"
// "abcd foobar", or "abc xyz foobar").
func (c *ProjectsAppsEventsListCall) FilterIssueContent(filterIssueContent string) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("filter.issue.content", filterIssueContent)
	return c
}

// FilterIssueErrorTypes sets the optional parameter "filter.issue.errorTypes":
// Only counts events of the given error types. This field matches
// [Issue.error_type].
//
// Possible values:
//
//	"ERROR_TYPE_UNSPECIFIED" - Unknown.
//	"FATAL" - Fatal crash event.
//	"NON_FATAL" - Non-fatal event, such as a caught Java exception or NSError
//
// on iOS.
//
//	"ANR" - Application not responding error, Android only.
func (c *ProjectsAppsEventsListCall) FilterIssueErrorTypes(filterIssueErrorTypes ...string) *ProjectsAppsEventsListCall {
	c.urlParams_.SetMulti("filter.issue.errorTypes", append([]string{}, filterIssueErrorTypes...))
	return c
}

// FilterIssueId sets the optional parameter "filter.issue.id": Only counts
// events in the given issue ID. This field matches [Issue.id].
func (c *ProjectsAppsEventsListCall) FilterIssueId(filterIssueId string) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("filter.issue.id", filterIssueId)
	return c
}

// FilterIssueSignals sets the optional parameter "filter.issue.signals": Only
// returns issues currently marked with the given signals. This field matches
// [Issue.signals.signal].
//
// Possible values:
//
//	"SIGNAL_UNSPECIFIED" - Default.
//	"SIGNAL_EARLY" - Indicates an issue that is impacting end users early in
//
// the app session.
//
//	"SIGNAL_FRESH" - Indicates newly detected issues.
//	"SIGNAL_REGRESSED" - Indicates previously closed issues which have been
//
// detected again.
//
//	"SIGNAL_REPETITIVE" - Indicates issues impacting some end users multiple
//
// times.
func (c *ProjectsAppsEventsListCall) FilterIssueSignals(filterIssueSignals ...string) *ProjectsAppsEventsListCall {
	c.urlParams_.SetMulti("filter.issue.signals", append([]string{}, filterIssueSignals...))
	return c
}

// FilterIssueState sets the optional parameter "filter.issue.state":
// Deprecated: Prefer `states` field. Only includes events for issues with the
// given issue state. Only available for `topIssues` reports.
//
// Possible values:
//
//	"STATE_UNSPECIFIED" - Unknown.
//	"OPEN" - Ongoing issue.
//	"CLOSED" - Issue resolved.
//	"MUTED" - Issue muted. No alerts will be fired for this issue.
func (c *ProjectsAppsEventsListCall) FilterIssueState(filterIssueState string) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("filter.issue.state", filterIssueState)
	return c
}

// FilterIssueStates sets the optional parameter "filter.issue.states": Only
// includes events for issues with the given issue states. Only available for
// `topIssues` reports.
//
// Possible values:
//
//	"STATE_UNSPECIFIED" - Unknown.
//	"OPEN" - Ongoing issue.
//	"CLOSED" - Issue resolved.
//	"MUTED" - Issue muted. No alerts will be fired for this issue.
func (c *ProjectsAppsEventsListCall) FilterIssueStates(filterIssueStates ...string) *ProjectsAppsEventsListCall {
	c.urlParams_.SetMulti("filter.issue.states", append([]string{}, filterIssueStates...))
	return c
}

// FilterIssueVariantId sets the optional parameter "filter.issue.variantId":
// Only counts events for the given issue variant ID. This field matches
// [IssueVariant.id].
func (c *ProjectsAppsEventsListCall) FilterIssueVariantId(filterIssueVariantId string) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("filter.issue.variantId", filterIssueVariantId)
	return c
}

// FilterOperatingSystemDisplayNames sets the optional parameter
// "filter.operatingSystem.displayNames": Only counts events in the given
// operating system and version. This string matches
// OperatingSystem.display_name. Format: "osName (osVersion)" e.g. "Android
// (11)". or just "osName" for all versions, e.g. simply "iPadOS".
func (c *ProjectsAppsEventsListCall) FilterOperatingSystemDisplayNames(filterOperatingSystemDisplayNames ...string) *ProjectsAppsEventsListCall {
	c.urlParams_.SetMulti("filter.operatingSystem.displayNames", append([]string{}, filterOperatingSystemDisplayNames...))
	return c
}

// FilterVersionDisplayNames sets the optional parameter
// "filter.version.displayNames": Only counts events in the given app version.
// This string matches Version.display_name. Format: "display_version
// (build_version)" e.g. "1.2.3 (456)".
func (c *ProjectsAppsEventsListCall) FilterVersionDisplayNames(filterVersionDisplayNames ...string) *ProjectsAppsEventsListCall {
	c.urlParams_.SetMulti("filter.version.displayNames", append([]string{}, filterVersionDisplayNames...))
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// events per page. If omitted, defaults to 10.
func (c *ProjectsAppsEventsListCall) PageSize(pageSize int64) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token, received
// from a previous calls.
func (c *ProjectsAppsEventsListCall) PageToken(pageToken string) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// ReadMask sets the optional parameter "readMask": The list of Event fields to
// include in the response. If omitted, the full event is returned.
func (c *ProjectsAppsEventsListCall) ReadMask(readMask string) *ProjectsAppsEventsListCall {
	c.urlParams_.Set("readMask", readMask)
	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 *ProjectsAppsEventsListCall) Fields(s ...googleapi.Field) *ProjectsAppsEventsListCall {
	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 *ProjectsAppsEventsListCall) IfNoneMatch(entityTag string) *ProjectsAppsEventsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsAppsEventsListCall) 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, "v1alpha/{+parent}/events")
	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", "firebasecrashlytics.projects.apps.events.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebasecrashlytics.projects.apps.events.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListEventsResponse.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 *ProjectsAppsEventsListCall) Do(opts ...googleapi.CallOption) (*ListEventsResponse, 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 := &ListEventsResponse{
		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", "firebasecrashlytics.projects.apps.events.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 *ProjectsAppsEventsListCall) Pages(ctx context.Context, f func(*ListEventsResponse) 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 ProjectsAppsIssuesBatchUpdateCall struct {
	s                        *Service
	parent                   string
	batchupdateissuesrequest *BatchUpdateIssuesRequest
	urlParams_               gensupport.URLParams
	ctx_                     context.Context
	header_                  http.Header
}

// BatchUpdate: Change the state of a group of issues. This method is not
// atomic, so partial failures can occur. In the event of a partial failure,
// the request will fail and you will need to call `GetIssue` to see which
// issues were not updated.
//
//   - parent: The parent resource shared by all issues being updated. Format:
//     projects/{project}/apps/{app}. If this is set, the parent field in the
//     UpdateIssueRequest messages must either be empty or match this field.
func (r *ProjectsAppsIssuesService) BatchUpdate(parent string, batchupdateissuesrequest *BatchUpdateIssuesRequest) *ProjectsAppsIssuesBatchUpdateCall {
	c := &ProjectsAppsIssuesBatchUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.batchupdateissuesrequest = batchupdateissuesrequest
	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 *ProjectsAppsIssuesBatchUpdateCall) Fields(s ...googleapi.Field) *ProjectsAppsIssuesBatchUpdateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Get: Retrieve an issue.
//
//   - name: The name of the issue to retrieve. Format:
//     "projects/{project}/apps/{app}/issues/{issue}".
func (r *ProjectsAppsIssuesService) Get(name string) *ProjectsAppsIssuesGetCall {
	c := &ProjectsAppsIssuesGetCall{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 *ProjectsAppsIssuesGetCall) Fields(s ...googleapi.Field) *ProjectsAppsIssuesGetCall {
	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 *ProjectsAppsIssuesGetCall) IfNoneMatch(entityTag string) *ProjectsAppsIssuesGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsAppsIssuesGetCall) 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, "v1alpha/{+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", "firebasecrashlytics.projects.apps.issues.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

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

// Patch: Change the state of an issue.
//
//   - name: Output only. Immutable. Identifier. The name of the issue resource.
//     Format: "projects/{project}/apps/{app}/issues/{issue}".
func (r *ProjectsAppsIssuesService) Patch(name string, issue *Issue) *ProjectsAppsIssuesPatchCall {
	c := &ProjectsAppsIssuesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.issue = issue
	return c
}

// UpdateMask sets the optional parameter "updateMask": The list of Issue
// fields to update. Currently only "state" is mutable.
func (c *ProjectsAppsIssuesPatchCall) UpdateMask(updateMask string) *ProjectsAppsIssuesPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

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

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

func (c *ProjectsAppsIssuesPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.issue)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "firebasecrashlytics.projects.apps.issues.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

type ProjectsAppsIssuesNotesCreateCall struct {
	s          *Service
	parent     string
	note       *Note
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Create a new note for an issue.
//
//   - parent: The parent resource where this note will be created. Format:
//     "projects/{project}/apps/{app}/issues/{issue}".
func (r *ProjectsAppsIssuesNotesService) Create(parent string, note *Note) *ProjectsAppsIssuesNotesCreateCall {
	c := &ProjectsAppsIssuesNotesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.note = note
	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 *ProjectsAppsIssuesNotesCreateCall) Fields(s ...googleapi.Field) *ProjectsAppsIssuesNotesCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// Delete: Delete a note by its name.
//
//   - name: The name of the note to delete. Format:
//     projects/{project}/apps/{app}/issues/{issue}/notes/{note}.
func (r *ProjectsAppsIssuesNotesService) Delete(name string) *ProjectsAppsIssuesNotesDeleteCall {
	c := &ProjectsAppsIssuesNotesDeleteCall{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 *ProjectsAppsIssuesNotesDeleteCall) Fields(s ...googleapi.Field) *ProjectsAppsIssuesNotesDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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

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

// List: List all notes for a certain issue, sorted in descending order by
// timestamp.
//
//   - parent: The issue the notes belongs to. Format:
//     "projects/{project}/apps/{app}/issues/{issue}".
func (r *ProjectsAppsIssuesNotesService) List(parent string) *ProjectsAppsIssuesNotesListCall {
	c := &ProjectsAppsIssuesNotesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of notes
// per page. If omitted, defaults to 10.
func (c *ProjectsAppsIssuesNotesListCall) PageSize(pageSize int64) *ProjectsAppsIssuesNotesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token, received
// from a previous calls.
func (c *ProjectsAppsIssuesNotesListCall) PageToken(pageToken string) *ProjectsAppsIssuesNotesListCall {
	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 *ProjectsAppsIssuesNotesListCall) Fields(s ...googleapi.Field) *ProjectsAppsIssuesNotesListCall {
	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 *ProjectsAppsIssuesNotesListCall) IfNoneMatch(entityTag string) *ProjectsAppsIssuesNotesListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsAppsIssuesNotesListCall) 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, "v1alpha/{+parent}/notes")
	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", "firebasecrashlytics.projects.apps.issues.notes.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

// Get: Get a report with its computed results.
//
//   - name: The report name. Format:
//     "projects/{project}/apps/{app_id}/reports/{report}".
func (r *ProjectsAppsReportsService) Get(name string) *ProjectsAppsReportsGetCall {
	c := &ProjectsAppsReportsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// FilterBrowserDisplayNames sets the optional parameter
// "filter.browser.displayNames": Only count events from the given browser.
// This string matches Browser.display_name. Format: "name (display_version)"
// e.g. "Chrome (123)", or just "name" for all possible versions, e.g. simply
// "Chrome".
func (c *ProjectsAppsReportsGetCall) FilterBrowserDisplayNames(filterBrowserDisplayNames ...string) *ProjectsAppsReportsGetCall {
	c.urlParams_.SetMulti("filter.browser.displayNames", append([]string{}, filterBrowserDisplayNames...))
	return c
}

// FilterDeviceDisplayNames sets the optional parameter
// "filter.device.displayNames": Only counts events from the given Device
// model. This string matches Device.display_name. Format: "manufacturer
// (model)" e.g. "Google (Pixel 6)", or just "manufacturer" for all possible
// models, e.g. simply "Google". Note that a device's marketing_name field can
// not be used for filtering.
func (c *ProjectsAppsReportsGetCall) FilterDeviceDisplayNames(filterDeviceDisplayNames ...string) *ProjectsAppsReportsGetCall {
	c.urlParams_.SetMulti("filter.device.displayNames", append([]string{}, filterDeviceDisplayNames...))
	return c
}

// FilterDeviceFormFactors sets the optional parameter
// "filter.device.formFactors": Only counts events from devices with the given
// form factor (e.g. phone or tablet).
//
// Possible values:
//
//	"FORM_FACTOR_UNSPECIFIED" - Unknown.
//	"PHONE" - Includes mobile phones, small foldables and other form factors
//
// not fitting the other categories.
//
//	"TABLET" - Includes tablets and larger foldables.
//	"DESKTOP" - Includes desktops, laptops, Chromebooks, etc.
//	"TV" - Includes televisions and set-tops.
//	"WATCH" - Includes both watches and other wearables.
func (c *ProjectsAppsReportsGetCall) FilterDeviceFormFactors(filterDeviceFormFactors ...string) *ProjectsAppsReportsGetCall {
	c.urlParams_.SetMulti("filter.device.formFactors", append([]string{}, filterDeviceFormFactors...))
	return c
}

// FilterIntervalEndTime sets the optional parameter "filter.interval.endTime":
// Exclusive end of the interval. If specified, a Timestamp matching this
// interval will have to be before the end.
func (c *ProjectsAppsReportsGetCall) FilterIntervalEndTime(filterIntervalEndTime string) *ProjectsAppsReportsGetCall {
	c.urlParams_.Set("filter.interval.endTime", filterIntervalEndTime)
	return c
}

// FilterIntervalStartTime sets the optional parameter
// "filter.interval.startTime": Inclusive start of the interval. If specified,
// a Timestamp matching this interval will have to be the same or after the
// start.
func (c *ProjectsAppsReportsGetCall) FilterIntervalStartTime(filterIntervalStartTime string) *ProjectsAppsReportsGetCall {
	c.urlParams_.Set("filter.interval.startTime", filterIntervalStartTime)
	return c
}

// FilterIssueContent sets the optional parameter "filter.issue.content": A
// space separated list of filter terms matched against the contents of the
// issue. Contents include the title and the stack trace. Matches must begin at
// alphanumeric tokens, i.e., 'util.Sorted' matches 'java.util.SortedSet' but
// not 'myutil.SortedArray'. The filter matches if all filter terms match. All
// non-alphanumeric characters are ignored for matching. Filtering is assumed
// to be prefix-search and order-independent unless phrases are surrounded by
// "". Any terms contained in quotes are searched using exact-match (given
// filter term "foo", we will not return "foobar"), and must appear in the
// order given exactly. To get order-dependence but prefix-search, use a *
// within the quotes ("abc foo*" will match "abc foobar", but not "foo abc"
// "abcd foobar", or "abc xyz foobar").
func (c *ProjectsAppsReportsGetCall) FilterIssueContent(filterIssueContent string) *ProjectsAppsReportsGetCall {
	c.urlParams_.Set("filter.issue.content", filterIssueContent)
	return c
}

// FilterIssueErrorTypes sets the optional parameter "filter.issue.errorTypes":
// Only counts events of the given error types. This field matches
// [Issue.error_type].
//
// Possible values:
//
//	"ERROR_TYPE_UNSPECIFIED" - Unknown.
//	"FATAL" - Fatal crash event.
//	"NON_FATAL" - Non-fatal event, such as a caught Java exception or NSError
//
// on iOS.
//
//	"ANR" - Application not responding error, Android only.
func (c *ProjectsAppsReportsGetCall) FilterIssueErrorTypes(filterIssueErrorTypes ...string) *ProjectsAppsReportsGetCall {
	c.urlParams_.SetMulti("filter.issue.errorTypes", append([]string{}, filterIssueErrorTypes...))
	return c
}

// FilterIssueId sets the optional parameter "filter.issue.id": Only counts
// events in the given issue ID. This field matches [Issue.id].
func (c *ProjectsAppsReportsGetCall) FilterIssueId(filterIssueId string) *ProjectsAppsReportsGetCall {
	c.urlParams_.Set("filter.issue.id", filterIssueId)
	return c
}

// FilterIssueSignals sets the optional parameter "filter.issue.signals": Only
// returns issues currently marked with the given signals. This field matches
// [Issue.signals.signal].
//
// Possible values:
//
//	"SIGNAL_UNSPECIFIED" - Default.
//	"SIGNAL_EARLY" - Indicates an issue that is impacting end users early in
//
// the app session.
//
//	"SIGNAL_FRESH" - Indicates newly detected issues.
//	"SIGNAL_REGRESSED" - Indicates previously closed issues which have been
//
// detected again.
//
//	"SIGNAL_REPETITIVE" - Indicates issues impacting some end users multiple
//
// times.
func (c *ProjectsAppsReportsGetCall) FilterIssueSignals(filterIssueSignals ...string) *ProjectsAppsReportsGetCall {
	c.urlParams_.SetMulti("filter.issue.signals", append([]string{}, filterIssueSignals...))
	return c
}

// FilterIssueState sets the optional parameter "filter.issue.state":
// Deprecated: Prefer `states` field. Only includes events for issues with the
// given issue state. Only available for `topIssues` reports.
//
// Possible values:
//
//	"STATE_UNSPECIFIED" - Unknown.
//	"OPEN" - Ongoing issue.
//	"CLOSED" - Issue resolved.
//	"MUTED" - Issue muted. No alerts will be fired for this issue.
func (c *ProjectsAppsReportsGetCall) FilterIssueState(filterIssueState string) *ProjectsAppsReportsGetCall {
	c.urlParams_.Set("filter.issue.state", filterIssueState)
	return c
}

// FilterIssueStates sets the optional parameter "filter.issue.states": Only
// includes events for issues with the given issue states. Only available for
// `topIssues` reports.
//
// Possible values:
//
//	"STATE_UNSPECIFIED" - Unknown.
//	"OPEN" - Ongoing issue.
//	"CLOSED" - Issue resolved.
//	"MUTED" - Issue muted. No alerts will be fired for this issue.
func (c *ProjectsAppsReportsGetCall) FilterIssueStates(filterIssueStates ...string) *ProjectsAppsReportsGetCall {
	c.urlParams_.SetMulti("filter.issue.states", append([]string{}, filterIssueStates...))
	return c
}

// FilterIssueVariantId sets the optional parameter "filter.issue.variantId":
// Only counts events for the given issue variant ID. This field matches
// [IssueVariant.id].
func (c *ProjectsAppsReportsGetCall) FilterIssueVariantId(filterIssueVariantId string) *ProjectsAppsReportsGetCall {
	c.urlParams_.Set("filter.issue.variantId", filterIssueVariantId)
	return c
}

// FilterOperatingSystemDisplayNames sets the optional parameter
// "filter.operatingSystem.displayNames": Only counts events in the given
// operating system and version. This string matches
// OperatingSystem.display_name. Format: "osName (osVersion)" e.g. "Android
// (11)". or just "osName" for all versions, e.g. simply "iPadOS".
func (c *ProjectsAppsReportsGetCall) FilterOperatingSystemDisplayNames(filterOperatingSystemDisplayNames ...string) *ProjectsAppsReportsGetCall {
	c.urlParams_.SetMulti("filter.operatingSystem.displayNames", append([]string{}, filterOperatingSystemDisplayNames...))
	return c
}

// FilterVersionDisplayNames sets the optional parameter
// "filter.version.displayNames": Only counts events in the given app version.
// This string matches Version.display_name. Format: "display_version
// (build_version)" e.g. "1.2.3 (456)".
func (c *ProjectsAppsReportsGetCall) FilterVersionDisplayNames(filterVersionDisplayNames ...string) *ProjectsAppsReportsGetCall {
	c.urlParams_.SetMulti("filter.version.displayNames", append([]string{}, filterVersionDisplayNames...))
	return c
}

// Granularity sets the optional parameter "granularity": The report response
// will contain one data point per time grain. If omitted, the report will
// contain a single data point for the complete interval.
//
// Possible values:
//
//	"TIME_GRANULARITY_UNSPECIFIED" - Unknown.
//	"TIME_GRANULARITY_NONE" - Returns a single interval for the requested time
//
// range.
//
//	"TIME_GRANULARITY_HOUR" - Hour.
//	"TIME_GRANULARITY_DAY" - Day.
func (c *ProjectsAppsReportsGetCall) Granularity(granularity string) *ProjectsAppsReportsGetCall {
	c.urlParams_.Set("granularity", granularity)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// result groups to return. If omitted, defaults to 25.
func (c *ProjectsAppsReportsGetCall) PageSize(pageSize int64) *ProjectsAppsReportsGetCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token, received
// from a previous call. The page token is only valid for the exact same set of
// filters, which must also be sent in subsequent requests. This token is valid
// for 10 minutes after the first request.
func (c *ProjectsAppsReportsGetCall) PageToken(pageToken string) *ProjectsAppsReportsGetCall {
	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 *ProjectsAppsReportsGetCall) Fields(s ...googleapi.Field) *ProjectsAppsReportsGetCall {
	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 *ProjectsAppsReportsGetCall) IfNoneMatch(entityTag string) *ProjectsAppsReportsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

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

func (c *ProjectsAppsReportsGetCall) 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, "v1alpha/{+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", "firebasecrashlytics.projects.apps.reports.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "firebasecrashlytics.projects.apps.reports.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Report.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 *ProjectsAppsReportsGetCall) Do(opts ...googleapi.CallOption) (*Report, 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 := &Report{
		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", "firebasecrashlytics.projects.apps.reports.get", "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 *ProjectsAppsReportsGetCall) Pages(ctx context.Context, f func(*Report) 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 ProjectsAppsReportsListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: List all of the available reports.
//
//   - parent: The firebase application. Format:
//     "projects/{project}/apps/{app_id}".
func (r *ProjectsAppsReportsService) List(parent string) *ProjectsAppsReportsListCall {
	c := &ProjectsAppsReportsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

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

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

func (c *ProjectsAppsReportsListCall) 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, "v1alpha/{+parent}/reports")
	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", "firebasecrashlytics.projects.apps.reports.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

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

// DeleteCrashReports: Enqueues a request to permanently remove crash reports
// associated with the specified user. All reports belonging to the specified
// user will be deleted typically within 24 hours of receiving the crash
// report.
//
//   - name: Resource name for user reports, in the format: projects/
//     PROJECT_IDENTIFIER/apps/APP_ID/users/USER_ID/crashReports -
//     PROJECT_IDENTIFIER: The Firebase project's project number (recommended) or
//     its project ID. Learn more about using project identifiers in Google's AIP
//     2510 standard (https://google.aip.dev/cloud/2510). - APP_ID: The globally
//     unique, Firebase-assigned identifier for the Firebase App. This is not
//     your package name or bundle ID. Learn how to find your app ID
//     (https://firebase.google.com/support/faq/#find-app-id). - USER_ID: The
//     user ID set using the Crashlytics SDK. Learn how to set user identifiers
//     (https://firebase.google.com/docs/crashlytics/customize-crash-reports#set-user-ids).
func (r *ProjectsAppsUsersService) DeleteCrashReports(nameid string) *ProjectsAppsUsersDeleteCrashReportsCall {
	c := &ProjectsAppsUsersDeleteCrashReportsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.nameid = nameid
	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 *ProjectsAppsUsersDeleteCrashReportsCall) Fields(s ...googleapi.Field) *ProjectsAppsUsersDeleteCrashReportsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

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

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

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