Contexts Interface

The context interfaces provide additional context data. Typically, this is data related to the current user, the current HTTP request. Its canonical name is contexts.

The contexts type can be used to define arbitrary contextual data on the event. It accepts an object of key/value pairs. The key is the “alias” of the context and can be freely chosen. However, as per policy, it should match the type of the context unless there are two values for a type. You can omit type if the key name is the type.

Unknown data for the contexts is rendered as a key/value list.

Device Context

Device context describes the device that caused the event. This is most appropriate for mobile applications.

The type and default key is "device".

name:

Required. The name of the device. This is typically a hostname.

family:

Optional. The family of the device. This is usually the common part of model names across generations. For instance, iPhone would be a reasonable family, so would be Samsung Galaxy.

model:

Optional. The model name. This, for example, can be Samsung Galaxy S3.

model_id:

Optional. An internal hardware revision to identify the device exactly.

arch:

Optional. The CPU architecture.

battery_level:

Optional. If the device has a battery, this can be a floating point value defining the battery level (in the range 0-100).

orientation:

Optional. This can be a string portrait or landscape to define the orientation of a device.

manufacturer:

Optional. The manufacturer of the device.

brand:

Optional. The brand of the device.

screen_resolution:

Optional. The screen resolution. (e.g.: 800x600, 3040x1444).

screen_density:

Optional. A floating point denoting the screen density.

screen_dpi:

Optional. A decimal value reflecting the DPI (dots-per-inch) density.

online:

Optional. Whether the device was online or not.

charging:

Optional. Whether the device was charging or not.

low_memory:

Optional. Whether the device was low on memory.

simulator:

Optional. A flag indicating whether this device is a simulator or an actual device.

memory_size:

Optional. Total system memory available in bytes.

free_memory:

Optional. Free system memory in bytes.

usable_memory:

Optional. Memory usable for the app in bytes.

storage_size:

Optional. Total device storage in bytes.

free_storage:

Optional. Free device storage in bytes.

external_storage_size:

Optional. Total size of an attached external storage in bytes (for example, android SDK card).

external_free_storage:

Optional. Free size of an attached external storage in bytes (for example, android SDK card).

boot_time:

Optional. A formatted UTC timestamp when the system was booted. For example, "2018-02-08T12:52:12Z".

timezone:

Optional. The timezone of the device. For example, Europe/Vienna.

OS Context

OS context describes the operating system on which the event was created. In web contexts, this is the operating system of the browser (generally pulled from the User-Agent string).

The type and default key is "os".

name:

Required. The name of the operating system.

version:

Optional. The version of the operating system.

build:

Optional. The internal build revision of the operating system.

kernel_version:

Optional. An independent kernel version string. This is typically the entire output of the uname syscall.

rooted:

Optional. A flag indicating whether the OS has been jailbroken or rooted.

raw_description:

Optional. An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse name and version from this string, if they are not explicitly given.

Runtime Context

Runtime context describes a runtime in more detail. Typically, this context is used multiple times if multiple runtimes are involved (for instance, if you have a JavaScript application running on top of JVM).

The type and default key is "runtime".

name:

Required. The name of the runtime.

version:

Optional. The version identifier of the runtime.

raw_description:

Optional. An unprocessed description string obtained by the runtime. For some well-known runtimes, Sentry will attempt to parse name and version from this string, if they are not explicitly given.

App Context

App context describes the application. As opposed to the runtime, this is the actual application that was running and carries metadata about the current session.

The type and default key is "app".

app_start_time:

Optional. Formatted UTC timestamp when the user started the application.

device_app_hash:

Optional. Application-specific device identifier.

build_type:

Optional. String identifying the kind of build. For example, testflight.

app_identifier:

Optional. Version-independent application identifier, often a dotted bundle ID.

app_name:

Optional. Human readable application name, as it appears on the platform.

app_version:

Optional. Human readable application version, as it appears on the platform.

app_build:

Optional. Internal build identifier, as it appears on the platform.

Browser Context

Browser context carries information about the browser or user agent for web-related errors. This can either be the browser this event occurred in or the user agent of a web request that triggered the event.

The type and default key is "browser".

name:

Required. Display name of the browser application.

version:

Optional. Version string of the browser.

GPU Context

GPU context describes the GPU of the device.

name:

Required. The name of the graphics device.

version:

Optional. The Version of the graphics device.

id:

Optional. The PCI identifier of the graphics device.

vendor_id:

Optional. The PCI vendor identifier of the graphics device.

vendor_name:

Optional. The vendor name as reported by the graphics device.

memory_size:

Optional. The total GPU memory available in Megabytes.

api_type:

Optional. The device low-level API type.

Examples: "Apple Metal" or "Direct3D11"

multi_threaded_rendering:

Optional. Whether the GPU has multi-threaded rendering or not.

npot_support:

Optional. The Non-Power-Of-Two-Support support.

Example:

"gpu": {
  "name": "AMD Radeon Pro 560",
  "vendor_name": "Apple",
  "memory_size": 4096,
  "api_type": "Metal",
  "multi_threaded_rendering": true,
  "version": "Metal",
  "npot_support": "Full"
}

Examples

{
  "contexts": {
    "os": {
      "name": "Windows"
    },
    "electron": {
      "type": "runtime",
      "name": "Electron",
      "version": "4.0"
    }
  }
}