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