diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 6e68f75d..f590df3d 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -733,6 +733,121 @@ export const AI_WARNINGS = 'ai.warnings'; */ export type AI_WARNINGS_TYPE = Array; +// Path: model/attributes/app/app__app_build.json + +/** + * Internal build identifier, as it appears on the platform. `app.app_build` + * + * Attribute Value Type: `string` {@link APP_APP_BUILD_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link APP_BUILD} `app.build` + * + * @deprecated Use {@link APP_BUILD} (app.build) instead - Deprecated in favor of app.build + * @example "1" + */ +export const APP_APP_BUILD = 'app.app_build'; + +/** + * Type for {@link APP_APP_BUILD} app.app_build + */ +export type APP_APP_BUILD_TYPE = string; + +// Path: model/attributes/app/app__app_identifier.json + +/** + * Version-independent application identifier, often a dotted bundle ID. `app.app_identifier` + * + * Attribute Value Type: `string` {@link APP_APP_IDENTIFIER_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link APP_IDENTIFIER} `app.identifier` + * + * @deprecated Use {@link APP_IDENTIFIER} (app.identifier) instead - Deprecated in favor of app.identifier + * @example "com.example.myapp" + */ +export const APP_APP_IDENTIFIER = 'app.app_identifier'; + +/** + * Type for {@link APP_APP_IDENTIFIER} app.app_identifier + */ +export type APP_APP_IDENTIFIER_TYPE = string; + +// Path: model/attributes/app/app__app_name.json + +/** + * Human readable application name, as it appears on the platform. `app.app_name` + * + * Attribute Value Type: `string` {@link APP_APP_NAME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link APP_NAME} `app.name` + * + * @deprecated Use {@link APP_NAME} (app.name) instead - Deprecated in favor of app.name + * @example "My App" + */ +export const APP_APP_NAME = 'app.app_name'; + +/** + * Type for {@link APP_APP_NAME} app.app_name + */ +export type APP_APP_NAME_TYPE = string; + +// Path: model/attributes/app/app__app_start_time.json + +/** + * Formatted UTC timestamp when the user started the application. `app.app_start_time` + * + * Attribute Value Type: `string` {@link APP_APP_START_TIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link APP_START_TIME} `app.start_time` + * + * @deprecated Use {@link APP_START_TIME} (app.start_time) instead - Deprecated in favor of app.start_time + * @example "2025-01-01T00:00:00.000Z" + */ +export const APP_APP_START_TIME = 'app.app_start_time'; + +/** + * Type for {@link APP_APP_START_TIME} app.app_start_time + */ +export type APP_APP_START_TIME_TYPE = string; + +// Path: model/attributes/app/app__app_version.json + +/** + * Human readable application version, as it appears on the platform. `app.app_version` + * + * Attribute Value Type: `string` {@link APP_APP_VERSION_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link APP_VERSION} `app.version` + * + * @deprecated Use {@link APP_VERSION} (app.version) instead - Deprecated in favor of app.version + * @example "1.0.0" + */ +export const APP_APP_VERSION = 'app.app_version'; + +/** + * Type for {@link APP_APP_VERSION} app.app_version + */ +export type APP_APP_VERSION_TYPE = string; + // Path: model/attributes/app/app__build.json /** @@ -744,6 +859,8 @@ export type AI_WARNINGS_TYPE = Array; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_APP_BUILD} `app.app_build` + * * @example "1" */ export const APP_BUILD = 'app.build'; @@ -764,6 +881,8 @@ export type APP_BUILD_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_APP_IDENTIFIER} `app.app_identifier` + * * @example "com.example.myapp" */ export const APP_IDENTIFIER = 'app.identifier'; @@ -780,7 +899,7 @@ export type APP_IDENTIFIER_TYPE = string; * * Attribute Value Type: `boolean` {@link APP_IN_FOREGROUND_TYPE} * - * Contains PII: false + * Contains PII: maybe * * Attribute defined in OTEL: No * @@ -804,6 +923,8 @@ export type APP_IN_FOREGROUND_TYPE = boolean; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_APP_NAME} `app.app_name` + * * @example "My App" */ export const APP_NAME = 'app.name'; @@ -824,6 +945,8 @@ export type APP_NAME_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_APP_START_TIME} `app.app_start_time` + * * @example "2025-01-01T00:00:00.000Z" */ export const APP_START_TIME = 'app.start_time'; @@ -864,6 +987,8 @@ export type APP_START_TYPE_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link APP_APP_VERSION} `app.app_version` + * * @example "1.0.0" */ export const APP_VERSION = 'app.version'; @@ -2265,6 +2390,66 @@ export const DEVICEMEMORY = 'deviceMemory'; */ export type DEVICEMEMORY_TYPE = string; +// Path: model/attributes/device/device__battery_level.json + +/** + * The battery level of the device as a percentage (0-100). `device.battery_level` + * + * Attribute Value Type: `number` {@link DEVICE_BATTERY_LEVEL_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 100 + */ +export const DEVICE_BATTERY_LEVEL = 'device.battery_level'; + +/** + * Type for {@link DEVICE_BATTERY_LEVEL} device.battery_level + */ +export type DEVICE_BATTERY_LEVEL_TYPE = number; + +// Path: model/attributes/device/device__battery_temperature.json + +/** + * The battery temperature of the device in Celsius. `device.battery_temperature` + * + * Attribute Value Type: `number` {@link DEVICE_BATTERY_TEMPERATURE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 25 + */ +export const DEVICE_BATTERY_TEMPERATURE = 'device.battery_temperature'; + +/** + * Type for {@link DEVICE_BATTERY_TEMPERATURE} device.battery_temperature + */ +export type DEVICE_BATTERY_TEMPERATURE_TYPE = number; + +// Path: model/attributes/device/device__boot_time.json + +/** + * A formatted UTC timestamp when the system was booted. `device.boot_time` + * + * Attribute Value Type: `string` {@link DEVICE_BOOT_TIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "2018-02-08T12:52:12Z" + */ +export const DEVICE_BOOT_TIME = 'device.boot_time'; + +/** + * Type for {@link DEVICE_BOOT_TIME} device.boot_time + */ +export type DEVICE_BOOT_TIME_TYPE = string; + // Path: model/attributes/device/device__brand.json /** @@ -2285,6 +2470,46 @@ export const DEVICE_BRAND = 'device.brand'; */ export type DEVICE_BRAND_TYPE = string; +// Path: model/attributes/device/device__charging.json + +/** + * Whether the device was charging or not. `device.charging` + * + * Attribute Value Type: `boolean` {@link DEVICE_CHARGING_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example false + */ +export const DEVICE_CHARGING = 'device.charging'; + +/** + * Type for {@link DEVICE_CHARGING} device.charging + */ +export type DEVICE_CHARGING_TYPE = boolean; + +// Path: model/attributes/device/device__chipset.json + +/** + * The chipset of the device. `device.chipset` + * + * Attribute Value Type: `string` {@link DEVICE_CHIPSET_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "Qualcomm SM8550" + */ +export const DEVICE_CHIPSET = 'device.chipset'; + +/** + * Type for {@link DEVICE_CHIPSET} device.chipset + */ +export type DEVICE_CHIPSET_TYPE = string; + // Path: model/attributes/device/device__class.json /** @@ -2305,6 +2530,89 @@ export const DEVICE_CLASS = 'device.class'; */ export type DEVICE_CLASS_TYPE = string; +// Path: model/attributes/device/device__connection_type.json + +/** + * The internet connection type currently being used by the device. `device.connection_type` + * + * Attribute Value Type: `string` {@link DEVICE_CONNECTION_TYPE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link NETWORK_CONNECTION_TYPE} `network.connection.type` + * + * @deprecated Use {@link NETWORK_CONNECTION_TYPE} (network.connection.type) instead - This attribute is being deprecated in favor of network.connection.type + * @example "wifi" + */ +export const DEVICE_CONNECTION_TYPE = 'device.connection_type'; + +/** + * Type for {@link DEVICE_CONNECTION_TYPE} device.connection_type + */ +export type DEVICE_CONNECTION_TYPE_TYPE = string; + +// Path: model/attributes/device/device__cpu_description.json + +/** + * A description of the CPU of the device. `device.cpu_description` + * + * Attribute Value Type: `string` {@link DEVICE_CPU_DESCRIPTION_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz" + */ +export const DEVICE_CPU_DESCRIPTION = 'device.cpu_description'; + +/** + * Type for {@link DEVICE_CPU_DESCRIPTION} device.cpu_description + */ +export type DEVICE_CPU_DESCRIPTION_TYPE = string; + +// Path: model/attributes/device/device__external_free_storage.json + +/** + * External storage free size in bytes. `device.external_free_storage` + * + * Attribute Value Type: `number` {@link DEVICE_EXTERNAL_FREE_STORAGE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 67108864000 + */ +export const DEVICE_EXTERNAL_FREE_STORAGE = 'device.external_free_storage'; + +/** + * Type for {@link DEVICE_EXTERNAL_FREE_STORAGE} device.external_free_storage + */ +export type DEVICE_EXTERNAL_FREE_STORAGE_TYPE = number; + +// Path: model/attributes/device/device__external_storage_size.json + +/** + * External storage total size in bytes. `device.external_storage_size` + * + * Attribute Value Type: `number` {@link DEVICE_EXTERNAL_STORAGE_SIZE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 134217728000 + */ +export const DEVICE_EXTERNAL_STORAGE_SIZE = 'device.external_storage_size'; + +/** + * Type for {@link DEVICE_EXTERNAL_STORAGE_SIZE} device.external_storage_size + */ +export type DEVICE_EXTERNAL_STORAGE_SIZE_TYPE = number; + // Path: model/attributes/device/device__family.json /** @@ -2345,6 +2653,86 @@ export const DEVICE_FREE_MEMORY = 'device.free_memory'; */ export type DEVICE_FREE_MEMORY_TYPE = number; +// Path: model/attributes/device/device__free_storage.json + +/** + * Free device storage in bytes. `device.free_storage` + * + * Attribute Value Type: `number` {@link DEVICE_FREE_STORAGE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 107374182400 + */ +export const DEVICE_FREE_STORAGE = 'device.free_storage'; + +/** + * Type for {@link DEVICE_FREE_STORAGE} device.free_storage + */ +export type DEVICE_FREE_STORAGE_TYPE = number; + +// Path: model/attributes/device/device__id.json + +/** + * Unique device identifier. `device.id` + * + * Attribute Value Type: `string` {@link DEVICE_ID_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: Yes + * + * @example "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + */ +export const DEVICE_ID = 'device.id'; + +/** + * Type for {@link DEVICE_ID} device.id + */ +export type DEVICE_ID_TYPE = string; + +// Path: model/attributes/device/device__low_memory.json + +/** + * Whether the device was low on memory. `device.low_memory` + * + * Attribute Value Type: `boolean` {@link DEVICE_LOW_MEMORY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example false + */ +export const DEVICE_LOW_MEMORY = 'device.low_memory'; + +/** + * Type for {@link DEVICE_LOW_MEMORY} device.low_memory + */ +export type DEVICE_LOW_MEMORY_TYPE = boolean; + +// Path: model/attributes/device/device__manufacturer.json + +/** + * The manufacturer of the device. `device.manufacturer` + * + * Attribute Value Type: `string` {@link DEVICE_MANUFACTURER_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: Yes + * + * @example "Google" + */ +export const DEVICE_MANUFACTURER = 'device.manufacturer'; + +/** + * Type for {@link DEVICE_MANUFACTURER} device.manufacturer + */ +export type DEVICE_MANUFACTURER_TYPE = string; + // Path: model/attributes/device/device__memory__estimated_capacity.json /** @@ -2427,47 +2815,267 @@ export const DEVICE_MODEL_ID = 'device.model_id'; */ export type DEVICE_MODEL_ID_TYPE = string; +// Path: model/attributes/device/device__name.json + +/** + * The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname. `device.name` + * + * Attribute Value Type: `string` {@link DEVICE_NAME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "localhost" + */ +export const DEVICE_NAME = 'device.name'; + +/** + * Type for {@link DEVICE_NAME} device.name + */ +export type DEVICE_NAME_TYPE = string; + +// Path: model/attributes/device/device__online.json + +/** + * Whether the device was online or not. `device.online` + * + * Attribute Value Type: `boolean` {@link DEVICE_ONLINE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example true + */ +export const DEVICE_ONLINE = 'device.online'; + +/** + * Type for {@link DEVICE_ONLINE} device.online + */ +export type DEVICE_ONLINE_TYPE = boolean; + +// Path: model/attributes/device/device__orientation.json + +/** + * The orientation of the device, either "portrait" or "landscape". `device.orientation` + * + * Attribute Value Type: `string` {@link DEVICE_ORIENTATION_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "portrait" + */ +export const DEVICE_ORIENTATION = 'device.orientation'; + +/** + * Type for {@link DEVICE_ORIENTATION} device.orientation + */ +export type DEVICE_ORIENTATION_TYPE = string; + // Path: model/attributes/device/device__processor_count.json /** * Number of "logical processors". `device.processor_count` * - * Attribute Value Type: `number` {@link DEVICE_PROCESSOR_COUNT_TYPE} + * Attribute Value Type: `number` {@link DEVICE_PROCESSOR_COUNT_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link HARDWARECONCURRENCY} `hardwareConcurrency` + * + * @example 8 + */ +export const DEVICE_PROCESSOR_COUNT = 'device.processor_count'; + +/** + * Type for {@link DEVICE_PROCESSOR_COUNT} device.processor_count + */ +export type DEVICE_PROCESSOR_COUNT_TYPE = number; + +// Path: model/attributes/device/device__processor_frequency.json + +/** + * Processor frequency in MHz. `device.processor_frequency` + * + * Attribute Value Type: `number` {@link DEVICE_PROCESSOR_FREQUENCY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 2400 + */ +export const DEVICE_PROCESSOR_FREQUENCY = 'device.processor_frequency'; + +/** + * Type for {@link DEVICE_PROCESSOR_FREQUENCY} device.processor_frequency + */ +export type DEVICE_PROCESSOR_FREQUENCY_TYPE = number; + +// Path: model/attributes/device/device__screen_density.json + +/** + * The screen density of the device. `device.screen_density` + * + * Attribute Value Type: `number` {@link DEVICE_SCREEN_DENSITY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 2.625 + */ +export const DEVICE_SCREEN_DENSITY = 'device.screen_density'; + +/** + * Type for {@link DEVICE_SCREEN_DENSITY} device.screen_density + */ +export type DEVICE_SCREEN_DENSITY_TYPE = number; + +// Path: model/attributes/device/device__screen_dpi.json + +/** + * The screen density in dots-per-inch (DPI) of the device. `device.screen_dpi` + * + * Attribute Value Type: `number` {@link DEVICE_SCREEN_DPI_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 420 + */ +export const DEVICE_SCREEN_DPI = 'device.screen_dpi'; + +/** + * Type for {@link DEVICE_SCREEN_DPI} device.screen_dpi + */ +export type DEVICE_SCREEN_DPI_TYPE = number; + +// Path: model/attributes/device/device__screen_height_pixels.json + +/** + * The height of the device screen in pixels. `device.screen_height_pixels` + * + * Attribute Value Type: `number` {@link DEVICE_SCREEN_HEIGHT_PIXELS_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 2400 + */ +export const DEVICE_SCREEN_HEIGHT_PIXELS = 'device.screen_height_pixels'; + +/** + * Type for {@link DEVICE_SCREEN_HEIGHT_PIXELS} device.screen_height_pixels + */ +export type DEVICE_SCREEN_HEIGHT_PIXELS_TYPE = number; + +// Path: model/attributes/device/device__screen_width_pixels.json + +/** + * The width of the device screen in pixels. `device.screen_width_pixels` + * + * Attribute Value Type: `number` {@link DEVICE_SCREEN_WIDTH_PIXELS_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 1080 + */ +export const DEVICE_SCREEN_WIDTH_PIXELS = 'device.screen_width_pixels'; + +/** + * Type for {@link DEVICE_SCREEN_WIDTH_PIXELS} device.screen_width_pixels + */ +export type DEVICE_SCREEN_WIDTH_PIXELS_TYPE = number; + +// Path: model/attributes/device/device__simulator.json + +/** + * Whether the device is a simulator or an actual device. `device.simulator` + * + * Attribute Value Type: `boolean` {@link DEVICE_SIMULATOR_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: No + * + * @example false + */ +export const DEVICE_SIMULATOR = 'device.simulator'; + +/** + * Type for {@link DEVICE_SIMULATOR} device.simulator + */ +export type DEVICE_SIMULATOR_TYPE = boolean; + +// Path: model/attributes/device/device__storage_size.json + +/** + * Total device storage in bytes. `device.storage_size` + * + * Attribute Value Type: `number` {@link DEVICE_STORAGE_SIZE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 274877906944 + */ +export const DEVICE_STORAGE_SIZE = 'device.storage_size'; + +/** + * Type for {@link DEVICE_STORAGE_SIZE} device.storage_size + */ +export type DEVICE_STORAGE_SIZE_TYPE = number; + +// Path: model/attributes/device/device__thermal_state.json + +/** + * The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`. `device.thermal_state` + * + * Attribute Value Type: `string` {@link DEVICE_THERMAL_STATE_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * Aliases: {@link HARDWARECONCURRENCY} `hardwareConcurrency` - * - * @example 8 + * @example "nominal" */ -export const DEVICE_PROCESSOR_COUNT = 'device.processor_count'; +export const DEVICE_THERMAL_STATE = 'device.thermal_state'; /** - * Type for {@link DEVICE_PROCESSOR_COUNT} device.processor_count + * Type for {@link DEVICE_THERMAL_STATE} device.thermal_state */ -export type DEVICE_PROCESSOR_COUNT_TYPE = number; +export type DEVICE_THERMAL_STATE_TYPE = string; -// Path: model/attributes/device/device__simulator.json +// Path: model/attributes/device/device__usable_memory.json /** - * Whether the device is a simulator or an actual device. `device.simulator` + * Memory usable for the app in bytes. `device.usable_memory` * - * Attribute Value Type: `boolean` {@link DEVICE_SIMULATOR_TYPE} + * Attribute Value Type: `number` {@link DEVICE_USABLE_MEMORY_TYPE} * - * Contains PII: false + * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example false + * @example 2147483648 */ -export const DEVICE_SIMULATOR = 'device.simulator'; +export const DEVICE_USABLE_MEMORY = 'device.usable_memory'; /** - * Type for {@link DEVICE_SIMULATOR} device.simulator + * Type for {@link DEVICE_USABLE_MEMORY} device.usable_memory */ -export type DEVICE_SIMULATOR_TYPE = boolean; +export type DEVICE_USABLE_MEMORY_TYPE = number; // Path: model/attributes/effectiveConnectionType.json @@ -6363,7 +6971,7 @@ export type NETWORK_CONNECTION_RTT_TYPE = number; // Path: model/attributes/network/network__connection__type.json /** - * Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc). `network.connection.type` + * The internet connection type currently being used by the host. `network.connection.type` * * Attribute Value Type: `string` {@link NETWORK_CONNECTION_TYPE_TYPE} * @@ -6371,7 +6979,7 @@ export type NETWORK_CONNECTION_RTT_TYPE = number; * * Attribute defined in OTEL: Yes * - * Aliases: {@link CONNECTIONTYPE} `connectionType` + * Aliases: {@link DEVICE_CONNECTION_TYPE} `device.connection_type`, {@link CONNECTIONTYPE} `connectionType` * * @example "wifi" */ @@ -10251,6 +10859,11 @@ export const ATTRIBUTE_TYPE: Record = { [AI_TOTAL_COST]: 'double', [AI_TOTAL_TOKENS_USED]: 'integer', [AI_WARNINGS]: 'string[]', + [APP_APP_BUILD]: 'string', + [APP_APP_IDENTIFIER]: 'string', + [APP_APP_NAME]: 'string', + [APP_APP_START_TIME]: 'string', + [APP_APP_VERSION]: 'string', [APP_BUILD]: 'string', [APP_IDENTIFIER]: 'string', [APP_IN_FOREGROUND]: 'boolean', @@ -10323,16 +10936,40 @@ export const ATTRIBUTE_TYPE: Record = { [DB_SYSTEM_NAME]: 'string', [DB_USER]: 'string', [DEVICEMEMORY]: 'string', + [DEVICE_BATTERY_LEVEL]: 'double', + [DEVICE_BATTERY_TEMPERATURE]: 'double', + [DEVICE_BOOT_TIME]: 'string', [DEVICE_BRAND]: 'string', + [DEVICE_CHARGING]: 'boolean', + [DEVICE_CHIPSET]: 'string', [DEVICE_CLASS]: 'string', + [DEVICE_CONNECTION_TYPE]: 'string', + [DEVICE_CPU_DESCRIPTION]: 'string', + [DEVICE_EXTERNAL_FREE_STORAGE]: 'integer', + [DEVICE_EXTERNAL_STORAGE_SIZE]: 'integer', [DEVICE_FAMILY]: 'string', [DEVICE_FREE_MEMORY]: 'integer', + [DEVICE_FREE_STORAGE]: 'integer', + [DEVICE_ID]: 'string', + [DEVICE_LOW_MEMORY]: 'boolean', + [DEVICE_MANUFACTURER]: 'string', [DEVICE_MEMORY_ESTIMATED_CAPACITY]: 'integer', [DEVICE_MEMORY_SIZE]: 'integer', [DEVICE_MODEL]: 'string', [DEVICE_MODEL_ID]: 'string', + [DEVICE_NAME]: 'string', + [DEVICE_ONLINE]: 'boolean', + [DEVICE_ORIENTATION]: 'string', [DEVICE_PROCESSOR_COUNT]: 'integer', + [DEVICE_PROCESSOR_FREQUENCY]: 'double', + [DEVICE_SCREEN_DENSITY]: 'double', + [DEVICE_SCREEN_DPI]: 'integer', + [DEVICE_SCREEN_HEIGHT_PIXELS]: 'integer', + [DEVICE_SCREEN_WIDTH_PIXELS]: 'integer', [DEVICE_SIMULATOR]: 'boolean', + [DEVICE_STORAGE_SIZE]: 'integer', + [DEVICE_THERMAL_STATE]: 'string', + [DEVICE_USABLE_MEMORY]: 'integer', [EFFECTIVECONNECTIONTYPE]: 'string', [ENVIRONMENT]: 'string', [ERROR_TYPE]: 'string', @@ -10739,6 +11376,11 @@ export type AttributeName = | typeof AI_TOTAL_COST | typeof AI_TOTAL_TOKENS_USED | typeof AI_WARNINGS + | typeof APP_APP_BUILD + | typeof APP_APP_IDENTIFIER + | typeof APP_APP_NAME + | typeof APP_APP_START_TIME + | typeof APP_APP_VERSION | typeof APP_BUILD | typeof APP_IDENTIFIER | typeof APP_IN_FOREGROUND @@ -10811,16 +11453,40 @@ export type AttributeName = | typeof DB_SYSTEM_NAME | typeof DB_USER | typeof DEVICEMEMORY + | typeof DEVICE_BATTERY_LEVEL + | typeof DEVICE_BATTERY_TEMPERATURE + | typeof DEVICE_BOOT_TIME | typeof DEVICE_BRAND + | typeof DEVICE_CHARGING + | typeof DEVICE_CHIPSET | typeof DEVICE_CLASS + | typeof DEVICE_CONNECTION_TYPE + | typeof DEVICE_CPU_DESCRIPTION + | typeof DEVICE_EXTERNAL_FREE_STORAGE + | typeof DEVICE_EXTERNAL_STORAGE_SIZE | typeof DEVICE_FAMILY | typeof DEVICE_FREE_MEMORY + | typeof DEVICE_FREE_STORAGE + | typeof DEVICE_ID + | typeof DEVICE_LOW_MEMORY + | typeof DEVICE_MANUFACTURER | typeof DEVICE_MEMORY_ESTIMATED_CAPACITY | typeof DEVICE_MEMORY_SIZE | typeof DEVICE_MODEL | typeof DEVICE_MODEL_ID + | typeof DEVICE_NAME + | typeof DEVICE_ONLINE + | typeof DEVICE_ORIENTATION | typeof DEVICE_PROCESSOR_COUNT + | typeof DEVICE_PROCESSOR_FREQUENCY + | typeof DEVICE_SCREEN_DENSITY + | typeof DEVICE_SCREEN_DPI + | typeof DEVICE_SCREEN_HEIGHT_PIXELS + | typeof DEVICE_SCREEN_WIDTH_PIXELS | typeof DEVICE_SIMULATOR + | typeof DEVICE_STORAGE_SIZE + | typeof DEVICE_THERMAL_STATE + | typeof DEVICE_USABLE_MEMORY | typeof EFFECTIVECONNECTIONTYPE | typeof ENVIRONMENT | typeof ERROR_TYPE @@ -11694,6 +12360,102 @@ export const ATTRIBUTE_METADATA: Record = { { version: '0.1.0', prs: [55] }, ], }, + [APP_APP_BUILD]: { + brief: 'Internal build identifier, as it appears on the platform.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '1', + deprecation: { + replacement: 'app.build', + reason: 'Deprecated in favor of app.build', + }, + aliases: [APP_BUILD], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [ + { version: 'next', prs: [296], description: 'Added and deprecated app.app_build in favor of app.build' }, + ], + }, + [APP_APP_IDENTIFIER]: { + brief: 'Version-independent application identifier, often a dotted bundle ID.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'com.example.myapp', + deprecation: { + replacement: 'app.identifier', + reason: 'Deprecated in favor of app.identifier', + }, + aliases: [APP_IDENTIFIER], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [ + { + version: 'next', + prs: [296], + description: 'Added and deprecated app.app_identifier in favor of app.identifier', + }, + ], + }, + [APP_APP_NAME]: { + brief: 'Human readable application name, as it appears on the platform.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'My App', + deprecation: { + replacement: 'app.name', + reason: 'Deprecated in favor of app.name', + }, + aliases: [APP_NAME], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [{ version: 'next', prs: [296], description: 'Added and deprecated app.app_name in favor of app.name' }], + }, + [APP_APP_START_TIME]: { + brief: 'Formatted UTC timestamp when the user started the application.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '2025-01-01T00:00:00.000Z', + deprecation: { + replacement: 'app.start_time', + reason: 'Deprecated in favor of app.start_time', + }, + aliases: [APP_START_TIME], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [ + { + version: 'next', + prs: [296], + description: 'Added and deprecated app.app_start_time in favor of app.start_time', + }, + ], + }, + [APP_APP_VERSION]: { + brief: 'Human readable application version, as it appears on the platform.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '1.0.0', + deprecation: { + replacement: 'app.version', + reason: 'Deprecated in favor of app.version', + }, + aliases: [APP_VERSION], + sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], + changelog: [ + { version: 'next', prs: [296], description: 'Added and deprecated app.app_version in favor of app.version' }, + ], + }, [APP_BUILD]: { brief: 'Internal build identifier, as it appears on the platform.', type: 'string', @@ -11702,6 +12464,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '1', + aliases: [APP_APP_BUILD], sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], changelog: [{ version: 'next', prs: [296], description: 'Added app.build attribute' }], }, @@ -11713,6 +12476,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'com.example.myapp', + aliases: [APP_APP_IDENTIFIER], sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], changelog: [{ version: 'next', prs: [296], description: 'Added app.identifier attribute' }], }, @@ -11720,7 +12484,7 @@ export const ATTRIBUTE_METADATA: Record = { brief: 'Whether the application is currently in the foreground.', type: 'boolean', pii: { - isPii: 'false', + isPii: 'maybe', }, isInOtel: false, example: true, @@ -11735,6 +12499,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'My App', + aliases: [APP_APP_NAME], sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], changelog: [{ version: 'next', prs: [296], description: 'Added app.name attribute' }], }, @@ -11746,6 +12511,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '2025-01-01T00:00:00.000Z', + aliases: [APP_APP_START_TIME], sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], changelog: [{ version: 'next', prs: [296], description: 'Added app.start_time attribute' }], }, @@ -11767,6 +12533,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '1.0.0', + aliases: [APP_APP_VERSION], sdks: ['sentry.cocoa', 'sentry.java.android', 'sentry.javascript.react-native', 'sentry.dart.flutter'], changelog: [{ version: 'next', prs: [296], description: 'Added app.version attribute' }], }, @@ -12581,6 +13348,36 @@ export const ATTRIBUTE_METADATA: Record = { }, ], }, + [DEVICE_BATTERY_LEVEL]: { + brief: 'The battery level of the device as a percentage (0-100).', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 100, + changelog: [{ version: 'next', prs: [303], description: 'Added device.battery_level attribute' }], + }, + [DEVICE_BATTERY_TEMPERATURE]: { + brief: 'The battery temperature of the device in Celsius.', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 25, + changelog: [{ version: 'next', prs: [303], description: 'Added device.battery_temperature attribute' }], + }, + [DEVICE_BOOT_TIME]: { + brief: 'A formatted UTC timestamp when the system was booted.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '2018-02-08T12:52:12Z', + changelog: [{ version: 'next', prs: [303], description: 'Added device.boot_time attribute' }], + }, [DEVICE_BRAND]: { brief: 'The brand of the device.', type: 'string', @@ -12591,6 +13388,26 @@ export const ATTRIBUTE_METADATA: Record = { example: 'Apple', changelog: [{ version: '0.1.0', prs: [116, 127] }], }, + [DEVICE_CHARGING]: { + brief: 'Whether the device was charging or not.', + type: 'boolean', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: false, + changelog: [{ version: 'next', prs: [303], description: 'Added device.charging attribute' }], + }, + [DEVICE_CHIPSET]: { + brief: 'The chipset of the device.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'Qualcomm SM8550', + changelog: [{ version: 'next', prs: [303], description: 'Added device.chipset attribute' }], + }, [DEVICE_CLASS]: { brief: 'The classification of the device. For example, `low`, `medium`, or `high`. Typically inferred by Relay - SDKs generally do not need to set this directly.', @@ -12602,6 +13419,57 @@ export const ATTRIBUTE_METADATA: Record = { example: 'medium', changelog: [{ version: 'next', prs: [300], description: 'Added device.class attribute' }], }, + [DEVICE_CONNECTION_TYPE]: { + brief: 'The internet connection type currently being used by the device.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'wifi', + deprecation: { + replacement: 'network.connection.type', + reason: 'This attribute is being deprecated in favor of network.connection.type', + }, + aliases: [NETWORK_CONNECTION_TYPE], + changelog: [ + { + version: 'next', + prs: [303], + description: 'Added and deprecated device.connection_type in favor of network.connection.type', + }, + ], + }, + [DEVICE_CPU_DESCRIPTION]: { + brief: 'A description of the CPU of the device.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz', + changelog: [{ version: 'next', prs: [303], description: 'Added device.cpu_description attribute' }], + }, + [DEVICE_EXTERNAL_FREE_STORAGE]: { + brief: 'External storage free size in bytes.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 67108864000, + changelog: [{ version: 'next', prs: [303], description: 'Added device.external_free_storage attribute' }], + }, + [DEVICE_EXTERNAL_STORAGE_SIZE]: { + brief: 'External storage total size in bytes.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 134217728000, + changelog: [{ version: 'next', prs: [303], description: 'Added device.external_storage_size attribute' }], + }, [DEVICE_FAMILY]: { brief: 'The family of the device.', type: 'string', @@ -12622,6 +13490,46 @@ export const ATTRIBUTE_METADATA: Record = { example: 2147483648, changelog: [{ version: 'next', prs: [300], description: 'Added device.free_memory attribute' }], }, + [DEVICE_FREE_STORAGE]: { + brief: 'Free device storage in bytes.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 107374182400, + changelog: [{ version: 'next', prs: [303], description: 'Added device.free_storage attribute' }], + }, + [DEVICE_ID]: { + brief: 'Unique device identifier.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: true, + example: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', + changelog: [{ version: 'next', prs: [303], description: 'Added device.id attribute' }], + }, + [DEVICE_LOW_MEMORY]: { + brief: 'Whether the device was low on memory.', + type: 'boolean', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: false, + changelog: [{ version: 'next', prs: [303], description: 'Added device.low_memory attribute' }], + }, + [DEVICE_MANUFACTURER]: { + brief: 'The manufacturer of the device.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: true, + example: 'Google', + changelog: [{ version: 'next', prs: [303], description: 'Added device.manufacturer attribute' }], + }, [DEVICE_MEMORY_ESTIMATED_CAPACITY]: { brief: 'The estimated total memory capacity of the device, only a rough estimation in gigabytes. Browsers report estimations in buckets of powers of 2, mostly capped at 8 GB', @@ -12671,6 +13579,37 @@ export const ATTRIBUTE_METADATA: Record = { example: 'N861AP', changelog: [{ version: 'next', prs: [300], description: 'Added device.model_id attribute' }], }, + [DEVICE_NAME]: { + brief: + 'The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'localhost', + changelog: [{ version: 'next', prs: [303], description: 'Added device.name attribute' }], + }, + [DEVICE_ONLINE]: { + brief: 'Whether the device was online or not.', + type: 'boolean', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: true, + changelog: [{ version: 'next', prs: [303], description: 'Added device.online attribute' }], + }, + [DEVICE_ORIENTATION]: { + brief: 'The orientation of the device, either "portrait" or "landscape".', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'portrait', + changelog: [{ version: 'next', prs: [303], description: 'Added device.orientation attribute' }], + }, [DEVICE_PROCESSOR_COUNT]: { brief: 'Number of "logical processors".', type: 'integer', @@ -12693,6 +13632,56 @@ export const ATTRIBUTE_METADATA: Record = { }, ], }, + [DEVICE_PROCESSOR_FREQUENCY]: { + brief: 'Processor frequency in MHz.', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 2400, + changelog: [{ version: 'next', prs: [303], description: 'Added device.processor_frequency attribute' }], + }, + [DEVICE_SCREEN_DENSITY]: { + brief: 'The screen density of the device.', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 2.625, + changelog: [{ version: 'next', prs: [303], description: 'Added device.screen_density attribute' }], + }, + [DEVICE_SCREEN_DPI]: { + brief: 'The screen density in dots-per-inch (DPI) of the device.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 420, + changelog: [{ version: 'next', prs: [303], description: 'Added device.screen_dpi attribute' }], + }, + [DEVICE_SCREEN_HEIGHT_PIXELS]: { + brief: 'The height of the device screen in pixels.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 2400, + changelog: [{ version: 'next', prs: [303], description: 'Added device.screen_height_pixels attribute' }], + }, + [DEVICE_SCREEN_WIDTH_PIXELS]: { + brief: 'The width of the device screen in pixels.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1080, + changelog: [{ version: 'next', prs: [303], description: 'Added device.screen_width_pixels attribute' }], + }, [DEVICE_SIMULATOR]: { brief: 'Whether the device is a simulator or an actual device.', type: 'boolean', @@ -12703,6 +13692,37 @@ export const ATTRIBUTE_METADATA: Record = { example: false, changelog: [{ version: 'next', prs: [300], description: 'Added device.simulator attribute' }], }, + [DEVICE_STORAGE_SIZE]: { + brief: 'Total device storage in bytes.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 274877906944, + changelog: [{ version: 'next', prs: [303], description: 'Added device.storage_size attribute' }], + }, + [DEVICE_THERMAL_STATE]: { + brief: + "The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`.", + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'nominal', + changelog: [{ version: 'next', prs: [303], description: 'Added device.thermal_state attribute' }], + }, + [DEVICE_USABLE_MEMORY]: { + brief: 'Memory usable for the app in bytes.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 2147483648, + changelog: [{ version: 'next', prs: [303], description: 'Added device.usable_memory attribute' }], + }, [EFFECTIVECONNECTIONTYPE]: { brief: 'Specifies the estimated effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).', type: 'string', @@ -15037,22 +16057,16 @@ export const ATTRIBUTE_METADATA: Record = { ], }, [NETWORK_CONNECTION_TYPE]: { - brief: 'Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).', + brief: 'The internet connection type currently being used by the host.', type: 'string', pii: { isPii: 'maybe', }, isInOtel: true, example: 'wifi', - aliases: [CONNECTIONTYPE], + aliases: [DEVICE_CONNECTION_TYPE, CONNECTIONTYPE], sdks: ['javascript-browser'], - changelog: [ - { - version: 'next', - prs: [279], - description: 'Added attribute network.connection.type to be used instead of connectionType', - }, - ], + changelog: [{ version: 'next', prs: [279, 303], description: 'Added network.connection.type attribute' }], }, [NETWORK_LOCAL_ADDRESS]: { brief: 'Local address of the network connection - IP address or Unix domain socket name.', @@ -17130,6 +18144,11 @@ export type Attributes = { [AI_TOTAL_COST]?: AI_TOTAL_COST_TYPE; [AI_TOTAL_TOKENS_USED]?: AI_TOTAL_TOKENS_USED_TYPE; [AI_WARNINGS]?: AI_WARNINGS_TYPE; + [APP_APP_BUILD]?: APP_APP_BUILD_TYPE; + [APP_APP_IDENTIFIER]?: APP_APP_IDENTIFIER_TYPE; + [APP_APP_NAME]?: APP_APP_NAME_TYPE; + [APP_APP_START_TIME]?: APP_APP_START_TIME_TYPE; + [APP_APP_VERSION]?: APP_APP_VERSION_TYPE; [APP_BUILD]?: APP_BUILD_TYPE; [APP_IDENTIFIER]?: APP_IDENTIFIER_TYPE; [APP_IN_FOREGROUND]?: APP_IN_FOREGROUND_TYPE; @@ -17202,16 +18221,40 @@ export type Attributes = { [DB_SYSTEM_NAME]?: DB_SYSTEM_NAME_TYPE; [DB_USER]?: DB_USER_TYPE; [DEVICEMEMORY]?: DEVICEMEMORY_TYPE; + [DEVICE_BATTERY_LEVEL]?: DEVICE_BATTERY_LEVEL_TYPE; + [DEVICE_BATTERY_TEMPERATURE]?: DEVICE_BATTERY_TEMPERATURE_TYPE; + [DEVICE_BOOT_TIME]?: DEVICE_BOOT_TIME_TYPE; [DEVICE_BRAND]?: DEVICE_BRAND_TYPE; + [DEVICE_CHARGING]?: DEVICE_CHARGING_TYPE; + [DEVICE_CHIPSET]?: DEVICE_CHIPSET_TYPE; [DEVICE_CLASS]?: DEVICE_CLASS_TYPE; + [DEVICE_CONNECTION_TYPE]?: DEVICE_CONNECTION_TYPE_TYPE; + [DEVICE_CPU_DESCRIPTION]?: DEVICE_CPU_DESCRIPTION_TYPE; + [DEVICE_EXTERNAL_FREE_STORAGE]?: DEVICE_EXTERNAL_FREE_STORAGE_TYPE; + [DEVICE_EXTERNAL_STORAGE_SIZE]?: DEVICE_EXTERNAL_STORAGE_SIZE_TYPE; [DEVICE_FAMILY]?: DEVICE_FAMILY_TYPE; [DEVICE_FREE_MEMORY]?: DEVICE_FREE_MEMORY_TYPE; + [DEVICE_FREE_STORAGE]?: DEVICE_FREE_STORAGE_TYPE; + [DEVICE_ID]?: DEVICE_ID_TYPE; + [DEVICE_LOW_MEMORY]?: DEVICE_LOW_MEMORY_TYPE; + [DEVICE_MANUFACTURER]?: DEVICE_MANUFACTURER_TYPE; [DEVICE_MEMORY_ESTIMATED_CAPACITY]?: DEVICE_MEMORY_ESTIMATED_CAPACITY_TYPE; [DEVICE_MEMORY_SIZE]?: DEVICE_MEMORY_SIZE_TYPE; [DEVICE_MODEL]?: DEVICE_MODEL_TYPE; [DEVICE_MODEL_ID]?: DEVICE_MODEL_ID_TYPE; + [DEVICE_NAME]?: DEVICE_NAME_TYPE; + [DEVICE_ONLINE]?: DEVICE_ONLINE_TYPE; + [DEVICE_ORIENTATION]?: DEVICE_ORIENTATION_TYPE; [DEVICE_PROCESSOR_COUNT]?: DEVICE_PROCESSOR_COUNT_TYPE; + [DEVICE_PROCESSOR_FREQUENCY]?: DEVICE_PROCESSOR_FREQUENCY_TYPE; + [DEVICE_SCREEN_DENSITY]?: DEVICE_SCREEN_DENSITY_TYPE; + [DEVICE_SCREEN_DPI]?: DEVICE_SCREEN_DPI_TYPE; + [DEVICE_SCREEN_HEIGHT_PIXELS]?: DEVICE_SCREEN_HEIGHT_PIXELS_TYPE; + [DEVICE_SCREEN_WIDTH_PIXELS]?: DEVICE_SCREEN_WIDTH_PIXELS_TYPE; [DEVICE_SIMULATOR]?: DEVICE_SIMULATOR_TYPE; + [DEVICE_STORAGE_SIZE]?: DEVICE_STORAGE_SIZE_TYPE; + [DEVICE_THERMAL_STATE]?: DEVICE_THERMAL_STATE_TYPE; + [DEVICE_USABLE_MEMORY]?: DEVICE_USABLE_MEMORY_TYPE; [EFFECTIVECONNECTIONTYPE]?: EFFECTIVECONNECTIONTYPE_TYPE; [ENVIRONMENT]?: ENVIRONMENT_TYPE; [ERROR_TYPE]?: ERROR_TYPE_TYPE; diff --git a/model/attributes/app/app__app_build.json b/model/attributes/app/app__app_build.json new file mode 100644 index 00000000..26803006 --- /dev/null +++ b/model/attributes/app/app__app_build.json @@ -0,0 +1,24 @@ +{ + "key": "app.app_build", + "brief": "Internal build identifier, as it appears on the platform.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "1", + "alias": ["app.build"], + "deprecation": { + "replacement": "app.build", + "reason": "Deprecated in favor of app.build", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_build in favor of app.build" + } + ] +} diff --git a/model/attributes/app/app__app_identifier.json b/model/attributes/app/app__app_identifier.json new file mode 100644 index 00000000..9395ca77 --- /dev/null +++ b/model/attributes/app/app__app_identifier.json @@ -0,0 +1,24 @@ +{ + "key": "app.app_identifier", + "brief": "Version-independent application identifier, often a dotted bundle ID.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "com.example.myapp", + "alias": ["app.identifier"], + "deprecation": { + "replacement": "app.identifier", + "reason": "Deprecated in favor of app.identifier", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_identifier in favor of app.identifier" + } + ] +} diff --git a/model/attributes/app/app__app_name.json b/model/attributes/app/app__app_name.json new file mode 100644 index 00000000..208577a7 --- /dev/null +++ b/model/attributes/app/app__app_name.json @@ -0,0 +1,24 @@ +{ + "key": "app.app_name", + "brief": "Human readable application name, as it appears on the platform.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "My App", + "alias": ["app.name"], + "deprecation": { + "replacement": "app.name", + "reason": "Deprecated in favor of app.name", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_name in favor of app.name" + } + ] +} diff --git a/model/attributes/app/app__app_start_time.json b/model/attributes/app/app__app_start_time.json new file mode 100644 index 00000000..e632cbc2 --- /dev/null +++ b/model/attributes/app/app__app_start_time.json @@ -0,0 +1,24 @@ +{ + "key": "app.app_start_time", + "brief": "Formatted UTC timestamp when the user started the application.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "2025-01-01T00:00:00.000Z", + "alias": ["app.start_time"], + "deprecation": { + "replacement": "app.start_time", + "reason": "Deprecated in favor of app.start_time", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_start_time in favor of app.start_time" + } + ] +} diff --git a/model/attributes/app/app__app_version.json b/model/attributes/app/app__app_version.json new file mode 100644 index 00000000..9d1cbdf1 --- /dev/null +++ b/model/attributes/app/app__app_version.json @@ -0,0 +1,24 @@ +{ + "key": "app.app_version", + "brief": "Human readable application version, as it appears on the platform.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "1.0.0", + "alias": ["app.version"], + "deprecation": { + "replacement": "app.version", + "reason": "Deprecated in favor of app.version", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_version in favor of app.version" + } + ] +} diff --git a/model/attributes/app/app__build.json b/model/attributes/app/app__build.json index a8315320..67fd02ec 100644 --- a/model/attributes/app/app__build.json +++ b/model/attributes/app/app__build.json @@ -8,6 +8,7 @@ "is_in_otel": false, "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], "example": "1", + "alias": ["app.app_build"], "changelog": [ { "version": "next", diff --git a/model/attributes/app/app__identifier.json b/model/attributes/app/app__identifier.json index ddf56bf4..15f8b683 100644 --- a/model/attributes/app/app__identifier.json +++ b/model/attributes/app/app__identifier.json @@ -8,6 +8,7 @@ "is_in_otel": false, "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], "example": "com.example.myapp", + "alias": ["app.app_identifier"], "changelog": [ { "version": "next", diff --git a/model/attributes/app/app__in_foreground.json b/model/attributes/app/app__in_foreground.json index 13b60a6d..e48efd43 100644 --- a/model/attributes/app/app__in_foreground.json +++ b/model/attributes/app/app__in_foreground.json @@ -3,7 +3,7 @@ "brief": "Whether the application is currently in the foreground.", "type": "boolean", "pii": { - "key": "false" + "key": "maybe" }, "is_in_otel": false, "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], diff --git a/model/attributes/app/app__name.json b/model/attributes/app/app__name.json index 0b667dea..1a81e576 100644 --- a/model/attributes/app/app__name.json +++ b/model/attributes/app/app__name.json @@ -8,6 +8,7 @@ "is_in_otel": false, "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], "example": "My App", + "alias": ["app.app_name"], "changelog": [ { "version": "next", diff --git a/model/attributes/app/app__start_time.json b/model/attributes/app/app__start_time.json index 0b93ad39..2c380bd3 100644 --- a/model/attributes/app/app__start_time.json +++ b/model/attributes/app/app__start_time.json @@ -8,6 +8,7 @@ "is_in_otel": false, "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], "example": "2025-01-01T00:00:00.000Z", + "alias": ["app.app_start_time"], "changelog": [ { "version": "next", diff --git a/model/attributes/app/app__version.json b/model/attributes/app/app__version.json index f4dc8f6d..ee168891 100644 --- a/model/attributes/app/app__version.json +++ b/model/attributes/app/app__version.json @@ -8,6 +8,7 @@ "is_in_otel": false, "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], "example": "1.0.0", + "alias": ["app.app_version"], "changelog": [ { "version": "next", diff --git a/model/attributes/device/device__battery_level.json b/model/attributes/device/device__battery_level.json new file mode 100644 index 00000000..70413c23 --- /dev/null +++ b/model/attributes/device/device__battery_level.json @@ -0,0 +1,17 @@ +{ + "key": "device.battery_level", + "brief": "The battery level of the device as a percentage (0-100).", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 100.0, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.battery_level attribute" + } + ] +} diff --git a/model/attributes/device/device__battery_temperature.json b/model/attributes/device/device__battery_temperature.json new file mode 100644 index 00000000..08ddfb41 --- /dev/null +++ b/model/attributes/device/device__battery_temperature.json @@ -0,0 +1,17 @@ +{ + "key": "device.battery_temperature", + "brief": "The battery temperature of the device in Celsius.", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 25.0, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.battery_temperature attribute" + } + ] +} diff --git a/model/attributes/device/device__boot_time.json b/model/attributes/device/device__boot_time.json new file mode 100644 index 00000000..14a0a84e --- /dev/null +++ b/model/attributes/device/device__boot_time.json @@ -0,0 +1,17 @@ +{ + "key": "device.boot_time", + "brief": "A formatted UTC timestamp when the system was booted.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "2018-02-08T12:52:12Z", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.boot_time attribute" + } + ] +} diff --git a/model/attributes/device/device__charging.json b/model/attributes/device/device__charging.json new file mode 100644 index 00000000..b2267795 --- /dev/null +++ b/model/attributes/device/device__charging.json @@ -0,0 +1,17 @@ +{ + "key": "device.charging", + "brief": "Whether the device was charging or not.", + "type": "boolean", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": false, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.charging attribute" + } + ] +} diff --git a/model/attributes/device/device__chipset.json b/model/attributes/device/device__chipset.json new file mode 100644 index 00000000..e4ead381 --- /dev/null +++ b/model/attributes/device/device__chipset.json @@ -0,0 +1,17 @@ +{ + "key": "device.chipset", + "brief": "The chipset of the device.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "Qualcomm SM8550", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.chipset attribute" + } + ] +} diff --git a/model/attributes/device/device__connection_type.json b/model/attributes/device/device__connection_type.json new file mode 100644 index 00000000..c42c5138 --- /dev/null +++ b/model/attributes/device/device__connection_type.json @@ -0,0 +1,23 @@ +{ + "key": "device.connection_type", + "brief": "The internet connection type currently being used by the device.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "wifi", + "deprecation": { + "_status": "backfill", + "replacement": "network.connection.type", + "reason": "This attribute is being deprecated in favor of network.connection.type" + }, + "alias": ["network.connection.type"], + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added and deprecated device.connection_type in favor of network.connection.type" + } + ] +} diff --git a/model/attributes/device/device__cpu_description.json b/model/attributes/device/device__cpu_description.json new file mode 100644 index 00000000..788e832b --- /dev/null +++ b/model/attributes/device/device__cpu_description.json @@ -0,0 +1,17 @@ +{ + "key": "device.cpu_description", + "brief": "A description of the CPU of the device.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.cpu_description attribute" + } + ] +} diff --git a/model/attributes/device/device__external_free_storage.json b/model/attributes/device/device__external_free_storage.json new file mode 100644 index 00000000..ad0d7c84 --- /dev/null +++ b/model/attributes/device/device__external_free_storage.json @@ -0,0 +1,17 @@ +{ + "key": "device.external_free_storage", + "brief": "External storage free size in bytes.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 67108864000, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.external_free_storage attribute" + } + ] +} diff --git a/model/attributes/device/device__external_storage_size.json b/model/attributes/device/device__external_storage_size.json new file mode 100644 index 00000000..e25b62f1 --- /dev/null +++ b/model/attributes/device/device__external_storage_size.json @@ -0,0 +1,17 @@ +{ + "key": "device.external_storage_size", + "brief": "External storage total size in bytes.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 134217728000, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.external_storage_size attribute" + } + ] +} diff --git a/model/attributes/device/device__free_storage.json b/model/attributes/device/device__free_storage.json new file mode 100644 index 00000000..b342e58a --- /dev/null +++ b/model/attributes/device/device__free_storage.json @@ -0,0 +1,17 @@ +{ + "key": "device.free_storage", + "brief": "Free device storage in bytes.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 107374182400, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.free_storage attribute" + } + ] +} diff --git a/model/attributes/device/device__id.json b/model/attributes/device/device__id.json new file mode 100644 index 00000000..37901b16 --- /dev/null +++ b/model/attributes/device/device__id.json @@ -0,0 +1,17 @@ +{ + "key": "device.id", + "brief": "Unique device identifier.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": true, + "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.id attribute" + } + ] +} diff --git a/model/attributes/device/device__low_memory.json b/model/attributes/device/device__low_memory.json new file mode 100644 index 00000000..ca71319d --- /dev/null +++ b/model/attributes/device/device__low_memory.json @@ -0,0 +1,17 @@ +{ + "key": "device.low_memory", + "brief": "Whether the device was low on memory.", + "type": "boolean", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": false, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.low_memory attribute" + } + ] +} diff --git a/model/attributes/device/device__manufacturer.json b/model/attributes/device/device__manufacturer.json new file mode 100644 index 00000000..b68e1b63 --- /dev/null +++ b/model/attributes/device/device__manufacturer.json @@ -0,0 +1,17 @@ +{ + "key": "device.manufacturer", + "brief": "The manufacturer of the device.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": true, + "example": "Google", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.manufacturer attribute" + } + ] +} diff --git a/model/attributes/device/device__name.json b/model/attributes/device/device__name.json new file mode 100644 index 00000000..3e00c085 --- /dev/null +++ b/model/attributes/device/device__name.json @@ -0,0 +1,17 @@ +{ + "key": "device.name", + "brief": "The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "localhost", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.name attribute" + } + ] +} diff --git a/model/attributes/device/device__online.json b/model/attributes/device/device__online.json new file mode 100644 index 00000000..18a88c84 --- /dev/null +++ b/model/attributes/device/device__online.json @@ -0,0 +1,17 @@ +{ + "key": "device.online", + "brief": "Whether the device was online or not.", + "type": "boolean", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": true, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.online attribute" + } + ] +} diff --git a/model/attributes/device/device__orientation.json b/model/attributes/device/device__orientation.json new file mode 100644 index 00000000..f946131c --- /dev/null +++ b/model/attributes/device/device__orientation.json @@ -0,0 +1,17 @@ +{ + "key": "device.orientation", + "brief": "The orientation of the device, either \"portrait\" or \"landscape\".", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "portrait", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.orientation attribute" + } + ] +} diff --git a/model/attributes/device/device__processor_frequency.json b/model/attributes/device/device__processor_frequency.json new file mode 100644 index 00000000..5a8028e2 --- /dev/null +++ b/model/attributes/device/device__processor_frequency.json @@ -0,0 +1,17 @@ +{ + "key": "device.processor_frequency", + "brief": "Processor frequency in MHz.", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 2400.0, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.processor_frequency attribute" + } + ] +} diff --git a/model/attributes/device/device__screen_density.json b/model/attributes/device/device__screen_density.json new file mode 100644 index 00000000..cbdbec09 --- /dev/null +++ b/model/attributes/device/device__screen_density.json @@ -0,0 +1,17 @@ +{ + "key": "device.screen_density", + "brief": "The screen density of the device.", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 2.625, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.screen_density attribute" + } + ] +} diff --git a/model/attributes/device/device__screen_dpi.json b/model/attributes/device/device__screen_dpi.json new file mode 100644 index 00000000..4c80145c --- /dev/null +++ b/model/attributes/device/device__screen_dpi.json @@ -0,0 +1,17 @@ +{ + "key": "device.screen_dpi", + "brief": "The screen density in dots-per-inch (DPI) of the device.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 420, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.screen_dpi attribute" + } + ] +} diff --git a/model/attributes/device/device__screen_height_pixels.json b/model/attributes/device/device__screen_height_pixels.json new file mode 100644 index 00000000..be8623cb --- /dev/null +++ b/model/attributes/device/device__screen_height_pixels.json @@ -0,0 +1,17 @@ +{ + "key": "device.screen_height_pixels", + "brief": "The height of the device screen in pixels.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 2400, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.screen_height_pixels attribute" + } + ] +} diff --git a/model/attributes/device/device__screen_width_pixels.json b/model/attributes/device/device__screen_width_pixels.json new file mode 100644 index 00000000..0aa0e2a9 --- /dev/null +++ b/model/attributes/device/device__screen_width_pixels.json @@ -0,0 +1,17 @@ +{ + "key": "device.screen_width_pixels", + "brief": "The width of the device screen in pixels.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 1080, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.screen_width_pixels attribute" + } + ] +} diff --git a/model/attributes/device/device__storage_size.json b/model/attributes/device/device__storage_size.json new file mode 100644 index 00000000..4d643e73 --- /dev/null +++ b/model/attributes/device/device__storage_size.json @@ -0,0 +1,17 @@ +{ + "key": "device.storage_size", + "brief": "Total device storage in bytes.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 274877906944, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.storage_size attribute" + } + ] +} diff --git a/model/attributes/device/device__thermal_state.json b/model/attributes/device/device__thermal_state.json new file mode 100644 index 00000000..21560e5e --- /dev/null +++ b/model/attributes/device/device__thermal_state.json @@ -0,0 +1,17 @@ +{ + "key": "device.thermal_state", + "brief": "The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "nominal", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.thermal_state attribute" + } + ] +} diff --git a/model/attributes/device/device__usable_memory.json b/model/attributes/device/device__usable_memory.json new file mode 100644 index 00000000..361e4eb4 --- /dev/null +++ b/model/attributes/device/device__usable_memory.json @@ -0,0 +1,17 @@ +{ + "key": "device.usable_memory", + "brief": "Memory usable for the app in bytes.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 2147483648, + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.usable_memory attribute" + } + ] +} diff --git a/model/attributes/network/network__connection__type.json b/model/attributes/network/network__connection__type.json index aa317812..50eea9cd 100644 --- a/model/attributes/network/network__connection__type.json +++ b/model/attributes/network/network__connection__type.json @@ -1,19 +1,19 @@ { "key": "network.connection.type", - "brief": "Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).", + "brief": "The internet connection type currently being used by the host.", "type": "string", "pii": { "key": "maybe" }, "is_in_otel": true, "example": "wifi", - "alias": ["connectionType"], + "alias": ["device.connection_type", "connectionType"], "sdks": ["javascript-browser"], "changelog": [ { "version": "next", - "prs": [279], - "description": "Added attribute network.connection.type to be used instead of connectionType" + "prs": [279, 303], + "description": "Added network.connection.type attribute" } ] } diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index a1602e9b..166a226a 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -136,6 +136,11 @@ class _AttributeNamesMeta(type): "AI_TOTAL_COST", "AI_TOTAL_TOKENS_USED", "AI_WARNINGS", + "APP_APP_BUILD", + "APP_APP_IDENTIFIER", + "APP_APP_NAME", + "APP_APP_START_TIME", + "APP_APP_VERSION", "CLS_SOURCE_KEY", "CLS", "CODE_FILEPATH", @@ -149,6 +154,7 @@ class _AttributeNamesMeta(type): "DB_SQL_BINDINGS", "DB_STATEMENT", "DB_SYSTEM", + "DEVICE_CONNECTION_TYPE", "DEVICEMEMORY", "EFFECTIVECONNECTIONTYPE", "ENVIRONMENT", @@ -621,6 +627,66 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: ["Token limit exceeded"] """ + # Path: model/attributes/app/app__app_build.json + APP_APP_BUILD: Literal["app.app_build"] = "app.app_build" + """Internal build identifier, as it appears on the platform. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: app.build + DEPRECATED: Use app.build instead - Deprecated in favor of app.build + Example: "1" + """ + + # Path: model/attributes/app/app__app_identifier.json + APP_APP_IDENTIFIER: Literal["app.app_identifier"] = "app.app_identifier" + """Version-independent application identifier, often a dotted bundle ID. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: app.identifier + DEPRECATED: Use app.identifier instead - Deprecated in favor of app.identifier + Example: "com.example.myapp" + """ + + # Path: model/attributes/app/app__app_name.json + APP_APP_NAME: Literal["app.app_name"] = "app.app_name" + """Human readable application name, as it appears on the platform. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: app.name + DEPRECATED: Use app.name instead - Deprecated in favor of app.name + Example: "My App" + """ + + # Path: model/attributes/app/app__app_start_time.json + APP_APP_START_TIME: Literal["app.app_start_time"] = "app.app_start_time" + """Formatted UTC timestamp when the user started the application. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: app.start_time + DEPRECATED: Use app.start_time instead - Deprecated in favor of app.start_time + Example: "2025-01-01T00:00:00.000Z" + """ + + # Path: model/attributes/app/app__app_version.json + APP_APP_VERSION: Literal["app.app_version"] = "app.app_version" + """Human readable application version, as it appears on the platform. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: app.version + DEPRECATED: Use app.version instead - Deprecated in favor of app.version + Example: "1.0.0" + """ + # Path: model/attributes/app/app__build.json APP_BUILD: Literal["app.build"] = "app.build" """Internal build identifier, as it appears on the platform. @@ -628,6 +694,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_build Example: "1" """ @@ -638,6 +705,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_identifier Example: "com.example.myapp" """ @@ -646,7 +714,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """Whether the application is currently in the foreground. Type: bool - Contains PII: false + Contains PII: maybe Defined in OTEL: No Example: true """ @@ -658,6 +726,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_name Example: "My App" """ @@ -668,6 +737,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_start_time Example: "2025-01-01T00:00:00.000Z" """ @@ -678,6 +748,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_version Example: "1.0.0" """ @@ -1422,6 +1493,38 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "fancy_user" """ + # Path: model/attributes/device/device__battery_level.json + DEVICE_BATTERY_LEVEL: Literal["device.battery_level"] = "device.battery_level" + """The battery level of the device as a percentage (0-100). + + Type: float + Contains PII: maybe + Defined in OTEL: No + Example: 100 + """ + + # Path: model/attributes/device/device__battery_temperature.json + DEVICE_BATTERY_TEMPERATURE: Literal["device.battery_temperature"] = ( + "device.battery_temperature" + ) + """The battery temperature of the device in Celsius. + + Type: float + Contains PII: maybe + Defined in OTEL: No + Example: 25 + """ + + # Path: model/attributes/device/device__boot_time.json + DEVICE_BOOT_TIME: Literal["device.boot_time"] = "device.boot_time" + """A formatted UTC timestamp when the system was booted. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "2018-02-08T12:52:12Z" + """ + # Path: model/attributes/device/device__brand.json DEVICE_BRAND: Literal["device.brand"] = "device.brand" """The brand of the device. @@ -1432,6 +1535,26 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "Apple" """ + # Path: model/attributes/device/device__charging.json + DEVICE_CHARGING: Literal["device.charging"] = "device.charging" + """Whether the device was charging or not. + + Type: bool + Contains PII: maybe + Defined in OTEL: No + Example: false + """ + + # Path: model/attributes/device/device__chipset.json + DEVICE_CHIPSET: Literal["device.chipset"] = "device.chipset" + """The chipset of the device. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "Qualcomm SM8550" + """ + # Path: model/attributes/device/device__class.json DEVICE_CLASS: Literal["device.class"] = "device.class" """The classification of the device. For example, `low`, `medium`, or `high`. Typically inferred by Relay - SDKs generally do not need to set this directly. @@ -1442,6 +1565,52 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "medium" """ + # Path: model/attributes/device/device__connection_type.json + DEVICE_CONNECTION_TYPE: Literal["device.connection_type"] = "device.connection_type" + """The internet connection type currently being used by the device. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: network.connection.type + DEPRECATED: Use network.connection.type instead - This attribute is being deprecated in favor of network.connection.type + Example: "wifi" + """ + + # Path: model/attributes/device/device__cpu_description.json + DEVICE_CPU_DESCRIPTION: Literal["device.cpu_description"] = "device.cpu_description" + """A description of the CPU of the device. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz" + """ + + # Path: model/attributes/device/device__external_free_storage.json + DEVICE_EXTERNAL_FREE_STORAGE: Literal["device.external_free_storage"] = ( + "device.external_free_storage" + ) + """External storage free size in bytes. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 67108864000 + """ + + # Path: model/attributes/device/device__external_storage_size.json + DEVICE_EXTERNAL_STORAGE_SIZE: Literal["device.external_storage_size"] = ( + "device.external_storage_size" + ) + """External storage total size in bytes. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 134217728000 + """ + # Path: model/attributes/device/device__family.json DEVICE_FAMILY: Literal["device.family"] = "device.family" """The family of the device. @@ -1462,6 +1631,46 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 2147483648 """ + # Path: model/attributes/device/device__free_storage.json + DEVICE_FREE_STORAGE: Literal["device.free_storage"] = "device.free_storage" + """Free device storage in bytes. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 107374182400 + """ + + # Path: model/attributes/device/device__id.json + DEVICE_ID: Literal["device.id"] = "device.id" + """Unique device identifier. + + Type: str + Contains PII: maybe + Defined in OTEL: Yes + Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + """ + + # Path: model/attributes/device/device__low_memory.json + DEVICE_LOW_MEMORY: Literal["device.low_memory"] = "device.low_memory" + """Whether the device was low on memory. + + Type: bool + Contains PII: maybe + Defined in OTEL: No + Example: false + """ + + # Path: model/attributes/device/device__manufacturer.json + DEVICE_MANUFACTURER: Literal["device.manufacturer"] = "device.manufacturer" + """The manufacturer of the device. + + Type: str + Contains PII: maybe + Defined in OTEL: Yes + Example: "Google" + """ + # Path: model/attributes/device/device__memory__estimated_capacity.json DEVICE_MEMORY_ESTIMATED_CAPACITY: Literal["device.memory.estimated_capacity"] = ( "device.memory.estimated_capacity" @@ -1505,6 +1714,36 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "N861AP" """ + # Path: model/attributes/device/device__name.json + DEVICE_NAME: Literal["device.name"] = "device.name" + """The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "localhost" + """ + + # Path: model/attributes/device/device__online.json + DEVICE_ONLINE: Literal["device.online"] = "device.online" + """Whether the device was online or not. + + Type: bool + Contains PII: maybe + Defined in OTEL: No + Example: true + """ + + # Path: model/attributes/device/device__orientation.json + DEVICE_ORIENTATION: Literal["device.orientation"] = "device.orientation" + """The orientation of the device, either "portrait" or "landscape". + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "portrait" + """ + # Path: model/attributes/device/device__processor_count.json DEVICE_PROCESSOR_COUNT: Literal["device.processor_count"] = "device.processor_count" """Number of "logical processors". @@ -1516,6 +1755,62 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 8 """ + # Path: model/attributes/device/device__processor_frequency.json + DEVICE_PROCESSOR_FREQUENCY: Literal["device.processor_frequency"] = ( + "device.processor_frequency" + ) + """Processor frequency in MHz. + + Type: float + Contains PII: maybe + Defined in OTEL: No + Example: 2400 + """ + + # Path: model/attributes/device/device__screen_density.json + DEVICE_SCREEN_DENSITY: Literal["device.screen_density"] = "device.screen_density" + """The screen density of the device. + + Type: float + Contains PII: maybe + Defined in OTEL: No + Example: 2.625 + """ + + # Path: model/attributes/device/device__screen_dpi.json + DEVICE_SCREEN_DPI: Literal["device.screen_dpi"] = "device.screen_dpi" + """The screen density in dots-per-inch (DPI) of the device. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 420 + """ + + # Path: model/attributes/device/device__screen_height_pixels.json + DEVICE_SCREEN_HEIGHT_PIXELS: Literal["device.screen_height_pixels"] = ( + "device.screen_height_pixels" + ) + """The height of the device screen in pixels. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 2400 + """ + + # Path: model/attributes/device/device__screen_width_pixels.json + DEVICE_SCREEN_WIDTH_PIXELS: Literal["device.screen_width_pixels"] = ( + "device.screen_width_pixels" + ) + """The width of the device screen in pixels. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 1080 + """ + # Path: model/attributes/device/device__simulator.json DEVICE_SIMULATOR: Literal["device.simulator"] = "device.simulator" """Whether the device is a simulator or an actual device. @@ -1526,6 +1821,36 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: false """ + # Path: model/attributes/device/device__storage_size.json + DEVICE_STORAGE_SIZE: Literal["device.storage_size"] = "device.storage_size" + """Total device storage in bytes. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 274877906944 + """ + + # Path: model/attributes/device/device__thermal_state.json + DEVICE_THERMAL_STATE: Literal["device.thermal_state"] = "device.thermal_state" + """The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "nominal" + """ + + # Path: model/attributes/device/device__usable_memory.json + DEVICE_USABLE_MEMORY: Literal["device.usable_memory"] = "device.usable_memory" + """Memory usable for the app in bytes. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 2147483648 + """ + # Path: model/attributes/deviceMemory.json DEVICEMEMORY: Literal["deviceMemory"] = "deviceMemory" """The estimated total memory capacity of the device, only a rough estimation in gigabytes. @@ -3826,12 +4151,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): NETWORK_CONNECTION_TYPE: Literal["network.connection.type"] = ( "network.connection.type" ) - """Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc). + """The internet connection type currently being used by the host. Type: str Contains PII: maybe Defined in OTEL: Yes - Aliases: connectionType + Aliases: device.connection_type, connectionType Example: "wifi" """ @@ -6057,12 +6382,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.1.0", prs=[55]), ], ), - "app.build": AttributeMetadata( + "app.app_build": AttributeMetadata( brief="Internal build identifier, as it appears on the platform.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="1", + deprecation=DeprecationInfo( + replacement="app.build", + reason="Deprecated in favor of app.build", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.build"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -6071,34 +6402,24 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], changelog=[ ChangelogEntry( - version="next", prs=[296], description="Added app.build attribute" + version="next", + prs=[296], + description="Added and deprecated app.app_build in favor of app.build", ), ], ), - "app.identifier": AttributeMetadata( + "app.app_identifier": AttributeMetadata( brief="Version-independent application identifier, often a dotted bundle ID.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="com.example.myapp", - sdks=[ - "sentry.cocoa", - "sentry.java.android", - "sentry.javascript.react-native", - "sentry.dart.flutter", - ], - changelog=[ - ChangelogEntry( - version="next", prs=[296], description="Added app.identifier attribute" - ), - ], - ), - "app.in_foreground": AttributeMetadata( - brief="Whether the application is currently in the foreground.", - type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), - is_in_otel=False, - example=True, + deprecation=DeprecationInfo( + replacement="app.identifier", + reason="Deprecated in favor of app.identifier", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.identifier"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -6109,16 +6430,22 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry( version="next", prs=[296], - description="Added app.in_foreground attribute", + description="Added and deprecated app.app_identifier in favor of app.identifier", ), ], ), - "app.name": AttributeMetadata( + "app.app_name": AttributeMetadata( brief="Human readable application name, as it appears on the platform.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="My App", + deprecation=DeprecationInfo( + replacement="app.name", + reason="Deprecated in favor of app.name", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.name"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -6127,16 +6454,24 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], changelog=[ ChangelogEntry( - version="next", prs=[296], description="Added app.name attribute" + version="next", + prs=[296], + description="Added and deprecated app.app_name in favor of app.name", ), ], ), - "app.start_time": AttributeMetadata( + "app.app_start_time": AttributeMetadata( brief="Formatted UTC timestamp when the user started the application.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="2025-01-01T00:00:00.000Z", + deprecation=DeprecationInfo( + replacement="app.start_time", + reason="Deprecated in favor of app.start_time", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.start_time"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -6145,16 +6480,24 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], changelog=[ ChangelogEntry( - version="next", prs=[296], description="Added app.start_time attribute" + version="next", + prs=[296], + description="Added and deprecated app.app_start_time in favor of app.start_time", ), ], ), - "app.version": AttributeMetadata( + "app.app_version": AttributeMetadata( brief="Human readable application version, as it appears on the platform.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="1.0.0", + deprecation=DeprecationInfo( + replacement="app.version", + reason="Deprecated in favor of app.version", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.version"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -6163,16 +6506,133 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], changelog=[ ChangelogEntry( - version="next", prs=[296], description="Added app.version attribute" + version="next", + prs=[296], + description="Added and deprecated app.app_version in favor of app.version", ), ], ), - "app_start_type": AttributeMetadata( - brief="Mobile app start variant. Either cold or warm.", + "app.build": AttributeMetadata( + brief="Internal build identifier, as it appears on the platform.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="cold", + example="1", + aliases=["app.app_build"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", prs=[296], description="Added app.build attribute" + ), + ], + ), + "app.identifier": AttributeMetadata( + brief="Version-independent application identifier, often a dotted bundle ID.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="com.example.myapp", + aliases=["app.app_identifier"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", prs=[296], description="Added app.identifier attribute" + ), + ], + ), + "app.in_foreground": AttributeMetadata( + brief="Whether the application is currently in the foreground.", + type=AttributeType.BOOLEAN, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=True, + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[296], + description="Added app.in_foreground attribute", + ), + ], + ), + "app.name": AttributeMetadata( + brief="Human readable application name, as it appears on the platform.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="My App", + aliases=["app.app_name"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", prs=[296], description="Added app.name attribute" + ), + ], + ), + "app.start_time": AttributeMetadata( + brief="Formatted UTC timestamp when the user started the application.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="2025-01-01T00:00:00.000Z", + aliases=["app.app_start_time"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", prs=[296], description="Added app.start_time attribute" + ), + ], + ), + "app.version": AttributeMetadata( + brief="Human readable application version, as it appears on the platform.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="1.0.0", + aliases=["app.app_version"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", prs=[296], description="Added app.version attribute" + ), + ], + ), + "app_start_type": AttributeMetadata( + brief="Mobile app start variant. Either cold or warm.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="cold", changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -6991,6 +7451,48 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "device.battery_level": AttributeMetadata( + brief="The battery level of the device as a percentage (0-100).", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=100, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.battery_level attribute", + ), + ], + ), + "device.battery_temperature": AttributeMetadata( + brief="The battery temperature of the device in Celsius.", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=25, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.battery_temperature attribute", + ), + ], + ), + "device.boot_time": AttributeMetadata( + brief="A formatted UTC timestamp when the system was booted.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="2018-02-08T12:52:12Z", + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.boot_time attribute", + ), + ], + ), "device.brand": AttributeMetadata( brief="The brand of the device.", type=AttributeType.STRING, @@ -7001,6 +7503,30 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.1.0", prs=[116, 127]), ], ), + "device.charging": AttributeMetadata( + brief="Whether the device was charging or not.", + type=AttributeType.BOOLEAN, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=False, + changelog=[ + ChangelogEntry( + version="next", prs=[303], description="Added device.charging attribute" + ), + ], + ), + "device.chipset": AttributeMetadata( + brief="The chipset of the device.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="Qualcomm SM8550", + changelog=[ + ChangelogEntry( + version="next", prs=[303], description="Added device.chipset attribute" + ), + ], + ), "device.class": AttributeMetadata( brief="The classification of the device. For example, `low`, `medium`, or `high`. Typically inferred by Relay - SDKs generally do not need to set this directly.", type=AttributeType.STRING, @@ -7013,6 +7539,68 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "device.connection_type": AttributeMetadata( + brief="The internet connection type currently being used by the device.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="wifi", + deprecation=DeprecationInfo( + replacement="network.connection.type", + reason="This attribute is being deprecated in favor of network.connection.type", + status=DeprecationStatus.BACKFILL, + ), + aliases=["network.connection.type"], + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added and deprecated device.connection_type in favor of network.connection.type", + ), + ], + ), + "device.cpu_description": AttributeMetadata( + brief="A description of the CPU of the device.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz", + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.cpu_description attribute", + ), + ], + ), + "device.external_free_storage": AttributeMetadata( + brief="External storage free size in bytes.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=67108864000, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.external_free_storage attribute", + ), + ], + ), + "device.external_storage_size": AttributeMetadata( + brief="External storage total size in bytes.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=134217728000, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.external_storage_size attribute", + ), + ], + ), "device.family": AttributeMetadata( brief="The family of the device.", type=AttributeType.STRING, @@ -7037,6 +7625,60 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "device.free_storage": AttributeMetadata( + brief="Free device storage in bytes.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=107374182400, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.free_storage attribute", + ), + ], + ), + "device.id": AttributeMetadata( + brief="Unique device identifier.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=True, + example="a1b2c3d4-e5f6-7890-abcd-ef1234567890", + changelog=[ + ChangelogEntry( + version="next", prs=[303], description="Added device.id attribute" + ), + ], + ), + "device.low_memory": AttributeMetadata( + brief="Whether the device was low on memory.", + type=AttributeType.BOOLEAN, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=False, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.low_memory attribute", + ), + ], + ), + "device.manufacturer": AttributeMetadata( + brief="The manufacturer of the device.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=True, + example="Google", + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.manufacturer attribute", + ), + ], + ), "device.memory.estimated_capacity": AttributeMetadata( brief="The estimated total memory capacity of the device, only a rough estimation in gigabytes. Browsers report estimations in buckets of powers of 2, mostly capped at 8 GB", type=AttributeType.INTEGER, @@ -7089,6 +7731,44 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "device.name": AttributeMetadata( + brief="The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="localhost", + changelog=[ + ChangelogEntry( + version="next", prs=[303], description="Added device.name attribute" + ), + ], + ), + "device.online": AttributeMetadata( + brief="Whether the device was online or not.", + type=AttributeType.BOOLEAN, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=True, + changelog=[ + ChangelogEntry( + version="next", prs=[303], description="Added device.online attribute" + ), + ], + ), + "device.orientation": AttributeMetadata( + brief='The orientation of the device, either "portrait" or "landscape".', + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="portrait", + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.orientation attribute", + ), + ], + ), "device.processor_count": AttributeMetadata( brief='Number of "logical processors".', type=AttributeType.INTEGER, @@ -7109,6 +7789,76 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "device.processor_frequency": AttributeMetadata( + brief="Processor frequency in MHz.", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=2400, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.processor_frequency attribute", + ), + ], + ), + "device.screen_density": AttributeMetadata( + brief="The screen density of the device.", + type=AttributeType.DOUBLE, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=2.625, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.screen_density attribute", + ), + ], + ), + "device.screen_dpi": AttributeMetadata( + brief="The screen density in dots-per-inch (DPI) of the device.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=420, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.screen_dpi attribute", + ), + ], + ), + "device.screen_height_pixels": AttributeMetadata( + brief="The height of the device screen in pixels.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=2400, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.screen_height_pixels attribute", + ), + ], + ), + "device.screen_width_pixels": AttributeMetadata( + brief="The width of the device screen in pixels.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1080, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.screen_width_pixels attribute", + ), + ], + ), "device.simulator": AttributeMetadata( brief="Whether the device is a simulator or an actual device.", type=AttributeType.BOOLEAN, @@ -7123,6 +7873,48 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "device.storage_size": AttributeMetadata( + brief="Total device storage in bytes.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=274877906944, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.storage_size attribute", + ), + ], + ), + "device.thermal_state": AttributeMetadata( + brief="The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="nominal", + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.thermal_state attribute", + ), + ], + ), + "device.usable_memory": AttributeMetadata( + brief="Memory usable for the app in bytes.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=2147483648, + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added device.usable_memory attribute", + ), + ], + ), "deviceMemory": AttributeMetadata( brief="The estimated total memory capacity of the device, only a rough estimation in gigabytes.", type=AttributeType.STRING, @@ -9608,18 +10400,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "network.connection.type": AttributeMetadata( - brief="Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).", + brief="The internet connection type currently being used by the host.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="wifi", - aliases=["connectionType"], + aliases=["device.connection_type", "connectionType"], sdks=["javascript-browser"], changelog=[ ChangelogEntry( version="next", - prs=[279], - description="Added attribute network.connection.type to be used instead of connectionType", + prs=[279, 303], + description="Added network.connection.type attribute", ), ], ), @@ -11528,6 +12320,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.total_cost": float, "ai.total_tokens.used": int, "ai.warnings": List[str], + "app.app_build": str, + "app.app_identifier": str, + "app.app_name": str, + "app.app_start_time": str, + "app.app_version": str, "app.build": str, "app.identifier": str, "app.in_foreground": bool, @@ -11599,16 +12396,40 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.system": str, "db.system.name": str, "db.user": str, + "device.battery_level": float, + "device.battery_temperature": float, + "device.boot_time": str, "device.brand": str, + "device.charging": bool, + "device.chipset": str, "device.class": str, + "device.connection_type": str, + "device.cpu_description": str, + "device.external_free_storage": int, + "device.external_storage_size": int, "device.family": str, "device.free_memory": int, + "device.free_storage": int, + "device.id": str, + "device.low_memory": bool, + "device.manufacturer": str, "device.memory.estimated_capacity": int, "device.memory_size": int, "device.model": str, "device.model_id": str, + "device.name": str, + "device.online": bool, + "device.orientation": str, "device.processor_count": int, + "device.processor_frequency": float, + "device.screen_density": float, + "device.screen_dpi": int, + "device.screen_height_pixels": int, + "device.screen_width_pixels": int, "device.simulator": bool, + "device.storage_size": int, + "device.thermal_state": str, + "device.usable_memory": int, "deviceMemory": str, "effectiveConnectionType": str, "environment": str, diff --git a/shared/deprecated_attributes.json b/shared/deprecated_attributes.json index 9e75c710..ef9fa5c6 100644 --- a/shared/deprecated_attributes.json +++ b/shared/deprecated_attributes.json @@ -1229,6 +1229,126 @@ } ] }, + { + "key": "app.app_build", + "brief": "Internal build identifier, as it appears on the platform.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "1", + "alias": ["app.build"], + "deprecation": { + "replacement": "app.build", + "reason": "Deprecated in favor of app.build", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_build in favor of app.build" + } + ] + }, + { + "key": "app.app_identifier", + "brief": "Version-independent application identifier, often a dotted bundle ID.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "com.example.myapp", + "alias": ["app.identifier"], + "deprecation": { + "replacement": "app.identifier", + "reason": "Deprecated in favor of app.identifier", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_identifier in favor of app.identifier" + } + ] + }, + { + "key": "app.app_name", + "brief": "Human readable application name, as it appears on the platform.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "My App", + "alias": ["app.name"], + "deprecation": { + "replacement": "app.name", + "reason": "Deprecated in favor of app.name", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_name in favor of app.name" + } + ] + }, + { + "key": "app.app_start_time", + "brief": "Formatted UTC timestamp when the user started the application.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "2025-01-01T00:00:00.000Z", + "alias": ["app.start_time"], + "deprecation": { + "replacement": "app.start_time", + "reason": "Deprecated in favor of app.start_time", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_start_time in favor of app.start_time" + } + ] + }, + { + "key": "app.app_version", + "brief": "Human readable application version, as it appears on the platform.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "sdks": ["sentry.cocoa", "sentry.java.android", "sentry.javascript.react-native", "sentry.dart.flutter"], + "example": "1.0.0", + "alias": ["app.version"], + "deprecation": { + "replacement": "app.version", + "reason": "Deprecated in favor of app.version", + "_status": "backfill" + }, + "changelog": [ + { + "version": "next", + "prs": [296], + "description": "Added and deprecated app.app_version in favor of app.version" + } + ] + }, { "key": "cls.source.", "brief": "The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", @@ -1510,6 +1630,29 @@ } ] }, + { + "key": "device.connection_type", + "brief": "The internet connection type currently being used by the device.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "wifi", + "deprecation": { + "_status": "backfill", + "replacement": "network.connection.type", + "reason": "This attribute is being deprecated in favor of network.connection.type" + }, + "alias": ["network.connection.type"], + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added and deprecated device.connection_type in favor of network.connection.type" + } + ] + }, { "key": "gen_ai.prompt", "brief": "The input messages sent to the model",