---
search:
  exclude: true
---

# <a id="bitdrift.public.unary.issues.v1.Report"></a>Report

| Field | Type | Description |
|---|---|---|
| errors | <span class="proto-type proto-type-message">repeated [<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Report</i><i class="proto-type-dot">.</i><i class="proto-type-part">Error</i>](#bitdrift.public.unary.issues.v1.Report.Error){ title="bitdrift.public.unary.issues.v1.Report.Error"}</span> |  |
| device_metrics | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Report</i><i class="proto-type-dot">.</i><i class="proto-type-part">DeviceMetrics</i>](#bitdrift.public.unary.issues.v1.Report.DeviceMetrics){ title="bitdrift.public.unary.issues.v1.Report.DeviceMetrics"}</span> |  |
| thread_details | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Report</i><i class="proto-type-dot">.</i><i class="proto-type-part">ThreadDetails</i>](#bitdrift.public.unary.issues.v1.Report.ThreadDetails){ title="bitdrift.public.unary.issues.v1.Report.ThreadDetails"}</span> | State of the thread when the event was reported. |
| app_metrics | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Report</i><i class="proto-type-dot">.</i><i class="proto-type-part">AppMetrics</i>](#bitdrift.public.unary.issues.v1.Report.AppMetrics){ title="bitdrift.public.unary.issues.v1.Report.AppMetrics"}</span> |  |
| fields | <span class="proto-type proto-type-message">repeated [<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Report</i><i class="proto-type-dot">.</i><i class="proto-type-part">Field</i>](#bitdrift.public.unary.issues.v1.Report.Field){ title="bitdrift.public.unary.issues.v1.Report.Field"}</span> | Additional report fields captured from the client report payload. |

#### Example
```json
{
  "app_metrics": {
    "app_id": "com.example.app",
    "bundle_version": "1024",
    "version": "2.1.0"
  },
  "device_metrics": {
    "architecture": "ARM64",
    "battery_level": 72,
    "manufacturer": "Apple",
    "model": "iPhone15,2",
    "os": "iOS",
    "os_version": "17.4.1",
    "power_state": "RUNNING_ON_BATTERY",
    "time": "2024-01-15T09:30:00Z",
    "user_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  "errors": [
    {
      "details": "Attempted to dereference a null pointer",
      "frames": [
        {
          "frame_address": 4376830024,
          "frame_type": "DWARF",
          "image_id": "8c4e2a1b-3f56-4d89-a012-bc345678def0",
          "image_load_address": 4376829952,
          "image_path": "/usr/lib/libSystem.dylib",
          "in_app": false,
          "original_index": 3,
          "source_file": {
            "column": 5,
            "lineno": 42,
            "path": "src/main.rs"
          },
          "state": [
            "crashed"
          ],
          "status": "SYMBOLICATED",
          "symbol_address": 4376829952,
          "symbol_name": "_ZN5alloc5alloc18handle_alloc_error17h123456789abcdef0E",
          "symbolicated_name": "alloc::alloc::handle_alloc_error"
        }
      ],
      "reason": "EXC_BAD_ACCESS"
    }
  ],
  "fields": [
    {
      "key": "device_orientation",
      "value": "portrait"
    }
  ],
  "thread_details": {
    "threads": [
      {
        "active": true,
        "frames": [
          {
            "frame_address": 4376830024,
            "frame_type": "DWARF",
            "image_id": "8c4e2a1b-3f56-4d89-a012-bc345678def0",
            "image_load_address": 4376829952,
            "image_path": "/usr/lib/libSystem.dylib",
            "in_app": false,
            "original_index": 3,
            "source_file": {
              "column": 5,
              "lineno": 42,
              "path": "src/main.rs"
            },
            "state": [
              "crashed"
            ],
            "status": "SYMBOLICATED",
            "symbol_address": 4376829952,
            "symbol_name": "_ZN5alloc5alloc18handle_alloc_error17h123456789abcdef0E",
            "symbolicated_name": "alloc::alloc::handle_alloc_error"
          }
        ],
        "index": 0,
        "name": "com.apple.main-thread",
        "priority": 47.0,
        "quality_of_service": 33,
        "state": "TH_STATE_WAITING"
      }
    ],
    "total_threads": 12
  }
}
```

# <a id="bitdrift.public.unary.issues.v1.Report.Field"></a>Report.Field

| Field | Type | Description |
|---|---|---|
| key | <span class="proto-type proto-type-primitive">string</span> |  |
| value | <span class="proto-type proto-type-primitive">string</span> |  |

#### Example
```json
{
  "key": "device_orientation",
  "value": "portrait"
}
```

# <a id="bitdrift.public.unary.issues.v1.Report.Error"></a>Report.Error

| Field | Type | Description |
|---|---|---|
| reason | <span class="proto-type proto-type-primitive">string</span> |  |
| details | <span class="proto-type proto-type-primitive">string</span> |  |
| frames | <span class="proto-type proto-type-message">repeated [<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Frame</i>](bitdrift_public_unary_issues_v1_Frame.md#bitdrift.public.unary.issues.v1.Frame){ title="bitdrift.public.unary.issues.v1.Frame"}</span> |  |

#### Example
```json
{
  "details": "Attempted to dereference a null pointer",
  "frames": [
    {
      "frame_address": 4376830024,
      "frame_type": "DWARF",
      "image_id": "8c4e2a1b-3f56-4d89-a012-bc345678def0",
      "image_load_address": 4376829952,
      "image_path": "/usr/lib/libSystem.dylib",
      "in_app": false,
      "original_index": 3,
      "source_file": {
        "column": 5,
        "lineno": 42,
        "path": "src/main.rs"
      },
      "state": [
        "crashed"
      ],
      "status": "SYMBOLICATED",
      "symbol_address": 4376829952,
      "symbol_name": "_ZN5alloc5alloc18handle_alloc_error17h123456789abcdef0E",
      "symbolicated_name": "alloc::alloc::handle_alloc_error"
    }
  ],
  "reason": "EXC_BAD_ACCESS"
}
```

# <a id="bitdrift.public.unary.issues.v1.Report.AppMetrics"></a>Report.AppMetrics

| Field | Type | Description |
|---|---|---|
| app_id | <span class="proto-type proto-type-primitive">string</span> |  |
| version | <span class="proto-type proto-type-primitive">string</span> |  |
| bundle_version | <span class="proto-type proto-type-primitive">string</span> | (Only one of <em>bundle_version</em>, or <em>version_code</em> can be set) |
| version_code | <span class="proto-type proto-type-primitive">int64</span> | (Only one of <em>version_code</em>, or <em>bundle_version</em> can be set) |

#### Example
```json
{
  "app_id": "com.example.app",
  "bundle_version": "1024",
  "version": "2.1.0"
}
```

# <a id="bitdrift.public.unary.issues.v1.Report.DeviceMetrics"></a>Report.DeviceMetrics

| Field | Type | Description |
|---|---|---|
| time | <span class="proto-type proto-type-well-known">[google.protobuf.Timestamp](https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp){ title="google.protobuf.Timestamp"}</span> |  |
| manufacturer | <span class="proto-type proto-type-primitive">string</span> |  |
| model | <span class="proto-type proto-type-primitive">string</span> |  |
| architecture | <span class="proto-type proto-type-enum">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Report</i><i class="proto-type-dot">.</i><i class="proto-type-part">DeviceMetrics</i><i class="proto-type-dot">.</i><i class="proto-type-part">Architecture</i>](#bitdrift.public.unary.issues.v1.Report.DeviceMetrics.Architecture){ title="bitdrift.public.unary.issues.v1.Report.DeviceMetrics.Architecture"}</span> |  |
| os | <span class="proto-type proto-type-primitive">string</span> | OS metrics |
| os_version | <span class="proto-type proto-type-primitive">string</span> |  |
| power_state | <span class="proto-type proto-type-enum">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Report</i><i class="proto-type-dot">.</i><i class="proto-type-part">DeviceMetrics</i><i class="proto-type-dot">.</i><i class="proto-type-part">PowerState</i>](#bitdrift.public.unary.issues.v1.Report.DeviceMetrics.PowerState){ title="bitdrift.public.unary.issues.v1.Report.DeviceMetrics.PowerState"}</span> | Power metrics |
| battery_level | <span class="proto-type proto-type-primitive">uint32</span> |  |
| user_id | <span class="proto-type proto-type-primitive">string</span> | The unique identifier for the user/device that generated the report. |

#### Example
```json
{
  "architecture": "ARM64",
  "battery_level": 72,
  "manufacturer": "Apple",
  "model": "iPhone15,2",
  "os": "iOS",
  "os_version": "17.4.1",
  "power_state": "RUNNING_ON_BATTERY",
  "time": "2024-01-15T09:30:00Z",
  "user_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
```

# <a id="bitdrift.public.unary.issues.v1.Report.DeviceMetrics.Architecture"></a>Report.DeviceMetrics.Architecture

| Name | Number | Description |
|---|---|---|
| UNKNOWN_ARCH | 0 |  |
| ARM32 | 1 |  |
| ARM64 | 2 |  |
| X86 | 3 |  |
| X86_64 | 4 |  |

# <a id="bitdrift.public.unary.issues.v1.Report.DeviceMetrics.PowerState"></a>Report.DeviceMetrics.PowerState

| Name | Number | Description |
|---|---|---|
| UNKNOWN_POWER_STATE | 0 |  |
| RUNNING_ON_BATTERY | 1 |  |
| PLUGGED_IN_NO_BATTERY | 2 |  |
| PLUGGED_IN_CHARGING | 3 |  |
| PLUGGED_IN_CHARGED | 4 |  |

# <a id="bitdrift.public.unary.issues.v1.Report.ThreadDetails"></a>Report.ThreadDetails

| Field | Type | Description |
|---|---|---|
| total_threads | <span class="proto-type proto-type-primitive">uint32</span> |  |
| threads | <span class="proto-type proto-type-message">repeated [<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Report</i><i class="proto-type-dot">.</i><i class="proto-type-part">ThreadDetails</i><i class="proto-type-dot">.</i><i class="proto-type-part">Thread</i>](#bitdrift.public.unary.issues.v1.Report.ThreadDetails.Thread){ title="bitdrift.public.unary.issues.v1.Report.ThreadDetails.Thread"}</span> |  |

#### Example
```json
{
  "threads": [
    {
      "active": true,
      "frames": [
        {
          "frame_address": 4376830024,
          "frame_type": "DWARF",
          "image_id": "8c4e2a1b-3f56-4d89-a012-bc345678def0",
          "image_load_address": 4376829952,
          "image_path": "/usr/lib/libSystem.dylib",
          "in_app": false,
          "original_index": 3,
          "source_file": {
            "column": 5,
            "lineno": 42,
            "path": "src/main.rs"
          },
          "state": [
            "crashed"
          ],
          "status": "SYMBOLICATED",
          "symbol_address": 4376829952,
          "symbol_name": "_ZN5alloc5alloc18handle_alloc_error17h123456789abcdef0E",
          "symbolicated_name": "alloc::alloc::handle_alloc_error"
        }
      ],
      "index": 0,
      "name": "com.apple.main-thread",
      "priority": 47.0,
      "quality_of_service": 33,
      "state": "TH_STATE_WAITING"
    }
  ],
  "total_threads": 12
}
```

# <a id="bitdrift.public.unary.issues.v1.Report.ThreadDetails.Thread"></a>Report.ThreadDetails.Thread

| Field | Type | Description |
|---|---|---|
| active | <span class="proto-type proto-type-primitive">bool</span> | true if this thread is reporting the problem |
| name | <span class="proto-type proto-type-primitive">string</span> | The name of the thread. |
| index | <span class="proto-type proto-type-primitive">optional uint32</span> | The ID of the thread. |
| state | <span class="proto-type proto-type-primitive">string</span> | Platform specific state of the thread. |
| priority | <span class="proto-type proto-type-primitive">float</span> | Platform specific priority of the thread.  See https://github.com/bitdriftlabs/api/blob/main/src/bitdrift_public/fbs/issue-reporting/v1/report.fbs#L263-L266 |
| quality_of_service | <span class="proto-type proto-type-primitive">optional int32</span> | Apple specific quality of service. |
| frames | <span class="proto-type proto-type-message">repeated [<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">issues</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">Frame</i>](bitdrift_public_unary_issues_v1_Frame.md#bitdrift.public.unary.issues.v1.Frame){ title="bitdrift.public.unary.issues.v1.Frame"}</span> | The frames of the stacktrace. |

#### Example
```json
{
  "active": true,
  "frames": [
    {
      "frame_address": 4376830024,
      "frame_type": "DWARF",
      "image_id": "8c4e2a1b-3f56-4d89-a012-bc345678def0",
      "image_load_address": 4376829952,
      "image_path": "/usr/lib/libSystem.dylib",
      "in_app": false,
      "original_index": 3,
      "source_file": {
        "column": 5,
        "lineno": 42,
        "path": "src/main.rs"
      },
      "state": [
        "crashed"
      ],
      "status": "SYMBOLICATED",
      "symbol_address": 4376829952,
      "symbol_name": "_ZN5alloc5alloc18handle_alloc_error17h123456789abcdef0E",
      "symbolicated_name": "alloc::alloc::handle_alloc_error"
    }
  ],
  "index": 0,
  "name": "com.apple.main-thread",
  "priority": 47.0,
  "quality_of_service": 33,
  "state": "TH_STATE_WAITING"
}
```

