diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 6e68f75d..62e6f8c5 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -1784,7 +1784,7 @@ export type CODE_NAMESPACE_TYPE = string; * * Attribute defined in OTEL: No * - * Aliases: {@link NETWORK_CONNECTION_TYPE} `network.connection.type` + * Aliases: {@link NETWORK_CONNECTION_TYPE} `network.connection.type`, {@link DEVICE_CONNECTION_TYPE} `device.connection_type` * * @deprecated Use {@link NETWORK_CONNECTION_TYPE} (network.connection.type) instead - Old namespace-less attribute, to be replaced with network.connection.type for span-first future * @example "wifi" @@ -2265,6 +2265,86 @@ export const DEVICEMEMORY = 'deviceMemory'; */ export type DEVICEMEMORY_TYPE = string; +// Path: model/attributes/device/device__archs.json + +/** + * The CPU architectures of the device. `device.archs` + * + * Attribute Value Type: `Array` {@link DEVICE_ARCHS_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example ["arm64-v8a","armeabi-v7a","armeabi"] + */ +export const DEVICE_ARCHS = 'device.archs'; + +/** + * Type for {@link DEVICE_ARCHS} device.archs + */ +export type DEVICE_ARCHS_TYPE = Array; + +// 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 +2365,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 /** @@ -2298,176 +2418,599 @@ export type DEVICE_BRAND_TYPE = string; * * @example "medium" */ -export const DEVICE_CLASS = 'device.class'; +export const DEVICE_CLASS = 'device.class'; + +/** + * Type for {@link 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`, {@link CONNECTIONTYPE} `connectionType` + * + * @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 + +/** + * The family of the device. `device.family` + * + * Attribute Value Type: `string` {@link DEVICE_FAMILY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "iPhone" + */ +export const DEVICE_FAMILY = 'device.family'; + +/** + * Type for {@link DEVICE_FAMILY} device.family + */ +export type DEVICE_FAMILY_TYPE = string; + +// Path: model/attributes/device/device__free_memory.json + +/** + * Free system memory in bytes. `device.free_memory` + * + * Attribute Value Type: `number` {@link DEVICE_FREE_MEMORY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 2147483648 + */ +export const DEVICE_FREE_MEMORY = 'device.free_memory'; + +/** + * Type for {@link 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__locale.json + +/** + * The locale of the device. `device.locale` + * + * Attribute Value Type: `string` {@link DEVICE_LOCALE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "en-US" + */ +export const DEVICE_LOCALE = 'device.locale'; + +/** + * Type for {@link DEVICE_LOCALE} device.locale + */ +export type DEVICE_LOCALE_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 + +/** + * 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 `device.memory.estimated_capacity` + * + * Attribute Value Type: `number` {@link DEVICE_MEMORY_ESTIMATED_CAPACITY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link DEVICEMEMORY} `deviceMemory` + * + * @example 8 + */ +export const DEVICE_MEMORY_ESTIMATED_CAPACITY = 'device.memory.estimated_capacity'; + +/** + * Type for {@link DEVICE_MEMORY_ESTIMATED_CAPACITY} device.memory.estimated_capacity + */ +export type DEVICE_MEMORY_ESTIMATED_CAPACITY_TYPE = number; + +// Path: model/attributes/device/device__memory_size.json + +/** + * Total system memory available in bytes. `device.memory_size` + * + * Attribute Value Type: `number` {@link DEVICE_MEMORY_SIZE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 17179869184 + */ +export const DEVICE_MEMORY_SIZE = 'device.memory_size'; + +/** + * Type for {@link DEVICE_MEMORY_SIZE} device.memory_size + */ +export type DEVICE_MEMORY_SIZE_TYPE = number; + +// Path: model/attributes/device/device__model.json + +/** + * The model of the device. `device.model` + * + * Attribute Value Type: `string` {@link DEVICE_MODEL_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "iPhone 15 Pro Max" + */ +export const DEVICE_MODEL = 'device.model'; + +/** + * Type for {@link DEVICE_MODEL} device.model + */ +export type DEVICE_MODEL_TYPE = string; + +// Path: model/attributes/device/device__model_id.json + +/** + * An internal hardware revision to identify the device exactly. `device.model_id` + * + * Attribute Value Type: `string` {@link DEVICE_MODEL_ID_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "N861AP" + */ +export const DEVICE_MODEL_ID = 'device.model_id'; + +/** + * Type for {@link 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} + * + * 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_CLASS} device.class + * Type for {@link DEVICE_SCREEN_DENSITY} device.screen_density */ -export type DEVICE_CLASS_TYPE = string; +export type DEVICE_SCREEN_DENSITY_TYPE = number; -// Path: model/attributes/device/device__family.json +// Path: model/attributes/device/device__screen_dpi.json /** - * The family of the device. `device.family` + * The screen density in dots-per-inch (DPI) of the device. `device.screen_dpi` * - * Attribute Value Type: `string` {@link DEVICE_FAMILY_TYPE} + * Attribute Value Type: `number` {@link DEVICE_SCREEN_DPI_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example "iPhone" + * @example 420 */ -export const DEVICE_FAMILY = 'device.family'; +export const DEVICE_SCREEN_DPI = 'device.screen_dpi'; /** - * Type for {@link DEVICE_FAMILY} device.family + * Type for {@link DEVICE_SCREEN_DPI} device.screen_dpi */ -export type DEVICE_FAMILY_TYPE = string; +export type DEVICE_SCREEN_DPI_TYPE = number; -// Path: model/attributes/device/device__free_memory.json +// Path: model/attributes/device/device__screen_height_pixels.json /** - * Free system memory in bytes. `device.free_memory` + * The height of the device screen in pixels. `device.screen_height_pixels` * - * Attribute Value Type: `number` {@link DEVICE_FREE_MEMORY_TYPE} + * Attribute Value Type: `number` {@link DEVICE_SCREEN_HEIGHT_PIXELS_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example 2147483648 + * @example 2400 */ -export const DEVICE_FREE_MEMORY = 'device.free_memory'; +export const DEVICE_SCREEN_HEIGHT_PIXELS = 'device.screen_height_pixels'; /** - * Type for {@link DEVICE_FREE_MEMORY} device.free_memory + * Type for {@link DEVICE_SCREEN_HEIGHT_PIXELS} device.screen_height_pixels */ -export type DEVICE_FREE_MEMORY_TYPE = number; +export type DEVICE_SCREEN_HEIGHT_PIXELS_TYPE = number; -// Path: model/attributes/device/device__memory__estimated_capacity.json +// Path: model/attributes/device/device__screen_width_pixels.json /** - * 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 `device.memory.estimated_capacity` + * The width of the device screen in pixels. `device.screen_width_pixels` * - * Attribute Value Type: `number` {@link DEVICE_MEMORY_ESTIMATED_CAPACITY_TYPE} + * Attribute Value Type: `number` {@link DEVICE_SCREEN_WIDTH_PIXELS_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * Aliases: {@link DEVICEMEMORY} `deviceMemory` - * - * @example 8 + * @example 1080 */ -export const DEVICE_MEMORY_ESTIMATED_CAPACITY = 'device.memory.estimated_capacity'; +export const DEVICE_SCREEN_WIDTH_PIXELS = 'device.screen_width_pixels'; /** - * Type for {@link DEVICE_MEMORY_ESTIMATED_CAPACITY} device.memory.estimated_capacity + * Type for {@link DEVICE_SCREEN_WIDTH_PIXELS} device.screen_width_pixels */ -export type DEVICE_MEMORY_ESTIMATED_CAPACITY_TYPE = number; +export type DEVICE_SCREEN_WIDTH_PIXELS_TYPE = number; -// Path: model/attributes/device/device__memory_size.json +// Path: model/attributes/device/device__simulator.json /** - * Total system memory available in bytes. `device.memory_size` + * Whether the device is a simulator or an actual device. `device.simulator` * - * Attribute Value Type: `number` {@link DEVICE_MEMORY_SIZE_TYPE} + * Attribute Value Type: `boolean` {@link DEVICE_SIMULATOR_TYPE} * - * Contains PII: maybe + * Contains PII: false * * Attribute defined in OTEL: No * - * @example 17179869184 + * @example false */ -export const DEVICE_MEMORY_SIZE = 'device.memory_size'; +export const DEVICE_SIMULATOR = 'device.simulator'; /** - * Type for {@link DEVICE_MEMORY_SIZE} device.memory_size + * Type for {@link DEVICE_SIMULATOR} device.simulator */ -export type DEVICE_MEMORY_SIZE_TYPE = number; +export type DEVICE_SIMULATOR_TYPE = boolean; -// Path: model/attributes/device/device__model.json +// Path: model/attributes/device/device__storage_size.json /** - * The model of the device. `device.model` + * Total device storage in bytes. `device.storage_size` * - * Attribute Value Type: `string` {@link DEVICE_MODEL_TYPE} + * Attribute Value Type: `number` {@link DEVICE_STORAGE_SIZE_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example "iPhone 15 Pro Max" + * @example 274877906944 */ -export const DEVICE_MODEL = 'device.model'; +export const DEVICE_STORAGE_SIZE = 'device.storage_size'; /** - * Type for {@link DEVICE_MODEL} device.model + * Type for {@link DEVICE_STORAGE_SIZE} device.storage_size */ -export type DEVICE_MODEL_TYPE = string; +export type DEVICE_STORAGE_SIZE_TYPE = number; -// Path: model/attributes/device/device__model_id.json +// Path: model/attributes/device/device__thermal_state.json /** - * An internal hardware revision to identify the device exactly. `device.model_id` + * 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_MODEL_ID_TYPE} + * Attribute Value Type: `string` {@link DEVICE_THERMAL_STATE_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example "N861AP" + * @example "nominal" */ -export const DEVICE_MODEL_ID = 'device.model_id'; +export const DEVICE_THERMAL_STATE = 'device.thermal_state'; /** - * Type for {@link DEVICE_MODEL_ID} device.model_id + * Type for {@link DEVICE_THERMAL_STATE} device.thermal_state */ -export type DEVICE_MODEL_ID_TYPE = string; +export type DEVICE_THERMAL_STATE_TYPE = string; -// Path: model/attributes/device/device__processor_count.json +// Path: model/attributes/device/device__timezone.json /** - * Number of "logical processors". `device.processor_count` + * The timezone of the device. `device.timezone` * - * Attribute Value Type: `number` {@link DEVICE_PROCESSOR_COUNT_TYPE} + * Attribute Value Type: `string` {@link DEVICE_TIMEZONE_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * Aliases: {@link HARDWARECONCURRENCY} `hardwareConcurrency` - * - * @example 8 + * @example "Europe/Vienna" */ -export const DEVICE_PROCESSOR_COUNT = 'device.processor_count'; +export const DEVICE_TIMEZONE = 'device.timezone'; /** - * Type for {@link DEVICE_PROCESSOR_COUNT} device.processor_count + * Type for {@link DEVICE_TIMEZONE} device.timezone */ -export type DEVICE_PROCESSOR_COUNT_TYPE = number; +export type DEVICE_TIMEZONE_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 @@ -6371,7 +6914,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" */ @@ -10323,16 +10866,43 @@ export const ATTRIBUTE_TYPE: Record = { [DB_SYSTEM_NAME]: 'string', [DB_USER]: 'string', [DEVICEMEMORY]: 'string', + [DEVICE_ARCHS]: '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_LOCALE]: '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_TIMEZONE]: 'string', + [DEVICE_USABLE_MEMORY]: 'integer', [EFFECTIVECONNECTIONTYPE]: 'string', [ENVIRONMENT]: 'string', [ERROR_TYPE]: 'string', @@ -10811,16 +11381,43 @@ export type AttributeName = | typeof DB_SYSTEM_NAME | typeof DB_USER | typeof DEVICEMEMORY + | typeof DEVICE_ARCHS + | 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_LOCALE + | 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_TIMEZONE + | typeof DEVICE_USABLE_MEMORY | typeof EFFECTIVECONNECTIONTYPE | typeof ENVIRONMENT | typeof ERROR_TYPE @@ -12291,7 +12888,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.connection.type', reason: 'Old namespace-less attribute, to be replaced with network.connection.type for span-first future', }, - aliases: [NETWORK_CONNECTION_TYPE], + aliases: [NETWORK_CONNECTION_TYPE, DEVICE_CONNECTION_TYPE], sdks: ['javascript-browser'], changelog: [ { @@ -12581,6 +13178,46 @@ export const ATTRIBUTE_METADATA: Record = { }, ], }, + [DEVICE_ARCHS]: { + brief: 'The CPU architectures of the device.', + type: 'string[]', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: ['arm64-v8a', 'armeabi-v7a', 'armeabi'], + changelog: [{ version: 'next', prs: [303], description: 'Added device.archs attribute' }], + }, + [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 +13228,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 +13259,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, CONNECTIONTYPE], + 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 +13330,56 @@ 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_LOCALE]: { + brief: 'The locale of the device.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'en-US', + changelog: [{ version: 'next', prs: [303], description: 'Added device.locale 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 +13429,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 +13482,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 +13542,47 @@ 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_TIMEZONE]: { + brief: 'The timezone of the device.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'Europe/Vienna', + changelog: [{ version: 'next', prs: [303], description: 'Added device.timezone 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', @@ -15044,7 +15924,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'wifi', - aliases: [CONNECTIONTYPE], + aliases: [DEVICE_CONNECTION_TYPE, CONNECTIONTYPE], sdks: ['javascript-browser'], changelog: [ { @@ -17202,16 +18082,43 @@ export type Attributes = { [DB_SYSTEM_NAME]?: DB_SYSTEM_NAME_TYPE; [DB_USER]?: DB_USER_TYPE; [DEVICEMEMORY]?: DEVICEMEMORY_TYPE; + [DEVICE_ARCHS]?: DEVICE_ARCHS_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_LOCALE]?: DEVICE_LOCALE_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_TIMEZONE]?: DEVICE_TIMEZONE_TYPE; + [DEVICE_USABLE_MEMORY]?: DEVICE_USABLE_MEMORY_TYPE; [EFFECTIVECONNECTIONTYPE]?: EFFECTIVECONNECTIONTYPE_TYPE; [ENVIRONMENT]?: ENVIRONMENT_TYPE; [ERROR_TYPE]?: ERROR_TYPE_TYPE; diff --git a/model/attributes/connectionType.json b/model/attributes/connectionType.json index 1a97a362..4e06d9ed 100644 --- a/model/attributes/connectionType.json +++ b/model/attributes/connectionType.json @@ -8,7 +8,7 @@ "is_in_otel": false, "example": "wifi", "sdks": ["javascript-browser"], - "alias": ["network.connection.type"], + "alias": ["network.connection.type", "device.connection_type"], "deprecation": { "replacement": "network.connection.type", "reason": "Old namespace-less attribute, to be replaced with network.connection.type for span-first future", diff --git a/model/attributes/device/device__archs.json b/model/attributes/device/device__archs.json new file mode 100644 index 00000000..846a3fad --- /dev/null +++ b/model/attributes/device/device__archs.json @@ -0,0 +1,17 @@ +{ + "key": "device.archs", + "brief": "The CPU architectures of the device.", + "type": "string[]", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": ["arm64-v8a", "armeabi-v7a", "armeabi"], + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.archs attribute" + } + ] +} 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..5ab55c34 --- /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", "connectionType"], + "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__locale.json b/model/attributes/device/device__locale.json new file mode 100644 index 00000000..b36067ca --- /dev/null +++ b/model/attributes/device/device__locale.json @@ -0,0 +1,17 @@ +{ + "key": "device.locale", + "brief": "The locale of the device.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "en-US", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.locale 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__timezone.json b/model/attributes/device/device__timezone.json new file mode 100644 index 00000000..e0b6e61b --- /dev/null +++ b/model/attributes/device/device__timezone.json @@ -0,0 +1,17 @@ +{ + "key": "device.timezone", + "brief": "The timezone of the device.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "Europe/Vienna", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added device.timezone 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..2a09ecd0 100644 --- a/model/attributes/network/network__connection__type.json +++ b/model/attributes/network/network__connection__type.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "wifi", - "alias": ["connectionType"], + "alias": ["device.connection_type", "connectionType"], "sdks": ["javascript-browser"], "changelog": [ { diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index a1602e9b..06e792c2 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -149,6 +149,7 @@ class _AttributeNamesMeta(type): "DB_SQL_BINDINGS", "DB_STATEMENT", "DB_SYSTEM", + "DEVICE_CONNECTION_TYPE", "DEVICEMEMORY", "EFFECTIVECONNECTIONTYPE", "ENVIRONMENT", @@ -1199,7 +1200,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No - Aliases: network.connection.type + Aliases: network.connection.type, device.connection_type DEPRECATED: Use network.connection.type instead - Old namespace-less attribute, to be replaced with network.connection.type for span-first future Example: "wifi" """ @@ -1422,6 +1423,48 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "fancy_user" """ + # Path: model/attributes/device/device__archs.json + DEVICE_ARCHS: Literal["device.archs"] = "device.archs" + """The CPU architectures of the device. + + Type: List[str] + Contains PII: maybe + Defined in OTEL: No + Example: ["arm64-v8a","armeabi-v7a","armeabi"] + """ + + # 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 +1475,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 +1505,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, connectionType + 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 +1571,56 @@ 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__locale.json + DEVICE_LOCALE: Literal["device.locale"] = "device.locale" + """The locale of the device. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "en-US" + """ + + # 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 +1664,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 +1705,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 +1771,46 @@ 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__timezone.json + DEVICE_TIMEZONE: Literal["device.timezone"] = "device.timezone" + """The timezone of the device. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "Europe/Vienna" + """ + + # 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. @@ -3831,7 +4116,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: Yes - Aliases: connectionType + Aliases: device.connection_type, connectionType Example: "wifi" """ @@ -6738,7 +7023,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): reason="Old namespace-less attribute, to be replaced with network.connection.type for span-first future", status=DeprecationStatus.BACKFILL, ), - aliases=["network.connection.type"], + aliases=["network.connection.type", "device.connection_type"], sdks=["javascript-browser"], changelog=[ ChangelogEntry( @@ -6991,6 +7276,60 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "device.archs": AttributeMetadata( + brief="The CPU architectures of the device.", + type=AttributeType.STRING_ARRAY, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=["arm64-v8a", "armeabi-v7a", "armeabi"], + changelog=[ + ChangelogEntry( + version="next", prs=[303], description="Added device.archs attribute" + ), + ], + ), + "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 +7340,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 +7376,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", "connectionType"], + 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 +7462,72 @@ 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.locale": AttributeMetadata( + brief="The locale of the device.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="en-US", + changelog=[ + ChangelogEntry( + version="next", prs=[303], description="Added device.locale 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 +7580,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 +7638,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 +7722,60 @@ 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.timezone": AttributeMetadata( + brief="The timezone of the device.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="Europe/Vienna", + changelog=[ + ChangelogEntry( + version="next", prs=[303], description="Added device.timezone 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, @@ -9613,7 +10266,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="wifi", - aliases=["connectionType"], + aliases=["device.connection_type", "connectionType"], sdks=["javascript-browser"], changelog=[ ChangelogEntry( @@ -11599,16 +12252,43 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.system": str, "db.system.name": str, "db.user": str, + "device.archs": List[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.locale": 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.timezone": 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..3077bad8 100644 --- a/shared/deprecated_attributes.json +++ b/shared/deprecated_attributes.json @@ -35,7 +35,7 @@ "is_in_otel": false, "example": "wifi", "sdks": ["javascript-browser"], - "alias": ["network.connection.type"], + "alias": ["network.connection.type", "device.connection_type"], "deprecation": { "replacement": "network.connection.type", "reason": "Old namespace-less attribute, to be replaced with network.connection.type for span-first future", @@ -1510,6 +1510,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", "connectionType"], + "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",