{
  "baseUrl": "https://firebasecrashlytics.googleapis.com/",
  "fullyEncodeReservedExpansion": true,
  "version": "v1alpha",
  "discoveryVersion": "v1",
  "title": "Firebase Crashlytics API",
  "documentationLink": "https://firebase.google.com/docs/crashlytics",
  "resources": {
    "projects": {
      "resources": {
        "apps": {
          "resources": {
            "users": {
              "methods": {
                "deleteCrashReports": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform",
                    "https://www.googleapis.com/auth/firebase"
                  ],
                  "parameters": {
                    "name": {
                      "required": true,
                      "pattern": "^projects/[^/]+/apps/[^/]+/users/[^/]+/crashReports$",
                      "location": "path",
                      "type": "string",
                      "description": "Required. 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)."
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "DeleteUserCrashReportsResponse"
                  },
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/users/{usersId}/crashReports",
                  "id": "firebasecrashlytics.projects.apps.users.deleteCrashReports",
                  "httpMethod": "DELETE",
                  "path": "v1alpha/{+name}",
                  "description": "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."
                }
              }
            },
            "reports": {
              "methods": {
                "list": {
                  "parameters": {
                    "parent": {
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. The firebase application. Format: \"projects/{project}/apps/{app_id}\".",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListReportsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform",
                    "https://www.googleapis.com/auth/firebase"
                  ],
                  "path": "v1alpha/{+parent}/reports",
                  "description": "List all of the available reports.",
                  "httpMethod": "GET",
                  "id": "firebasecrashlytics.projects.apps.reports.list",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/reports"
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform",
                    "https://www.googleapis.com/auth/firebase"
                  ],
                  "parameters": {
                    "filter.issue.errorTypes": {
                      "type": "string",
                      "description": "Optional. Only counts events of the given error types. This field matches [Issue.error_type].",
                      "repeated": true,
                      "enumDescriptions": [
                        "Unknown.",
                        "Fatal crash event.",
                        "Non-fatal event, such as a caught Java exception or NSError on iOS.",
                        "Application not responding error, Android only."
                      ],
                      "location": "query",
                      "enum": [
                        "ERROR_TYPE_UNSPECIFIED",
                        "FATAL",
                        "NON_FATAL",
                        "ANR"
                      ]
                    },
                    "pageSize": {
                      "type": "integer",
                      "description": "Optional. The maximum number of result groups to return. If omitted, defaults to 25.",
                      "format": "int32",
                      "location": "query"
                    },
                    "filter.issue.states": {
                      "location": "query",
                      "enum": [
                        "STATE_UNSPECIFIED",
                        "OPEN",
                        "CLOSED",
                        "MUTED"
                      ],
                      "enumDescriptions": [
                        "Unknown.",
                        "Ongoing issue.",
                        "Issue resolved.",
                        "Issue muted. No alerts will be fired for this issue."
                      ],
                      "description": "Optional. Only includes events for issues with the given issue states. Only available for `topIssues` reports.",
                      "repeated": true,
                      "type": "string"
                    },
                    "filter.version.displayNames": {
                      "type": "string",
                      "location": "query",
                      "description": "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)\".",
                      "repeated": true
                    },
                    "filter.operatingSystem.displayNames": {
                      "type": "string",
                      "location": "query",
                      "description": "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\".",
                      "repeated": true
                    },
                    "filter.device.formFactors": {
                      "description": "Only counts events from devices with the given form factor (e.g. phone or tablet).",
                      "repeated": true,
                      "type": "string",
                      "location": "query",
                      "enum": [
                        "FORM_FACTOR_UNSPECIFIED",
                        "PHONE",
                        "TABLET",
                        "DESKTOP",
                        "TV",
                        "WATCH"
                      ],
                      "enumDescriptions": [
                        "Unknown.",
                        "Includes mobile phones, small foldables and other form factors not fitting the other categories.",
                        "Includes tablets and larger foldables.",
                        "Includes desktops, laptops, Chromebooks, etc.",
                        "Includes televisions and set-tops.",
                        "Includes both watches and other wearables."
                      ]
                    },
                    "filter.browser.displayNames": {
                      "location": "query",
                      "description": "Optional. 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\".",
                      "repeated": true,
                      "type": "string"
                    },
                    "filter.issue.variantId": {
                      "type": "string",
                      "description": "Optional. Only counts events for the given issue variant ID. This field matches [IssueVariant.id].",
                      "location": "query"
                    },
                    "pageToken": {
                      "description": "Optional. 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.",
                      "location": "query",
                      "type": "string"
                    },
                    "filter.issue.state": {
                      "enumDescriptions": [
                        "Unknown.",
                        "Ongoing issue.",
                        "Issue resolved.",
                        "Issue muted. No alerts will be fired for this issue."
                      ],
                      "deprecated": true,
                      "location": "query",
                      "enum": [
                        "STATE_UNSPECIFIED",
                        "OPEN",
                        "CLOSED",
                        "MUTED"
                      ],
                      "type": "string",
                      "description": "Optional. Deprecated: Prefer `states` field. Only includes events for issues with the given issue state. Only available for `topIssues` reports."
                    },
                    "granularity": {
                      "location": "query",
                      "enum": [
                        "TIME_GRANULARITY_UNSPECIFIED",
                        "TIME_GRANULARITY_NONE",
                        "TIME_GRANULARITY_HOUR",
                        "TIME_GRANULARITY_DAY"
                      ],
                      "enumDescriptions": [
                        "Unknown.",
                        "Returns a single interval for the requested time range.",
                        "Hour.",
                        "Day."
                      ],
                      "description": "Optional. 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.",
                      "type": "string"
                    },
                    "filter.device.displayNames": {
                      "location": "query",
                      "description": "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.",
                      "repeated": true,
                      "type": "string"
                    },
                    "filter.interval.startTime": {
                      "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.",
                      "format": "google-datetime",
                      "location": "query",
                      "type": "string"
                    },
                    "filter.issue.id": {
                      "type": "string",
                      "description": "Optional. Only counts events in the given issue ID. This field matches [Issue.id].",
                      "location": "query"
                    },
                    "filter.issue.signals": {
                      "description": "Optional. Only returns issues currently marked with the given signals. This field matches [Issue.signals.signal].",
                      "repeated": true,
                      "type": "string",
                      "location": "query",
                      "enum": [
                        "SIGNAL_UNSPECIFIED",
                        "SIGNAL_EARLY",
                        "SIGNAL_FRESH",
                        "SIGNAL_REGRESSED",
                        "SIGNAL_REPETITIVE"
                      ],
                      "enumDescriptions": [
                        "Default.",
                        "Indicates an issue that is impacting end users early in the app session.",
                        "Indicates newly detected issues.",
                        "Indicates previously closed issues which have been detected again.",
                        "Indicates issues impacting some end users multiple times."
                      ]
                    },
                    "filter.interval.endTime": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.",
                      "format": "google-datetime"
                    },
                    "name": {
                      "type": "string",
                      "description": "Required. The report name. Format: \"projects/{project}/apps/{app_id}/reports/{report}\".",
                      "required": true,
                      "pattern": "^projects/[^/]+/apps/[^/]+/reports/[^/]+$",
                      "location": "path"
                    },
                    "filter.issue.content": {
                      "location": "query",
                      "description": "Optional. 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\").",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Report"
                  },
                  "httpMethod": "GET",
                  "path": "v1alpha/{+name}",
                  "description": "Get a report with its computed results.",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/reports/{reportsId}",
                  "id": "firebasecrashlytics.projects.apps.reports.get"
                }
              }
            },
            "events": {
              "methods": {
                "list": {
                  "id": "firebasecrashlytics.projects.apps.events.list",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/events",
                  "path": "v1alpha/{+parent}/events",
                  "description": "List the events for an issue matching filter criteria, sorted in descending order by timestamp.",
                  "httpMethod": "GET",
                  "parameters": {
                    "filter.issue.states": {
                      "enumDescriptions": [
                        "Unknown.",
                        "Ongoing issue.",
                        "Issue resolved.",
                        "Issue muted. No alerts will be fired for this issue."
                      ],
                      "location": "query",
                      "enum": [
                        "STATE_UNSPECIFIED",
                        "OPEN",
                        "CLOSED",
                        "MUTED"
                      ],
                      "type": "string",
                      "description": "Optional. Only includes events for issues with the given issue states. Only available for `topIssues` reports.",
                      "repeated": true
                    },
                    "filter.version.displayNames": {
                      "type": "string",
                      "description": "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)\".",
                      "repeated": true,
                      "location": "query"
                    },
                    "pageToken": {
                      "location": "query",
                      "description": "Optional. A page token, received from a previous calls.",
                      "type": "string"
                    },
                    "filter.issue.variantId": {
                      "description": "Optional. Only counts events for the given issue variant ID. This field matches [IssueVariant.id].",
                      "location": "query",
                      "type": "string"
                    },
                    "filter.issue.state": {
                      "description": "Optional. Deprecated: Prefer `states` field. Only includes events for issues with the given issue state. Only available for `topIssues` reports.",
                      "type": "string",
                      "deprecated": true,
                      "location": "query",
                      "enum": [
                        "STATE_UNSPECIFIED",
                        "OPEN",
                        "CLOSED",
                        "MUTED"
                      ],
                      "enumDescriptions": [
                        "Unknown.",
                        "Ongoing issue.",
                        "Issue resolved.",
                        "Issue muted. No alerts will be fired for this issue."
                      ]
                    },
                    "filter.operatingSystem.displayNames": {
                      "location": "query",
                      "description": "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\".",
                      "repeated": true,
                      "type": "string"
                    },
                    "filter.device.formFactors": {
                      "enumDescriptions": [
                        "Unknown.",
                        "Includes mobile phones, small foldables and other form factors not fitting the other categories.",
                        "Includes tablets and larger foldables.",
                        "Includes desktops, laptops, Chromebooks, etc.",
                        "Includes televisions and set-tops.",
                        "Includes both watches and other wearables."
                      ],
                      "location": "query",
                      "enum": [
                        "FORM_FACTOR_UNSPECIFIED",
                        "PHONE",
                        "TABLET",
                        "DESKTOP",
                        "TV",
                        "WATCH"
                      ],
                      "type": "string",
                      "description": "Only counts events from devices with the given form factor (e.g. phone or tablet).",
                      "repeated": true
                    },
                    "filter.browser.displayNames": {
                      "location": "query",
                      "description": "Optional. 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\".",
                      "repeated": true,
                      "type": "string"
                    },
                    "pageSize": {
                      "location": "query",
                      "description": "Optional. The maximum number of events per page. If omitted, defaults to 10.",
                      "format": "int32",
                      "type": "integer"
                    },
                    "filter.issue.errorTypes": {
                      "type": "string",
                      "description": "Optional. Only counts events of the given error types. This field matches [Issue.error_type].",
                      "repeated": true,
                      "enumDescriptions": [
                        "Unknown.",
                        "Fatal crash event.",
                        "Non-fatal event, such as a caught Java exception or NSError on iOS.",
                        "Application not responding error, Android only."
                      ],
                      "location": "query",
                      "enum": [
                        "ERROR_TYPE_UNSPECIFIED",
                        "FATAL",
                        "NON_FATAL",
                        "ANR"
                      ]
                    },
                    "parent": {
                      "type": "string",
                      "description": "Required. The Firebase application. Format: \"projects/{project}/apps/{app_id}\".",
                      "required": true,
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "location": "path"
                    },
                    "filter.interval.endTime": {
                      "location": "query",
                      "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.",
                      "format": "google-datetime",
                      "type": "string"
                    },
                    "filter.interval.startTime": {
                      "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.",
                      "format": "google-datetime",
                      "location": "query",
                      "type": "string"
                    },
                    "filter.issue.id": {
                      "type": "string",
                      "description": "Optional. Only counts events in the given issue ID. This field matches [Issue.id].",
                      "location": "query"
                    },
                    "filter.issue.signals": {
                      "enumDescriptions": [
                        "Default.",
                        "Indicates an issue that is impacting end users early in the app session.",
                        "Indicates newly detected issues.",
                        "Indicates previously closed issues which have been detected again.",
                        "Indicates issues impacting some end users multiple times."
                      ],
                      "location": "query",
                      "enum": [
                        "SIGNAL_UNSPECIFIED",
                        "SIGNAL_EARLY",
                        "SIGNAL_FRESH",
                        "SIGNAL_REGRESSED",
                        "SIGNAL_REPETITIVE"
                      ],
                      "type": "string",
                      "description": "Optional. Only returns issues currently marked with the given signals. This field matches [Issue.signals.signal].",
                      "repeated": true
                    },
                    "filter.issue.content": {
                      "type": "string",
                      "location": "query",
                      "description": "Optional. 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\")."
                    },
                    "readMask": {
                      "location": "query",
                      "description": "Optional. The list of Event fields to include in the response. If omitted, the full event is returned.",
                      "format": "google-fieldmask",
                      "type": "string"
                    },
                    "filter.device.displayNames": {
                      "type": "string",
                      "description": "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.",
                      "repeated": true,
                      "location": "query"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "ListEventsResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform",
                    "https://www.googleapis.com/auth/firebase"
                  ]
                },
                "batchGet": {
                  "httpMethod": "GET",
                  "path": "v1alpha/{+parent}/events:batchGet",
                  "description": "Fetch a batch of up to 100 events by name.",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/events:batchGet",
                  "id": "firebasecrashlytics.projects.apps.events.batchGet",
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform",
                    "https://www.googleapis.com/auth/firebase"
                  ],
                  "parameters": {
                    "parent": {
                      "required": true,
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "type": "string",
                      "description": "Required. The firebase application. Format: \"projects/{project}/apps/{app_id}\"."
                    },
                    "names": {
                      "location": "query",
                      "description": "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.",
                      "repeated": true,
                      "type": "string"
                    },
                    "readMask": {
                      "location": "query",
                      "description": "Optional. The list of Event fields to include in the response. If omitted, the full event is returned.",
                      "format": "google-fieldmask",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "BatchGetEventsResponse"
                  }
                }
              }
            },
            "issues": {
              "resources": {
                "notes": {
                  "methods": {
                    "delete": {
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform",
                        "https://www.googleapis.com/auth/firebase"
                      ],
                      "parameters": {
                        "name": {
                          "description": "Required. The name of the note to delete. Format: projects/{project}/apps/{app}/issues/{issue}/notes/{note}.",
                          "type": "string",
                          "pattern": "^projects/[^/]+/apps/[^/]+/issues/[^/]+/notes/[^/]+$",
                          "location": "path",
                          "required": true
                        }
                      },
                      "parameterOrder": [
                        "name"
                      ],
                      "response": {
                        "$ref": "Empty"
                      },
                      "httpMethod": "DELETE",
                      "path": "v1alpha/{+name}",
                      "description": "Delete a note by its name.",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/issues/{issuesId}/notes/{notesId}",
                      "id": "firebasecrashlytics.projects.apps.issues.notes.delete"
                    },
                    "list": {
                      "path": "v1alpha/{+parent}/notes",
                      "description": "List all notes for a certain issue, sorted in descending order by timestamp.",
                      "httpMethod": "GET",
                      "id": "firebasecrashlytics.projects.apps.issues.notes.list",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/issues/{issuesId}/notes",
                      "parameters": {
                        "pageSize": {
                          "type": "integer",
                          "location": "query",
                          "description": "Optional. The maximum number of notes per page. If omitted, defaults to 10.",
                          "format": "int32"
                        },
                        "pageToken": {
                          "description": "Optional. A page token, received from a previous calls.",
                          "location": "query",
                          "type": "string"
                        },
                        "parent": {
                          "pattern": "^projects/[^/]+/apps/[^/]+/issues/[^/]+$",
                          "location": "path",
                          "required": true,
                          "description": "Required. The issue the notes belongs to. Format: \"projects/{project}/apps/{app}/issues/{issue}\".",
                          "type": "string"
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "ListNotesResponse"
                      },
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform",
                        "https://www.googleapis.com/auth/firebase"
                      ]
                    },
                    "create": {
                      "httpMethod": "POST",
                      "request": {
                        "$ref": "Note"
                      },
                      "path": "v1alpha/{+parent}/notes",
                      "description": "Create a new note for an issue.",
                      "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/issues/{issuesId}/notes",
                      "id": "firebasecrashlytics.projects.apps.issues.notes.create",
                      "scopes": [
                        "https://www.googleapis.com/auth/cloud-platform",
                        "https://www.googleapis.com/auth/firebase"
                      ],
                      "parameters": {
                        "parent": {
                          "type": "string",
                          "description": "Required. The parent resource where this note will be created. Format: \"projects/{project}/apps/{app}/issues/{issue}\".",
                          "required": true,
                          "pattern": "^projects/[^/]+/apps/[^/]+/issues/[^/]+$",
                          "location": "path"
                        }
                      },
                      "parameterOrder": [
                        "parent"
                      ],
                      "response": {
                        "$ref": "Note"
                      }
                    }
                  }
                }
              },
              "methods": {
                "patch": {
                  "id": "firebasecrashlytics.projects.apps.issues.patch",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/issues/{issuesId}",
                  "path": "v1alpha/{+name}",
                  "description": "Change the state of an issue.",
                  "httpMethod": "PATCH",
                  "request": {
                    "$ref": "Issue"
                  },
                  "parameters": {
                    "updateMask": {
                      "location": "query",
                      "description": "Optional. The list of Issue fields to update. Currently only \"state\" is mutable.",
                      "format": "google-fieldmask",
                      "type": "string"
                    },
                    "name": {
                      "pattern": "^projects/[^/]+/apps/[^/]+/issues/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. Output only. Immutable. Identifier. The name of the issue resource. Format: \"projects/{project}/apps/{app}/issues/{issue}\".",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Issue"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform",
                    "https://www.googleapis.com/auth/firebase"
                  ]
                },
                "batchUpdate": {
                  "id": "firebasecrashlytics.projects.apps.issues.batchUpdate",
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/issues:batchUpdate",
                  "path": "v1alpha/{+parent}/issues:batchUpdate",
                  "description": "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.",
                  "httpMethod": "POST",
                  "request": {
                    "$ref": "BatchUpdateIssuesRequest"
                  },
                  "parameters": {
                    "parent": {
                      "description": "Required. 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.",
                      "type": "string",
                      "pattern": "^projects/[^/]+/apps/[^/]+$",
                      "location": "path",
                      "required": true
                    }
                  },
                  "parameterOrder": [
                    "parent"
                  ],
                  "response": {
                    "$ref": "BatchUpdateIssuesResponse"
                  },
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform",
                    "https://www.googleapis.com/auth/firebase"
                  ]
                },
                "get": {
                  "scopes": [
                    "https://www.googleapis.com/auth/cloud-platform",
                    "https://www.googleapis.com/auth/firebase"
                  ],
                  "parameters": {
                    "name": {
                      "pattern": "^projects/[^/]+/apps/[^/]+/issues/[^/]+$",
                      "location": "path",
                      "required": true,
                      "description": "Required. The name of the issue to retrieve. Format: \"projects/{project}/apps/{app}/issues/{issue}\".",
                      "type": "string"
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "response": {
                    "$ref": "Issue"
                  },
                  "flatPath": "v1alpha/projects/{projectsId}/apps/{appsId}/issues/{issuesId}",
                  "id": "firebasecrashlytics.projects.apps.issues.get",
                  "httpMethod": "GET",
                  "path": "v1alpha/{+name}",
                  "description": "Retrieve an issue."
                }
              }
            }
          }
        }
      }
    }
  },
  "parameters": {
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "alt": {
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "default": "json",
      "enum": [
        "json",
        "media",
        "proto"
      ],
      "location": "query",
      "type": "string",
      "description": "Data format for response."
    },
    "upload_protocol": {
      "location": "query",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
      "type": "string"
    },
    "fields": {
      "description": "Selector specifying which fields to include in a partial response.",
      "location": "query",
      "type": "string"
    },
    "$.xgafv": {
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "enum": [
        "1",
        "2"
      ],
      "location": "query",
      "type": "string",
      "description": "V1 error format."
    },
    "key": {
      "type": "string",
      "location": "query",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token."
    },
    "prettyPrint": {
      "default": "true",
      "location": "query",
      "description": "Returns response with indentations and line breaks.",
      "type": "boolean"
    },
    "oauth_token": {
      "location": "query",
      "description": "OAuth 2.0 token for the current user.",
      "type": "string"
    },
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "quotaUser": {
      "type": "string",
      "location": "query",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters."
    },
    "uploadType": {
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
      "type": "string"
    }
  },
  "revision": "20260709",
  "ownerDomain": "google.com",
  "rootUrl": "https://firebasecrashlytics.googleapis.com/",
  "canonicalName": "Firebase Crashlytics",
  "batchPath": "batch",
  "version_module": true,
  "basePath": "",
  "ownerName": "Google",
  "schemas": {
    "Memory": {
      "type": "object",
      "id": "Memory",
      "description": "Mobile device memory usage.",
      "properties": {
        "free": {
          "description": "Bytes free.",
          "format": "int64",
          "type": "string"
        },
        "used": {
          "description": "Bytes in use.",
          "format": "int64",
          "type": "string"
        }
      }
    },
    "Empty": {
      "id": "Empty",
      "description": "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); }",
      "properties": {},
      "type": "object"
    },
    "IssueSignals": {
      "type": "object",
      "properties": {
        "signal": {
          "enum": [
            "SIGNAL_UNSPECIFIED",
            "SIGNAL_EARLY",
            "SIGNAL_FRESH",
            "SIGNAL_REGRESSED",
            "SIGNAL_REPETITIVE"
          ],
          "readOnly": true,
          "enumDescriptions": [
            "Default.",
            "Indicates an issue that is impacting end users early in the app session.",
            "Indicates newly detected issues.",
            "Indicates previously closed issues which have been detected again.",
            "Indicates issues impacting some end users multiple times."
          ],
          "description": "Output only. The signal name.",
          "type": "string"
        },
        "description": {
          "description": "Output only. Supporting detail information.",
          "readOnly": true,
          "type": "string"
        }
      },
      "id": "IssueSignals",
      "description": "Distinctive characteristics assigned by the Crashlytics analyzer."
    },
    "BatchUpdateIssuesResponse": {
      "properties": {
        "issues": {
          "type": "array",
          "items": {
            "$ref": "Issue"
          },
          "description": "Issues updated in the same order as in BatchUpdateIssuesRequest."
        }
      },
      "id": "BatchUpdateIssuesResponse",
      "description": "Response message for the BatchUpdateIssues method.",
      "type": "object"
    },
    "Log": {
      "type": "object",
      "id": "Log",
      "description": "Developer-provided log lines recorded during the session.",
      "properties": {
        "logTime": {
          "description": "Device timestamp when the line was logged.",
          "format": "google-datetime",
          "type": "string"
        },
        "message": {
          "description": "Log message.",
          "type": "string"
        }
      }
    },
    "Event": {
      "id": "Event",
      "description": "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)",
      "properties": {
        "platform": {
          "description": "ANDROID, IOS, or WEB.",
          "type": "string"
        },
        "eventTime": {
          "type": "string",
          "description": "Device timestamp that the event was recorded.",
          "format": "google-datetime"
        },
        "logs": {
          "type": "array",
          "items": {
            "$ref": "Log"
          },
          "description": "Log messages recorded by the developer during the session."
        },
        "processState": {
          "description": "The state of the app process at the time of the event.",
          "type": "string"
        },
        "blameFrame": {
          "description": "The stack trace frame blamed by Crashlytics processing. May not be present in future analyzer.",
          "$ref": "Frame"
        },
        "installationUuid": {
          "description": "Unique identifier for the device-app installation. This field is used to compute the unique number of impacted users.",
          "type": "string"
        },
        "exceptions": {
          "type": "array",
          "items": {
            "$ref": "Exception"
          },
          "description": "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."
        },
        "customKeys": {
          "type": "object",
          "description": "Custom keys set by the developer during the session.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "eventId": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Immutable. The unique event identifier is assigned during processing."
        },
        "errors": {
          "description": "Apple only. A non-fatal error captured by the iOS SDK and its stacktrace.",
          "type": "array",
          "items": {
            "$ref": "Error"
          }
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Required. Output only. Immutable. Identifier. The name of the event resource. Format: \"projects/{project}/apps/{app_id}/events/{event}\"."
        },
        "browser": {
          "description": "Browser and version.",
          "$ref": "Browser"
        },
        "threads": {
          "type": "array",
          "items": {
            "$ref": "Thread"
          },
          "description": "Application threads present at the time the event was recorded. Each contains a stacktrace. One thread will be blamed for the error."
        },
        "sessionId": {
          "description": "Unique identifier for the Firebase session.",
          "type": "string"
        },
        "issueTitle": {
          "description": "The title of the issue in which the event was grouped. This is usually a source file or method name.",
          "type": "string"
        },
        "issue": {
          "description": "Details for the [Issue] assigned to this [Event].",
          "$ref": "Issue"
        },
        "memory": {
          "description": "Mobile device memory usage.",
          "$ref": "Memory"
        },
        "breadcrumbs": {
          "type": "array",
          "items": {
            "$ref": "Breadcrumb"
          },
          "description": "Analytics events recorded by the analytics SDK during the session."
        },
        "routePath": {
          "description": "Output only. Web only. The route path of the web application when the event occurred, excluding query parameters and fragment.",
          "readOnly": true,
          "type": "string"
        },
        "version": {
          "description": "Mobile application version.",
          "$ref": "Version"
        },
        "user": {
          "description": "End user identifiers for the device owner.",
          "$ref": "User"
        },
        "bundleOrPackage": {
          "description": "The bundle name for iOS apps or the package name of Android apps. Format: \"com.mycompany.myapp\".",
          "type": "string"
        },
        "appOrientation": {
          "description": "App orientation at the time of the crash (portrait or landscape).",
          "type": "string"
        },
        "operatingSystem": {
          "description": "Operating system and version.",
          "$ref": "OperatingSystem"
        },
        "storage": {
          "description": "Mobile device disk/flash usage.",
          "$ref": "Storage"
        },
        "deviceOrientation": {
          "description": "Device orientation at the time of the crash (portrait or landscape).",
          "type": "string"
        },
        "receivedTime": {
          "type": "string",
          "description": "Server timestamp that the event was received by Crashlytics.",
          "format": "google-datetime"
        },
        "issueVariant": {
          "description": "Details for the [IssueVariant] assigned to this [Event].",
          "$ref": "IssueVariant"
        },
        "issueSubtitle": {
          "description": "The subtitle of the issue in which the event was grouped. This is usually a symbol or an exception message.",
          "type": "string"
        },
        "device": {
          "description": "Mobile device metadata.",
          "$ref": "Device"
        },
        "crashlyticsSdkVersion": {
          "description": "Crashlytics SDK version.",
          "type": "string"
        },
        "buildStamp": {
          "description": "Metadata provided by the app's build system, including version control repository info.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "ListEventsResponse": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "Event"
          },
          "description": "Returns one element per event, in descending order the by event timestamp."
        },
        "nextPageToken": {
          "description": "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.",
          "type": "string"
        }
      },
      "id": "ListEventsResponse",
      "description": "Response message for the ListEvents method."
    },
    "Browser": {
      "type": "object",
      "id": "Browser",
      "description": "Web browser metadata.",
      "properties": {
        "displayName": {
          "description": "Browser name and version number. Formatted to be suitable for passing to BrowserFilter.",
          "type": "string"
        },
        "browser": {
          "description": "Browser name.",
          "type": "string"
        },
        "displayVersion": {
          "description": "Browser display version number.",
          "type": "string"
        }
      }
    },
    "UpdateIssueRequest": {
      "type": "object",
      "id": "UpdateIssueRequest",
      "description": "Request message for the UpdateIssue method.",
      "properties": {
        "updateMask": {
          "description": "Optional. The list of Issue fields to update. Currently only \"state\" is mutable.",
          "format": "google-fieldmask",
          "type": "string"
        },
        "issue": {
          "description": "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}\".",
          "$ref": "Issue"
        }
      }
    },
    "Exception": {
      "type": "object",
      "properties": {
        "subtitle": {
          "description": "The subtitle of the exception.",
          "type": "string"
        },
        "type": {
          "description": "The exception type e.g. java.lang.IllegalStateException.",
          "type": "string"
        },
        "exceptionMessage": {
          "description": "A message associated with the exception.",
          "type": "string"
        },
        "nested": {
          "description": "True for all but the last-thrown exception (i.e. the first record).",
          "type": "boolean"
        },
        "title": {
          "description": "The title of the exception.",
          "type": "string"
        },
        "blamed": {
          "description": "True when the Crashlytics analysis has determined that this thread is where the fault occurred.",
          "type": "boolean"
        },
        "frames": {
          "description": "The frames in the exception's stacktrace.",
          "type": "array",
          "items": {
            "$ref": "Frame"
          }
        }
      },
      "id": "Exception",
      "description": "A Java or Javascript exception and its stacktrace. Only from Android or web apps."
    },
    "Version": {
      "id": "Version",
      "description": "Application software version.",
      "properties": {
        "buildVersion": {
          "description": "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.",
          "type": "string"
        },
        "displayName": {
          "description": "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.",
          "type": "string"
        },
        "tracks": {
          "description": "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.",
          "type": "array",
          "items": {
            "$ref": "PlayTrack"
          }
        },
        "displayVersion": {
          "description": "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.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "BatchUpdateIssuesRequest": {
      "type": "object",
      "id": "BatchUpdateIssuesRequest",
      "description": "Request message for the BatchUpdateIssues method.",
      "properties": {
        "updateMask": {
          "description": "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.",
          "format": "google-fieldmask",
          "type": "string"
        },
        "requests": {
          "description": "Required. The request message specifying the resources to update. A maximum of 100 issues can be modified in a batch.",
          "type": "array",
          "items": {
            "$ref": "UpdateIssueRequest"
          }
        }
      }
    },
    "Storage": {
      "type": "object",
      "properties": {
        "free": {
          "description": "Bytes free.",
          "format": "int64",
          "type": "string"
        },
        "used": {
          "type": "string",
          "description": "Bytes used.",
          "format": "int64"
        }
      },
      "id": "Storage",
      "description": "Mobile device disk/flash usage. Not reported for all devices."
    },
    "IssueVariant": {
      "type": "object",
      "id": "IssueVariant",
      "description": "A variant is a subgroup of an issue where all events have very similar stack traces. Issues may contain one or more variants.",
      "properties": {
        "uri": {
          "description": "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.",
          "readOnly": true,
          "type": "string"
        },
        "id": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Immutable. Distinct identifier for the variant."
        },
        "sampleEvent": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The resource name for a sample event in this variant."
        }
      }
    },
    "Breadcrumb": {
      "type": "object",
      "id": "Breadcrumb",
      "description": "Analytics events recorded during the session.",
      "properties": {
        "eventTime": {
          "type": "string",
          "description": "Device timestamp for the event.",
          "format": "google-datetime"
        },
        "title": {
          "description": "Analytic event name.",
          "type": "string"
        },
        "params": {
          "type": "object",
          "description": "Event parameters.",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "FirebaseSessionEvent": {
      "properties": {
        "firstSessionId": {
          "description": "The identifier of the first session since the last cold start. This id and the session_id will be the same for app launches.",
          "type": "string"
        },
        "eventTime": {
          "type": "string",
          "description": "The start timestamp for the session event.",
          "format": "google-datetime"
        },
        "device": {
          "description": "Mobile device metadata.",
          "$ref": "Device"
        },
        "firebaseInstallationId": {
          "description": "Uniquely identifies a device with Firebase apps installed.",
          "type": "string"
        },
        "version": {
          "description": "Mobile application version numbers.",
          "$ref": "Version"
        },
        "eventType": {
          "type": "string",
          "enumDescriptions": [
            "Unknown.",
            "Application session started."
          ],
          "description": "Session event type. The SDK only supports SESSION_START events at this time.",
          "enum": [
            "SESSION_EVENT_TYPE_UNKNOWN",
            "SESSION_START"
          ]
        },
        "sessionId": {
          "description": "Unique identifier for the Firebase session.",
          "type": "string"
        },
        "sessionIndex": {
          "description": "Indicates the number of sessions since the last cold start.",
          "format": "int32",
          "type": "integer"
        },
        "operatingSystem": {
          "description": "Operating system and version.",
          "$ref": "OperatingSystem"
        }
      },
      "id": "FirebaseSessionEvent",
      "description": "Sessions recorded by the Firebase App Quality Sessions SDK.",
      "type": "object"
    },
    "DeleteUserCrashReportsResponse": {
      "id": "DeleteUserCrashReportsResponse",
      "description": "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.",
      "properties": {
        "targetCompleteTime": {
          "type": "string",
          "description": "Target time to complete the delete crash reports operation.",
          "format": "google-datetime"
        }
      },
      "type": "object"
    },
    "Report": {
      "type": "object",
      "properties": {
        "groups": {
          "type": "array",
          "items": {
            "$ref": "ReportGroup"
          },
          "description": "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."
        },
        "name": {
          "description": "The name of the report. Format: \"projects/{project}/apps/{app_id}/reports/{report}\".",
          "type": "string"
        },
        "totalSize": {
          "readOnly": true,
          "type": "integer",
          "description": "Output only. The total number of groups retrievable by the request.",
          "format": "int32"
        },
        "usage": {
          "description": "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.",
          "type": "string"
        },
        "nextPageToken": {
          "readOnly": true,
          "type": "string",
          "description": "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."
        },
        "displayName": {
          "description": "Output only. The displayable title of the report.",
          "readOnly": true,
          "type": "string"
        }
      },
      "id": "Report",
      "description": "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."
    },
    "OperatingSystem": {
      "type": "object",
      "id": "OperatingSystem",
      "description": "Mobile device operating system metadata.",
      "properties": {
        "modificationState": {
          "description": "Indicates if the OS has been modified or \"jailbroken\".",
          "type": "string"
        },
        "deviceType": {
          "description": "The device category (mobile, tablet, desktop).",
          "type": "string"
        },
        "type": {
          "description": "The OS type on Apple platforms (iOS, iPadOS, etc.).",
          "type": "string"
        },
        "displayName": {
          "description": "Name and version number. Formatted to be suitable for passing to OperatingSystemFilter.",
          "type": "string"
        },
        "os": {
          "description": "Operating system name.",
          "type": "string"
        },
        "displayVersion": {
          "description": "Operating system display version number.",
          "type": "string"
        }
      }
    },
    "WebMetricsGroup": {
      "type": "object",
      "id": "WebMetricsGroup",
      "description": "Represents a grouping for metrics specific to web applications.",
      "properties": {
        "id": {
          "description": "The id of the web metrics group",
          "type": "string"
        }
      }
    },
    "Device": {
      "id": "Device",
      "description": "Mobile device metadata.",
      "properties": {
        "model": {
          "description": "The model name which is consistent with android.os.Build.MODEL, e.g. (\"SPH-L710\", \"GT-I9300\").",
          "type": "string"
        },
        "architecture": {
          "description": "Device processor architecture.",
          "type": "string"
        },
        "formFactor": {
          "type": "string",
          "enumDescriptions": [
            "Unknown.",
            "Includes mobile phones, small foldables and other form factors not fitting the other categories.",
            "Includes tablets and larger foldables.",
            "Includes desktops, laptops, Chromebooks, etc.",
            "Includes televisions and set-tops.",
            "Includes both watches and other wearables."
          ],
          "enum": [
            "FORM_FACTOR_UNSPECIFIED",
            "PHONE",
            "TABLET",
            "DESKTOP",
            "TV",
            "WATCH"
          ],
          "description": "See FormFactor message."
        },
        "manufacturer": {
          "description": "Device brand name which is consistent with android.os.Build.BRAND.",
          "type": "string"
        },
        "displayName": {
          "description": "Full device name, suitable for passing to DeviceFilter. Format: \"manufacturer (model)\".",
          "type": "string"
        },
        "marketingName": {
          "description": "Marketing name, most recognizable public form, e.g. \"Pixel 6\".",
          "type": "string"
        },
        "companyName": {
          "description": "An invariant name of the manufacturer that submitted this product in its most recognizable public form, e.g. \"Google\".",
          "type": "string"
        }
      },
      "type": "object"
    },
    "Issue": {
      "id": "Issue",
      "description": "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.",
      "properties": {
        "id": {
          "description": "Output only. Immutable. Unique identifier for the issue.",
          "readOnly": true,
          "type": "string"
        },
        "notesCount": {
          "description": "Output only. The number of notes attached to an issue.",
          "format": "int64",
          "readOnly": true,
          "type": "string"
        },
        "lastSeenTime": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The most recent time this issue was seen.",
          "format": "google-datetime"
        },
        "uri": {
          "readOnly": true,
          "type": "string",
          "description": "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."
        },
        "lastSeenVersion": {
          "description": "Output only. The most recent app display_version in which this issue was seen, populated for mobile issues only.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Required. Output only. Immutable. Identifier. The name of the issue resource. Format: \"projects/{project}/apps/{app}/issues/{issue}\"."
        },
        "firstSeenTime": {
          "description": "Output only. Immutable. The first time this issue was seen.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "title": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Immutable. Caption title. This is usually a source file or method name."
        },
        "subtitle": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Immutable. Caption subtitle. This is usually a symbol or an exception message."
        },
        "sampleEvent": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. The resource name for a sample event in this issue."
        },
        "signals": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "IssueSignals"
          },
          "description": "Output only. Immutable. Distinctive characteristics assigned by the Crashlytics analyzer."
        },
        "errorType": {
          "description": "Output only. Immutable. Indicates whether this issue is a crash, non-fatal exception, or ANR.",
          "type": "string",
          "enum": [
            "ERROR_TYPE_UNSPECIFIED",
            "FATAL",
            "NON_FATAL",
            "ANR"
          ],
          "readOnly": true,
          "enumDescriptions": [
            "Unknown.",
            "Fatal crash event.",
            "Non-fatal event, such as a caught Java exception or NSError on iOS.",
            "Application not responding error, Android only."
          ]
        },
        "firstSeenVersion": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Immutable. The first app display_version in which this issue was seen, populated for mobile issues only."
        },
        "state": {
          "type": "string",
          "description": "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).",
          "readOnly": true,
          "enumDescriptions": [
            "Unknown.",
            "Ongoing issue.",
            "Issue resolved.",
            "Issue muted. No alerts will be fired for this issue."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "OPEN",
            "CLOSED",
            "MUTED"
          ]
        },
        "variants": {
          "readOnly": true,
          "type": "array",
          "items": {
            "$ref": "IssueVariant"
          },
          "description": "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."
        },
        "stateUpdateTime": {
          "description": "Output only. The time at which the issue state was last changed.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        }
      },
      "type": "object"
    },
    "PlayTrack": {
      "id": "PlayTrack",
      "description": "Describes a release track in the Play Developer Console.",
      "properties": {
        "type": {
          "enum": [
            "TRACK_TYPE_UNSPECIFIED",
            "TRACK_TYPE_PROD",
            "TRACK_TYPE_INTERNAL",
            "TRACK_TYPE_OPEN_TESTING",
            "TRACK_TYPE_CLOSED_TESTING",
            "TRACK_TYPE_EARLY_ACCESS"
          ],
          "description": "The type of track (prod, internal, etc...).",
          "type": "string",
          "enumDescriptions": [
            "Unknown.",
            "Production.",
            "Internal testing.",
            "Open testing.",
            "Closed testing.",
            "Early access."
          ]
        },
        "title": {
          "description": "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.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "User": {
      "type": "object",
      "id": "User",
      "description": "Developer-provided end user identifiers.",
      "properties": {
        "id": {
          "description": "User id if provided by the app developer.",
          "type": "string"
        }
      }
    },
    "ReportGroup": {
      "id": "ReportGroup",
      "description": "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.",
      "properties": {
        "device": {
          "description": "Device metrics group.",
          "$ref": "Device"
        },
        "version": {
          "description": "Version metrics group.",
          "$ref": "Version"
        },
        "browser": {
          "description": "Browser metrics group.",
          "$ref": "Browser"
        },
        "variant": {
          "description": "Issue variant metrics group.",
          "$ref": "IssueVariant"
        },
        "subgroups": {
          "type": "array",
          "items": {
            "$ref": "ReportGroup"
          },
          "description": "When applicable, this field contains additional nested groupings. For example, events can be grouped by operating system and by operating system version."
        },
        "operatingSystem": {
          "description": "Operating system metrics group.",
          "$ref": "OperatingSystem"
        },
        "metrics": {
          "description": "Scalar metrics will contain a single object covering the entire interval, while time-dimensioned graphs will contain one per time grain.",
          "type": "array",
          "items": {
            "$ref": "IntervalMetrics"
          }
        },
        "webMetricsGroup": {
          "description": "Web metrics group.",
          "$ref": "WebMetricsGroup"
        },
        "issue": {
          "description": "Issue metrics group.",
          "$ref": "Issue"
        }
      },
      "type": "object"
    },
    "Frame": {
      "type": "object",
      "properties": {
        "line": {
          "description": "The line number in the file of the frame.",
          "format": "int64",
          "type": "string"
        },
        "address": {
          "description": "The address in the binary image which contains the code. Present for native frames.",
          "format": "int64",
          "type": "string"
        },
        "column": {
          "type": "string",
          "description": "The column on the line.",
          "format": "int64"
        },
        "file": {
          "description": "The name of the source file in which the frame is found.",
          "type": "string"
        },
        "symbol": {
          "description": "The frame symbol after it has been deobfuscated or symbolicated. The raw symbol from the device if it could not be hydrated.",
          "type": "string"
        },
        "offset": {
          "description": "The byte offset into the binary image that contains the code. Present for native frames.",
          "format": "int64",
          "type": "string"
        },
        "library": {
          "description": "The display name of the library that includes the frame.",
          "type": "string"
        },
        "owner": {
          "description": "One of DEVELOPER, VENDOR, RUNTIME, PLATFORM, or SYSTEM.",
          "type": "string"
        },
        "blamed": {
          "description": "True when the Crashlytics analysis has determined that this frame is likely to be the cause of the error.",
          "type": "boolean"
        }
      },
      "id": "Frame",
      "description": "A frame in a stacktrace."
    },
    "Error": {
      "properties": {
        "code": {
          "description": "Error code associated with the app's custom logged NSError.",
          "format": "int64",
          "type": "string"
        },
        "subtitle": {
          "description": "The subtitle of the error.",
          "type": "string"
        },
        "title": {
          "description": "The title of the error.",
          "type": "string"
        },
        "blamed": {
          "description": "True when the Crashlytics analysis has determined that the stacktrace in this error is where the fault occurred.",
          "type": "boolean"
        },
        "queue": {
          "description": "The queue on which the thread was running.",
          "type": "string"
        },
        "frames": {
          "type": "array",
          "items": {
            "$ref": "Frame"
          },
          "description": "The frames in the error's stacktrace."
        }
      },
      "id": "Error",
      "description": "A non-fatal error and its stacktrace, only from Apple apps.",
      "type": "object"
    },
    "ListNotesResponse": {
      "type": "object",
      "properties": {
        "notes": {
          "type": "array",
          "items": {
            "$ref": "Note"
          },
          "description": "Returns notes ordered descending by the timestamp."
        },
        "nextPageToken": {
          "description": "A pagination token to retrieve the next page of notes. If this field is not present, there are no subsequent notes.",
          "type": "string"
        }
      },
      "id": "ListNotesResponse",
      "description": "Response message for the ListNotes method."
    },
    "Note": {
      "type": "object",
      "id": "Note",
      "description": "Developer notes for an issue.",
      "properties": {
        "name": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Identifier. Format: \"projects/{project}/apps/app/issues/{issue}/notes/{note}\"."
        },
        "createTime": {
          "description": "Output only. Time when the note was created.",
          "format": "google-datetime",
          "readOnly": true,
          "type": "string"
        },
        "body": {
          "description": "Immutable. The body of the note.",
          "type": "string"
        },
        "author": {
          "description": "Output only. The email of the author of the note.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "IntervalMetrics": {
      "type": "object",
      "id": "IntervalMetrics",
      "description": "A set of computed metric values for a time interval",
      "properties": {
        "sessionsCount": {
          "description": "The number of distinct sessions in the set of events.",
          "format": "int64",
          "type": "string"
        },
        "startTime": {
          "type": "string",
          "description": "The start of the interval covered by the computation.",
          "format": "google-datetime"
        },
        "eventsCount": {
          "description": "The total count of events in the interval.",
          "format": "int64",
          "type": "string"
        },
        "endTime": {
          "type": "string",
          "description": "The end of the interval covered by the computation.",
          "format": "google-datetime"
        },
        "impactedUsersCount": {
          "description": "The number of distinct users in the set of events.",
          "format": "int64",
          "type": "string"
        }
      }
    },
    "Thread": {
      "properties": {
        "crashed": {
          "description": "True when the thread has crashed.",
          "type": "boolean"
        },
        "title": {
          "description": "The title of the thread.",
          "type": "string"
        },
        "frames": {
          "type": "array",
          "items": {
            "$ref": "Frame"
          },
          "description": "The frames in the thread's stacktrace."
        },
        "crashAddress": {
          "description": "The address of the signal that caused the application to crash. Only present on crashed native threads.",
          "format": "int64",
          "type": "string"
        },
        "subtitle": {
          "description": "The subtitle of the thread.",
          "type": "string"
        },
        "blamed": {
          "description": "True when the Crashlytics analysis has determined that the stacktrace in this thread is where the fault occurred.",
          "type": "boolean"
        },
        "threadState": {
          "type": "string",
          "description": "Output only. The state of the thread at the time the ANR occurred.",
          "readOnly": true,
          "enumDescriptions": [
            "Thread state unspecified.",
            "Thread was terminated.",
            "Thread was runnable.",
            "Thread was waiting with a timeout.",
            "Thread was blocked.",
            "Thread was waiting.",
            "Thread was started, yet to run anything.",
            "The thread was native and we could not heuristically determine that it was was waiting, so assume it's runnable.",
            "We heuristically determined that the thread is waiting."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "THREAD_STATE_TERMINATED",
            "THREAD_STATE_RUNNABLE",
            "THREAD_STATE_TIMED_WAITING",
            "THREAD_STATE_BLOCKED",
            "THREAD_STATE_WAITING",
            "THREAD_STATE_NEW",
            "THREAD_STATE_NATIVE_RUNNABLE",
            "THREAD_STATE_NATIVE_WAITING"
          ]
        },
        "threadId": {
          "description": "The id of the thread, only available for ANR threads.",
          "format": "int64",
          "type": "string"
        },
        "queue": {
          "description": "The queue on which the thread was running.",
          "type": "string"
        },
        "signal": {
          "description": "The name of the signal that caused the app to crash. Only present on crashed native threads.",
          "type": "string"
        },
        "sysThreadId": {
          "type": "string",
          "description": "The system id of the thread, only available for ANR threads.",
          "format": "int64"
        },
        "name": {
          "description": "The name of the thread.",
          "type": "string"
        },
        "signalCode": {
          "description": "The code of the signal that caused the app to crash. Only present on crashed native threads.",
          "type": "string"
        }
      },
      "id": "Thread",
      "description": "An application thread.",
      "type": "object"
    },
    "BatchGetEventsResponse": {
      "id": "BatchGetEventsResponse",
      "description": "Response message for the BatchGetEvents method.",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "$ref": "Event"
          },
          "description": "The list of retrieved events."
        }
      },
      "type": "object"
    },
    "ListReportsResponse": {
      "type": "object",
      "id": "ListReportsResponse",
      "description": "Response method for the ListReports method. The response will always include all of the available reports.",
      "properties": {
        "reports": {
          "description": "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.",
          "type": "array",
          "items": {
            "$ref": "Report"
          }
        }
      }
    }
  },
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/cloud-platform": {
          "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
        },
        "https://www.googleapis.com/auth/firebase": {
          "description": "View and administer all your Firebase data and settings"
        }
      }
    }
  },
  "kind": "discovery#restDescription",
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "servicePath": "",
  "name": "firebasecrashlytics",
  "protocol": "rest",
  "id": "firebasecrashlytics:v1alpha",
  "description": "This service provides an API for mobile app developers to request deletion of user's crash reports.",
  "mtlsRootUrl": "https://firebasecrashlytics.mtls.googleapis.com/"
}
