From a78c7c25fc20a01e639f254b62d3a88e75cbe806 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 24 Mar 2026 11:56:52 +0100 Subject: [PATCH 1/7] feat(attributes): Add remaining device context attributes Add 18 new device context attributes that were defined in the Sentry event spec but missing from conventions: battery_level, battery_temperature, boot_time, charging, free_storage, id, low_memory, manufacturer, name, online, orientation, processor_frequency, screen_density, screen_dpi, screen_height_pixels, screen_width_pixels, storage_size, and usable_memory. device.id and device.manufacturer are marked as OTel attributes. Co-Authored-By: Claude Opus 4.6 --- .../sentry-conventions/src/attributes.ts | 594 +++ .../device/device__battery_level.json | 16 + .../device/device__battery_temperature.json | 16 + .../attributes/device/device__boot_time.json | 16 + model/attributes/device/device__charging.json | 16 + .../device/device__free_storage.json | 16 + model/attributes/device/device__id.json | 16 + .../attributes/device/device__low_memory.json | 16 + .../device/device__manufacturer.json | 16 + model/attributes/device/device__name.json | 16 + model/attributes/device/device__online.json | 16 + .../device/device__orientation.json | 16 + .../device/device__processor_frequency.json | 16 + .../device/device__screen_density.json | 16 + .../attributes/device/device__screen_dpi.json | 16 + .../device/device__screen_height_pixels.json | 16 + .../device/device__screen_width_pixels.json | 16 + .../device/device__storage_size.json | 16 + .../device/device__usable_memory.json | 16 + python/src/sentry_conventions/attributes.py | 4521 ++++++++++------- 20 files changed, 3681 insertions(+), 1722 deletions(-) create mode 100644 model/attributes/device/device__battery_level.json create mode 100644 model/attributes/device/device__battery_temperature.json create mode 100644 model/attributes/device/device__boot_time.json create mode 100644 model/attributes/device/device__charging.json create mode 100644 model/attributes/device/device__free_storage.json create mode 100644 model/attributes/device/device__id.json create mode 100644 model/attributes/device/device__low_memory.json create mode 100644 model/attributes/device/device__manufacturer.json create mode 100644 model/attributes/device/device__name.json create mode 100644 model/attributes/device/device__online.json create mode 100644 model/attributes/device/device__orientation.json create mode 100644 model/attributes/device/device__processor_frequency.json create mode 100644 model/attributes/device/device__screen_density.json create mode 100644 model/attributes/device/device__screen_dpi.json create mode 100644 model/attributes/device/device__screen_height_pixels.json create mode 100644 model/attributes/device/device__screen_width_pixels.json create mode 100644 model/attributes/device/device__storage_size.json create mode 100644 model/attributes/device/device__usable_memory.json diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 8055dac5..7655a546 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -2199,6 +2199,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 /** @@ -2219,6 +2279,26 @@ 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__class.json /** @@ -2279,6 +2359,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 /** @@ -2361,6 +2521,66 @@ 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, typically a 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 /** @@ -2383,6 +2603,106 @@ export const 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 /** @@ -2403,6 +2723,46 @@ export const 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__usable_memory.json + +/** + * Memory usable for the app in bytes. `device.usable_memory` + * + * Attribute Value Type: `number` {@link DEVICE_USABLE_MEMORY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 2147483648 + */ +export const DEVICE_USABLE_MEMORY = 'device.usable_memory'; + +/** + * Type for {@link DEVICE_USABLE_MEMORY} device.usable_memory + */ +export type DEVICE_USABLE_MEMORY_TYPE = number; + // Path: model/attributes/environment.json /** @@ -10165,16 +10525,34 @@ 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_CLASS]: 'string', [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_USABLE_MEMORY]: 'integer', [ENVIRONMENT]: 'string', [ERROR_TYPE]: 'string', [EVENT_ID]: 'integer', @@ -10646,16 +11024,34 @@ 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_CLASS | 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_USABLE_MEMORY | typeof ENVIRONMENT | typeof ERROR_TYPE | typeof EVENT_ID @@ -12356,6 +12752,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', 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', 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', description: 'Added device.boot_time attribute' }], + }, [DEVICE_BRAND]: { brief: 'The brand of the device.', type: 'string', @@ -12366,6 +12792,16 @@ 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', description: 'Added device.charging 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.', @@ -12397,6 +12833,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', 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', 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', 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', 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', @@ -12446,6 +12922,36 @@ 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, typically a hostname.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'localhost', + changelog: [{ version: 'next', 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', 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', description: 'Added device.orientation attribute' }], + }, [DEVICE_PROCESSOR_COUNT]: { brief: 'Number of "logical processors".', type: 'integer', @@ -12468,6 +12974,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', 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', 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', 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', 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', description: 'Added device.screen_width_pixels attribute' }], + }, [DEVICE_SIMULATOR]: { brief: 'Whether the device is a simulator or an actual device.', type: 'boolean', @@ -12478,6 +13034,26 @@ 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', description: 'Added device.storage_size attribute' }], + }, + [DEVICE_USABLE_MEMORY]: { + brief: 'Memory usable for the app in bytes.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 2147483648, + changelog: [{ version: 'next', description: 'Added device.usable_memory attribute' }], + }, [ENVIRONMENT]: { brief: 'The sentry environment.', type: 'string', @@ -16897,16 +17473,34 @@ 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_CLASS]?: DEVICE_CLASS_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_USABLE_MEMORY]?: DEVICE_USABLE_MEMORY_TYPE; [ENVIRONMENT]?: ENVIRONMENT_TYPE; [ERROR_TYPE]?: ERROR_TYPE_TYPE; [EVENT_ID]?: EVENT_ID_TYPE; diff --git a/model/attributes/device/device__battery_level.json b/model/attributes/device/device__battery_level.json new file mode 100644 index 00000000..b66f81c2 --- /dev/null +++ b/model/attributes/device/device__battery_level.json @@ -0,0 +1,16 @@ +{ + "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", + "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..39b25145 --- /dev/null +++ b/model/attributes/device/device__battery_temperature.json @@ -0,0 +1,16 @@ +{ + "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", + "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..78d1ad84 --- /dev/null +++ b/model/attributes/device/device__boot_time.json @@ -0,0 +1,16 @@ +{ + "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", + "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..45635410 --- /dev/null +++ b/model/attributes/device/device__charging.json @@ -0,0 +1,16 @@ +{ + "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", + "description": "Added device.charging 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..f3dff934 --- /dev/null +++ b/model/attributes/device/device__free_storage.json @@ -0,0 +1,16 @@ +{ + "key": "device.free_storage", + "brief": "Free device storage in bytes.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 107374182400, + "changelog": [ + { + "version": "next", + "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..543459d1 --- /dev/null +++ b/model/attributes/device/device__id.json @@ -0,0 +1,16 @@ +{ + "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", + "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..96713944 --- /dev/null +++ b/model/attributes/device/device__low_memory.json @@ -0,0 +1,16 @@ +{ + "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", + "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..a4c64336 --- /dev/null +++ b/model/attributes/device/device__manufacturer.json @@ -0,0 +1,16 @@ +{ + "key": "device.manufacturer", + "brief": "The manufacturer of the device.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": true, + "example": "Google", + "changelog": [ + { + "version": "next", + "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..01b28fe6 --- /dev/null +++ b/model/attributes/device/device__name.json @@ -0,0 +1,16 @@ +{ + "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", + "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..0b473924 --- /dev/null +++ b/model/attributes/device/device__online.json @@ -0,0 +1,16 @@ +{ + "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", + "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..7f0d5eaa --- /dev/null +++ b/model/attributes/device/device__orientation.json @@ -0,0 +1,16 @@ +{ + "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", + "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..25a976f0 --- /dev/null +++ b/model/attributes/device/device__processor_frequency.json @@ -0,0 +1,16 @@ +{ + "key": "device.processor_frequency", + "brief": "Processor frequency in MHz.", + "type": "double", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 2400.0, + "changelog": [ + { + "version": "next", + "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..304a0ea8 --- /dev/null +++ b/model/attributes/device/device__screen_density.json @@ -0,0 +1,16 @@ +{ + "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", + "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..c98826be --- /dev/null +++ b/model/attributes/device/device__screen_dpi.json @@ -0,0 +1,16 @@ +{ + "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", + "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..a077db70 --- /dev/null +++ b/model/attributes/device/device__screen_height_pixels.json @@ -0,0 +1,16 @@ +{ + "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", + "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..55f240e9 --- /dev/null +++ b/model/attributes/device/device__screen_width_pixels.json @@ -0,0 +1,16 @@ +{ + "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", + "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..891a0606 --- /dev/null +++ b/model/attributes/device/device__storage_size.json @@ -0,0 +1,16 @@ +{ + "key": "device.storage_size", + "brief": "Total device storage in bytes.", + "type": "integer", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": 274877906944, + "changelog": [ + { + "version": "next", + "description": "Added device.storage_size 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..832b18cb --- /dev/null +++ b/model/attributes/device/device__usable_memory.json @@ -0,0 +1,16 @@ +{ + "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", + "description": "Added device.usable_memory attribute" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 248cb3c4..151372ef 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -5,12 +5,9 @@ import warnings from dataclasses import dataclass from enum import Enum -from typing import Dict, List, Literal, Optional, TypedDict, Union - -AttributeValue = Union[ - str, int, float, bool, List[str], List[int], List[float], List[bool] -] +from typing import List, Union, Literal, Optional, Dict, TypedDict +AttributeValue = Union[str, int, float, bool, List[str], List[int], List[float], List[bool]] class AttributeType(Enum): STRING = "string" @@ -23,84 +20,75 @@ class AttributeType(Enum): DOUBLE_ARRAY = "double[]" ANY = "any" - class IsPii(Enum): TRUE = "true" FALSE = "false" MAYBE = "maybe" - @dataclass class PiiInfo: """Holds information about PII in an attribute's values.""" - isPii: IsPii reason: Optional[str] = None - class DeprecationStatus(Enum): BACKFILL = "backfill" NORMALIZE = "normalize" - @dataclass class DeprecationInfo: """Holds information about a deprecation.""" - replacement: Optional[str] = None reason: Optional[str] = None status: Optional[DeprecationStatus] = None - @dataclass class ChangelogEntry: """A changelog entry tracking a change to an attribute.""" version: str """The sentry-conventions release version""" - + prs: Optional[List[int]] = None """GitHub PR numbers""" - + description: Optional[str] = None """Optional description of what changed""" - @dataclass class AttributeMetadata: """The metadata for an attribute.""" brief: str """A description of the attribute""" - + type: AttributeType """The type of the attribute value""" - + pii: PiiInfo """If an attribute can have pii. Is either true, false or maybe. Optionally include a reason about why it has PII or not""" - + is_in_otel: bool """Whether the attribute is defined in OpenTelemetry Semantic Conventions""" - + has_dynamic_suffix: Optional[bool] = None """If an attribute has a dynamic suffix, for example http.response.header. where is dynamic""" - + example: Optional[AttributeValue] = None """An example value of the attribute""" - + deprecation: Optional[DeprecationInfo] = None """If an attribute was deprecated, and what it was replaced with""" - + aliases: Optional[List[str]] = None """If there are attributes that alias to this attribute""" - + sdks: Optional[List[str]] = None """If an attribute is SDK specific, list the SDKs that use this attribute. This is not an exhaustive list, there might be SDKs that send this attribute that are is not documented here.""" - + changelog: Optional[List[ChangelogEntry]] = None """Changelog entries tracking how this attribute has changed across versions""" - class _AttributeNamesMeta(type): _deprecated_names = { "AI_CITATIONS", @@ -229,7 +217,6 @@ def __getattribute__(cls, name: str): ) return super().__getattribute__(name) - class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """Contains all attribute names as class attributes with their documentation.""" @@ -245,9 +232,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/ai/ai__completion_tokens__used.json - AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = ( - "ai.completion_tokens.used" - ) + AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = "ai.completion_tokens.used" """The number of tokens used to respond to the message. Type: int @@ -730,9 +715,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__invoker_type.json - BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = ( - "browser.script.invoker_type" - ) + BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = "browser.script.invoker_type" """Browser script entry point type. Type: str @@ -742,9 +725,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__source_char_position.json - BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal[ - "browser.script.source_char_position" - ] = "browser.script.source_char_position" + BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal["browser.script.source_char_position"] = "browser.script.source_char_position" """A number representing the script character position of the script. Type: int @@ -765,9 +746,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__cls__source__[key].json - BROWSER_WEB_VITAL_CLS_SOURCE_KEY: Literal["browser.web_vital.cls.source."] = ( - "browser.web_vital.cls.source." - ) + BROWSER_WEB_VITAL_CLS_SOURCE_KEY: Literal["browser.web_vital.cls.source."] = "browser.web_vital.cls.source." """The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N Type: str @@ -779,9 +758,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__cls__value.json - BROWSER_WEB_VITAL_CLS_VALUE: Literal["browser.web_vital.cls.value"] = ( - "browser.web_vital.cls.value" - ) + BROWSER_WEB_VITAL_CLS_VALUE: Literal["browser.web_vital.cls.value"] = "browser.web_vital.cls.value" """The value of the recorded Cumulative Layout Shift (CLS) web vital Type: float @@ -792,9 +769,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__fcp__value.json - BROWSER_WEB_VITAL_FCP_VALUE: Literal["browser.web_vital.fcp.value"] = ( - "browser.web_vital.fcp.value" - ) + BROWSER_WEB_VITAL_FCP_VALUE: Literal["browser.web_vital.fcp.value"] = "browser.web_vital.fcp.value" """The time it takes for the browser to render the first piece of meaningful content on the screen Type: float @@ -805,9 +780,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__fp__value.json - BROWSER_WEB_VITAL_FP_VALUE: Literal["browser.web_vital.fp.value"] = ( - "browser.web_vital.fp.value" - ) + BROWSER_WEB_VITAL_FP_VALUE: Literal["browser.web_vital.fp.value"] = "browser.web_vital.fp.value" """The time in milliseconds it takes for the browser to render the first pixel on the screen Type: float @@ -818,9 +791,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__inp__value.json - BROWSER_WEB_VITAL_INP_VALUE: Literal["browser.web_vital.inp.value"] = ( - "browser.web_vital.inp.value" - ) + BROWSER_WEB_VITAL_INP_VALUE: Literal["browser.web_vital.inp.value"] = "browser.web_vital.inp.value" """The value of the recorded Interaction to Next Paint (INP) web vital Type: float @@ -831,9 +802,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__element.json - BROWSER_WEB_VITAL_LCP_ELEMENT: Literal["browser.web_vital.lcp.element"] = ( - "browser.web_vital.lcp.element" - ) + BROWSER_WEB_VITAL_LCP_ELEMENT: Literal["browser.web_vital.lcp.element"] = "browser.web_vital.lcp.element" """The HTML element selector or component name for which LCP was reported Type: str @@ -844,9 +813,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__id.json - BROWSER_WEB_VITAL_LCP_ID: Literal["browser.web_vital.lcp.id"] = ( - "browser.web_vital.lcp.id" - ) + BROWSER_WEB_VITAL_LCP_ID: Literal["browser.web_vital.lcp.id"] = "browser.web_vital.lcp.id" """The id of the dom element responsible for the largest contentful paint Type: str @@ -857,9 +824,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__load_time.json - BROWSER_WEB_VITAL_LCP_LOAD_TIME: Literal["browser.web_vital.lcp.load_time"] = ( - "browser.web_vital.lcp.load_time" - ) + BROWSER_WEB_VITAL_LCP_LOAD_TIME: Literal["browser.web_vital.lcp.load_time"] = "browser.web_vital.lcp.load_time" """The time it took for the LCP element to be loaded Type: int @@ -870,9 +835,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__render_time.json - BROWSER_WEB_VITAL_LCP_RENDER_TIME: Literal["browser.web_vital.lcp.render_time"] = ( - "browser.web_vital.lcp.render_time" - ) + BROWSER_WEB_VITAL_LCP_RENDER_TIME: Literal["browser.web_vital.lcp.render_time"] = "browser.web_vital.lcp.render_time" """The time it took for the LCP element to be rendered Type: int @@ -883,9 +846,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__size.json - BROWSER_WEB_VITAL_LCP_SIZE: Literal["browser.web_vital.lcp.size"] = ( - "browser.web_vital.lcp.size" - ) + BROWSER_WEB_VITAL_LCP_SIZE: Literal["browser.web_vital.lcp.size"] = "browser.web_vital.lcp.size" """The size of the largest contentful paint element Type: int @@ -896,9 +857,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__url.json - BROWSER_WEB_VITAL_LCP_URL: Literal["browser.web_vital.lcp.url"] = ( - "browser.web_vital.lcp.url" - ) + BROWSER_WEB_VITAL_LCP_URL: Literal["browser.web_vital.lcp.url"] = "browser.web_vital.lcp.url" """The url of the dom element responsible for the largest contentful paint Type: str @@ -909,9 +868,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__value.json - BROWSER_WEB_VITAL_LCP_VALUE: Literal["browser.web_vital.lcp.value"] = ( - "browser.web_vital.lcp.value" - ) + BROWSER_WEB_VITAL_LCP_VALUE: Literal["browser.web_vital.lcp.value"] = "browser.web_vital.lcp.value" """The value of the recorded Largest Contentful Paint (LCP) web vital Type: float @@ -922,9 +879,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__ttfb__request_time.json - BROWSER_WEB_VITAL_TTFB_REQUEST_TIME: Literal[ - "browser.web_vital.ttfb.request_time" - ] = "browser.web_vital.ttfb.request_time" + BROWSER_WEB_VITAL_TTFB_REQUEST_TIME: Literal["browser.web_vital.ttfb.request_time"] = "browser.web_vital.ttfb.request_time" """The time it takes for the server to process the initial request and send the first byte of a response to the user's browser Type: float @@ -935,9 +890,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__ttfb__value.json - BROWSER_WEB_VITAL_TTFB_VALUE: Literal["browser.web_vital.ttfb.value"] = ( - "browser.web_vital.ttfb.value" - ) + BROWSER_WEB_VITAL_TTFB_VALUE: Literal["browser.web_vital.ttfb.value"] = "browser.web_vital.ttfb.value" """The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds Type: float @@ -1039,9 +992,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_read.json - CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = ( - "cloudflare.d1.rows_read" - ) + CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = "cloudflare.d1.rows_read" """The number of rows read in a Cloudflare D1 operation. Type: int @@ -1051,9 +1002,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_written.json - CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = ( - "cloudflare.d1.rows_written" - ) + CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = "cloudflare.d1.rows_written" """The number of rows written in a Cloudflare D1 operation. Type: int @@ -1188,9 +1137,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/culture/culture__is_24_hour_format.json - CULTURE_IS_24_HOUR_FORMAT: Literal["culture.is_24_hour_format"] = ( - "culture.is_24_hour_format" - ) + CULTURE_IS_24_HOUR_FORMAT: Literal["culture.is_24_hour_format"] = "culture.is_24_hour_format" """Whether the culture uses 24-hour time format. Type: bool @@ -1276,9 +1223,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/db/db__query__parameter__[key].json - DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = ( - "db.query.parameter." - ) + DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = "db.query.parameter." """A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value. Type: str @@ -1385,6 +1330,36 @@ 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. @@ -1395,6 +1370,16 @@ 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__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. @@ -1425,10 +1410,48 @@ 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" - ) + DEVICE_MEMORY_ESTIMATED_CAPACITY: Literal["device.memory.estimated_capacity"] = "device.memory.estimated_capacity" """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: int @@ -1468,6 +1491,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, typically a 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". @@ -1479,6 +1532,56 @@ 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. @@ -1489,6 +1592,26 @@ 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__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. @@ -1730,9 +1853,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__input_tokens.json - GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = ( - "gen_ai.cost.input_tokens" - ) + GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = "gen_ai.cost.input_tokens" """The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens). Type: float @@ -1742,9 +1863,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__output_tokens.json - GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = ( - "gen_ai.cost.output_tokens" - ) + GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = "gen_ai.cost.output_tokens" """The cost of tokens used for creating the AI output in USD (without reasoning tokens). Type: float @@ -1754,9 +1873,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__total_tokens.json - GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = ( - "gen_ai.cost.total_tokens" - ) + GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = "gen_ai.cost.total_tokens" """The total cost for the tokens used. Type: float @@ -1767,9 +1884,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__embeddings__input.json - GEN_AI_EMBEDDINGS_INPUT: Literal["gen_ai.embeddings.input"] = ( - "gen_ai.embeddings.input" - ) + GEN_AI_EMBEDDINGS_INPUT: Literal["gen_ai.embeddings.input"] = "gen_ai.embeddings.input" """The input to the embeddings model. Type: str @@ -1853,9 +1968,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__available_tools.json - GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = ( - "gen_ai.request.available_tools" - ) + GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = "gen_ai.request.available_tools" """The available tools for the model. It has to be a stringified version of an array of objects. Type: str @@ -1866,9 +1979,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__frequency_penalty.json - GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = ( - "gen_ai.request.frequency_penalty" - ) + GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = "gen_ai.request.frequency_penalty" """Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation. Type: float @@ -1879,9 +1990,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__max_tokens.json - GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = ( - "gen_ai.request.max_tokens" - ) + GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = "gen_ai.request.max_tokens" """The maximum number of tokens to generate in the response. Type: int @@ -1891,9 +2000,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__messages.json - GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = ( - "gen_ai.request.messages" - ) + GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = "gen_ai.request.messages" """The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. Type: str @@ -1915,9 +2022,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__presence_penalty.json - GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = ( - "gen_ai.request.presence_penalty" - ) + GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = "gen_ai.request.presence_penalty" """Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies. Type: float @@ -1939,9 +2044,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__temperature.json - GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = ( - "gen_ai.request.temperature" - ) + GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = "gen_ai.request.temperature" """For an AI model call, the temperature parameter. Temperature essentially means how random the output will be. Type: float @@ -1974,9 +2077,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__finish_reasons.json - GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = ( - "gen_ai.response.finish_reasons" - ) + GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = "gen_ai.response.finish_reasons" """The reason why the model stopped generating. Type: str @@ -2009,9 +2110,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__streaming.json - GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = ( - "gen_ai.response.streaming" - ) + GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = "gen_ai.response.streaming" """Whether or not the AI model call's response was streamed back asynchronously Type: bool @@ -2033,9 +2132,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__time_to_first_token.json - GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN: Literal[ - "gen_ai.response.time_to_first_token" - ] = "gen_ai.response.time_to_first_token" + GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN: Literal["gen_ai.response.time_to_first_token"] = "gen_ai.response.time_to_first_token" """Time in seconds when the first response content chunk arrived in streaming responses. Type: float @@ -2045,9 +2142,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tokens_per_second.json - GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = ( - "gen_ai.response.tokens_per_second" - ) + GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = "gen_ai.response.tokens_per_second" """The total output tokens per seconds throughput Type: float @@ -2057,9 +2152,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tool_calls.json - GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = ( - "gen_ai.response.tool_calls" - ) + GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = "gen_ai.response.tool_calls" """The tool calls in the model's response. It has to be a stringified version of an array of objects. Type: str @@ -2093,9 +2186,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__system_instructions.json - GEN_AI_SYSTEM_INSTRUCTIONS: Literal["gen_ai.system_instructions"] = ( - "gen_ai.system_instructions" - ) + GEN_AI_SYSTEM_INSTRUCTIONS: Literal["gen_ai.system_instructions"] = "gen_ai.system_instructions" """The system instructions passed to the model. Type: str @@ -2106,9 +2197,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__call__arguments.json - GEN_AI_TOOL_CALL_ARGUMENTS: Literal["gen_ai.tool.call.arguments"] = ( - "gen_ai.tool.call.arguments" - ) + GEN_AI_TOOL_CALL_ARGUMENTS: Literal["gen_ai.tool.call.arguments"] = "gen_ai.tool.call.arguments" """The arguments of the tool call. It has to be a stringified version of the arguments to the tool. Type: str @@ -2119,9 +2208,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__call__result.json - GEN_AI_TOOL_CALL_RESULT: Literal["gen_ai.tool.call.result"] = ( - "gen_ai.tool.call.result" - ) + GEN_AI_TOOL_CALL_RESULT: Literal["gen_ai.tool.call.result"] = "gen_ai.tool.call.result" """The result of the tool call. It has to be a stringified version of the result of the tool. Type: str @@ -2132,9 +2219,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__definitions.json - GEN_AI_TOOL_DEFINITIONS: Literal["gen_ai.tool.definitions"] = ( - "gen_ai.tool.definitions" - ) + GEN_AI_TOOL_DEFINITIONS: Literal["gen_ai.tool.definitions"] = "gen_ai.tool.definitions" """The list of source system tool definitions available to the GenAI agent or model. Type: str @@ -2144,9 +2229,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__description.json - GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = ( - "gen_ai.tool.description" - ) + GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = "gen_ai.tool.description" """The description of the tool being used. Type: str @@ -2213,9 +2296,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__completion_tokens.json - GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = ( - "gen_ai.usage.completion_tokens" - ) + GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = "gen_ai.usage.completion_tokens" """The number of tokens used in the GenAI response (completion). Type: int @@ -2227,9 +2308,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens.json - GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = ( - "gen_ai.usage.input_tokens" - ) + GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = "gen_ai.usage.input_tokens" """The number of tokens used to process the AI input (prompt) including cached input tokens. Type: int @@ -2240,9 +2319,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cache_write.json - GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE: Literal[ - "gen_ai.usage.input_tokens.cache_write" - ] = "gen_ai.usage.input_tokens.cache_write" + GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE: Literal["gen_ai.usage.input_tokens.cache_write"] = "gen_ai.usage.input_tokens.cache_write" """The number of tokens written to the cache when processing the AI input (prompt). Type: int @@ -2252,9 +2329,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cached.json - GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = ( - "gen_ai.usage.input_tokens.cached" - ) + GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = "gen_ai.usage.input_tokens.cached" """The number of cached tokens used to process the AI input (prompt). Type: int @@ -2264,9 +2339,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens.json - GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = ( - "gen_ai.usage.output_tokens" - ) + GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = "gen_ai.usage.output_tokens" """The number of tokens used for creating the AI output (including reasoning tokens). Type: int @@ -2277,9 +2350,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens__reasoning.json - GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal[ - "gen_ai.usage.output_tokens.reasoning" - ] = "gen_ai.usage.output_tokens.reasoning" + GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal["gen_ai.usage.output_tokens.reasoning"] = "gen_ai.usage.output_tokens.reasoning" """The number of tokens used for reasoning to create the AI output. Type: int @@ -2289,9 +2360,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__prompt_tokens.json - GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = ( - "gen_ai.usage.prompt_tokens" - ) + GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = "gen_ai.usage.prompt_tokens" """The number of tokens used in the GenAI input (prompt). Type: int @@ -2303,9 +2372,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__total_tokens.json - GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = ( - "gen_ai.usage.total_tokens" - ) + GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = "gen_ai.usage.total_tokens" """The total number of tokens used to process the prompt. (input tokens plus output todkens) Type: int @@ -2360,9 +2427,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__decoded_response_content_length.json - HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal[ - "http.decoded_response_content_length" - ] = "http.decoded_response_content_length" + HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal["http.decoded_response_content_length"] = "http.decoded_response_content_length" """The decoded body size of the response (in bytes). Type: int @@ -2428,9 +2493,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connect_start.json - HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = ( - "http.request.connect_start" - ) + HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = "http.request.connect_start" """The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource. Type: float @@ -2440,9 +2503,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connection_end.json - HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = ( - "http.request.connection_end" - ) + HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = "http.request.connection_end" """The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication. Type: float @@ -2452,9 +2513,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_end.json - HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = ( - "http.request.domain_lookup_end" - ) + HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = "http.request.domain_lookup_end" """The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource. Type: float @@ -2464,9 +2523,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_start.json - HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = ( - "http.request.domain_lookup_start" - ) + HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = "http.request.domain_lookup_start" """The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource. Type: float @@ -2476,9 +2533,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__fetch_start.json - HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = ( - "http.request.fetch_start" - ) + HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = "http.request.fetch_start" """The UNIX timestamp representing the time immediately before the browser starts to fetch the resource. Type: float @@ -2488,9 +2543,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__header__[key].json - HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = ( - "http.request.header." - ) + HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = "http.request.header." """HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -2512,9 +2565,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_end.json - HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = ( - "http.request.redirect_end" - ) + HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = "http.request.redirect_end" """The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect Type: float @@ -2524,9 +2575,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_start.json - HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = ( - "http.request.redirect_start" - ) + HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = "http.request.redirect_start" """The UNIX timestamp representing the start time of the fetch which that initiates the redirect. Type: float @@ -2536,9 +2585,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__request_start.json - HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = ( - "http.request.request_start" - ) + HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = "http.request.request_start" """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -2548,9 +2595,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__resend_count.json - HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = ( - "http.request.resend_count" - ) + HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = "http.request.resend_count" """The ordinal number of request resending attempt (for any reason, including redirects). Type: int @@ -2560,9 +2605,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_end.json - HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = ( - "http.request.response_end" - ) + HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = "http.request.response_end" """The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first. Type: float @@ -2572,9 +2615,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_start.json - HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = ( - "http.request.response_start" - ) + HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = "http.request.response_start" """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -2584,9 +2625,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__secure_connection_start.json - HTTP_REQUEST_SECURE_CONNECTION_START: Literal[ - "http.request.secure_connection_start" - ] = "http.request.secure_connection_start" + HTTP_REQUEST_SECURE_CONNECTION_START: Literal["http.request.secure_connection_start"] = "http.request.secure_connection_start" """The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero. Type: float @@ -2596,9 +2635,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__time_to_first_byte.json - HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = ( - "http.request.time_to_first_byte" - ) + HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = "http.request.time_to_first_byte" """The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests Type: float @@ -2608,9 +2645,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__worker_start.json - HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = ( - "http.request.worker_start" - ) + HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = "http.request.worker_start" """The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running. Type: float @@ -2620,9 +2655,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__body__size.json - HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = ( - "http.response.body.size" - ) + HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = "http.response.body.size" """The encoded body size of the response (in bytes). Type: int @@ -2633,9 +2666,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__[key].json - HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = ( - "http.response.header." - ) + HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = "http.response.header." """HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -2646,9 +2677,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__content-length.json - HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal[ - "http.response.header.content-length" - ] = "http.response.header.content-length" + HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal["http.response.header.content-length"] = "http.response.header.content-length" """The size of the message body sent to the recipient (in bytes) Type: str @@ -2670,9 +2699,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__status_code.json - HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = ( - "http.response.status_code" - ) + HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = "http.response.status_code" """The status code of the HTTP response. Type: int @@ -2683,9 +2710,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_content_length.json - HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = ( - "http.response_content_length" - ) + HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = "http.response_content_length" """The encoded body size of the response (in bytes). Type: int @@ -2697,9 +2722,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_transfer_size.json - HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = ( - "http.response_transfer_size" - ) + HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = "http.response_transfer_size" """The transfer size of the response (in bytes). Type: int @@ -2734,9 +2757,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__server__request__time_in_queue.json - HTTP_SERVER_REQUEST_TIME_IN_QUEUE: Literal["http.server.request.time_in_queue"] = ( - "http.server.request.time_in_queue" - ) + HTTP_SERVER_REQUEST_TIME_IN_QUEUE: Literal["http.server.request.time_in_queue"] = "http.server.request.time_in_queue" """The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request. Type: float @@ -2991,9 +3012,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__cancelled__request_id.json - MCP_CANCELLED_REQUEST_ID: Literal["mcp.cancelled.request_id"] = ( - "mcp.cancelled.request_id" - ) + MCP_CANCELLED_REQUEST_ID: Literal["mcp.cancelled.request_id"] = "mcp.cancelled.request_id" """Request ID of the cancelled MCP operation. Type: str @@ -3113,9 +3132,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__progress__percentage.json - MCP_PROGRESS_PERCENTAGE: Literal["mcp.progress.percentage"] = ( - "mcp.progress.percentage" - ) + MCP_PROGRESS_PERCENTAGE: Literal["mcp.progress.percentage"] = "mcp.progress.percentage" """Calculated progress percentage of an MCP operation. Computed from current/total * 100. Type: float @@ -3155,9 +3172,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__description.json - MCP_PROMPT_RESULT_DESCRIPTION: Literal["mcp.prompt.result.description"] = ( - "mcp.prompt.result.description" - ) + MCP_PROMPT_RESULT_DESCRIPTION: Literal["mcp.prompt.result.description"] = "mcp.prompt.result.description" """Description of the prompt result. Type: str @@ -3167,9 +3182,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_content.json - MCP_PROMPT_RESULT_MESSAGE_CONTENT: Literal["mcp.prompt.result.message_content"] = ( - "mcp.prompt.result.message_content" - ) + MCP_PROMPT_RESULT_MESSAGE_CONTENT: Literal["mcp.prompt.result.message_content"] = "mcp.prompt.result.message_content" """Content of the message in the prompt result. Used for single message results only. Type: str @@ -3179,9 +3192,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_count.json - MCP_PROMPT_RESULT_MESSAGE_COUNT: Literal["mcp.prompt.result.message_count"] = ( - "mcp.prompt.result.message_count" - ) + MCP_PROMPT_RESULT_MESSAGE_COUNT: Literal["mcp.prompt.result.message_count"] = "mcp.prompt.result.message_count" """Number of messages in the prompt result. Type: int @@ -3191,9 +3202,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_role.json - MCP_PROMPT_RESULT_MESSAGE_ROLE: Literal["mcp.prompt.result.message_role"] = ( - "mcp.prompt.result.message_role" - ) + MCP_PROMPT_RESULT_MESSAGE_ROLE: Literal["mcp.prompt.result.message_role"] = "mcp.prompt.result.message_role" """Role of the message in the prompt result. Used for single message results only. Type: str @@ -3223,9 +3232,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__[key].json - MCP_REQUEST_ARGUMENT_KEY: Literal["mcp.request.argument."] = ( - "mcp.request.argument." - ) + MCP_REQUEST_ARGUMENT_KEY: Literal["mcp.request.argument."] = "mcp.request.argument." """MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value. Type: str @@ -3236,9 +3243,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__name.json - MCP_REQUEST_ARGUMENT_NAME: Literal["mcp.request.argument.name"] = ( - "mcp.request.argument.name" - ) + MCP_REQUEST_ARGUMENT_NAME: Literal["mcp.request.argument.name"] = "mcp.request.argument.name" """Name argument from prompts/get MCP request. Type: str @@ -3248,9 +3253,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__uri.json - MCP_REQUEST_ARGUMENT_URI: Literal["mcp.request.argument.uri"] = ( - "mcp.request.argument.uri" - ) + MCP_REQUEST_ARGUMENT_URI: Literal["mcp.request.argument.uri"] = "mcp.request.argument.uri" """URI argument from resources/read MCP request. Type: str @@ -3340,9 +3343,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__content.json - MCP_TOOL_RESULT_CONTENT: Literal["mcp.tool.result.content"] = ( - "mcp.tool.result.content" - ) + MCP_TOOL_RESULT_CONTENT: Literal["mcp.tool.result.content"] = "mcp.tool.result.content" """The content of the tool result. Type: str @@ -3352,9 +3353,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__content_count.json - MCP_TOOL_RESULT_CONTENT_COUNT: Literal["mcp.tool.result.content_count"] = ( - "mcp.tool.result.content_count" - ) + MCP_TOOL_RESULT_CONTENT_COUNT: Literal["mcp.tool.result.content_count"] = "mcp.tool.result.content_count" """Number of content items in the tool result. Type: int @@ -3364,9 +3363,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__is_error.json - MCP_TOOL_RESULT_IS_ERROR: Literal["mcp.tool.result.is_error"] = ( - "mcp.tool.result.is_error" - ) + MCP_TOOL_RESULT_IS_ERROR: Literal["mcp.tool.result.is_error"] = "mcp.tool.result.is_error" """Whether a tool execution resulted in an error. Type: bool @@ -3397,9 +3394,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__connection.json - MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = ( - "messaging.destination.connection" - ) + MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = "messaging.destination.connection" """The message destination connection. Type: str @@ -3409,9 +3404,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__name.json - MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = ( - "messaging.destination.name" - ) + MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = "messaging.destination.name" """The message destination name. Type: str @@ -3421,9 +3414,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__body__size.json - MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = ( - "messaging.message.body.size" - ) + MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = "messaging.message.body.size" """The size of the message body in bytes. Type: int @@ -3433,9 +3424,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__envelope__size.json - MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = ( - "messaging.message.envelope.size" - ) + MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = "messaging.message.envelope.size" """The size of the message body and metadata in bytes. Type: int @@ -3455,9 +3444,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__receive__latency.json - MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = ( - "messaging.message.receive.latency" - ) + MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = "messaging.message.receive.latency" """The latency between when the message was published and received. Type: int @@ -3467,9 +3454,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__retry__count.json - MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = ( - "messaging.message.retry.count" - ) + MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = "messaging.message.retry.count" """The amount of attempts to send the message. Type: int @@ -3479,9 +3464,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__operation__type.json - MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = ( - "messaging.operation.type" - ) + MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = "messaging.operation.type" """A string identifying the type of the messaging operation Type: str @@ -3802,9 +3785,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/network/network__protocol__version.json - NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = ( - "network.protocol.version" - ) + NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = "network.protocol.version" """The actual version of the protocol used for network communication. Type: str @@ -3916,9 +3897,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/otel/otel__status_description.json - OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = ( - "otel.status_description" - ) + OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = "otel.status_description" """Description of the Status if it has a value, otherwise not set. Type: str @@ -3950,9 +3929,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__executable__name.json - PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = ( - "process.executable.name" - ) + PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = "process.executable.name" """The name of the executable that started the process. Type: str @@ -3972,9 +3949,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__description.json - PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = ( - "process.runtime.description" - ) + PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = "process.runtime.description" """An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context. Type: str @@ -3994,9 +3969,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__version.json - PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = ( - "process.runtime.version" - ) + PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = "process.runtime.version" """The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context. Type: str @@ -4030,9 +4003,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/remix/remix__action_form_data__[key].json - REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = ( - "remix.action_form_data." - ) + REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = "remix.action_form_data." """Remix form data, being the form data key, the value being the form data value. Type: str @@ -4055,9 +4026,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__deployment__environment.json - RESOURCE_DEPLOYMENT_ENVIRONMENT: Literal["resource.deployment.environment"] = ( - "resource.deployment.environment" - ) + RESOURCE_DEPLOYMENT_ENVIRONMENT: Literal["resource.deployment.environment"] = "resource.deployment.environment" """The software deployment environment name. Type: str @@ -4068,9 +4037,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__deployment__environment__name.json - RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal[ - "resource.deployment.environment.name" - ] = "resource.deployment.environment.name" + RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal["resource.deployment.environment.name"] = "resource.deployment.environment.name" """The software deployment environment name. Type: str @@ -4081,9 +4048,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__render_blocking_status.json - RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = ( - "resource.render_blocking_status" - ) + RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = "resource.render_blocking_status" """The render blocking status of the resource. Type: str @@ -4159,9 +4124,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__cancellation_reason.json - SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = ( - "sentry.cancellation_reason" - ) + SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = "sentry.cancellation_reason" """The reason why a span ended early. Type: str @@ -4181,9 +4144,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__client_sample_rate.json - SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = ( - "sentry.client_sample_rate" - ) + SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = "sentry.client_sample_rate" """Rate at which a span was sampled in the SDK. Type: float @@ -4314,9 +4275,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__graphql__operation.json - SENTRY_GRAPHQL_OPERATION: Literal["sentry.graphql.operation"] = ( - "sentry.graphql.operation" - ) + SENTRY_GRAPHQL_OPERATION: Literal["sentry.graphql.operation"] = "sentry.graphql.operation" """Indicates the type of graphql operation, emitted by the Javascript SDK. Type: str @@ -4345,9 +4304,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__idle_span_finish_reason.json - SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = ( - "sentry.idle_span_finish_reason" - ) + SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = "sentry.idle_span_finish_reason" """The reason why an idle span ended early. Type: str @@ -4377,9 +4334,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__parameter__[key].json - SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = ( - "sentry.message.parameter." - ) + SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = "sentry.message.parameter." """A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc) Type: str @@ -4389,9 +4344,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__template.json - SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = ( - "sentry.message.template" - ) + SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = "sentry.message.template" """The parameterized template string. Type: str @@ -4412,9 +4365,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__route.json - SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = ( - "sentry.nextjs.ssr.function.route" - ) + SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = "sentry.nextjs.ssr.function.route" """A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known. Type: str @@ -4424,9 +4375,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__type.json - SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = ( - "sentry.nextjs.ssr.function.type" - ) + SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = "sentry.nextjs.ssr.function.type" """A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions. Type: str @@ -4436,9 +4385,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_db_query.json - SENTRY_NORMALIZED_DB_QUERY: Literal["sentry.normalized_db_query"] = ( - "sentry.normalized_db_query" - ) + SENTRY_NORMALIZED_DB_QUERY: Literal["sentry.normalized_db_query"] = "sentry.normalized_db_query" """The normalized version of `db.query.text`. Type: str @@ -4448,9 +4395,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_db_query__hash.json - SENTRY_NORMALIZED_DB_QUERY_HASH: Literal["sentry.normalized_db_query.hash"] = ( - "sentry.normalized_db_query.hash" - ) + SENTRY_NORMALIZED_DB_QUERY_HASH: Literal["sentry.normalized_db_query.hash"] = "sentry.normalized_db_query.hash" """The hash of `sentry.normalized_db_query`. Type: str @@ -4459,9 +4404,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_description.json - SENTRY_NORMALIZED_DESCRIPTION: Literal["sentry.normalized_description"] = ( - "sentry.normalized_description" - ) + SENTRY_NORMALIZED_DESCRIPTION: Literal["sentry.normalized_description"] = "sentry.normalized_description" """Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc). Type: str @@ -4471,9 +4414,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__observed_timestamp_nanos.json - SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = ( - "sentry.observed_timestamp_nanos" - ) + SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = "sentry.observed_timestamp_nanos" """The timestamp at which an envelope was received by Relay, in nanoseconds. Type: str @@ -4545,9 +4486,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__replay_is_buffering.json - SENTRY_REPLAY_IS_BUFFERING: Literal["sentry.replay_is_buffering"] = ( - "sentry.replay_is_buffering" - ) + SENTRY_REPLAY_IS_BUFFERING: Literal["sentry.replay_is_buffering"] = "sentry.replay_is_buffering" """A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate). Type: bool @@ -4557,9 +4496,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__sdk__integrations.json - SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = ( - "sentry.sdk.integrations" - ) + SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = "sentry.sdk.integrations" """A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations. Type: List[str] @@ -4622,9 +4559,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__server_sample_rate.json - SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = ( - "sentry.server_sample_rate" - ) + SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = "sentry.server_sample_rate" """Rate at which a span was sampled in Relay. Type: float @@ -4675,9 +4610,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__timestamp__sequence.json - SENTRY_TIMESTAMP_SEQUENCE: Literal["sentry.timestamp.sequence"] = ( - "sentry.timestamp.sequence" - ) + SENTRY_TIMESTAMP_SEQUENCE: Literal["sentry.timestamp.sequence"] = "sentry.timestamp.sequence" """A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one. Type: int @@ -4687,9 +4620,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__trace__parent_span_id.json - SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = ( - "sentry.trace.parent_span_id" - ) + SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = "sentry.trace.parent_span_id" """The span id of the span that was active when the log was collected. This should not be set if there was no active span. Type: str @@ -4991,9 +4922,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/url/url__path__parameter__[key].json - URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = ( - "url.path.parameter." - ) + URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = "url.path.parameter." """Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. Type: str @@ -5240,9 +5169,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__execution_region.json - VERCEL_EXECUTION_REGION: Literal["vercel.execution_region"] = ( - "vercel.execution_region" - ) + VERCEL_EXECUTION_REGION: Literal["vercel.execution_region"] = "vercel.execution_region" """Region where the request is executed Type: str @@ -5342,9 +5269,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__lambda_region.json - VERCEL_PROXY_LAMBDA_REGION: Literal["vercel.proxy.lambda_region"] = ( - "vercel.proxy.lambda_region" - ) + VERCEL_PROXY_LAMBDA_REGION: Literal["vercel.proxy.lambda_region"] = "vercel.proxy.lambda_region" """Region where lambda function executed Type: str @@ -5384,9 +5309,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__path_type_variant.json - VERCEL_PROXY_PATH_TYPE_VARIANT: Literal["vercel.proxy.path_type_variant"] = ( - "vercel.proxy.path_type_variant" - ) + VERCEL_PROXY_PATH_TYPE_VARIANT: Literal["vercel.proxy.path_type_variant"] = "vercel.proxy.path_type_variant" """Variant of the path type Type: str @@ -5416,9 +5339,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__response_byte_size.json - VERCEL_PROXY_RESPONSE_BYTE_SIZE: Literal["vercel.proxy.response_byte_size"] = ( - "vercel.proxy.response_byte_size" - ) + VERCEL_PROXY_RESPONSE_BYTE_SIZE: Literal["vercel.proxy.response_byte_size"] = "vercel.proxy.response_byte_size" """Size of the response in bytes Type: int @@ -5438,9 +5359,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__status_code.json - VERCEL_PROXY_STATUS_CODE: Literal["vercel.proxy.status_code"] = ( - "vercel.proxy.status_code" - ) + VERCEL_PROXY_STATUS_CODE: Literal["vercel.proxy.status_code"] = "vercel.proxy.status_code" """HTTP status code of the proxy request Type: int @@ -5460,9 +5379,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__user_agent.json - VERCEL_PROXY_USER_AGENT: Literal["vercel.proxy.user_agent"] = ( - "vercel.proxy.user_agent" - ) + VERCEL_PROXY_USER_AGENT: Literal["vercel.proxy.user_agent"] = "vercel.proxy.user_agent" """User agent strings of the request Type: List[str] @@ -5472,9 +5389,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__vercel_cache.json - VERCEL_PROXY_VERCEL_CACHE: Literal["vercel.proxy.vercel_cache"] = ( - "vercel.proxy.vercel_cache" - ) + VERCEL_PROXY_VERCEL_CACHE: Literal["vercel.proxy.vercel_cache"] = "vercel.proxy.vercel_cache" """Cache status sent to the browser Type: str @@ -5494,9 +5409,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__waf_action.json - VERCEL_PROXY_WAF_ACTION: Literal["vercel.proxy.waf_action"] = ( - "vercel.proxy.waf_action" - ) + VERCEL_PROXY_WAF_ACTION: Literal["vercel.proxy.waf_action"] = "vercel.proxy.waf_action" """Action taken by firewall rules Type: str @@ -5506,9 +5419,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__waf_rule_id.json - VERCEL_PROXY_WAF_RULE_ID: Literal["vercel.proxy.waf_rule_id"] = ( - "vercel.proxy.waf_rule_id" - ) + VERCEL_PROXY_WAF_RULE_ID: Literal["vercel.proxy.waf_rule_id"] = "vercel.proxy.waf_rule_id" """ID of the firewall rule that matched Type: str @@ -5552,7 +5463,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.citations": AttributeMetadata( brief="References or sources cited by the AI model in its response.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Citation 1", "Citation 2"], deprecation=DeprecationInfo(), @@ -5564,11 +5477,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.completion_tokens.used": AttributeMetadata( brief="The number of tokens used to respond to the message.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=10, - deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), - aliases=["gen_ai.usage.output_tokens", "gen_ai.usage.completion_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.output_tokens" + ), + aliases=["gen_ai.usage.output_tokens","gen_ai.usage.completion_tokens"], sdks=["python"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5579,7 +5496,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.documents": AttributeMetadata( brief="Documents or content chunks used as context for the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["document1.txt", "document2.pdf"], deprecation=DeprecationInfo(), @@ -5591,10 +5510,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.finish_reason": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="COMPLETE", - deprecation=DeprecationInfo(replacement="gen_ai.response.finish_reason"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.finish_reason" + ), aliases=["gen_ai.response.finish_reasons"], changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108, 127]), @@ -5603,10 +5526,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo(replacement="gen_ai.request.frequency_penalty"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.frequency_penalty" + ), aliases=["gen_ai.request.frequency_penalty"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5616,10 +5543,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.function_call": AttributeMetadata( brief="For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="function_name", - deprecation=DeprecationInfo(replacement="gen_ai.tool.name"), + deprecation=DeprecationInfo( + replacement="gen_ai.tool.name" + ), aliases=["gen_ai.tool.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108]), @@ -5628,10 +5559,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.generation_id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="gen_123abc", - deprecation=DeprecationInfo(replacement="gen_ai.response.id"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.id" + ), aliases=["gen_ai.response.id"], changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108, 127]), @@ -5640,10 +5575,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.input_messages": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"role": "user", "message": "hello"}]', - deprecation=DeprecationInfo(replacement="gen_ai.request.messages"), + example="[{\"role\": \"user\", \"message\": \"hello\"}]", + deprecation=DeprecationInfo( + replacement="gen_ai.request.messages" + ), aliases=["gen_ai.request.messages"], sdks=["python"], changelog=[ @@ -5654,7 +5593,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.is_search_required": AttributeMetadata( brief="Boolean indicating if the model needs to perform a search.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=False, deprecation=DeprecationInfo(), @@ -5666,9 +5607,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.metadata": AttributeMetadata( brief="Extra metadata passed to an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"user_id": 123, "session_id": "abc123"}', + example="{\"user_id\": 123, \"session_id\": \"abc123\"}", deprecation=DeprecationInfo(), changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5678,11 +5621,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.model.provider": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="openai", - deprecation=DeprecationInfo(replacement="gen_ai.provider.name"), - aliases=["gen_ai.provider.name", "gen_ai.system"], + deprecation=DeprecationInfo( + replacement="gen_ai.provider.name" + ), + aliases=["gen_ai.provider.name","gen_ai.system"], changelog=[ ChangelogEntry(version="0.4.0", prs=[253]), ChangelogEntry(version="0.1.0", prs=[57, 61, 108, 127]), @@ -5691,10 +5638,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.model_id": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="gpt-4", - deprecation=DeprecationInfo(replacement="gen_ai.response.model"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.model" + ), aliases=["gen_ai.response.model"], sdks=["python"], changelog=[ @@ -5705,10 +5656,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.pipeline.name": AttributeMetadata( brief="The name of the AI pipeline.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Autofix Pipeline", - deprecation=DeprecationInfo(replacement="gen_ai.pipeline.name"), + deprecation=DeprecationInfo( + replacement="gen_ai.pipeline.name" + ), aliases=["gen_ai.pipeline.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[53, 76, 108, 127]), @@ -5717,10 +5672,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.preamble": AttributeMetadata( brief="For an AI model call, the preamble parameter. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="You are now a clown.", - deprecation=DeprecationInfo(replacement="gen_ai.system_instructions"), + deprecation=DeprecationInfo( + replacement="gen_ai.system_instructions" + ), aliases=["gen_ai.system_instructions"], changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5730,10 +5689,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo(replacement="gen_ai.request.presence_penalty"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.presence_penalty" + ), aliases=["gen_ai.request.presence_penalty"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5743,11 +5706,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.prompt_tokens.used": AttributeMetadata( brief="The number of tokens used to process just the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=20, - deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), - aliases=["gen_ai.usage.prompt_tokens", "gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.input_tokens" + ), + aliases=["gen_ai.usage.prompt_tokens","gen_ai.usage.input_tokens"], sdks=["python"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5758,7 +5725,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.raw_prompting": AttributeMetadata( brief="When enabled, the user’s prompt will be sent to the model without any pre-processing.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, deprecation=DeprecationInfo(), @@ -5770,7 +5739,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.response_format": AttributeMetadata( brief="For an AI model call, the format of the response", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="json_object", deprecation=DeprecationInfo(), @@ -5782,10 +5753,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.responses": AttributeMetadata( brief="The response messages sent back by the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["hello", "world"], - deprecation=DeprecationInfo(replacement="gen_ai.response.text"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.text" + ), sdks=["python"], changelog=[ ChangelogEntry(version="0.1.0", prs=[65, 127]), @@ -5795,7 +5770,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.search_queries": AttributeMetadata( brief="Queries used to search for relevant context or documents.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["climate change effects", "renewable energy"], deprecation=DeprecationInfo(), @@ -5807,7 +5784,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.search_results": AttributeMetadata( brief="Results returned from search queries for context.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["search_result_1, search_result_2"], deprecation=DeprecationInfo(), @@ -5819,10 +5798,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="1234567890", - deprecation=DeprecationInfo(replacement="gen_ai.request.seed"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.seed" + ), aliases=["gen_ai.request.seed"], changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108, 127]), @@ -5831,10 +5814,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.streaming": AttributeMetadata( brief="Whether the request was streamed back.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, - deprecation=DeprecationInfo(replacement="gen_ai.response.streaming"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.streaming" + ), aliases=["gen_ai.response.streaming"], sdks=["python"], changelog=[ @@ -5845,9 +5832,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.tags": AttributeMetadata( brief="Tags that describe an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"executed_function": "add_integers"}', + example="{\"executed_function\": \"add_integers\"}", deprecation=DeprecationInfo(), changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5857,10 +5846,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=0.1, - deprecation=DeprecationInfo(replacement="gen_ai.request.temperature"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.temperature" + ), aliases=["gen_ai.request.temperature"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5870,10 +5863,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.texts": AttributeMetadata( brief="Raw text inputs provided to the model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Hello, how are you?", "What is the capital of France?"], - deprecation=DeprecationInfo(replacement="gen_ai.input.messages"), + deprecation=DeprecationInfo( + replacement="gen_ai.input.messages" + ), aliases=["gen_ai.input.messages"], changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5883,10 +5880,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.tool_calls": AttributeMetadata( brief="For an AI model call, the tool calls that were made.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["tool_call_1", "tool_call_2"], - deprecation=DeprecationInfo(replacement="gen_ai.response.tool_calls"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.tool_calls" + ), changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 65]), ], @@ -5894,10 +5895,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.tools": AttributeMetadata( brief="For an AI model call, the functions that are available", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["function_1", "function_2"], - deprecation=DeprecationInfo(replacement="gen_ai.request.available_tools"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.available_tools" + ), changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 65, 127]), ], @@ -5905,10 +5910,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=35, - deprecation=DeprecationInfo(replacement="gen_ai.request.top_k"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.top_k" + ), aliases=["gen_ai.request.top_k"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5918,10 +5927,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=0.7, - deprecation=DeprecationInfo(replacement="gen_ai.request.top_p"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.top_p" + ), aliases=["gen_ai.request.top_p"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5931,10 +5944,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.total_cost": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=12.34, - deprecation=DeprecationInfo(replacement="gen_ai.cost.total_tokens"), + deprecation=DeprecationInfo( + replacement="gen_ai.cost.total_tokens" + ), aliases=["gen_ai.cost.total_tokens"], changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5945,10 +5962,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.total_tokens.used": AttributeMetadata( brief="The total number of tokens used to process the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=30, - deprecation=DeprecationInfo(replacement="gen_ai.usage.total_tokens"), + deprecation=DeprecationInfo( + replacement="gen_ai.usage.total_tokens" + ), aliases=["gen_ai.usage.total_tokens"], sdks=["python"], changelog=[ @@ -5960,7 +5981,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.warnings": AttributeMetadata( brief="Warning messages generated during model execution.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Token limit exceeded"], deprecation=DeprecationInfo(), @@ -5972,117 +5995,87 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "app.build": AttributeMetadata( brief="Internal build identifier, as it appears on the platform.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="1", - sdks=[ - "sentry.cocoa", - "sentry.java.android", - "sentry.javascript.react-native", - "sentry.dart.flutter", - ], + sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], changelog=[ - ChangelogEntry( - version="next", prs=[296], description="Added app.build attribute" - ), + 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), + 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", - ], + sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], changelog=[ - ChangelogEntry( - version="next", prs=[296], description="Added app.identifier attribute" - ), + 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), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, - sdks=[ - "sentry.cocoa", - "sentry.java.android", - "sentry.javascript.react-native", - "sentry.dart.flutter", - ], + 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", - ), + 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), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="My App", - sdks=[ - "sentry.cocoa", - "sentry.java.android", - "sentry.javascript.react-native", - "sentry.dart.flutter", - ], + sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], changelog=[ - ChangelogEntry( - version="next", prs=[296], description="Added app.name attribute" - ), + 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), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="2025-01-01T00:00:00.000Z", - sdks=[ - "sentry.cocoa", - "sentry.java.android", - "sentry.javascript.react-native", - "sentry.dart.flutter", - ], + 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" - ), + 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), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="1.0.0", - sdks=[ - "sentry.cocoa", - "sentry.java.android", - "sentry.javascript.react-native", - "sentry.dart.flutter", - ], + sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], changelog=[ - ChangelogEntry( - version="next", prs=[296], description="Added app.version attribute" - ), + 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), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="cold", changelog=[ @@ -6093,7 +6086,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "blocked_main_thread": AttributeMetadata( brief="Whether the main thread was blocked by the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, changelog=[ @@ -6103,7 +6098,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Chrome", aliases=["sentry.browser.name"], @@ -6115,7 +6112,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.report.type": AttributeMetadata( brief="A browser report sent via reporting API..", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="network-error", changelog=[ @@ -6125,7 +6124,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.invoker": AttributeMetadata( brief="How a script was called in the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Window.requestAnimationFrame", sdks=["browser"], @@ -6137,7 +6138,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.invoker_type": AttributeMetadata( brief="Browser script entry point type.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="event-listener", sdks=["browser"], @@ -6149,7 +6152,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.source_char_position": AttributeMetadata( brief="A number representing the script character position of the script.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=678, sdks=["browser"], @@ -6161,7 +6166,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="120.0.6099.130", aliases=["sentry.browser.version"], @@ -6172,7 +6179,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.cls.source.": AttributeMetadata( brief="The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="body > div#app", @@ -6185,23 +6194,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.cls.value": AttributeMetadata( brief="The value of the recorded Cumulative Layout Shift (CLS) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=0.2361, aliases=["cls"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[229], - description="Added browser.web_vital.cls.value attribute", - ), + ChangelogEntry(version="next", prs=[229], description="Added browser.web_vital.cls.value attribute"), ], ), "browser.web_vital.fcp.value": AttributeMetadata( brief="The time it takes for the browser to render the first piece of meaningful content on the screen", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=547.6951, aliases=["fcp"], @@ -6213,7 +6222,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.fp.value": AttributeMetadata( brief="The time in milliseconds it takes for the browser to render the first pixel on the screen", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=477.1926, aliases=["fp"], @@ -6225,23 +6236,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.inp.value": AttributeMetadata( brief="The value of the recorded Interaction to Next Paint (INP) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=200, aliases=["inp"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[229], - description="Added browser.web_vital.inp.value attribute", - ), + ChangelogEntry(version="next", prs=[229], description="Added browser.web_vital.inp.value attribute"), ], ), "browser.web_vital.lcp.element": AttributeMetadata( brief="The HTML element selector or component name for which LCP was reported", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="body > div#app > div#container > div", aliases=["lcp.element"], @@ -6253,7 +6264,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="#gero", aliases=["lcp.id"], @@ -6265,7 +6278,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.load_time": AttributeMetadata( brief="The time it took for the LCP element to be loaded", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1402, aliases=["lcp.loadTime"], @@ -6277,7 +6292,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.render_time": AttributeMetadata( brief="The time it took for the LCP element to be rendered", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1685, aliases=["lcp.renderTime"], @@ -6289,7 +6306,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1024, aliases=["lcp.size"], @@ -6301,7 +6320,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com/static/img.png", aliases=["lcp.url"], @@ -6313,23 +6334,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.value": AttributeMetadata( brief="The value of the recorded Largest Contentful Paint (LCP) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=2500, aliases=["lcp"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[229], - description="Added browser.web_vital.lcp.value attribute", - ), + ChangelogEntry(version="next", prs=[229], description="Added browser.web_vital.lcp.value attribute"), ], ), "browser.web_vital.ttfb.request_time": AttributeMetadata( brief="The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1554.5814, aliases=["ttfb.requestTime"], @@ -6341,7 +6362,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.ttfb.value": AttributeMetadata( brief="The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=194.3322, aliases=["ttfb"], @@ -6353,7 +6376,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.hit": AttributeMetadata( brief="If the cache was hit during this span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, sdks=["php-laravel"], @@ -6364,7 +6389,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.item_size": AttributeMetadata( brief="The size of the requested item in the cache. In bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=58, changelog=[ @@ -6375,7 +6402,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.key": AttributeMetadata( brief="The key of the cache accessed.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["my-cache-key", "my-other-cache-key"], sdks=["php-laravel"], @@ -6386,7 +6415,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.operation": AttributeMetadata( brief="The operation being performed on the cache.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="get", sdks=["php-laravel"], @@ -6398,7 +6429,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.ttl": AttributeMetadata( brief="The ttl of the cache in seconds", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=120, sdks=["php-laravel"], @@ -6410,7 +6443,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "channel": AttributeMetadata( brief="The channel name that is being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="mail", sdks=["php-laravel"], @@ -6422,7 +6457,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.address": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="example.com", aliases=["http.client_ip"], @@ -6434,7 +6471,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.port": AttributeMetadata( brief="Client port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=5432, changelog=[ @@ -6445,7 +6484,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.duration": AttributeMetadata( brief="The duration of a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=543, sdks=["javascript-cloudflare"], @@ -6457,7 +6498,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_read": AttributeMetadata( brief="The number of rows read in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -6469,7 +6512,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_written": AttributeMetadata( brief="The number of rows written in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -6481,14 +6526,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cls.source.": AttributeMetadata( brief="The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="body > div#app", deprecation=DeprecationInfo( replacement="browser.web_vital.cls.source.", reason="The CLS source is now recorded as a browser.web_vital.cls.source. attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.cls.source."], sdks=["javascript-browser"], @@ -6499,28 +6546,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cls": AttributeMetadata( brief="The value of the recorded Cumulative Layout Shift (CLS) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=0.2361, deprecation=DeprecationInfo( replacement="browser.web_vital.cls.value", reason="The CLS web vital is now recorded as a browser.web_vital.cls.value attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.cls.value"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[229], - description="Added and deprecated attribute to document JS SDK's current behaviour", - ), + ChangelogEntry(version="next", prs=[229], description="Added and deprecated attribute to document JS SDK's current behaviour"), ], ), "code.file.path": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/app/myapplication/http/handler/server.py", aliases=["code.filepath"], @@ -6531,10 +6578,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.filepath": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/app/myapplication/http/handler/server.py", - deprecation=DeprecationInfo(replacement="code.file.path"), + deprecation=DeprecationInfo( + replacement="code.file.path" + ), aliases=["code.file.path"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61]), @@ -6544,10 +6595,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.function": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="server_request", - deprecation=DeprecationInfo(replacement="code.function.name"), + deprecation=DeprecationInfo( + replacement="code.function.name" + ), aliases=["code.function.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 74]), @@ -6557,7 +6612,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.function.name": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="server_request", aliases=["code.function"], @@ -6569,7 +6626,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.line.number": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=42, aliases=["code.lineno"], @@ -6581,10 +6640,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.lineno": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=42, - deprecation=DeprecationInfo(replacement="code.line.number"), + deprecation=DeprecationInfo( + replacement="code.line.number" + ), aliases=["code.line.number"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -6595,12 +6658,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.namespace": AttributeMetadata( brief="The 'namespace' within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http.handler", deprecation=DeprecationInfo( replacement="code.function.name", - reason="code.function.name should include the namespace.", + reason="code.function.name should include the namespace." ), changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 74]), @@ -6610,7 +6675,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.calendar": AttributeMetadata( brief="The calendar system used by the culture.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GregorianCalendar", changelog=[ @@ -6620,7 +6687,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.display_name": AttributeMetadata( brief="Human readable name of the culture.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="English (United States)", changelog=[ @@ -6630,7 +6699,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.is_24_hour_format": AttributeMetadata( brief="Whether the culture uses 24-hour time format.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=True, changelog=[ @@ -6640,7 +6711,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.locale": AttributeMetadata( brief="The locale identifier following RFC 4646.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="en-US", changelog=[ @@ -6650,7 +6723,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.timezone": AttributeMetadata( brief="The timezone of the culture, as a geographic timezone identifier.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Europe/Vienna", changelog=[ @@ -6660,7 +6735,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.collection.name": AttributeMetadata( brief="The name of a collection (table, container) within the database.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="users", changelog=[ @@ -6671,10 +6748,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.name": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="customers", - deprecation=DeprecationInfo(replacement="db.namespace"), + deprecation=DeprecationInfo( + replacement="db.namespace" + ), aliases=["db.namespace"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -6684,7 +6765,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.namespace": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="customers", aliases=["db.name"], @@ -6696,11 +6779,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.operation": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT", deprecation=DeprecationInfo( - replacement="db.operation.name", status=DeprecationStatus.NORMALIZE + replacement="db.operation.name", + status=DeprecationStatus.NORMALIZE ), aliases=["db.operation.name"], changelog=[ @@ -6712,7 +6798,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT", aliases=["db.operation"], @@ -6724,7 +6812,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.parameter.": AttributeMetadata( brief="A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="db.query.parameter.foo='123'", @@ -6735,7 +6825,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.summary": AttributeMetadata( brief="A shortened representation of operation(s) in the full query. This attribute must be low-cardinality and should only contain the operation table names.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT users;", changelog=[ @@ -6747,7 +6839,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.text": AttributeMetadata( brief="The database parameterized query being executed. Any parameter values (filters, insertion values, etc) should be replaced with parameter placeholders. If applicable, use `db.query.parameter.` to add the parameter value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT * FROM users WHERE id = $1", aliases=["db.statement"], @@ -6760,7 +6854,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.connection": AttributeMetadata( brief="The redis connection name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="my-redis-instance", sdks=["php-laravel"], @@ -6772,7 +6868,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.parameters": AttributeMetadata( brief="The array of command parameters given to a redis command.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["test", "*"], sdks=["php-laravel"], @@ -6783,12 +6881,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.sql.bindings": AttributeMetadata( brief="The array of query bindings.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["1", "foo"], deprecation=DeprecationInfo( replacement="db.query.parameter.", - reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter..", + reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.." ), sdks=["php-laravel"], changelog=[ @@ -6799,11 +6899,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.statement": AttributeMetadata( brief="The database statement being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT * FROM users", deprecation=DeprecationInfo( - replacement="db.query.text", status=DeprecationStatus.NORMALIZE + replacement="db.query.text", + status=DeprecationStatus.NORMALIZE ), aliases=["db.query.text"], changelog=[ @@ -6815,11 +6918,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.system": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="postgresql", deprecation=DeprecationInfo( - replacement="db.system.name", status=DeprecationStatus.BACKFILL + replacement="db.system.name", + status=DeprecationStatus.BACKFILL ), aliases=["db.system.name"], changelog=[ @@ -6831,7 +6937,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.system.name": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="postgresql", aliases=["db.system"], @@ -6843,39 +6951,93 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.user": AttributeMetadata( brief="The database user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="fancy_user", changelog=[ 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", 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", 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", description="Added device.boot_time attribute"), + ], + ), "device.brand": AttributeMetadata( brief="The brand of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Apple", changelog=[ 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", description="Added device.charging 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, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="medium", changelog=[ - ChangelogEntry( - version="next", prs=[300], description="Added device.class attribute" - ), + ChangelogEntry(version="next", prs=[300], description="Added device.class attribute"), ], ), "device.family": AttributeMetadata( brief="The family of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="iPhone", changelog=[ @@ -6885,51 +7047,95 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "device.free_memory": AttributeMetadata( brief="Free system memory in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=2147483648, changelog=[ - ChangelogEntry( - version="next", - prs=[300], - description="Added device.free_memory attribute", - ), + ChangelogEntry(version="next", prs=[300], description="Added device.free_memory attribute"), + ], + ), + "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", 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", 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", 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", 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, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=8, aliases=["deviceMemory"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[281], - description="Added attribute device.memory.estimated_capacity to be used instead of deviceMemory", - ), + ChangelogEntry(version="next", prs=[281], description="Added attribute device.memory.estimated_capacity to be used instead of deviceMemory"), ], ), "device.memory_size": AttributeMetadata( brief="Total system memory available in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=17179869184, changelog=[ - ChangelogEntry( - version="next", - prs=[300], - description="Added device.memory_size attribute", - ), + ChangelogEntry(version="next", prs=[300], description="Added device.memory_size attribute"), ], ), "device.model": AttributeMetadata( brief="The model of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="iPhone 15 Pro Max", changelog=[ @@ -6939,77 +7145,191 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "device.model_id": AttributeMetadata( brief="An internal hardware revision to identify the device exactly.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="N861AP", changelog=[ - ChangelogEntry( - version="next", prs=[300], description="Added device.model_id attribute" - ), + ChangelogEntry(version="next", prs=[300], description="Added device.model_id attribute"), + ], + ), + "device.name": AttributeMetadata( + brief="The name of the device, typically a hostname.", + type=AttributeType.STRING, + pii=PiiInfo( + isPii=IsPii.MAYBE + ), + is_in_otel=False, + example="localhost", + changelog=[ + ChangelogEntry(version="next", 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", 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", description="Added device.orientation attribute"), ], ), "device.processor_count": AttributeMetadata( - brief='Number of "logical processors".', + brief="Number of \"logical processors\".", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=8, aliases=["hardwareConcurrency"], changelog=[ - ChangelogEntry( - version="next", - prs=[300], - description="Removed deprecation, device.processor_count is now the canonical attribute", - ), - ChangelogEntry( - version="next", - prs=[300], - description="Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count", - ), + ChangelogEntry(version="next", prs=[300], description="Removed deprecation, device.processor_count is now the canonical attribute"), + ChangelogEntry(version="next", prs=[300], description="Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count"), + ], + ), + "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", 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", 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", 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", 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", description="Added device.screen_width_pixels attribute"), ], ), "device.simulator": AttributeMetadata( brief="Whether the device is a simulator or an actual device.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=False, changelog=[ - ChangelogEntry( - version="next", - prs=[300], - description="Added device.simulator attribute", - ), + ChangelogEntry(version="next", prs=[300], description="Added device.simulator attribute"), + ], + ), + "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", description="Added device.storage_size 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", 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, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="8 GB", deprecation=DeprecationInfo( replacement="device.memory.estimated_capacity", reason="Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["device.memory.estimated_capacity"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[281], - description="Added and deprecated attribute to document JS SDK's current behaviour", - ), + ChangelogEntry(version="next", prs=[281], description="Added and deprecated attribute to document JS SDK's current behaviour"), ], ), "environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="production", - deprecation=DeprecationInfo(replacement="sentry.environment"), + deprecation=DeprecationInfo( + replacement="sentry.environment" + ), aliases=["sentry.environment"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -7019,7 +7339,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "error.type": AttributeMetadata( brief="Describes a class of error the operation ended with.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="timeout", changelog=[ @@ -7030,7 +7352,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "event.id": AttributeMetadata( brief="The unique identifier for this event (log record)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1234567890, changelog=[ @@ -7040,7 +7364,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "event.name": AttributeMetadata( brief="The name that uniquely identifies this event (log record)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Process Payload", changelog=[ @@ -7050,7 +7376,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "exception.escaped": AttributeMetadata( brief="SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, changelog=[ @@ -7060,7 +7388,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "exception.message": AttributeMetadata( brief="The error message.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ENOENT: no such file or directory", changelog=[ @@ -7071,9 +7401,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "exception.stacktrace": AttributeMetadata( brief="A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)', + example="Exception in thread \"main\" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)", changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -7082,7 +7414,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "exception.type": AttributeMetadata( brief="The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="OSError", changelog=[ @@ -7093,7 +7427,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "faas.coldstart": AttributeMetadata( brief="A boolean that is true if the serverless function is executed for the first time (aka cold-start).", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, changelog=[ @@ -7103,7 +7439,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "faas.cron": AttributeMetadata( brief="A string containing the schedule period as Cron Expression.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="0/5 * * * ? *", changelog=[ @@ -7114,7 +7452,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "faas.time": AttributeMetadata( brief="A string containing the function invocation time in the ISO 8601 format expressed in UTC.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="2020-01-23T13:47:06Z", changelog=[ @@ -7125,7 +7465,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "faas.trigger": AttributeMetadata( brief="Type of the trigger which caused this function invocation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="timer", changelog=[ @@ -7136,13 +7478,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "fcp": AttributeMetadata( brief="The time it takes for the browser to render the first piece of meaningful content on the screen", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=547.6951, deprecation=DeprecationInfo( replacement="browser.web_vital.fcp.value", reason="This attribute is being deprecated in favor of browser.web_vital.fcp.value", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.fcp.value"], sdks=["javascript-browser"], @@ -7153,7 +7497,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "flag.evaluation.": AttributeMetadata( brief="An instance of a feature flag evaluation. The value of this attribute is the boolean representing the evaluation result. The suffix is the name of the feature flag.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, has_dynamic_suffix=True, example="flag.evaluation.is_new_ui=true", @@ -7164,13 +7510,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "fp": AttributeMetadata( brief="The time it takes for the browser to render the first pixel on the screen", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=477.1926, deprecation=DeprecationInfo( replacement="browser.web_vital.fp.value", reason="This attribute is being deprecated in favor of browser.web_vital.fp.value", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.fp.value"], sdks=["javascript-browser"], @@ -7181,7 +7529,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.delay": AttributeMetadata( brief="The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=5, changelog=[ @@ -7192,7 +7542,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.frozen": AttributeMetadata( brief="The number of frozen frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=3, changelog=[ @@ -7203,7 +7555,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.slow": AttributeMetadata( brief="The number of slow frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1, changelog=[ @@ -7214,7 +7568,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.total": AttributeMetadata( brief="The number of total frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=60, changelog=[ @@ -7225,12 +7581,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "fs_error": AttributeMetadata( brief="The error message of a file system error.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="ENOENT: no such file or directory", deprecation=DeprecationInfo( replacement="error.type", - reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better.", + reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better." ), sdks=["javascript-node"], changelog=[ @@ -7241,7 +7599,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.agent.name": AttributeMetadata( brief="The name of the agent being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ResearchAssistant", changelog=[ @@ -7251,7 +7611,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.conversation.id": AttributeMetadata( brief="The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="conv_5j66UpCpwteGg4YSxUnt7lPY", changelog=[ @@ -7261,7 +7623,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.cost.input_tokens": AttributeMetadata( brief="The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=123.45, changelog=[ @@ -7272,7 +7636,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.cost.output_tokens": AttributeMetadata( brief="The cost of tokens used for creating the AI output in USD (without reasoning tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=123.45, changelog=[ @@ -7283,7 +7649,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.cost.total_tokens": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=12.34, aliases=["ai.total_cost"], @@ -7296,7 +7664,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.embeddings.input": AttributeMetadata( brief="The input to the embeddings model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="What's the weather in Paris?", changelog=[ @@ -7304,11 +7674,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "gen_ai.input.messages": AttributeMetadata( - brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', + brief="The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='[{"role": "user", "parts": [{"type": "text", "content": "Weather in Paris?"}]}, {"role": "assistant", "parts": [{"type": "tool_call", "id": "call_VSPygqKTWdrhaFErNvMV18Yl", "name": "get_weather", "arguments": {"location": "Paris"}}]}, {"role": "tool", "parts": [{"type": "tool_call_response", "id": "call_VSPygqKTWdrhaFErNvMV18Yl", "result": "rainy, 57°F"}]}]', + example="[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Weather in Paris?\"}]}, {\"role\": \"assistant\", \"parts\": [{\"type\": \"tool_call\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]}, {\"role\": \"tool\", \"parts\": [{\"type\": \"tool_call_response\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"result\": \"rainy, 57°F\"}]}]", aliases=["ai.texts"], changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -7318,7 +7690,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.operation.name": AttributeMetadata( brief="The name of the operation being performed. It has the following list of well-known values: 'chat', 'create_agent', 'embeddings', 'execute_tool', 'generate_content', 'invoke_agent', 'text_completion'. If one of them applies, then that value MUST be used. Otherwise a custom value MAY be used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="chat", changelog=[ @@ -7329,7 +7703,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.operation.type": AttributeMetadata( brief="The type of AI operation. Must be one of 'agent' (invoke_agent and create_agent spans), 'ai_client' (any LLM call), 'tool' (execute_tool spans), 'handoff' (handoff spans), 'other' (input and output processors, skill loading, guardrails etc.) . Added during ingestion based on span.op and gen_ai.operation.type. Used to filter and aggregate data in the UI", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="tool", changelog=[ @@ -7340,9 +7716,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.output.messages": AttributeMetadata( brief="The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]', + example="[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]", changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ], @@ -7350,7 +7728,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.pipeline.name": AttributeMetadata( brief="Name of the AI pipeline or chain being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Autofix Pipeline", aliases=["ai.pipeline.name"], @@ -7361,9 +7741,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.prompt": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='[{"role": "user", "message": "hello"}]', + example="[{\"role\": \"user\", \"message\": \"hello\"}]", deprecation=DeprecationInfo( reason="Deprecated from OTEL, use gen_ai.input.messages with the new format instead." ), @@ -7375,10 +7757,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.provider.name": AttributeMetadata( brief="The Generative AI provider as identified by the client or server instrumentation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="openai", - aliases=["ai.model.provider", "gen_ai.system"], + aliases=["ai.model.provider","gen_ai.system"], changelog=[ ChangelogEntry(version="0.4.0", prs=[253]), ], @@ -7386,10 +7770,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.available_tools": AttributeMetadata( brief="The available tools for the model. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]', - deprecation=DeprecationInfo(replacement="gen_ai.tool.definitions"), + example="[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]", + deprecation=DeprecationInfo( + replacement="gen_ai.tool.definitions" + ), changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ChangelogEntry(version="0.1.0", prs=[63, 127]), @@ -7398,7 +7786,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=0.5, aliases=["ai.frequency_penalty"], @@ -7410,7 +7800,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.max_tokens": AttributeMetadata( brief="The maximum number of tokens to generate in the response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=2048, changelog=[ @@ -7419,12 +7811,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "gen_ai.request.messages": AttributeMetadata( - brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', + brief="The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"role": "system", "content": "Generate a random number."}, {"role": "user", "content": [{"text": "Generate a random number between 0 and 10.", "type": "text"}]}, {"role": "tool", "content": {"toolCallId": "1", "toolName": "Weather", "output": "rainy"}}]', - deprecation=DeprecationInfo(replacement="gen_ai.input.messages"), + example="[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]", + deprecation=DeprecationInfo( + replacement="gen_ai.input.messages" + ), aliases=["ai.input_messages"], changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), @@ -7434,7 +7830,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.model": AttributeMetadata( brief="The model identifier being used for the request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gpt-4-turbo-preview", changelog=[ @@ -7444,7 +7842,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=0.5, aliases=["ai.presence_penalty"], @@ -7456,7 +7856,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1234567890", aliases=["ai.seed"], @@ -7467,7 +7869,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=0.1, aliases=["ai.temperature"], @@ -7479,7 +7883,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=35, aliases=["ai.top_k"], @@ -7491,7 +7897,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=0.7, aliases=["ai.top_p"], @@ -7503,7 +7911,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.finish_reasons": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="COMPLETE", aliases=["ai.finish_reason"], @@ -7514,7 +7924,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gen_123abc", aliases=["ai.generation_id"], @@ -7525,7 +7937,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.model": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gpt-4", aliases=["ai.model_id"], @@ -7537,7 +7951,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.streaming": AttributeMetadata( brief="Whether or not the AI model call's response was streamed back asynchronously", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, aliases=["ai.streaming"], @@ -7548,10 +7964,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.text": AttributeMetadata( brief="The model's response text messages. It has to be a stringified version of an array of response text messages.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='["The weather in Paris is rainy and overcast, with temperatures around 57°F", "The weather in London is sunny and warm, with temperatures around 65°F"]', - deprecation=DeprecationInfo(replacement="gen_ai.output.messages"), + example="[\"The weather in Paris is rainy and overcast, with temperatures around 57°F\", \"The weather in London is sunny and warm, with temperatures around 65°F\"]", + deprecation=DeprecationInfo( + replacement="gen_ai.output.messages" + ), changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ChangelogEntry(version="0.1.0", prs=[63, 74]), @@ -7560,7 +7980,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.time_to_first_token": AttributeMetadata( brief="Time in seconds when the first response content chunk arrived in streaming responses.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=0.6853435, changelog=[ @@ -7570,7 +7992,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.tokens_per_second": AttributeMetadata( brief="The total output tokens per seconds throughput", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=12345.67, changelog=[ @@ -7581,10 +8005,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.tool_calls": AttributeMetadata( brief="The tool calls in the model's response. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"name": "get_weather", "arguments": {"location": "Paris"}}]', - deprecation=DeprecationInfo(replacement="gen_ai.output.messages"), + example="[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", + deprecation=DeprecationInfo( + replacement="gen_ai.output.messages" + ), changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ChangelogEntry(version="0.1.0", prs=[63, 74]), @@ -7593,11 +8021,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="openai", - deprecation=DeprecationInfo(replacement="gen_ai.provider.name"), - aliases=["ai.model.provider", "gen_ai.provider.name"], + deprecation=DeprecationInfo( + replacement="gen_ai.provider.name" + ), + aliases=["ai.model.provider","gen_ai.provider.name"], changelog=[ ChangelogEntry(version="0.4.0", prs=[253]), ChangelogEntry(version="0.1.0", prs=[57, 127]), @@ -7606,10 +8038,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system.message": AttributeMetadata( brief="The system instructions passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="You are a helpful assistant", - deprecation=DeprecationInfo(replacement="gen_ai.system_instructions"), + deprecation=DeprecationInfo( + replacement="gen_ai.system_instructions" + ), changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ChangelogEntry(version="0.1.0", prs=[62]), @@ -7618,7 +8054,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system_instructions": AttributeMetadata( brief="The system instructions passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="You are a helpful assistant", aliases=["ai.preamble"], @@ -7630,9 +8068,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.call.arguments": AttributeMetadata( brief="The arguments of the tool call. It has to be a stringified version of the arguments to the tool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='{"location": "Paris"}', + example="{\"location\": \"Paris\"}", aliases=["gen_ai.tool.input"], changelog=[ ChangelogEntry(version="next", prs=[265]), @@ -7642,10 +8082,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.call.result": AttributeMetadata( brief="The result of the tool call. It has to be a stringified version of the result of the tool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="rainy, 57°F", - aliases=["gen_ai.tool.output", "gen_ai.tool.message"], + aliases=["gen_ai.tool.output","gen_ai.tool.message"], changelog=[ ChangelogEntry(version="next", prs=[265]), ChangelogEntry(version="0.4.0", prs=[221]), @@ -7654,9 +8096,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.definitions": AttributeMetadata( brief="The list of source system tool definitions available to the GenAI agent or model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='[{"type": "function", "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "The city and state, e.g. San Francisco, CA"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["location", "unit"]}}]', + example="[{\"type\": \"function\", \"name\": \"get_current_weather\", \"description\": \"Get the current weather in a given location\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"The city and state, e.g. San Francisco, CA\"}, \"unit\": {\"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"]}}, \"required\": [\"location\", \"unit\"]}}]", changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ], @@ -7664,7 +8108,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.description": AttributeMetadata( brief="The description of the tool being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Searches the web for current information about a topic", changelog=[ @@ -7674,10 +8120,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.input": AttributeMetadata( brief="The input of the tool being used. It has to be a stringified version of the input to the tool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"location": "Paris"}', - deprecation=DeprecationInfo(replacement="gen_ai.tool.call.arguments"), + example="{\"location\": \"Paris\"}", + deprecation=DeprecationInfo( + replacement="gen_ai.tool.call.arguments" + ), aliases=["gen_ai.tool.call.arguments"], changelog=[ ChangelogEntry(version="next", prs=[265]), @@ -7687,11 +8137,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.message": AttributeMetadata( brief="The response from a tool or function call passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="rainy, 57°F", - deprecation=DeprecationInfo(replacement="gen_ai.tool.call.result"), - aliases=["gen_ai.tool.call.result", "gen_ai.tool.output"], + deprecation=DeprecationInfo( + replacement="gen_ai.tool.call.result" + ), + aliases=["gen_ai.tool.call.result","gen_ai.tool.output"], changelog=[ ChangelogEntry(version="next", prs=[265]), ChangelogEntry(version="0.1.0", prs=[62]), @@ -7700,7 +8154,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.name": AttributeMetadata( brief="Name of the tool utilized by the agent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Flights", aliases=["ai.function_call"], @@ -7711,11 +8167,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.output": AttributeMetadata( brief="The output of the tool being used. It has to be a stringified version of the output of the tool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="rainy, 57°F", - deprecation=DeprecationInfo(replacement="gen_ai.tool.call.result"), - aliases=["gen_ai.tool.call.result", "gen_ai.tool.message"], + deprecation=DeprecationInfo( + replacement="gen_ai.tool.call.result" + ), + aliases=["gen_ai.tool.call.result","gen_ai.tool.message"], changelog=[ ChangelogEntry(version="next", prs=[265]), ChangelogEntry(version="0.1.0", prs=[63, 74]), @@ -7724,7 +8184,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.type": AttributeMetadata( brief="The type of tool being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="function", changelog=[ @@ -7734,11 +8196,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.completion_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI response (completion).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=10, - deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), - aliases=["ai.completion_tokens.used", "gen_ai.usage.output_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.output_tokens" + ), + aliases=["ai.completion_tokens.used","gen_ai.usage.output_tokens"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[61]), @@ -7748,10 +8214,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.input_tokens": AttributeMetadata( brief="The number of tokens used to process the AI input (prompt) including cached input tokens.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=10, - aliases=["ai.prompt_tokens.used", "gen_ai.usage.prompt_tokens"], + aliases=["ai.prompt_tokens.used","gen_ai.usage.prompt_tokens"], changelog=[ ChangelogEntry(version="next", prs=[261]), ChangelogEntry(version="0.4.0", prs=[228]), @@ -7762,7 +8230,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.input_tokens.cache_write": AttributeMetadata( brief="The number of tokens written to the cache when processing the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=100, changelog=[ @@ -7772,7 +8242,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.input_tokens.cached": AttributeMetadata( brief="The number of cached tokens used to process the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=50, changelog=[ @@ -7783,10 +8255,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.output_tokens": AttributeMetadata( brief="The number of tokens used for creating the AI output (including reasoning tokens).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=10, - aliases=["ai.completion_tokens.used", "gen_ai.usage.completion_tokens"], + aliases=["ai.completion_tokens.used","gen_ai.usage.completion_tokens"], changelog=[ ChangelogEntry(version="next", prs=[261]), ChangelogEntry(version="0.4.0", prs=[228]), @@ -7797,7 +8271,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.output_tokens.reasoning": AttributeMetadata( brief="The number of tokens used for reasoning to create the AI output.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=75, changelog=[ @@ -7808,11 +8284,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.prompt_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=20, - deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), - aliases=["ai.prompt_tokens.used", "gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.input_tokens" + ), + aliases=["ai.prompt_tokens.used","gen_ai.usage.input_tokens"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[61]), @@ -7822,7 +8302,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.total_tokens": AttributeMetadata( brief="The total number of tokens used to process the prompt. (input tokens plus output todkens)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=20, aliases=["ai.total_tokens.used"], @@ -7834,7 +8316,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "graphql.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="findBookById", changelog=[ @@ -7845,7 +8329,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "graphql.operation.type": AttributeMetadata( brief="The type of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="query", changelog=[ @@ -7856,36 +8342,34 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "hardwareConcurrency": AttributeMetadata( brief="The number of logical CPU cores available.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="14", deprecation=DeprecationInfo( replacement="device.processor_count", reason="Old namespace-less attribute, to be replaced with device.processor_count for span-first future", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["device.processor_count"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[300], - description="Updated deprecation replacement from device.cpu.logical_core_count to device.processor_count", - ), - ChangelogEntry( - version="next", - prs=[281], - description="Added and deprecated attribute to document JS SDK's current behaviour", - ), + ChangelogEntry(version="next", prs=[300], description="Updated deprecation replacement from device.cpu.logical_core_count to device.processor_count"), + ChangelogEntry(version="next", prs=[281], description="Added and deprecated attribute to document JS SDK's current behaviour"), ], ), "http.client_ip": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="client.address"), + deprecation=DeprecationInfo( + replacement="client.address" + ), aliases=["client.address"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 106, 127]), @@ -7895,7 +8379,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.decoded_response_content_length": AttributeMetadata( brief="The decoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=456, sdks=["javascript-browser"], @@ -7907,11 +8393,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.flavor": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo(replacement="network.protocol.version"), - aliases=["network.protocol.version", "net.protocol.version"], + deprecation=DeprecationInfo( + replacement="network.protocol.version" + ), + aliases=["network.protocol.version","net.protocol.version"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -7920,7 +8410,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="#details", changelog=[ @@ -7930,19 +8422,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.host": AttributeMetadata( brief="The domain name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage", + reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage" ), - aliases=[ - "server.address", - "client.address", - "http.server_name", - "net.host.name", - ], + aliases=["server.address","client.address","http.server_name","net.host.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -7951,10 +8440,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="GET", - deprecation=DeprecationInfo(replacement="http.request.method"), + deprecation=DeprecationInfo( + replacement="http.request.method" + ), aliases=["http.request.method"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -7966,7 +8459,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." ), is_in_otel=False, example="?foo=bar&bar=baz", @@ -7977,7 +8470,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connect_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.111, sdks=["javascript-browser"], @@ -7990,7 +8485,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connection_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.15, sdks=["javascript-browser"], @@ -8003,7 +8500,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.201, sdks=["javascript-browser"], @@ -8016,7 +8515,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.322, sdks=["javascript-browser"], @@ -8029,7 +8530,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.fetch_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.389, sdks=["javascript-browser"], @@ -8042,7 +8545,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.header.": AttributeMetadata( brief="HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="http.request.header.custom-header=['foo', 'bar']", @@ -8054,10 +8559,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="GET", - aliases=["method", "http.method"], + aliases=["method","http.method"], changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -8066,7 +8573,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.redirect_end": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829558.502, sdks=["javascript-browser"], @@ -8078,7 +8587,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.redirect_start": AttributeMetadata( brief="The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.495, sdks=["javascript-browser"], @@ -8091,7 +8602,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.request_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.51, sdks=["javascript-browser"], @@ -8104,7 +8617,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.resend_count": AttributeMetadata( brief="The ordinal number of request resending attempt (for any reason, including redirects).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=2, changelog=[ @@ -8115,7 +8630,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.response_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.89, sdks=["javascript-browser"], @@ -8128,7 +8645,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.response_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.7, sdks=["javascript-browser"], @@ -8141,7 +8660,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.secure_connection_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829555.73, sdks=["javascript-browser"], @@ -8154,7 +8675,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.time_to_first_byte": AttributeMetadata( brief="The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1.032, sdks=["javascript-browser"], @@ -8166,7 +8689,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.worker_start": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732829553.68, sdks=["javascript-browser"], @@ -8178,10 +8703,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.body.size": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=123, - aliases=["http.response_content_length", "http.response.header.content-length"], + aliases=["http.response_content_length","http.response.header.content-length"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[106]), @@ -8191,7 +8718,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.header.": AttributeMetadata( brief="HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="http.response.header.custom-header=['foo', 'bar']", @@ -8203,10 +8732,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.header.content-length": AttributeMetadata( brief="The size of the message body sent to the recipient (in bytes)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http.response.header.custom-header=['foo', 'bar']", - aliases=["http.response_content_length", "http.response.body.size"], + aliases=["http.response_content_length","http.response.body.size"], changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -8215,7 +8746,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=456, aliases=["http.response_transfer_size"], @@ -8227,7 +8760,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=404, aliases=["http.status_code"], @@ -8239,13 +8774,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response_content_length": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=123, deprecation=DeprecationInfo( - replacement="http.response.body.size", status=DeprecationStatus.BACKFILL + replacement="http.response.body.size", + status=DeprecationStatus.BACKFILL ), - aliases=["http.response.body.size", "http.response.header.content-length"], + aliases=["http.response.body.size","http.response.header.content-length"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[61, 106]), @@ -8255,11 +8793,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response_transfer_size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=456, deprecation=DeprecationInfo( - replacement="http.response.size", status=DeprecationStatus.BACKFILL + replacement="http.response.size", + status=DeprecationStatus.BACKFILL ), aliases=["http.response.size"], changelog=[ @@ -8271,7 +8812,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/users/:id", aliases=["url.template"], @@ -8283,10 +8826,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https", - deprecation=DeprecationInfo(replacement="url.scheme"), + deprecation=DeprecationInfo( + replacement="url.scheme" + ), aliases=["url.scheme"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -8296,7 +8843,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.server.request.time_in_queue": AttributeMetadata( brief="The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=50, sdks=["ruby"], @@ -8307,11 +8856,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.server_name": AttributeMetadata( brief="The server domain name", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "net.host.name", "http.host"], + deprecation=DeprecationInfo( + replacement="server.address" + ), + aliases=["server.address","net.host.name","http.host"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -8320,10 +8873,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=404, - deprecation=DeprecationInfo(replacement="http.response.status_code"), + deprecation=DeprecationInfo( + replacement="http.response.status_code" + ), aliases=["http.response.status_code"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -8334,12 +8891,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.target": AttributeMetadata( brief="The pathname and query string of the URL.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/test?foo=bar#buzz", deprecation=DeprecationInfo( replacement="url.path", - reason="This attribute is being deprecated in favor of url.path and url.query", + reason="This attribute is being deprecated in favor of url.path and url.query" ), changelog=[ ChangelogEntry(version="0.1.0", prs=[61]), @@ -8349,11 +8908,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo(replacement="url.full"), - aliases=["url.full", "url"], + deprecation=DeprecationInfo( + replacement="url.full" + ), + aliases=["url.full","url"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108]), ChangelogEntry(version="0.0.0"), @@ -8362,10 +8925,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.user_agent": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", - deprecation=DeprecationInfo(replacement="user_agent.original"), + deprecation=DeprecationInfo( + replacement="user_agent.original" + ), aliases=["user_agent.original"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -8375,7 +8942,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "id": AttributeMetadata( brief="A unique identifier for the span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -8386,28 +8955,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "inp": AttributeMetadata( brief="The value of the recorded Interaction to Next Paint (INP) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=200, deprecation=DeprecationInfo( replacement="browser.web_vital.inp.value", reason="The INP web vital is now recorded as a browser.web_vital.inp.value attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.inp.value"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[229], - description="Added and deprecated attribute to document JS SDK's current behaviour", - ), + ChangelogEntry(version="next", prs=[229], description="Added and deprecated attribute to document JS SDK's current behaviour"), ], ), "jvm.gc.action": AttributeMetadata( brief="Name of the garbage collector action.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="end of minor GC", changelog=[ @@ -8418,7 +8987,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.gc.name": AttributeMetadata( brief="Name of the garbage collector.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Young Generation", changelog=[ @@ -8429,7 +9000,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.memory.pool.name": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Old Gen", changelog=[ @@ -8440,7 +9013,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.memory.type": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Old Gen", changelog=[ @@ -8451,7 +9026,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.thread.daemon": AttributeMetadata( brief="Whether the thread is daemon or not.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, changelog=[ @@ -8461,7 +9038,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.thread.state": AttributeMetadata( brief="State of the thread.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="blocked", changelog=[ @@ -8472,13 +9051,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.element": AttributeMetadata( brief="The dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="img", deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.element", reason="The LCP element is now recorded as a browser.web_vital.lcp.element attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.lcp.element"], changelog=[ @@ -8490,13 +9071,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="#hero", deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.id", reason="The LCP id is now recorded as a browser.web_vital.lcp.id attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.lcp.id"], changelog=[ @@ -8508,13 +9091,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.loadTime": AttributeMetadata( brief="The time it took for the LCP element to be loaded", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1402, deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.load_time", reason="The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.lcp.load_time"], sdks=["javascript-browser"], @@ -8525,13 +9110,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.renderTime": AttributeMetadata( brief="The time it took for the LCP element to be rendered", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1685, deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.render_time", reason="The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.lcp.render_time"], sdks=["javascript-browser"], @@ -8542,13 +9129,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1234, deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.size", reason="The LCP size is now recorded as a browser.web_vital.lcp.size attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.lcp.size"], changelog=[ @@ -8560,13 +9149,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com", deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.url", reason="The LCP url is now recorded as a browser.web_vital.lcp.url attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.lcp.url"], changelog=[ @@ -8578,28 +9169,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp": AttributeMetadata( brief="The value of the recorded Largest Contentful Paint (LCP) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=2500, deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.value", reason="The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute.", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.lcp.value"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[229], - description="Added and deprecated attribute to document JS SDK's current behaviour", - ), + ChangelogEntry(version="next", prs=[229], description="Added and deprecated attribute to document JS SDK's current behaviour"), ], ), "logger.name": AttributeMetadata( brief="The name of the logger that generated this event.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="myLogger", changelog=[ @@ -8612,7 +9203,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Cancellation reasons may contain user-specific or sensitive information", + reason="Cancellation reasons may contain user-specific or sensitive information" ), is_in_otel=False, example="User cancelled the request", @@ -8623,7 +9214,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.cancelled.request_id": AttributeMetadata( brief="Request ID of the cancelled MCP operation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123", changelog=[ @@ -8633,7 +9226,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.client.name": AttributeMetadata( brief="Name of the MCP client application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="claude-desktop", changelog=[ @@ -8645,7 +9240,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Client titles may reveal user-specific application configurations or custom setups", + reason="Client titles may reveal user-specific application configurations or custom setups" ), is_in_otel=False, example="Claude Desktop", @@ -8656,7 +9251,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.client.version": AttributeMetadata( brief="Version of the MCP client application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1.0.0", changelog=[ @@ -8666,7 +9263,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.lifecycle.phase": AttributeMetadata( brief="Lifecycle phase indicator for MCP operations.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="initialization_complete", changelog=[ @@ -8676,7 +9275,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.logging.data_type": AttributeMetadata( brief="Data type of the logged message content.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="string", changelog=[ @@ -8686,7 +9287,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.logging.level": AttributeMetadata( brief="Log level for MCP logging operations.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="info", changelog=[ @@ -8698,7 +9301,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Logger names may be user-defined and could contain sensitive information", + reason="Logger names may be user-defined and could contain sensitive information" ), is_in_otel=False, example="mcp_server", @@ -8709,7 +9312,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.logging.message": AttributeMetadata( brief="Log message content from MCP logging operations.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="Log messages can contain user data"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="Log messages can contain user data" + ), is_in_otel=False, example="Tool execution completed successfully", changelog=[ @@ -8719,7 +9325,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.method.name": AttributeMetadata( brief="The name of the MCP request or notification method being called.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="tools/call", changelog=[ @@ -8729,7 +9337,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.current": AttributeMetadata( brief="Current progress value of an MCP operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=50, changelog=[ @@ -8742,7 +9352,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Progress messages may contain user-specific or sensitive information", + reason="Progress messages may contain user-specific or sensitive information" ), is_in_otel=False, example="Processing 50 of 100 items", @@ -8753,7 +9363,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.percentage": AttributeMetadata( brief="Calculated progress percentage of an MCP operation. Computed from current/total * 100.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=50, changelog=[ @@ -8764,7 +9376,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.token": AttributeMetadata( brief="Token for tracking progress of an MCP operation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="progress-token-123", changelog=[ @@ -8774,7 +9388,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.total": AttributeMetadata( brief="Total progress target value of an MCP operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=100, changelog=[ @@ -8787,7 +9403,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Prompt names may reveal user behavior patterns or sensitive operations", + reason="Prompt names may reveal user behavior patterns or sensitive operations" ), is_in_otel=False, example="summarize", @@ -8798,7 +9414,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.description": AttributeMetadata( brief="Description of the prompt result.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="A summary of the requested information", changelog=[ @@ -8808,7 +9426,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.message_content": AttributeMetadata( brief="Content of the message in the prompt result. Used for single message results only.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="Please provide a summary of the document", changelog=[ @@ -8818,7 +9438,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.message_count": AttributeMetadata( brief="Number of messages in the prompt result.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=3, changelog=[ @@ -8829,7 +9451,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.message_role": AttributeMetadata( brief="Role of the message in the prompt result. Used for single message results only.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="user", changelog=[ @@ -8839,7 +9463,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.protocol.ready": AttributeMetadata( brief="Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1, changelog=[ @@ -8850,7 +9476,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.protocol.version": AttributeMetadata( brief="MCP protocol version used in the session.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="2024-11-05", changelog=[ @@ -8860,7 +9488,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.argument.": AttributeMetadata( brief="MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="Arguments contain user input"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="Arguments contain user input" + ), is_in_otel=False, has_dynamic_suffix=True, example="mcp.request.argument.query='weather in Paris'", @@ -8871,7 +9502,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.argument.name": AttributeMetadata( brief="Name argument from prompts/get MCP request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="Prompt names can contain user input"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="Prompt names can contain user input" + ), is_in_otel=False, example="summarize", changelog=[ @@ -8881,7 +9515,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.argument.uri": AttributeMetadata( brief="URI argument from resources/read MCP request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain user file paths"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="URIs can contain user file paths" + ), is_in_otel=False, example="file:///path/to/resource", changelog=[ @@ -8891,7 +9528,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.id": AttributeMetadata( brief="JSON-RPC request identifier for the MCP request. Unique within the MCP session.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1", changelog=[ @@ -8901,7 +9540,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.resource.protocol": AttributeMetadata( brief="Protocol of the resource URI being accessed, extracted from the URI.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="file", changelog=[ @@ -8911,7 +9552,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.resource.uri": AttributeMetadata( brief="The resource URI being accessed in an MCP operation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain sensitive file paths"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="URIs can contain sensitive file paths" + ), is_in_otel=False, example="file:///path/to/file.txt", changelog=[ @@ -8921,7 +9565,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.server.name": AttributeMetadata( brief="Name of the MCP server application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sentry-mcp-server", changelog=[ @@ -8933,7 +9579,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Server titles may reveal user-specific application configurations or custom setups", + reason="Server titles may reveal user-specific application configurations or custom setups" ), is_in_otel=False, example="Sentry MCP Server", @@ -8944,7 +9590,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.server.version": AttributeMetadata( brief="Version of the MCP server application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="0.1.0", changelog=[ @@ -8954,7 +9602,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.session.id": AttributeMetadata( brief="Identifier for the MCP session.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="550e8400-e29b-41d4-a716-446655440000", changelog=[ @@ -8964,7 +9614,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.tool.name": AttributeMetadata( brief="Name of the MCP tool being called.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="calculator", changelog=[ @@ -8974,9 +9626,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.tool.result.content": AttributeMetadata( brief="The content of the tool result.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="Tool results can contain user data"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="Tool results can contain user data" + ), is_in_otel=False, - example='{"output": "rainy", "toolCallId": "1"}', + example="{\"output\": \"rainy\", \"toolCallId\": \"1\"}", changelog=[ ChangelogEntry(version="0.3.0", prs=[171]), ChangelogEntry(version="0.2.0", prs=[164]), @@ -8985,7 +9640,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.tool.result.content_count": AttributeMetadata( brief="Number of content items in the tool result.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1, changelog=[ @@ -8996,7 +9653,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.tool.result.is_error": AttributeMetadata( brief="Whether a tool execution resulted in an error.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=False, changelog=[ @@ -9006,7 +9665,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.transport": AttributeMetadata( brief="Transport method used for MCP communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="stdio", changelog=[ @@ -9016,11 +9677,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mdc.": AttributeMetadata( brief="Attributes from the Mapped Diagnostic Context (MDC) present at the moment the log record was created. The MDC is supported by all the most popular logging solutions in the Java ecosystem, and it's usually implemented as a thread-local map that stores context for e.g. a specific request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="mdc.some_key='some_value'", - sdks=["java", "java.logback", "java.jul", "java.log4j2"], + sdks=["java","java.logback","java.jul","java.log4j2"], changelog=[ ChangelogEntry(version="0.3.0", prs=[176]), ], @@ -9028,7 +9691,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.destination.connection": AttributeMetadata( brief="The message destination connection.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="BestTopic", sdks=["php-laravel"], @@ -9040,7 +9705,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.destination.name": AttributeMetadata( brief="The message destination name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="BestTopic", sdks=["php-laravel"], @@ -9052,7 +9719,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.body.size": AttributeMetadata( brief="The size of the message body in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=839, sdks=["php-laravel"], @@ -9064,7 +9733,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.envelope.size": AttributeMetadata( brief="The size of the message body and metadata in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=1045, sdks=["php-laravel"], @@ -9076,7 +9747,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.id": AttributeMetadata( brief="A value used by the messaging system as an identifier for the message, represented as a string.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -9088,7 +9761,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.receive.latency": AttributeMetadata( brief="The latency between when the message was published and received.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1732847252, sdks=["php-laravel"], @@ -9100,7 +9775,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.retry.count": AttributeMetadata( brief="The amount of attempts to send the message.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=2, sdks=["php-laravel"], @@ -9112,7 +9789,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.operation.type": AttributeMetadata( brief="A string identifying the type of the messaging operation", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="create", changelog=[ @@ -9122,7 +9801,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.system": AttributeMetadata( brief="The messaging system as identified by the client instrumentation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="activemq", sdks=["php-laravel"], @@ -9134,12 +9815,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET", - deprecation=DeprecationInfo(replacement="http.request.method"), + deprecation=DeprecationInfo( + replacement="http.request.method" + ), aliases=["http.request.method"], - sdks=["javascript-browser", "javascript-node"], + sdks=["javascript-browser","javascript-node"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), ChangelogEntry(version="0.0.0"), @@ -9148,7 +9833,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "navigation.type": AttributeMetadata( brief="The type of navigation done by a client-side router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="router.push", changelog=[ @@ -9159,7 +9846,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "nel.elapsed_time": AttributeMetadata( brief="The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=100, changelog=[ @@ -9168,9 +9857,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "nel.phase": AttributeMetadata( - brief='If request failed, the phase of its network error. If request succeeded, "application".', + brief="If request failed, the phase of its network error. If request succeeded, \"application\".", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="application", changelog=[ @@ -9180,7 +9871,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "nel.referrer": AttributeMetadata( brief="request's referrer, as determined by the referrer policy associated with its client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com/foo?bar=baz", changelog=[ @@ -9190,7 +9883,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "nel.sampling_function": AttributeMetadata( brief="The sampling function used to determine if the request should be sampled.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=0.5, changelog=[ @@ -9199,9 +9894,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "nel.type": AttributeMetadata( - brief='If request failed, the type of its network error. If request succeeded, "ok".', + brief="If request failed, the type of its network error. If request succeeded, \"ok\".", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="dns.unreachable", changelog=[ @@ -9211,11 +9908,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.host.ip": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.local.address"), - aliases=["network.local.address", "net.sock.host.addr"], + deprecation=DeprecationInfo( + replacement="network.local.address" + ), + aliases=["network.local.address","net.sock.host.addr"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9224,11 +9925,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.host.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "http.server_name", "http.host"], + deprecation=DeprecationInfo( + replacement="server.address" + ), + aliases=["server.address","http.server_name","http.host"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9237,10 +9942,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.host.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=1337, - deprecation=DeprecationInfo(replacement="server.port"), + deprecation=DeprecationInfo( + replacement="server.port" + ), aliases=["server.port"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -9251,11 +9960,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.peer.ip": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.peer.address"), - aliases=["network.peer.address", "net.sock.peer.addr"], + deprecation=DeprecationInfo( + replacement="network.peer.address" + ), + aliases=["network.peer.address","net.sock.peer.addr"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9264,12 +9977,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.peer.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use server.address on client spans and client.address on server spans.", + reason="Deprecated, use server.address on client spans and client.address on server spans." ), changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -9279,12 +9994,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.peer.port": AttributeMetadata( brief="Peer port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=1337, deprecation=DeprecationInfo( replacement="server.port", - reason="Deprecated, use server.port on client spans and client.port on server spans.", + reason="Deprecated, use server.port on client spans and client.port on server spans." ), changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -9295,10 +10012,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http", - deprecation=DeprecationInfo(replacement="network.protocol.name"), + deprecation=DeprecationInfo( + replacement="network.protocol.name" + ), aliases=["network.protocol.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -9308,11 +10029,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo(replacement="network.protocol.version"), - aliases=["network.protocol.version", "http.flavor"], + deprecation=DeprecationInfo( + replacement="network.protocol.version" + ), + aliases=["network.protocol.version","http.flavor"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9321,12 +10046,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.family": AttributeMetadata( brief="OSI transport and network layer", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="inet", deprecation=DeprecationInfo( replacement="network.transport", - reason="Deprecated, use network.transport and network.type.", + reason="Deprecated, use network.transport and network.type." ), changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -9336,11 +10063,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.host.addr": AttributeMetadata( brief="Local address of the network connection mapping to Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/var/my.sock", - deprecation=DeprecationInfo(replacement="network.local.address"), - aliases=["network.local.address", "net.host.ip"], + deprecation=DeprecationInfo( + replacement="network.local.address" + ), + aliases=["network.local.address","net.host.ip"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9349,10 +10080,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.host.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=8080, - deprecation=DeprecationInfo(replacement="network.local.port"), + deprecation=DeprecationInfo( + replacement="network.local.port" + ), aliases=["network.local.port"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -9363,11 +10098,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.addr": AttributeMetadata( brief="Peer address of the network connection - IP address", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.peer.address"), - aliases=["network.peer.address", "net.peer.ip"], + deprecation=DeprecationInfo( + replacement="network.peer.address" + ), + aliases=["network.peer.address","net.peer.ip"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9376,7 +10115,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.name": AttributeMetadata( brief="Peer address of the network connection - Unix domain socket name", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/var/my.sock", deprecation=DeprecationInfo( @@ -9390,10 +10131,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=8080, - deprecation=DeprecationInfo(replacement="network.peer.port"), + deprecation=DeprecationInfo( + replacement="network.peer.port" + ), changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[61]), @@ -9403,10 +10148,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="tcp", - deprecation=DeprecationInfo(replacement="network.transport"), + deprecation=DeprecationInfo( + replacement="network.transport" + ), aliases=["network.transport"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -9416,10 +10165,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.local.address": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="10.1.2.80", - aliases=["net.host.ip", "net.sock.host.addr"], + aliases=["net.host.ip","net.sock.host.addr"], changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -9428,7 +10179,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.local.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=65400, aliases=["net.sock.host.port"], @@ -9440,10 +10193,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.peer.address": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="10.1.2.80", - aliases=["net.peer.ip", "net.sock.peer.addr"], + aliases=["net.peer.ip","net.sock.peer.addr"], changelog=[ ChangelogEntry(version="0.1.0", prs=[108, 127]), ChangelogEntry(version="0.0.0"), @@ -9452,7 +10207,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=65400, changelog=[ @@ -9463,7 +10220,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http", aliases=["net.protocol.name"], @@ -9475,10 +10234,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - aliases=["http.flavor", "net.protocol.version"], + aliases=["http.flavor","net.protocol.version"], changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -9487,7 +10248,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="tcp", aliases=["net.transport"], @@ -9499,7 +10262,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.type": AttributeMetadata( brief="OSI network layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ipv4", changelog=[ @@ -9510,7 +10275,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.build_id": AttributeMetadata( brief="The build ID of the operating system.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1234567890", changelog=[ @@ -9521,7 +10288,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.description": AttributeMetadata( brief="Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Ubuntu 18.04.1 LTS", changelog=[ @@ -9532,7 +10301,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.name": AttributeMetadata( brief="Human readable operating system name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Ubuntu", changelog=[ @@ -9543,7 +10314,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.type": AttributeMetadata( brief="The operating system type.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="linux", changelog=[ @@ -9554,7 +10327,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.version": AttributeMetadata( brief="The version of the operating system.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="18.04.2", changelog=[ @@ -9565,7 +10340,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "otel.scope.name": AttributeMetadata( brief="The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="io.opentelemetry.contrib.mongodb", changelog=[ @@ -9576,7 +10353,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "otel.scope.version": AttributeMetadata( brief="The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="2.4.5", changelog=[ @@ -9587,7 +10366,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "otel.status_code": AttributeMetadata( brief="Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="OK", changelog=[ @@ -9598,7 +10379,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "otel.status_description": AttributeMetadata( brief="Description of the Status if it has a value, otherwise not set.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="resource not found", changelog=[ @@ -9609,7 +10392,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "params.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="params.id='123'", @@ -9621,7 +10406,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "previous_route": AttributeMetadata( brief="Also used by mobile SDKs to indicate the previous route in the application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="HomeScreen", sdks=["javascript-reactnative"], @@ -9633,7 +10420,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.executable.name": AttributeMetadata( brief="The name of the executable that started the process.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="getsentry", changelog=[ @@ -9644,7 +10433,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.pid": AttributeMetadata( brief="The process ID of the running process.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=12345, changelog=[ @@ -9655,7 +10446,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.runtime.description": AttributeMetadata( brief="An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Eclipse OpenJ9 VM openj9-0.21.0", changelog=[ @@ -9666,7 +10459,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.runtime.name": AttributeMetadata( brief="The name of the runtime. Equivalent to `name` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="node", changelog=[ @@ -9677,7 +10472,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.runtime.version": AttributeMetadata( brief="The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="18.04.2", changelog=[ @@ -9688,13 +10485,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "query.": AttributeMetadata( brief="An item in a query string. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="query.id='123'", deprecation=DeprecationInfo( replacement="url.query", - reason="Instead of sending items individually in query., they should be sent all together with url.query.", + reason="Instead of sending items individually in query., they should be sent all together with url.query." ), changelog=[ ChangelogEntry(version="0.1.0", prs=[103]), @@ -9703,10 +10502,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="production", - deprecation=DeprecationInfo(replacement="sentry.release"), + deprecation=DeprecationInfo( + replacement="sentry.release" + ), aliases=["sentry.release"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -9716,7 +10519,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "remix.action_form_data.": AttributeMetadata( brief="Remix form data, being the form data key, the value being the form data value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="http.response.header.text='test'", @@ -9728,10 +10533,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", - deprecation=DeprecationInfo(replacement="sentry.replay_id"), + deprecation=DeprecationInfo( + replacement="sentry.replay_id" + ), aliases=["sentry.replay_id"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61]), @@ -9741,11 +10550,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "resource.deployment.environment": AttributeMetadata( brief="The software deployment environment name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example="production", deprecation=DeprecationInfo( - replacement="sentry.environment", status=DeprecationStatus.BACKFILL + replacement="sentry.environment", + status=DeprecationStatus.BACKFILL ), changelog=[ ChangelogEntry(version="next", prs=[266]), @@ -9754,11 +10566,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "resource.deployment.environment.name": AttributeMetadata( brief="The software deployment environment name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example="production", deprecation=DeprecationInfo( - replacement="sentry.environment", status=DeprecationStatus.BACKFILL + replacement="sentry.environment", + status=DeprecationStatus.BACKFILL ), changelog=[ ChangelogEntry(version="0.3.1", prs=[196]), @@ -9767,7 +10582,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "resource.render_blocking_status": AttributeMetadata( brief="The render blocking status of the resource.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="non-blocking", sdks=["javascript-browser"], @@ -9779,12 +10596,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework. Also used by mobile SDKs to indicate the current route in the application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="App\\Controller::indexAction", - deprecation=DeprecationInfo(replacement="http.route"), + deprecation=DeprecationInfo( + replacement="http.route" + ), aliases=["http.route"], - sdks=["php-laravel", "javascript-reactnative"], + sdks=["php-laravel","javascript-reactnative"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 74]), ChangelogEntry(version="0.0.0"), @@ -9793,7 +10614,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "rpc.grpc.status_code": AttributeMetadata( brief="The numeric status code of the gRPC request.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=2, changelog=[ @@ -9804,7 +10627,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "rpc.service": AttributeMetadata( brief="The full (logical) name of the service being called, including its package name, if applicable.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="myService.BestService", changelog=[ @@ -9815,7 +10640,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.action": AttributeMetadata( brief="Used as a generic attribute representing the action depending on the type of span. For instance, this is the database query operation for DB spans, and the request method for HTTP spans.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="SELECT", changelog=[ @@ -9825,10 +10652,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Chrome", - deprecation=DeprecationInfo(replacement="browser.name"), + deprecation=DeprecationInfo( + replacement="browser.name" + ), aliases=["browser.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[139]), @@ -9837,10 +10668,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="120.0.6099.130", - deprecation=DeprecationInfo(replacement="browser.version"), + deprecation=DeprecationInfo( + replacement="browser.version" + ), aliases=["browser.version"], changelog=[ ChangelogEntry(version="0.1.0", prs=[139]), @@ -9849,7 +10684,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.cancellation_reason": AttributeMetadata( brief="The reason why a span ended early.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="document.hidden", changelog=[ @@ -9859,7 +10696,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.category": AttributeMetadata( brief="The high-level category of a span, derived from the span operation or span attributes. This categorizes spans by their general purpose (e.g., database, HTTP, UI). Known values include: 'ai', 'ai.pipeline', 'app', 'browser', 'cache', 'console', 'db', 'event', 'file', 'function.aws', 'function.azure', 'function.gcp', 'function.nextjs', 'function.remix', 'graphql', 'grpc', 'http', 'measure', 'middleware', 'navigation', 'pageload', 'queue', 'resource', 'rpc', 'serialize', 'subprocess', 'template', 'topic', 'ui', 'ui.angular', 'ui.ember', 'ui.react', 'ui.svelte', 'ui.vue', 'view', 'websocket'.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="db", changelog=[ @@ -9869,7 +10708,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.client_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in the SDK.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, changelog=[ @@ -9879,7 +10720,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.description": AttributeMetadata( brief="The human-readable description of a span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="index view query", changelog=[ @@ -9889,7 +10732,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dist": AttributeMetadata( brief="The sentry dist.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1.0", changelog=[ @@ -9899,7 +10744,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.domain": AttributeMetadata( brief="Used as a generic attribute representing the domain depending on the type of span. For instance, this is the collection/table name for database spans, and the server address for HTTP spans.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="example.com", changelog=[ @@ -9909,7 +10756,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.environment": AttributeMetadata( brief="The environment from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="prod", changelog=[ @@ -9919,7 +10768,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.public_key": AttributeMetadata( brief="The public key from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="c51734c603c4430eb57cb0a5728a479d", changelog=[ @@ -9929,7 +10780,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.release": AttributeMetadata( brief="The release identifier from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="frontend@e8211be71b214afab5b85de4b4c54be3714952bb", changelog=[ @@ -9939,7 +10792,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.sample_rate": AttributeMetadata( brief="The sample rate from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1.0", changelog=[ @@ -9949,7 +10804,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.sampled": AttributeMetadata( brief="Whether the event was sampled according to the dynamic sampling context.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, changelog=[ @@ -9959,7 +10816,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.trace_id": AttributeMetadata( brief="The trace ID from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="047372980460430cbc78d9779df33a46", changelog=[ @@ -9969,7 +10828,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.transaction": AttributeMetadata( brief="The transaction name from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="/issues/errors-outages/", changelog=[ @@ -9979,7 +10840,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="production", aliases=["environment"], @@ -9990,7 +10853,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.exclusive_time": AttributeMetadata( brief="The exclusive time duration of the span in milliseconds.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1234, changelog=[ @@ -10002,7 +10867,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.graphql.operation": AttributeMetadata( brief="Indicates the type of graphql operation, emitted by the Javascript SDK.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="getUserById", changelog=[ @@ -10012,7 +10879,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.group": AttributeMetadata( brief="Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, changelog=[ ChangelogEntry(version="0.4.0", prs=[212]), @@ -10021,7 +10890,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.http.prefetch": AttributeMetadata( brief="If an http request was a prefetch request.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, changelog=[ @@ -10031,7 +10902,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.idle_span_finish_reason": AttributeMetadata( brief="The reason why an idle span ended early.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="idleTimeout", changelog=[ @@ -10041,7 +10914,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.is_remote": AttributeMetadata( brief="Indicates whether a span's parent is remote.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, changelog=[ @@ -10051,7 +10926,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.kind": AttributeMetadata( brief="Used to clarify the relationship between parents and children, or to distinguish between spans, e.g. a `server` and `client` span with the same name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="server", changelog=[ @@ -10061,7 +10938,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.message.parameter.": AttributeMetadata( brief="A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="sentry.message.parameter.0='123'", changelog=[ @@ -10071,7 +10950,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.message.template": AttributeMetadata( brief="The parameterized template string.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Hello, {name}!", changelog=[ @@ -10081,7 +10962,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.module.": AttributeMetadata( brief="A module that was loaded in the process. The key is the name of the module.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="sentry.module.brianium/paratest='v7.7.0'", @@ -10092,7 +10975,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.route": AttributeMetadata( brief="A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="/posts/[id]/layout", sdks=["javascript"], @@ -10103,7 +10988,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.type": AttributeMetadata( brief="A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="generateMetadata", sdks=["javascript"], @@ -10114,7 +11001,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.normalized_db_query": AttributeMetadata( brief="The normalized version of `db.query.text`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", changelog=[ @@ -10124,7 +11013,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.normalized_db_query.hash": AttributeMetadata( brief="The hash of `sentry.normalized_db_query`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, changelog=[ ChangelogEntry(version="0.4.0", prs=[200]), @@ -10133,7 +11024,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.normalized_description": AttributeMetadata( brief="Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", changelog=[ @@ -10143,7 +11036,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.observed_timestamp_nanos": AttributeMetadata( brief="The timestamp at which an envelope was received by Relay, in nanoseconds.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1544712660300000000", changelog=[ @@ -10154,7 +11049,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.op": AttributeMetadata( brief="The operation of a span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="http.client", changelog=[ @@ -10164,7 +11061,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.origin": AttributeMetadata( brief="The origin of the instrumentation (e.g. span, log, etc.)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="auto.http.otel.fastify", changelog=[ @@ -10175,7 +11074,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.platform": AttributeMetadata( brief="The sdk platform that generated the event.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="php", changelog=[ @@ -10185,7 +11086,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.profiler_id": AttributeMetadata( brief="The id of the currently running profiler (continuous profiling)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="18779b64dd35d1a538e7ce2dd2d3fad3", changelog=[ @@ -10195,10 +11098,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="7.0.0", - aliases=["service.version", "release"], + aliases=["service.version","release"], changelog=[ ChangelogEntry(version="0.0.0"), ], @@ -10206,7 +11111,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["replay_id"], @@ -10217,7 +11124,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.replay_is_buffering": AttributeMetadata( brief="A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, changelog=[ @@ -10227,14 +11136,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.sdk.integrations": AttributeMetadata( brief="A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, - example=[ - "InboundFilters", - "FunctionToString", - "BrowserApiErrors", - "Breadcrumbs", - ], + example=["InboundFilters", "FunctionToString", "BrowserApiErrors", "Breadcrumbs"], changelog=[ ChangelogEntry(version="0.0.0", prs=[42]), ], @@ -10242,7 +11148,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.sdk.name": AttributeMetadata( brief="The sentry sdk name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="@sentry/react", changelog=[ @@ -10252,7 +11160,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.sdk.version": AttributeMetadata( brief="The sentry sdk version.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="7.0.0", changelog=[ @@ -10262,7 +11172,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment.id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="051581bf3cb55c13", aliases=["sentry.segment_id"], @@ -10273,7 +11185,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment.name": AttributeMetadata( brief="The segment name of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET /user", changelog=[ @@ -10283,10 +11197,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment_id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="051581bf3cb55c13", - deprecation=DeprecationInfo(replacement="sentry.segment.id"), + deprecation=DeprecationInfo( + replacement="sentry.segment.id" + ), aliases=["sentry.segment.id"], changelog=[ ChangelogEntry(version="0.1.0", prs=[124]), @@ -10295,7 +11213,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.server_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in Relay.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, changelog=[ @@ -10305,13 +11225,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.source": AttributeMetadata( brief="The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="route", deprecation=DeprecationInfo( replacement="sentry.span.source", reason="This attribute is being deprecated in favor of sentry.span.source", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), changelog=[ ChangelogEntry(version="next"), @@ -10320,7 +11242,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.span.source": AttributeMetadata( brief="The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="route", changelog=[ @@ -10331,7 +11255,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.status.message": AttributeMetadata( brief="The from OTLP extracted status message.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="foobar", changelog=[ @@ -10341,7 +11267,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.status_code": AttributeMetadata( brief="The HTTP status code used in Sentry Insights. Typically set by Sentry during ingestion, rather than by clients.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=200, changelog=[ @@ -10351,7 +11279,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.timestamp.sequence": AttributeMetadata( brief="A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0, changelog=[ @@ -10361,23 +11291,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.trace.parent_span_id": AttributeMetadata( brief="The span id of the span that was active when the log was collected. This should not be set if there was no active span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="b0e6f15b45c36b12", deprecation=DeprecationInfo(), changelog=[ - ChangelogEntry( - version="next", - prs=[287], - description="Deprecate `sentry.trace.parent_span_id`", - ), + ChangelogEntry(version="next", prs=[287], description="Deprecate `sentry.trace.parent_span_id`"), ChangelogEntry(version="0.1.0", prs=[116]), ], ), "sentry.transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="GET /", aliases=["transaction"], @@ -10388,10 +11318,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "server.address": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - aliases=["http.server_name", "net.host.name", "http.host"], + aliases=["http.server_name","net.host.name","http.host"], changelog=[ ChangelogEntry(version="0.1.0", prs=[108, 127]), ChangelogEntry(version="0.0.0"), @@ -10400,7 +11332,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "server.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=1337, aliases=["net.host.port"], @@ -10412,7 +11346,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "service.name": AttributeMetadata( brief="Logical name of the service.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="omegastar", changelog=[ @@ -10423,7 +11359,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "service.version": AttributeMetadata( brief="The version string of the service API or implementation. The format is not defined by these conventions.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="5.0.0", aliases=["sentry.release"], @@ -10435,7 +11373,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "thread.id": AttributeMetadata( brief="Current “managed” thread ID.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=56, changelog=[ @@ -10445,7 +11385,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "thread.name": AttributeMetadata( brief="Current thread name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="main", changelog=[ @@ -10456,7 +11398,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "timber.tag": AttributeMetadata( brief="The log tag provided by the timber logging framework.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="MyTag", sdks=["sentry.java.android"], @@ -10467,10 +11411,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET /", - deprecation=DeprecationInfo(replacement="sentry.transaction"), + deprecation=DeprecationInfo( + replacement="sentry.transaction" + ), aliases=["sentry.transaction"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -10480,13 +11428,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ttfb.requestTime": AttributeMetadata( brief="The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1554.5814, deprecation=DeprecationInfo( replacement="browser.web_vital.ttfb.request_time", reason="This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.ttfb.request_time"], sdks=["javascript-browser"], @@ -10497,13 +11447,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ttfb": AttributeMetadata( brief="The value of the recorded Time To First Byte (TTFB) web vital in milliseconds", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=194, deprecation=DeprecationInfo( replacement="browser.web_vital.ttfb.value", reason="This attribute is being deprecated in favor of browser.web_vital.ttfb.value", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["browser.web_vital.ttfb.value"], sdks=["javascript-browser"], @@ -10514,10 +11466,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "type": AttributeMetadata( brief="More granular type of the operation happening.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="fetch", - sdks=["javascript-browser", "javascript-node"], + sdks=["javascript-browser","javascript-node"], changelog=[ ChangelogEntry(version="0.0.0"), ], @@ -10525,7 +11479,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ui.component_name": AttributeMetadata( brief="The name of the associated component.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="HomeButton", changelog=[ @@ -10536,7 +11492,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ui.contributes_to_ttfd": AttributeMetadata( brief="Whether the span execution contributed to the TTFD (time to fully drawn) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, changelog=[ @@ -10546,7 +11504,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ui.contributes_to_ttid": AttributeMetadata( brief="Whether the span execution contributed to the TTID (time to initial display) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, changelog=[ @@ -10556,136 +11516,126 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ui.element.height": AttributeMetadata( brief="The height of the UI element (for Html in pixels)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=256, sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[284], - description="Added ui.element.height attribute", - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.height attribute"), ], ), "ui.element.id": AttributeMetadata( brief="The id of the UI element", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="btn-login", sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", prs=[284], description="Added ui.element.id attribute" - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.id attribute"), ], ), "ui.element.identifier": AttributeMetadata( brief="The identifier used to measure the UI element timing", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="heroImage", sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[284], - description="Added ui.element.identifier attribute", - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.identifier attribute"), ], ), "ui.element.load_time": AttributeMetadata( brief="The loading time of a UI element (from time origin to finished loading)", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=998.2234, sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[284], - description="Added ui.element.load_time attribute", - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.load_time attribute"), ], ), "ui.element.paint_type": AttributeMetadata( brief="The type of element paint. Can either be 'image-paint' or 'text-paint'", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="image-paint", sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[284], - description="Added ui.element.paint_type attribute", - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.paint_type attribute"), ], ), "ui.element.render_time": AttributeMetadata( brief="The rendering time of the UI element (from time origin to finished rendering)", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1023.1124, sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[284], - description="Added ui.element.render_time attribute", - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.render_time attribute"), ], ), "ui.element.type": AttributeMetadata( brief="type of the UI element", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="img", sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", prs=[284], description="Added ui.element.type attribute" - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.type attribute"), ], ), "ui.element.url": AttributeMetadata( brief="The URL of the UI element (e.g. an img src)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://assets.myapp.com/hero.png", sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", prs=[284], description="Added ui.element.url attribute" - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.url attribute"), ], ), "ui.element.width": AttributeMetadata( brief="The width of the UI element (for HTML in pixels)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=512, sdks=["javascript-browser"], changelog=[ - ChangelogEntry( - version="next", - prs=[284], - description="Added ui.element.width attribute", - ), + ChangelogEntry(version="next", prs=[284], description="Added ui.element.width attribute"), ], ), "url.domain": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", changelog=[ @@ -10696,7 +11646,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="details", changelog=[ @@ -10706,10 +11658,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.full": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - aliases=["http.url", "url"], + aliases=["http.url","url"], changelog=[ ChangelogEntry(version="0.1.0", prs=[108]), ChangelogEntry(version="0.0.0"), @@ -10718,7 +11672,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.path": AttributeMetadata( brief="The URI path component.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/foo", changelog=[ @@ -10728,7 +11684,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.path.parameter.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="url.path.parameter.id='123'", @@ -10740,7 +11698,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example=1337, changelog=[ @@ -10753,7 +11713,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." ), is_in_otel=True, example="foo=bar&bar=baz", @@ -10764,7 +11724,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https", aliases=["http.scheme"], @@ -10776,7 +11738,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.template": AttributeMetadata( brief="The low-cardinality template of an absolute path reference.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/users/:id", aliases=["http.route"], @@ -10788,12 +11752,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo(replacement="url.full"), - aliases=["url.full", "http.url"], - sdks=["javascript-browser", "javascript-node"], + deprecation=DeprecationInfo( + replacement="url.full" + ), + aliases=["url.full","http.url"], + sdks=["javascript-browser","javascript-node"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61]), ChangelogEntry(version="0.0.0"), @@ -10802,7 +11770,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.email": AttributeMetadata( brief="User email address.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="test@example.com", changelog=[ @@ -10812,7 +11782,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.full_name": AttributeMetadata( brief="User's full name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="John Smith", changelog=[ @@ -10822,7 +11794,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.geo.city": AttributeMetadata( brief="Human readable city name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Toronto", changelog=[ @@ -10832,7 +11806,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.geo.country_code": AttributeMetadata( brief="Two-letter country code (ISO 3166-1 alpha-2).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="CA", changelog=[ @@ -10842,7 +11818,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.geo.region": AttributeMetadata( brief="Human readable region name or code.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Canada", changelog=[ @@ -10852,7 +11830,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.geo.subdivision": AttributeMetadata( brief="Human readable subdivision name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Ontario", changelog=[ @@ -10862,7 +11842,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.hash": AttributeMetadata( brief="Unique user hash to correlate information for a user in anonymized form.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", changelog=[ @@ -10872,7 +11854,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.id": AttributeMetadata( brief="Unique identifier of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="S-1-5-21-202424912787-2692429404-2351956786-1000", changelog=[ @@ -10882,7 +11866,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.ip_address": AttributeMetadata( brief="The IP address of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="192.168.1.1", changelog=[ @@ -10892,7 +11878,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.name": AttributeMetadata( brief="Short name or login/username of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="j.smith", changelog=[ @@ -10902,7 +11890,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.roles": AttributeMetadata( brief="Array of user roles at the time of the event.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example=["admin", "editor"], changelog=[ @@ -10912,7 +11902,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user_agent.original": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", aliases=["http.user_agent"], @@ -10924,7 +11916,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.branch": AttributeMetadata( brief="Git branch name for Vercel project", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="main", changelog=[ @@ -10934,7 +11928,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.build_id": AttributeMetadata( brief="Identifier for the Vercel build (only present on build logs)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="bld_cotnkcr76", changelog=[ @@ -10944,7 +11940,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.deployment_id": AttributeMetadata( brief="Identifier for the Vercel deployment", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="dpl_233NRGRjVZX1caZrXWtz5g1TAksD", changelog=[ @@ -10954,7 +11952,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.destination": AttributeMetadata( brief="Origin of the external content in Vercel (only on external logs)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://vitals.vercel-insights.com/v1", changelog=[ @@ -10964,7 +11964,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.edge_type": AttributeMetadata( brief="Type of edge runtime in Vercel", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="edge-function", changelog=[ @@ -10974,7 +11976,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.entrypoint": AttributeMetadata( brief="Entrypoint for the request in Vercel", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="api/index.js", changelog=[ @@ -10984,7 +11988,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.execution_region": AttributeMetadata( brief="Region where the request is executed", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sfo1", changelog=[ @@ -10994,7 +12000,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.id": AttributeMetadata( brief="Unique identifier for the log entry in Vercel", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1573817187330377061717300000", changelog=[ @@ -11004,7 +12012,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.ja3_digest": AttributeMetadata( brief="JA3 fingerprint digest of Vercel request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0", changelog=[ @@ -11014,7 +12024,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.ja4_digest": AttributeMetadata( brief="JA4 fingerprint digest", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="t13d1516h2_8daaf6152771_02713d6af862", changelog=[ @@ -11024,7 +12036,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.log_type": AttributeMetadata( brief="Vercel log output type", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="stdout", changelog=[ @@ -11034,7 +12048,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.project_id": AttributeMetadata( brief="Identifier for the Vercel project", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="gdufoJxB6b9b1fEqr1jUtFkyavUU", changelog=[ @@ -11044,7 +12060,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.project_name": AttributeMetadata( brief="Name of the Vercel project", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="my-app", changelog=[ @@ -11054,7 +12072,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.cache_id": AttributeMetadata( brief="Original request ID when request is served from cache", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="pdx1::v8g4b-1744143786684-93dafbc0f70d", changelog=[ @@ -11064,7 +12084,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.client_ip": AttributeMetadata( brief="Client IP address", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="120.75.16.101", changelog=[ @@ -11074,7 +12096,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.host": AttributeMetadata( brief="Hostname of the request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="test.vercel.app", changelog=[ @@ -11084,7 +12108,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.lambda_region": AttributeMetadata( brief="Region where lambda function executed", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sfo1", changelog=[ @@ -11094,7 +12120,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.method": AttributeMetadata( brief="HTTP method of the request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="GET", changelog=[ @@ -11104,7 +12132,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.path": AttributeMetadata( brief="Request path with query parameters", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="/dynamic/some-value.json?route=some-value", changelog=[ @@ -11114,7 +12144,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.path_type": AttributeMetadata( brief="How the request was served based on its path and project configuration", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="func", changelog=[ @@ -11124,7 +12156,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.path_type_variant": AttributeMetadata( brief="Variant of the path type", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="api", changelog=[ @@ -11134,7 +12168,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.referer": AttributeMetadata( brief="Referer of the request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="*.vercel.app", changelog=[ @@ -11144,7 +12180,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.region": AttributeMetadata( brief="Region where the request is processed", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sfo1", changelog=[ @@ -11154,7 +12192,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.response_byte_size": AttributeMetadata( brief="Size of the response in bytes", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1024, changelog=[ @@ -11165,7 +12205,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.scheme": AttributeMetadata( brief="Protocol of the request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="https", changelog=[ @@ -11175,7 +12217,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.status_code": AttributeMetadata( brief="HTTP status code of the proxy request", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=200, changelog=[ @@ -11186,7 +12230,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.timestamp": AttributeMetadata( brief="Unix timestamp when the proxy request was made", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=1573817250172, changelog=[ @@ -11197,7 +12243,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.user_agent": AttributeMetadata( brief="User agent strings of the request", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["Mozilla/5.0..."], changelog=[ @@ -11207,7 +12255,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.vercel_cache": AttributeMetadata( brief="Cache status sent to the browser", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="REVALIDATED", changelog=[ @@ -11217,7 +12267,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.vercel_id": AttributeMetadata( brief="Vercel-specific identifier", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sfo1::abc123", changelog=[ @@ -11227,7 +12279,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.waf_action": AttributeMetadata( brief="Action taken by firewall rules", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="deny", changelog=[ @@ -11237,7 +12291,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.waf_rule_id": AttributeMetadata( brief="ID of the firewall rule that matched", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="rule_gAHz8jtSB1Gy", changelog=[ @@ -11247,7 +12303,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.request_id": AttributeMetadata( brief="Identifier of the Vercel request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="643af4e3-975a-4cc7-9e7a-1eda11539d90", changelog=[ @@ -11257,7 +12315,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.source": AttributeMetadata( brief="Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="build", changelog=[ @@ -11267,7 +12327,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.status_code": AttributeMetadata( brief="HTTP status code of the request (-1 means no response returned and the lambda crashed)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=200, changelog=[ @@ -11282,490 +12344,504 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): If a key is not present in this dictionary, it means that attribute is not defined in the Sentry Semantic Conventions. """ -Attributes = TypedDict( - "Attributes", - { - "ai.citations": List[str], - "ai.completion_tokens.used": int, - "ai.documents": List[str], - "ai.finish_reason": str, - "ai.frequency_penalty": float, - "ai.function_call": str, - "ai.generation_id": str, - "ai.input_messages": str, - "ai.is_search_required": bool, - "ai.metadata": str, - "ai.model.provider": str, - "ai.model_id": str, - "ai.pipeline.name": str, - "ai.preamble": str, - "ai.presence_penalty": float, - "ai.prompt_tokens.used": int, - "ai.raw_prompting": bool, - "ai.response_format": str, - "ai.responses": List[str], - "ai.search_queries": List[str], - "ai.search_results": List[str], - "ai.seed": str, - "ai.streaming": bool, - "ai.tags": str, - "ai.temperature": float, - "ai.texts": List[str], - "ai.tool_calls": List[str], - "ai.tools": List[str], - "ai.top_k": int, - "ai.top_p": float, - "ai.total_cost": float, - "ai.total_tokens.used": int, - "ai.warnings": List[str], - "app.build": str, - "app.identifier": str, - "app.in_foreground": bool, - "app.name": str, - "app.start_time": str, - "app.version": str, - "app_start_type": str, - "blocked_main_thread": bool, - "browser.name": str, - "browser.report.type": str, - "browser.script.invoker": str, - "browser.script.invoker_type": str, - "browser.script.source_char_position": int, - "browser.version": str, - "browser.web_vital.cls.source.": str, - "browser.web_vital.cls.value": float, - "browser.web_vital.fcp.value": float, - "browser.web_vital.fp.value": float, - "browser.web_vital.inp.value": float, - "browser.web_vital.lcp.element": str, - "browser.web_vital.lcp.id": str, - "browser.web_vital.lcp.load_time": int, - "browser.web_vital.lcp.render_time": int, - "browser.web_vital.lcp.size": int, - "browser.web_vital.lcp.url": str, - "browser.web_vital.lcp.value": float, - "browser.web_vital.ttfb.request_time": float, - "browser.web_vital.ttfb.value": float, - "cache.hit": bool, - "cache.item_size": int, - "cache.key": List[str], - "cache.operation": str, - "cache.ttl": int, - "channel": str, - "client.address": str, - "client.port": int, - "cloudflare.d1.duration": int, - "cloudflare.d1.rows_read": int, - "cloudflare.d1.rows_written": int, - "cls.source.": str, - "cls": float, - "code.file.path": str, - "code.filepath": str, - "code.function": str, - "code.function.name": str, - "code.line.number": int, - "code.lineno": int, - "code.namespace": str, - "culture.calendar": str, - "culture.display_name": str, - "culture.is_24_hour_format": bool, - "culture.locale": str, - "culture.timezone": str, - "db.collection.name": str, - "db.name": str, - "db.namespace": str, - "db.operation": str, - "db.operation.name": str, - "db.query.parameter.": str, - "db.query.summary": str, - "db.query.text": str, - "db.redis.connection": str, - "db.redis.parameters": List[str], - "db.sql.bindings": List[str], - "db.statement": str, - "db.system": str, - "db.system.name": str, - "db.user": str, - "device.brand": str, - "device.class": str, - "device.family": str, - "device.free_memory": int, - "device.memory.estimated_capacity": int, - "device.memory_size": int, - "device.model": str, - "device.model_id": str, - "device.processor_count": int, - "device.simulator": bool, - "deviceMemory": str, - "environment": str, - "error.type": str, - "event.id": int, - "event.name": str, - "exception.escaped": bool, - "exception.message": str, - "exception.stacktrace": str, - "exception.type": str, - "faas.coldstart": bool, - "faas.cron": str, - "faas.time": str, - "faas.trigger": str, - "fcp": float, - "flag.evaluation.": bool, - "fp": float, - "frames.delay": int, - "frames.frozen": int, - "frames.slow": int, - "frames.total": int, - "fs_error": str, - "gen_ai.agent.name": str, - "gen_ai.conversation.id": str, - "gen_ai.cost.input_tokens": float, - "gen_ai.cost.output_tokens": float, - "gen_ai.cost.total_tokens": float, - "gen_ai.embeddings.input": str, - "gen_ai.input.messages": str, - "gen_ai.operation.name": str, - "gen_ai.operation.type": str, - "gen_ai.output.messages": str, - "gen_ai.pipeline.name": str, - "gen_ai.prompt": str, - "gen_ai.provider.name": str, - "gen_ai.request.available_tools": str, - "gen_ai.request.frequency_penalty": float, - "gen_ai.request.max_tokens": int, - "gen_ai.request.messages": str, - "gen_ai.request.model": str, - "gen_ai.request.presence_penalty": float, - "gen_ai.request.seed": str, - "gen_ai.request.temperature": float, - "gen_ai.request.top_k": int, - "gen_ai.request.top_p": float, - "gen_ai.response.finish_reasons": str, - "gen_ai.response.id": str, - "gen_ai.response.model": str, - "gen_ai.response.streaming": bool, - "gen_ai.response.text": str, - "gen_ai.response.time_to_first_token": float, - "gen_ai.response.tokens_per_second": float, - "gen_ai.response.tool_calls": str, - "gen_ai.system": str, - "gen_ai.system.message": str, - "gen_ai.system_instructions": str, - "gen_ai.tool.call.arguments": str, - "gen_ai.tool.call.result": str, - "gen_ai.tool.definitions": str, - "gen_ai.tool.description": str, - "gen_ai.tool.input": str, - "gen_ai.tool.message": str, - "gen_ai.tool.name": str, - "gen_ai.tool.output": str, - "gen_ai.tool.type": str, - "gen_ai.usage.completion_tokens": int, - "gen_ai.usage.input_tokens": int, - "gen_ai.usage.input_tokens.cache_write": int, - "gen_ai.usage.input_tokens.cached": int, - "gen_ai.usage.output_tokens": int, - "gen_ai.usage.output_tokens.reasoning": int, - "gen_ai.usage.prompt_tokens": int, - "gen_ai.usage.total_tokens": int, - "graphql.operation.name": str, - "graphql.operation.type": str, - "hardwareConcurrency": str, - "http.client_ip": str, - "http.decoded_response_content_length": int, - "http.flavor": str, - "http.fragment": str, - "http.host": str, - "http.method": str, - "http.query": str, - "http.request.connect_start": float, - "http.request.connection_end": float, - "http.request.domain_lookup_end": float, - "http.request.domain_lookup_start": float, - "http.request.fetch_start": float, - "http.request.header.": List[str], - "http.request.method": str, - "http.request.redirect_end": float, - "http.request.redirect_start": float, - "http.request.request_start": float, - "http.request.resend_count": int, - "http.request.response_end": float, - "http.request.response_start": float, - "http.request.secure_connection_start": float, - "http.request.time_to_first_byte": float, - "http.request.worker_start": float, - "http.response.body.size": int, - "http.response.header.": List[str], - "http.response.header.content-length": str, - "http.response.size": int, - "http.response.status_code": int, - "http.response_content_length": int, - "http.response_transfer_size": int, - "http.route": str, - "http.scheme": str, - "http.server.request.time_in_queue": float, - "http.server_name": str, - "http.status_code": int, - "http.target": str, - "http.url": str, - "http.user_agent": str, - "id": str, - "inp": float, - "jvm.gc.action": str, - "jvm.gc.name": str, - "jvm.memory.pool.name": str, - "jvm.memory.type": str, - "jvm.thread.daemon": bool, - "jvm.thread.state": str, - "lcp.element": str, - "lcp.id": str, - "lcp.loadTime": int, - "lcp.renderTime": int, - "lcp.size": int, - "lcp.url": str, - "lcp": float, - "logger.name": str, - "mcp.cancelled.reason": str, - "mcp.cancelled.request_id": str, - "mcp.client.name": str, - "mcp.client.title": str, - "mcp.client.version": str, - "mcp.lifecycle.phase": str, - "mcp.logging.data_type": str, - "mcp.logging.level": str, - "mcp.logging.logger": str, - "mcp.logging.message": str, - "mcp.method.name": str, - "mcp.progress.current": int, - "mcp.progress.message": str, - "mcp.progress.percentage": float, - "mcp.progress.token": str, - "mcp.progress.total": int, - "mcp.prompt.name": str, - "mcp.prompt.result.description": str, - "mcp.prompt.result.message_content": str, - "mcp.prompt.result.message_count": int, - "mcp.prompt.result.message_role": str, - "mcp.protocol.ready": int, - "mcp.protocol.version": str, - "mcp.request.argument.": str, - "mcp.request.argument.name": str, - "mcp.request.argument.uri": str, - "mcp.request.id": str, - "mcp.resource.protocol": str, - "mcp.resource.uri": str, - "mcp.server.name": str, - "mcp.server.title": str, - "mcp.server.version": str, - "mcp.session.id": str, - "mcp.tool.name": str, - "mcp.tool.result.content": str, - "mcp.tool.result.content_count": int, - "mcp.tool.result.is_error": bool, - "mcp.transport": str, - "mdc.": str, - "messaging.destination.connection": str, - "messaging.destination.name": str, - "messaging.message.body.size": int, - "messaging.message.envelope.size": int, - "messaging.message.id": str, - "messaging.message.receive.latency": int, - "messaging.message.retry.count": int, - "messaging.operation.type": str, - "messaging.system": str, - "method": str, - "navigation.type": str, - "nel.elapsed_time": int, - "nel.phase": str, - "nel.referrer": str, - "nel.sampling_function": float, - "nel.type": str, - "net.host.ip": str, - "net.host.name": str, - "net.host.port": int, - "net.peer.ip": str, - "net.peer.name": str, - "net.peer.port": int, - "net.protocol.name": str, - "net.protocol.version": str, - "net.sock.family": str, - "net.sock.host.addr": str, - "net.sock.host.port": int, - "net.sock.peer.addr": str, - "net.sock.peer.name": str, - "net.sock.peer.port": int, - "net.transport": str, - "network.local.address": str, - "network.local.port": int, - "network.peer.address": str, - "network.peer.port": int, - "network.protocol.name": str, - "network.protocol.version": str, - "network.transport": str, - "network.type": str, - "os.build_id": str, - "os.description": str, - "os.name": str, - "os.type": str, - "os.version": str, - "otel.scope.name": str, - "otel.scope.version": str, - "otel.status_code": str, - "otel.status_description": str, - "params.": str, - "previous_route": str, - "process.executable.name": str, - "process.pid": int, - "process.runtime.description": str, - "process.runtime.name": str, - "process.runtime.version": str, - "query.": str, - "release": str, - "remix.action_form_data.": str, - "replay_id": str, - "resource.deployment.environment": str, - "resource.deployment.environment.name": str, - "resource.render_blocking_status": str, - "route": str, - "rpc.grpc.status_code": int, - "rpc.service": str, - "sentry.action": str, - "sentry.browser.name": str, - "sentry.browser.version": str, - "sentry.cancellation_reason": str, - "sentry.category": str, - "sentry.client_sample_rate": float, - "sentry.description": str, - "sentry.dist": str, - "sentry.domain": str, - "sentry.dsc.environment": str, - "sentry.dsc.public_key": str, - "sentry.dsc.release": str, - "sentry.dsc.sample_rate": str, - "sentry.dsc.sampled": bool, - "sentry.dsc.trace_id": str, - "sentry.dsc.transaction": str, - "sentry.environment": str, - "sentry.exclusive_time": float, - "sentry.graphql.operation": str, - "sentry.group": str, - "sentry.http.prefetch": bool, - "sentry.idle_span_finish_reason": str, - "sentry.is_remote": bool, - "sentry.kind": str, - "sentry.message.parameter.": str, - "sentry.message.template": str, - "sentry.module.": str, - "sentry.nextjs.ssr.function.route": str, - "sentry.nextjs.ssr.function.type": str, - "sentry.normalized_db_query": str, - "sentry.normalized_db_query.hash": str, - "sentry.normalized_description": str, - "sentry.observed_timestamp_nanos": str, - "sentry.op": str, - "sentry.origin": str, - "sentry.platform": str, - "sentry.profiler_id": str, - "sentry.release": str, - "sentry.replay_id": str, - "sentry.replay_is_buffering": bool, - "sentry.sdk.integrations": List[str], - "sentry.sdk.name": str, - "sentry.sdk.version": str, - "sentry.segment.id": str, - "sentry.segment.name": str, - "sentry.segment_id": str, - "sentry.server_sample_rate": float, - "sentry.source": str, - "sentry.span.source": str, - "sentry.status.message": str, - "sentry.status_code": int, - "sentry.timestamp.sequence": int, - "sentry.trace.parent_span_id": str, - "sentry.transaction": str, - "server.address": str, - "server.port": int, - "service.name": str, - "service.version": str, - "thread.id": int, - "thread.name": str, - "timber.tag": str, - "transaction": str, - "ttfb.requestTime": float, - "ttfb": float, - "type": str, - "ui.component_name": str, - "ui.contributes_to_ttfd": bool, - "ui.contributes_to_ttid": bool, - "ui.element.height": int, - "ui.element.id": str, - "ui.element.identifier": str, - "ui.element.load_time": float, - "ui.element.paint_type": str, - "ui.element.render_time": float, - "ui.element.type": str, - "ui.element.url": str, - "ui.element.width": int, - "url.domain": str, - "url.fragment": str, - "url.full": str, - "url.path": str, - "url.path.parameter.": str, - "url.port": int, - "url.query": str, - "url.scheme": str, - "url.template": str, - "url": str, - "user.email": str, - "user.full_name": str, - "user.geo.city": str, - "user.geo.country_code": str, - "user.geo.region": str, - "user.geo.subdivision": str, - "user.hash": str, - "user.id": str, - "user.ip_address": str, - "user.name": str, - "user.roles": List[str], - "user_agent.original": str, - "vercel.branch": str, - "vercel.build_id": str, - "vercel.deployment_id": str, - "vercel.destination": str, - "vercel.edge_type": str, - "vercel.entrypoint": str, - "vercel.execution_region": str, - "vercel.id": str, - "vercel.ja3_digest": str, - "vercel.ja4_digest": str, - "vercel.log_type": str, - "vercel.project_id": str, - "vercel.project_name": str, - "vercel.proxy.cache_id": str, - "vercel.proxy.client_ip": str, - "vercel.proxy.host": str, - "vercel.proxy.lambda_region": str, - "vercel.proxy.method": str, - "vercel.proxy.path": str, - "vercel.proxy.path_type": str, - "vercel.proxy.path_type_variant": str, - "vercel.proxy.referer": str, - "vercel.proxy.region": str, - "vercel.proxy.response_byte_size": int, - "vercel.proxy.scheme": str, - "vercel.proxy.status_code": int, - "vercel.proxy.timestamp": int, - "vercel.proxy.user_agent": List[str], - "vercel.proxy.vercel_cache": str, - "vercel.proxy.vercel_id": str, - "vercel.proxy.waf_action": str, - "vercel.proxy.waf_rule_id": str, - "vercel.request_id": str, - "vercel.source": str, - "vercel.status_code": int, - }, - total=False, -) +Attributes = TypedDict("Attributes", { + "ai.citations": List[str], + "ai.completion_tokens.used": int, + "ai.documents": List[str], + "ai.finish_reason": str, + "ai.frequency_penalty": float, + "ai.function_call": str, + "ai.generation_id": str, + "ai.input_messages": str, + "ai.is_search_required": bool, + "ai.metadata": str, + "ai.model.provider": str, + "ai.model_id": str, + "ai.pipeline.name": str, + "ai.preamble": str, + "ai.presence_penalty": float, + "ai.prompt_tokens.used": int, + "ai.raw_prompting": bool, + "ai.response_format": str, + "ai.responses": List[str], + "ai.search_queries": List[str], + "ai.search_results": List[str], + "ai.seed": str, + "ai.streaming": bool, + "ai.tags": str, + "ai.temperature": float, + "ai.texts": List[str], + "ai.tool_calls": List[str], + "ai.tools": List[str], + "ai.top_k": int, + "ai.top_p": float, + "ai.total_cost": float, + "ai.total_tokens.used": int, + "ai.warnings": List[str], + "app.build": str, + "app.identifier": str, + "app.in_foreground": bool, + "app.name": str, + "app.start_time": str, + "app.version": str, + "app_start_type": str, + "blocked_main_thread": bool, + "browser.name": str, + "browser.report.type": str, + "browser.script.invoker": str, + "browser.script.invoker_type": str, + "browser.script.source_char_position": int, + "browser.version": str, + "browser.web_vital.cls.source.": str, + "browser.web_vital.cls.value": float, + "browser.web_vital.fcp.value": float, + "browser.web_vital.fp.value": float, + "browser.web_vital.inp.value": float, + "browser.web_vital.lcp.element": str, + "browser.web_vital.lcp.id": str, + "browser.web_vital.lcp.load_time": int, + "browser.web_vital.lcp.render_time": int, + "browser.web_vital.lcp.size": int, + "browser.web_vital.lcp.url": str, + "browser.web_vital.lcp.value": float, + "browser.web_vital.ttfb.request_time": float, + "browser.web_vital.ttfb.value": float, + "cache.hit": bool, + "cache.item_size": int, + "cache.key": List[str], + "cache.operation": str, + "cache.ttl": int, + "channel": str, + "client.address": str, + "client.port": int, + "cloudflare.d1.duration": int, + "cloudflare.d1.rows_read": int, + "cloudflare.d1.rows_written": int, + "cls.source.": str, + "cls": float, + "code.file.path": str, + "code.filepath": str, + "code.function": str, + "code.function.name": str, + "code.line.number": int, + "code.lineno": int, + "code.namespace": str, + "culture.calendar": str, + "culture.display_name": str, + "culture.is_24_hour_format": bool, + "culture.locale": str, + "culture.timezone": str, + "db.collection.name": str, + "db.name": str, + "db.namespace": str, + "db.operation": str, + "db.operation.name": str, + "db.query.parameter.": str, + "db.query.summary": str, + "db.query.text": str, + "db.redis.connection": str, + "db.redis.parameters": List[str], + "db.sql.bindings": List[str], + "db.statement": str, + "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.class": str, + "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.usable_memory": int, + "deviceMemory": str, + "environment": str, + "error.type": str, + "event.id": int, + "event.name": str, + "exception.escaped": bool, + "exception.message": str, + "exception.stacktrace": str, + "exception.type": str, + "faas.coldstart": bool, + "faas.cron": str, + "faas.time": str, + "faas.trigger": str, + "fcp": float, + "flag.evaluation.": bool, + "fp": float, + "frames.delay": int, + "frames.frozen": int, + "frames.slow": int, + "frames.total": int, + "fs_error": str, + "gen_ai.agent.name": str, + "gen_ai.conversation.id": str, + "gen_ai.cost.input_tokens": float, + "gen_ai.cost.output_tokens": float, + "gen_ai.cost.total_tokens": float, + "gen_ai.embeddings.input": str, + "gen_ai.input.messages": str, + "gen_ai.operation.name": str, + "gen_ai.operation.type": str, + "gen_ai.output.messages": str, + "gen_ai.pipeline.name": str, + "gen_ai.prompt": str, + "gen_ai.provider.name": str, + "gen_ai.request.available_tools": str, + "gen_ai.request.frequency_penalty": float, + "gen_ai.request.max_tokens": int, + "gen_ai.request.messages": str, + "gen_ai.request.model": str, + "gen_ai.request.presence_penalty": float, + "gen_ai.request.seed": str, + "gen_ai.request.temperature": float, + "gen_ai.request.top_k": int, + "gen_ai.request.top_p": float, + "gen_ai.response.finish_reasons": str, + "gen_ai.response.id": str, + "gen_ai.response.model": str, + "gen_ai.response.streaming": bool, + "gen_ai.response.text": str, + "gen_ai.response.time_to_first_token": float, + "gen_ai.response.tokens_per_second": float, + "gen_ai.response.tool_calls": str, + "gen_ai.system": str, + "gen_ai.system.message": str, + "gen_ai.system_instructions": str, + "gen_ai.tool.call.arguments": str, + "gen_ai.tool.call.result": str, + "gen_ai.tool.definitions": str, + "gen_ai.tool.description": str, + "gen_ai.tool.input": str, + "gen_ai.tool.message": str, + "gen_ai.tool.name": str, + "gen_ai.tool.output": str, + "gen_ai.tool.type": str, + "gen_ai.usage.completion_tokens": int, + "gen_ai.usage.input_tokens": int, + "gen_ai.usage.input_tokens.cache_write": int, + "gen_ai.usage.input_tokens.cached": int, + "gen_ai.usage.output_tokens": int, + "gen_ai.usage.output_tokens.reasoning": int, + "gen_ai.usage.prompt_tokens": int, + "gen_ai.usage.total_tokens": int, + "graphql.operation.name": str, + "graphql.operation.type": str, + "hardwareConcurrency": str, + "http.client_ip": str, + "http.decoded_response_content_length": int, + "http.flavor": str, + "http.fragment": str, + "http.host": str, + "http.method": str, + "http.query": str, + "http.request.connect_start": float, + "http.request.connection_end": float, + "http.request.domain_lookup_end": float, + "http.request.domain_lookup_start": float, + "http.request.fetch_start": float, + "http.request.header.": List[str], + "http.request.method": str, + "http.request.redirect_end": float, + "http.request.redirect_start": float, + "http.request.request_start": float, + "http.request.resend_count": int, + "http.request.response_end": float, + "http.request.response_start": float, + "http.request.secure_connection_start": float, + "http.request.time_to_first_byte": float, + "http.request.worker_start": float, + "http.response.body.size": int, + "http.response.header.": List[str], + "http.response.header.content-length": str, + "http.response.size": int, + "http.response.status_code": int, + "http.response_content_length": int, + "http.response_transfer_size": int, + "http.route": str, + "http.scheme": str, + "http.server.request.time_in_queue": float, + "http.server_name": str, + "http.status_code": int, + "http.target": str, + "http.url": str, + "http.user_agent": str, + "id": str, + "inp": float, + "jvm.gc.action": str, + "jvm.gc.name": str, + "jvm.memory.pool.name": str, + "jvm.memory.type": str, + "jvm.thread.daemon": bool, + "jvm.thread.state": str, + "lcp.element": str, + "lcp.id": str, + "lcp.loadTime": int, + "lcp.renderTime": int, + "lcp.size": int, + "lcp.url": str, + "lcp": float, + "logger.name": str, + "mcp.cancelled.reason": str, + "mcp.cancelled.request_id": str, + "mcp.client.name": str, + "mcp.client.title": str, + "mcp.client.version": str, + "mcp.lifecycle.phase": str, + "mcp.logging.data_type": str, + "mcp.logging.level": str, + "mcp.logging.logger": str, + "mcp.logging.message": str, + "mcp.method.name": str, + "mcp.progress.current": int, + "mcp.progress.message": str, + "mcp.progress.percentage": float, + "mcp.progress.token": str, + "mcp.progress.total": int, + "mcp.prompt.name": str, + "mcp.prompt.result.description": str, + "mcp.prompt.result.message_content": str, + "mcp.prompt.result.message_count": int, + "mcp.prompt.result.message_role": str, + "mcp.protocol.ready": int, + "mcp.protocol.version": str, + "mcp.request.argument.": str, + "mcp.request.argument.name": str, + "mcp.request.argument.uri": str, + "mcp.request.id": str, + "mcp.resource.protocol": str, + "mcp.resource.uri": str, + "mcp.server.name": str, + "mcp.server.title": str, + "mcp.server.version": str, + "mcp.session.id": str, + "mcp.tool.name": str, + "mcp.tool.result.content": str, + "mcp.tool.result.content_count": int, + "mcp.tool.result.is_error": bool, + "mcp.transport": str, + "mdc.": str, + "messaging.destination.connection": str, + "messaging.destination.name": str, + "messaging.message.body.size": int, + "messaging.message.envelope.size": int, + "messaging.message.id": str, + "messaging.message.receive.latency": int, + "messaging.message.retry.count": int, + "messaging.operation.type": str, + "messaging.system": str, + "method": str, + "navigation.type": str, + "nel.elapsed_time": int, + "nel.phase": str, + "nel.referrer": str, + "nel.sampling_function": float, + "nel.type": str, + "net.host.ip": str, + "net.host.name": str, + "net.host.port": int, + "net.peer.ip": str, + "net.peer.name": str, + "net.peer.port": int, + "net.protocol.name": str, + "net.protocol.version": str, + "net.sock.family": str, + "net.sock.host.addr": str, + "net.sock.host.port": int, + "net.sock.peer.addr": str, + "net.sock.peer.name": str, + "net.sock.peer.port": int, + "net.transport": str, + "network.local.address": str, + "network.local.port": int, + "network.peer.address": str, + "network.peer.port": int, + "network.protocol.name": str, + "network.protocol.version": str, + "network.transport": str, + "network.type": str, + "os.build_id": str, + "os.description": str, + "os.name": str, + "os.type": str, + "os.version": str, + "otel.scope.name": str, + "otel.scope.version": str, + "otel.status_code": str, + "otel.status_description": str, + "params.": str, + "previous_route": str, + "process.executable.name": str, + "process.pid": int, + "process.runtime.description": str, + "process.runtime.name": str, + "process.runtime.version": str, + "query.": str, + "release": str, + "remix.action_form_data.": str, + "replay_id": str, + "resource.deployment.environment": str, + "resource.deployment.environment.name": str, + "resource.render_blocking_status": str, + "route": str, + "rpc.grpc.status_code": int, + "rpc.service": str, + "sentry.action": str, + "sentry.browser.name": str, + "sentry.browser.version": str, + "sentry.cancellation_reason": str, + "sentry.category": str, + "sentry.client_sample_rate": float, + "sentry.description": str, + "sentry.dist": str, + "sentry.domain": str, + "sentry.dsc.environment": str, + "sentry.dsc.public_key": str, + "sentry.dsc.release": str, + "sentry.dsc.sample_rate": str, + "sentry.dsc.sampled": bool, + "sentry.dsc.trace_id": str, + "sentry.dsc.transaction": str, + "sentry.environment": str, + "sentry.exclusive_time": float, + "sentry.graphql.operation": str, + "sentry.group": str, + "sentry.http.prefetch": bool, + "sentry.idle_span_finish_reason": str, + "sentry.is_remote": bool, + "sentry.kind": str, + "sentry.message.parameter.": str, + "sentry.message.template": str, + "sentry.module.": str, + "sentry.nextjs.ssr.function.route": str, + "sentry.nextjs.ssr.function.type": str, + "sentry.normalized_db_query": str, + "sentry.normalized_db_query.hash": str, + "sentry.normalized_description": str, + "sentry.observed_timestamp_nanos": str, + "sentry.op": str, + "sentry.origin": str, + "sentry.platform": str, + "sentry.profiler_id": str, + "sentry.release": str, + "sentry.replay_id": str, + "sentry.replay_is_buffering": bool, + "sentry.sdk.integrations": List[str], + "sentry.sdk.name": str, + "sentry.sdk.version": str, + "sentry.segment.id": str, + "sentry.segment.name": str, + "sentry.segment_id": str, + "sentry.server_sample_rate": float, + "sentry.source": str, + "sentry.span.source": str, + "sentry.status.message": str, + "sentry.status_code": int, + "sentry.timestamp.sequence": int, + "sentry.trace.parent_span_id": str, + "sentry.transaction": str, + "server.address": str, + "server.port": int, + "service.name": str, + "service.version": str, + "thread.id": int, + "thread.name": str, + "timber.tag": str, + "transaction": str, + "ttfb.requestTime": float, + "ttfb": float, + "type": str, + "ui.component_name": str, + "ui.contributes_to_ttfd": bool, + "ui.contributes_to_ttid": bool, + "ui.element.height": int, + "ui.element.id": str, + "ui.element.identifier": str, + "ui.element.load_time": float, + "ui.element.paint_type": str, + "ui.element.render_time": float, + "ui.element.type": str, + "ui.element.url": str, + "ui.element.width": int, + "url.domain": str, + "url.fragment": str, + "url.full": str, + "url.path": str, + "url.path.parameter.": str, + "url.port": int, + "url.query": str, + "url.scheme": str, + "url.template": str, + "url": str, + "user.email": str, + "user.full_name": str, + "user.geo.city": str, + "user.geo.country_code": str, + "user.geo.region": str, + "user.geo.subdivision": str, + "user.hash": str, + "user.id": str, + "user.ip_address": str, + "user.name": str, + "user.roles": List[str], + "user_agent.original": str, + "vercel.branch": str, + "vercel.build_id": str, + "vercel.deployment_id": str, + "vercel.destination": str, + "vercel.edge_type": str, + "vercel.entrypoint": str, + "vercel.execution_region": str, + "vercel.id": str, + "vercel.ja3_digest": str, + "vercel.ja4_digest": str, + "vercel.log_type": str, + "vercel.project_id": str, + "vercel.project_name": str, + "vercel.proxy.cache_id": str, + "vercel.proxy.client_ip": str, + "vercel.proxy.host": str, + "vercel.proxy.lambda_region": str, + "vercel.proxy.method": str, + "vercel.proxy.path": str, + "vercel.proxy.path_type": str, + "vercel.proxy.path_type_variant": str, + "vercel.proxy.referer": str, + "vercel.proxy.region": str, + "vercel.proxy.response_byte_size": int, + "vercel.proxy.scheme": str, + "vercel.proxy.status_code": int, + "vercel.proxy.timestamp": int, + "vercel.proxy.user_agent": List[str], + "vercel.proxy.vercel_cache": str, + "vercel.proxy.vercel_id": str, + "vercel.proxy.waf_action": str, + "vercel.proxy.waf_rule_id": str, + "vercel.request_id": str, + "vercel.source": str, + "vercel.status_code": int, +}, total=False) """TypedDict representing a collection of attributes, including deprecated and non-deprecated ones.""" __all__ = [ @@ -11773,3 +12849,4 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "Attributes", "ATTRIBUTE_NAMES", ] + From 799812a9f1babab3e50396c994f0efa789976b40 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 24 Mar 2026 12:03:01 +0100 Subject: [PATCH 2/7] chore: Add PR number to changelog entries Co-Authored-By: Claude Opus 4.6 --- model/attributes/device/device__battery_level.json | 1 + model/attributes/device/device__battery_temperature.json | 1 + model/attributes/device/device__boot_time.json | 1 + model/attributes/device/device__charging.json | 1 + model/attributes/device/device__free_storage.json | 1 + model/attributes/device/device__id.json | 1 + model/attributes/device/device__low_memory.json | 1 + model/attributes/device/device__manufacturer.json | 1 + model/attributes/device/device__name.json | 1 + model/attributes/device/device__online.json | 1 + model/attributes/device/device__orientation.json | 1 + model/attributes/device/device__processor_frequency.json | 1 + model/attributes/device/device__screen_density.json | 1 + model/attributes/device/device__screen_dpi.json | 1 + model/attributes/device/device__screen_height_pixels.json | 1 + model/attributes/device/device__screen_width_pixels.json | 1 + model/attributes/device/device__storage_size.json | 1 + model/attributes/device/device__usable_memory.json | 1 + 18 files changed, 18 insertions(+) diff --git a/model/attributes/device/device__battery_level.json b/model/attributes/device/device__battery_level.json index b66f81c2..70413c23 100644 --- a/model/attributes/device/device__battery_level.json +++ b/model/attributes/device/device__battery_level.json @@ -10,6 +10,7 @@ "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 index 39b25145..08ddfb41 100644 --- a/model/attributes/device/device__battery_temperature.json +++ b/model/attributes/device/device__battery_temperature.json @@ -10,6 +10,7 @@ "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 index 78d1ad84..14a0a84e 100644 --- a/model/attributes/device/device__boot_time.json +++ b/model/attributes/device/device__boot_time.json @@ -10,6 +10,7 @@ "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 index 45635410..b2267795 100644 --- a/model/attributes/device/device__charging.json +++ b/model/attributes/device/device__charging.json @@ -10,6 +10,7 @@ "changelog": [ { "version": "next", + "prs": [303], "description": "Added device.charging attribute" } ] diff --git a/model/attributes/device/device__free_storage.json b/model/attributes/device/device__free_storage.json index f3dff934..b342e58a 100644 --- a/model/attributes/device/device__free_storage.json +++ b/model/attributes/device/device__free_storage.json @@ -10,6 +10,7 @@ "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 index 543459d1..37901b16 100644 --- a/model/attributes/device/device__id.json +++ b/model/attributes/device/device__id.json @@ -10,6 +10,7 @@ "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 index 96713944..ca71319d 100644 --- a/model/attributes/device/device__low_memory.json +++ b/model/attributes/device/device__low_memory.json @@ -10,6 +10,7 @@ "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 index a4c64336..b68e1b63 100644 --- a/model/attributes/device/device__manufacturer.json +++ b/model/attributes/device/device__manufacturer.json @@ -10,6 +10,7 @@ "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 index 01b28fe6..3e00c085 100644 --- a/model/attributes/device/device__name.json +++ b/model/attributes/device/device__name.json @@ -10,6 +10,7 @@ "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 index 0b473924..18a88c84 100644 --- a/model/attributes/device/device__online.json +++ b/model/attributes/device/device__online.json @@ -10,6 +10,7 @@ "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 index 7f0d5eaa..f946131c 100644 --- a/model/attributes/device/device__orientation.json +++ b/model/attributes/device/device__orientation.json @@ -10,6 +10,7 @@ "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 index 25a976f0..5a8028e2 100644 --- a/model/attributes/device/device__processor_frequency.json +++ b/model/attributes/device/device__processor_frequency.json @@ -10,6 +10,7 @@ "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 index 304a0ea8..cbdbec09 100644 --- a/model/attributes/device/device__screen_density.json +++ b/model/attributes/device/device__screen_density.json @@ -10,6 +10,7 @@ "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 index c98826be..4c80145c 100644 --- a/model/attributes/device/device__screen_dpi.json +++ b/model/attributes/device/device__screen_dpi.json @@ -10,6 +10,7 @@ "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 index a077db70..be8623cb 100644 --- a/model/attributes/device/device__screen_height_pixels.json +++ b/model/attributes/device/device__screen_height_pixels.json @@ -10,6 +10,7 @@ "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 index 55f240e9..0aa0e2a9 100644 --- a/model/attributes/device/device__screen_width_pixels.json +++ b/model/attributes/device/device__screen_width_pixels.json @@ -10,6 +10,7 @@ "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 index 891a0606..4d643e73 100644 --- a/model/attributes/device/device__storage_size.json +++ b/model/attributes/device/device__storage_size.json @@ -10,6 +10,7 @@ "changelog": [ { "version": "next", + "prs": [303], "description": "Added device.storage_size attribute" } ] diff --git a/model/attributes/device/device__usable_memory.json b/model/attributes/device/device__usable_memory.json index 832b18cb..361e4eb4 100644 --- a/model/attributes/device/device__usable_memory.json +++ b/model/attributes/device/device__usable_memory.json @@ -10,6 +10,7 @@ "changelog": [ { "version": "next", + "prs": [303], "description": "Added device.usable_memory attribute" } ] From 919e9e262131ca8cfbd77dac35e168dd47c8b2a6 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 24 Mar 2026 13:02:59 +0100 Subject: [PATCH 3/7] fix: regenerate attribute files to match source definitions Co-Authored-By: Claude Opus 4.6 (1M context) --- .../sentry-conventions/src/attributes.ts | 41 +- python/src/sentry_conventions/attributes.py | 4341 +++++++---------- 2 files changed, 1878 insertions(+), 2504 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 7655a546..fa73344b 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -2524,7 +2524,7 @@ export type DEVICE_MODEL_ID_TYPE = string; // Path: model/attributes/device/device__name.json /** - * The name of the device, typically a hostname. `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. `device.name` * * Attribute Value Type: `string` {@link DEVICE_NAME_TYPE} * @@ -12760,7 +12760,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 100, - changelog: [{ version: 'next', description: 'Added device.battery_level attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.battery_level attribute' }], }, [DEVICE_BATTERY_TEMPERATURE]: { brief: 'The battery temperature of the device in Celsius.', @@ -12770,7 +12770,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 25, - changelog: [{ version: 'next', description: 'Added device.battery_temperature attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.battery_temperature attribute' }], }, [DEVICE_BOOT_TIME]: { brief: 'A formatted UTC timestamp when the system was booted.', @@ -12780,7 +12780,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '2018-02-08T12:52:12Z', - changelog: [{ version: 'next', description: 'Added device.boot_time attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.boot_time attribute' }], }, [DEVICE_BRAND]: { brief: 'The brand of the device.', @@ -12800,7 +12800,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: false, - changelog: [{ version: 'next', description: 'Added device.charging attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.charging attribute' }], }, [DEVICE_CLASS]: { brief: @@ -12841,7 +12841,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 107374182400, - changelog: [{ version: 'next', description: 'Added device.free_storage attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.free_storage attribute' }], }, [DEVICE_ID]: { brief: 'Unique device identifier.', @@ -12851,7 +12851,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', - changelog: [{ version: 'next', description: 'Added device.id attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.id attribute' }], }, [DEVICE_LOW_MEMORY]: { brief: 'Whether the device was low on memory.', @@ -12861,7 +12861,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: false, - changelog: [{ version: 'next', description: 'Added device.low_memory attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.low_memory attribute' }], }, [DEVICE_MANUFACTURER]: { brief: 'The manufacturer of the device.', @@ -12871,7 +12871,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'Google', - changelog: [{ version: 'next', description: 'Added device.manufacturer attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.manufacturer attribute' }], }, [DEVICE_MEMORY_ESTIMATED_CAPACITY]: { brief: @@ -12923,14 +12923,15 @@ export const ATTRIBUTE_METADATA: Record = { changelog: [{ version: 'next', prs: [300], description: 'Added device.model_id attribute' }], }, [DEVICE_NAME]: { - brief: 'The name of the device, typically a hostname.', + 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', description: 'Added device.name attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.name attribute' }], }, [DEVICE_ONLINE]: { brief: 'Whether the device was online or not.', @@ -12940,7 +12941,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, - changelog: [{ version: 'next', description: 'Added device.online attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.online attribute' }], }, [DEVICE_ORIENTATION]: { brief: 'The orientation of the device, either "portrait" or "landscape".', @@ -12950,7 +12951,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'portrait', - changelog: [{ version: 'next', description: 'Added device.orientation attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.orientation attribute' }], }, [DEVICE_PROCESSOR_COUNT]: { brief: 'Number of "logical processors".', @@ -12982,7 +12983,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 2400, - changelog: [{ version: 'next', description: 'Added device.processor_frequency attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.processor_frequency attribute' }], }, [DEVICE_SCREEN_DENSITY]: { brief: 'The screen density of the device.', @@ -12992,7 +12993,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 2.625, - changelog: [{ version: 'next', description: 'Added device.screen_density attribute' }], + 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.', @@ -13002,7 +13003,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 420, - changelog: [{ version: 'next', description: 'Added device.screen_dpi attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.screen_dpi attribute' }], }, [DEVICE_SCREEN_HEIGHT_PIXELS]: { brief: 'The height of the device screen in pixels.', @@ -13012,7 +13013,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 2400, - changelog: [{ version: 'next', description: 'Added device.screen_height_pixels attribute' }], + 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.', @@ -13022,7 +13023,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1080, - changelog: [{ version: 'next', description: 'Added device.screen_width_pixels attribute' }], + 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.', @@ -13042,7 +13043,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 274877906944, - changelog: [{ version: 'next', description: 'Added device.storage_size attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.storage_size attribute' }], }, [DEVICE_USABLE_MEMORY]: { brief: 'Memory usable for the app in bytes.', @@ -13052,7 +13053,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 2147483648, - changelog: [{ version: 'next', description: 'Added device.usable_memory attribute' }], + changelog: [{ version: 'next', prs: [303], description: 'Added device.usable_memory attribute' }], }, [ENVIRONMENT]: { brief: 'The sentry environment.', diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 151372ef..636988e2 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -5,9 +5,12 @@ import warnings from dataclasses import dataclass from enum import Enum -from typing import List, Union, Literal, Optional, Dict, TypedDict +from typing import Dict, List, Literal, Optional, TypedDict, Union + +AttributeValue = Union[ + str, int, float, bool, List[str], List[int], List[float], List[bool] +] -AttributeValue = Union[str, int, float, bool, List[str], List[int], List[float], List[bool]] class AttributeType(Enum): STRING = "string" @@ -20,75 +23,84 @@ class AttributeType(Enum): DOUBLE_ARRAY = "double[]" ANY = "any" + class IsPii(Enum): TRUE = "true" FALSE = "false" MAYBE = "maybe" + @dataclass class PiiInfo: """Holds information about PII in an attribute's values.""" + isPii: IsPii reason: Optional[str] = None + class DeprecationStatus(Enum): BACKFILL = "backfill" NORMALIZE = "normalize" + @dataclass class DeprecationInfo: """Holds information about a deprecation.""" + replacement: Optional[str] = None reason: Optional[str] = None status: Optional[DeprecationStatus] = None + @dataclass class ChangelogEntry: """A changelog entry tracking a change to an attribute.""" version: str """The sentry-conventions release version""" - + prs: Optional[List[int]] = None """GitHub PR numbers""" - + description: Optional[str] = None """Optional description of what changed""" + @dataclass class AttributeMetadata: """The metadata for an attribute.""" brief: str """A description of the attribute""" - + type: AttributeType """The type of the attribute value""" - + pii: PiiInfo """If an attribute can have pii. Is either true, false or maybe. Optionally include a reason about why it has PII or not""" - + is_in_otel: bool """Whether the attribute is defined in OpenTelemetry Semantic Conventions""" - + has_dynamic_suffix: Optional[bool] = None """If an attribute has a dynamic suffix, for example http.response.header. where is dynamic""" - + example: Optional[AttributeValue] = None """An example value of the attribute""" - + deprecation: Optional[DeprecationInfo] = None """If an attribute was deprecated, and what it was replaced with""" - + aliases: Optional[List[str]] = None """If there are attributes that alias to this attribute""" - + sdks: Optional[List[str]] = None """If an attribute is SDK specific, list the SDKs that use this attribute. This is not an exhaustive list, there might be SDKs that send this attribute that are is not documented here.""" - + changelog: Optional[List[ChangelogEntry]] = None """Changelog entries tracking how this attribute has changed across versions""" + class _AttributeNamesMeta(type): _deprecated_names = { "AI_CITATIONS", @@ -217,6 +229,7 @@ def __getattribute__(cls, name: str): ) return super().__getattribute__(name) + class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """Contains all attribute names as class attributes with their documentation.""" @@ -232,7 +245,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/ai/ai__completion_tokens__used.json - AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = "ai.completion_tokens.used" + AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = ( + "ai.completion_tokens.used" + ) """The number of tokens used to respond to the message. Type: int @@ -715,7 +730,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__invoker_type.json - BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = "browser.script.invoker_type" + BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = ( + "browser.script.invoker_type" + ) """Browser script entry point type. Type: str @@ -725,7 +742,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__source_char_position.json - BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal["browser.script.source_char_position"] = "browser.script.source_char_position" + BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal[ + "browser.script.source_char_position" + ] = "browser.script.source_char_position" """A number representing the script character position of the script. Type: int @@ -746,7 +765,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__cls__source__[key].json - BROWSER_WEB_VITAL_CLS_SOURCE_KEY: Literal["browser.web_vital.cls.source."] = "browser.web_vital.cls.source." + BROWSER_WEB_VITAL_CLS_SOURCE_KEY: Literal["browser.web_vital.cls.source."] = ( + "browser.web_vital.cls.source." + ) """The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N Type: str @@ -758,7 +779,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__cls__value.json - BROWSER_WEB_VITAL_CLS_VALUE: Literal["browser.web_vital.cls.value"] = "browser.web_vital.cls.value" + BROWSER_WEB_VITAL_CLS_VALUE: Literal["browser.web_vital.cls.value"] = ( + "browser.web_vital.cls.value" + ) """The value of the recorded Cumulative Layout Shift (CLS) web vital Type: float @@ -769,7 +792,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__fcp__value.json - BROWSER_WEB_VITAL_FCP_VALUE: Literal["browser.web_vital.fcp.value"] = "browser.web_vital.fcp.value" + BROWSER_WEB_VITAL_FCP_VALUE: Literal["browser.web_vital.fcp.value"] = ( + "browser.web_vital.fcp.value" + ) """The time it takes for the browser to render the first piece of meaningful content on the screen Type: float @@ -780,7 +805,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__fp__value.json - BROWSER_WEB_VITAL_FP_VALUE: Literal["browser.web_vital.fp.value"] = "browser.web_vital.fp.value" + BROWSER_WEB_VITAL_FP_VALUE: Literal["browser.web_vital.fp.value"] = ( + "browser.web_vital.fp.value" + ) """The time in milliseconds it takes for the browser to render the first pixel on the screen Type: float @@ -791,7 +818,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__inp__value.json - BROWSER_WEB_VITAL_INP_VALUE: Literal["browser.web_vital.inp.value"] = "browser.web_vital.inp.value" + BROWSER_WEB_VITAL_INP_VALUE: Literal["browser.web_vital.inp.value"] = ( + "browser.web_vital.inp.value" + ) """The value of the recorded Interaction to Next Paint (INP) web vital Type: float @@ -802,7 +831,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__element.json - BROWSER_WEB_VITAL_LCP_ELEMENT: Literal["browser.web_vital.lcp.element"] = "browser.web_vital.lcp.element" + BROWSER_WEB_VITAL_LCP_ELEMENT: Literal["browser.web_vital.lcp.element"] = ( + "browser.web_vital.lcp.element" + ) """The HTML element selector or component name for which LCP was reported Type: str @@ -813,7 +844,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__id.json - BROWSER_WEB_VITAL_LCP_ID: Literal["browser.web_vital.lcp.id"] = "browser.web_vital.lcp.id" + BROWSER_WEB_VITAL_LCP_ID: Literal["browser.web_vital.lcp.id"] = ( + "browser.web_vital.lcp.id" + ) """The id of the dom element responsible for the largest contentful paint Type: str @@ -824,7 +857,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__load_time.json - BROWSER_WEB_VITAL_LCP_LOAD_TIME: Literal["browser.web_vital.lcp.load_time"] = "browser.web_vital.lcp.load_time" + BROWSER_WEB_VITAL_LCP_LOAD_TIME: Literal["browser.web_vital.lcp.load_time"] = ( + "browser.web_vital.lcp.load_time" + ) """The time it took for the LCP element to be loaded Type: int @@ -835,7 +870,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__render_time.json - BROWSER_WEB_VITAL_LCP_RENDER_TIME: Literal["browser.web_vital.lcp.render_time"] = "browser.web_vital.lcp.render_time" + BROWSER_WEB_VITAL_LCP_RENDER_TIME: Literal["browser.web_vital.lcp.render_time"] = ( + "browser.web_vital.lcp.render_time" + ) """The time it took for the LCP element to be rendered Type: int @@ -846,7 +883,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__size.json - BROWSER_WEB_VITAL_LCP_SIZE: Literal["browser.web_vital.lcp.size"] = "browser.web_vital.lcp.size" + BROWSER_WEB_VITAL_LCP_SIZE: Literal["browser.web_vital.lcp.size"] = ( + "browser.web_vital.lcp.size" + ) """The size of the largest contentful paint element Type: int @@ -857,7 +896,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__url.json - BROWSER_WEB_VITAL_LCP_URL: Literal["browser.web_vital.lcp.url"] = "browser.web_vital.lcp.url" + BROWSER_WEB_VITAL_LCP_URL: Literal["browser.web_vital.lcp.url"] = ( + "browser.web_vital.lcp.url" + ) """The url of the dom element responsible for the largest contentful paint Type: str @@ -868,7 +909,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__lcp__value.json - BROWSER_WEB_VITAL_LCP_VALUE: Literal["browser.web_vital.lcp.value"] = "browser.web_vital.lcp.value" + BROWSER_WEB_VITAL_LCP_VALUE: Literal["browser.web_vital.lcp.value"] = ( + "browser.web_vital.lcp.value" + ) """The value of the recorded Largest Contentful Paint (LCP) web vital Type: float @@ -879,7 +922,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__ttfb__request_time.json - BROWSER_WEB_VITAL_TTFB_REQUEST_TIME: Literal["browser.web_vital.ttfb.request_time"] = "browser.web_vital.ttfb.request_time" + BROWSER_WEB_VITAL_TTFB_REQUEST_TIME: Literal[ + "browser.web_vital.ttfb.request_time" + ] = "browser.web_vital.ttfb.request_time" """The time it takes for the server to process the initial request and send the first byte of a response to the user's browser Type: float @@ -890,7 +935,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__web_vital__ttfb__value.json - BROWSER_WEB_VITAL_TTFB_VALUE: Literal["browser.web_vital.ttfb.value"] = "browser.web_vital.ttfb.value" + BROWSER_WEB_VITAL_TTFB_VALUE: Literal["browser.web_vital.ttfb.value"] = ( + "browser.web_vital.ttfb.value" + ) """The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds Type: float @@ -992,7 +1039,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_read.json - CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = "cloudflare.d1.rows_read" + CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = ( + "cloudflare.d1.rows_read" + ) """The number of rows read in a Cloudflare D1 operation. Type: int @@ -1002,7 +1051,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_written.json - CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = "cloudflare.d1.rows_written" + CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = ( + "cloudflare.d1.rows_written" + ) """The number of rows written in a Cloudflare D1 operation. Type: int @@ -1137,7 +1188,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/culture/culture__is_24_hour_format.json - CULTURE_IS_24_HOUR_FORMAT: Literal["culture.is_24_hour_format"] = "culture.is_24_hour_format" + CULTURE_IS_24_HOUR_FORMAT: Literal["culture.is_24_hour_format"] = ( + "culture.is_24_hour_format" + ) """Whether the culture uses 24-hour time format. Type: bool @@ -1223,7 +1276,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/db/db__query__parameter__[key].json - DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = "db.query.parameter." + DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = ( + "db.query.parameter." + ) """A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value. Type: str @@ -1341,7 +1396,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/device/device__battery_temperature.json - DEVICE_BATTERY_TEMPERATURE: Literal["device.battery_temperature"] = "device.battery_temperature" + DEVICE_BATTERY_TEMPERATURE: Literal["device.battery_temperature"] = ( + "device.battery_temperature" + ) """The battery temperature of the device in Celsius. Type: float @@ -1451,7 +1508,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/device/device__memory__estimated_capacity.json - DEVICE_MEMORY_ESTIMATED_CAPACITY: Literal["device.memory.estimated_capacity"] = "device.memory.estimated_capacity" + DEVICE_MEMORY_ESTIMATED_CAPACITY: Literal["device.memory.estimated_capacity"] = ( + "device.memory.estimated_capacity" + ) """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: int @@ -1493,7 +1552,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): # Path: model/attributes/device/device__name.json DEVICE_NAME: Literal["device.name"] = "device.name" - """The name of the device, typically a hostname. + """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 @@ -1533,7 +1592,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/device/device__processor_frequency.json - DEVICE_PROCESSOR_FREQUENCY: Literal["device.processor_frequency"] = "device.processor_frequency" + DEVICE_PROCESSOR_FREQUENCY: Literal["device.processor_frequency"] = ( + "device.processor_frequency" + ) """Processor frequency in MHz. Type: float @@ -1563,7 +1624,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/device/device__screen_height_pixels.json - DEVICE_SCREEN_HEIGHT_PIXELS: Literal["device.screen_height_pixels"] = "device.screen_height_pixels" + DEVICE_SCREEN_HEIGHT_PIXELS: Literal["device.screen_height_pixels"] = ( + "device.screen_height_pixels" + ) """The height of the device screen in pixels. Type: int @@ -1573,7 +1636,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/device/device__screen_width_pixels.json - DEVICE_SCREEN_WIDTH_PIXELS: Literal["device.screen_width_pixels"] = "device.screen_width_pixels" + DEVICE_SCREEN_WIDTH_PIXELS: Literal["device.screen_width_pixels"] = ( + "device.screen_width_pixels" + ) """The width of the device screen in pixels. Type: int @@ -1853,7 +1918,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__input_tokens.json - GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = "gen_ai.cost.input_tokens" + GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = ( + "gen_ai.cost.input_tokens" + ) """The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens). Type: float @@ -1863,7 +1930,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__output_tokens.json - GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = "gen_ai.cost.output_tokens" + GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = ( + "gen_ai.cost.output_tokens" + ) """The cost of tokens used for creating the AI output in USD (without reasoning tokens). Type: float @@ -1873,7 +1942,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__total_tokens.json - GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = "gen_ai.cost.total_tokens" + GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = ( + "gen_ai.cost.total_tokens" + ) """The total cost for the tokens used. Type: float @@ -1884,7 +1955,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__embeddings__input.json - GEN_AI_EMBEDDINGS_INPUT: Literal["gen_ai.embeddings.input"] = "gen_ai.embeddings.input" + GEN_AI_EMBEDDINGS_INPUT: Literal["gen_ai.embeddings.input"] = ( + "gen_ai.embeddings.input" + ) """The input to the embeddings model. Type: str @@ -1968,7 +2041,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__available_tools.json - GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = "gen_ai.request.available_tools" + GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = ( + "gen_ai.request.available_tools" + ) """The available tools for the model. It has to be a stringified version of an array of objects. Type: str @@ -1979,7 +2054,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__frequency_penalty.json - GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = "gen_ai.request.frequency_penalty" + GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = ( + "gen_ai.request.frequency_penalty" + ) """Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation. Type: float @@ -1990,7 +2067,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__max_tokens.json - GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = "gen_ai.request.max_tokens" + GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = ( + "gen_ai.request.max_tokens" + ) """The maximum number of tokens to generate in the response. Type: int @@ -2000,7 +2079,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__messages.json - GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = "gen_ai.request.messages" + GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = ( + "gen_ai.request.messages" + ) """The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. Type: str @@ -2022,7 +2103,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__presence_penalty.json - GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = "gen_ai.request.presence_penalty" + GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = ( + "gen_ai.request.presence_penalty" + ) """Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies. Type: float @@ -2044,7 +2127,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__temperature.json - GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = "gen_ai.request.temperature" + GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = ( + "gen_ai.request.temperature" + ) """For an AI model call, the temperature parameter. Temperature essentially means how random the output will be. Type: float @@ -2077,7 +2162,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__finish_reasons.json - GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = "gen_ai.response.finish_reasons" + GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = ( + "gen_ai.response.finish_reasons" + ) """The reason why the model stopped generating. Type: str @@ -2110,7 +2197,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__streaming.json - GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = "gen_ai.response.streaming" + GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = ( + "gen_ai.response.streaming" + ) """Whether or not the AI model call's response was streamed back asynchronously Type: bool @@ -2132,7 +2221,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__time_to_first_token.json - GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN: Literal["gen_ai.response.time_to_first_token"] = "gen_ai.response.time_to_first_token" + GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN: Literal[ + "gen_ai.response.time_to_first_token" + ] = "gen_ai.response.time_to_first_token" """Time in seconds when the first response content chunk arrived in streaming responses. Type: float @@ -2142,7 +2233,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tokens_per_second.json - GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = "gen_ai.response.tokens_per_second" + GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = ( + "gen_ai.response.tokens_per_second" + ) """The total output tokens per seconds throughput Type: float @@ -2152,7 +2245,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tool_calls.json - GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = "gen_ai.response.tool_calls" + GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = ( + "gen_ai.response.tool_calls" + ) """The tool calls in the model's response. It has to be a stringified version of an array of objects. Type: str @@ -2186,7 +2281,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__system_instructions.json - GEN_AI_SYSTEM_INSTRUCTIONS: Literal["gen_ai.system_instructions"] = "gen_ai.system_instructions" + GEN_AI_SYSTEM_INSTRUCTIONS: Literal["gen_ai.system_instructions"] = ( + "gen_ai.system_instructions" + ) """The system instructions passed to the model. Type: str @@ -2197,7 +2294,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__call__arguments.json - GEN_AI_TOOL_CALL_ARGUMENTS: Literal["gen_ai.tool.call.arguments"] = "gen_ai.tool.call.arguments" + GEN_AI_TOOL_CALL_ARGUMENTS: Literal["gen_ai.tool.call.arguments"] = ( + "gen_ai.tool.call.arguments" + ) """The arguments of the tool call. It has to be a stringified version of the arguments to the tool. Type: str @@ -2208,7 +2307,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__call__result.json - GEN_AI_TOOL_CALL_RESULT: Literal["gen_ai.tool.call.result"] = "gen_ai.tool.call.result" + GEN_AI_TOOL_CALL_RESULT: Literal["gen_ai.tool.call.result"] = ( + "gen_ai.tool.call.result" + ) """The result of the tool call. It has to be a stringified version of the result of the tool. Type: str @@ -2219,7 +2320,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__definitions.json - GEN_AI_TOOL_DEFINITIONS: Literal["gen_ai.tool.definitions"] = "gen_ai.tool.definitions" + GEN_AI_TOOL_DEFINITIONS: Literal["gen_ai.tool.definitions"] = ( + "gen_ai.tool.definitions" + ) """The list of source system tool definitions available to the GenAI agent or model. Type: str @@ -2229,7 +2332,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__description.json - GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = "gen_ai.tool.description" + GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = ( + "gen_ai.tool.description" + ) """The description of the tool being used. Type: str @@ -2296,7 +2401,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__completion_tokens.json - GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = "gen_ai.usage.completion_tokens" + GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = ( + "gen_ai.usage.completion_tokens" + ) """The number of tokens used in the GenAI response (completion). Type: int @@ -2308,7 +2415,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens.json - GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = "gen_ai.usage.input_tokens" + GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = ( + "gen_ai.usage.input_tokens" + ) """The number of tokens used to process the AI input (prompt) including cached input tokens. Type: int @@ -2319,7 +2428,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cache_write.json - GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE: Literal["gen_ai.usage.input_tokens.cache_write"] = "gen_ai.usage.input_tokens.cache_write" + GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE: Literal[ + "gen_ai.usage.input_tokens.cache_write" + ] = "gen_ai.usage.input_tokens.cache_write" """The number of tokens written to the cache when processing the AI input (prompt). Type: int @@ -2329,7 +2440,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cached.json - GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = "gen_ai.usage.input_tokens.cached" + GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = ( + "gen_ai.usage.input_tokens.cached" + ) """The number of cached tokens used to process the AI input (prompt). Type: int @@ -2339,7 +2452,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens.json - GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = "gen_ai.usage.output_tokens" + GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = ( + "gen_ai.usage.output_tokens" + ) """The number of tokens used for creating the AI output (including reasoning tokens). Type: int @@ -2350,7 +2465,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens__reasoning.json - GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal["gen_ai.usage.output_tokens.reasoning"] = "gen_ai.usage.output_tokens.reasoning" + GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal[ + "gen_ai.usage.output_tokens.reasoning" + ] = "gen_ai.usage.output_tokens.reasoning" """The number of tokens used for reasoning to create the AI output. Type: int @@ -2360,7 +2477,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__prompt_tokens.json - GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = "gen_ai.usage.prompt_tokens" + GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = ( + "gen_ai.usage.prompt_tokens" + ) """The number of tokens used in the GenAI input (prompt). Type: int @@ -2372,7 +2491,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__total_tokens.json - GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = "gen_ai.usage.total_tokens" + GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = ( + "gen_ai.usage.total_tokens" + ) """The total number of tokens used to process the prompt. (input tokens plus output todkens) Type: int @@ -2427,7 +2548,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__decoded_response_content_length.json - HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal["http.decoded_response_content_length"] = "http.decoded_response_content_length" + HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal[ + "http.decoded_response_content_length" + ] = "http.decoded_response_content_length" """The decoded body size of the response (in bytes). Type: int @@ -2493,7 +2616,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connect_start.json - HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = "http.request.connect_start" + HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = ( + "http.request.connect_start" + ) """The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource. Type: float @@ -2503,7 +2628,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connection_end.json - HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = "http.request.connection_end" + HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = ( + "http.request.connection_end" + ) """The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication. Type: float @@ -2513,7 +2640,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_end.json - HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = "http.request.domain_lookup_end" + HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = ( + "http.request.domain_lookup_end" + ) """The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource. Type: float @@ -2523,7 +2652,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_start.json - HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = "http.request.domain_lookup_start" + HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = ( + "http.request.domain_lookup_start" + ) """The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource. Type: float @@ -2533,7 +2664,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__fetch_start.json - HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = "http.request.fetch_start" + HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = ( + "http.request.fetch_start" + ) """The UNIX timestamp representing the time immediately before the browser starts to fetch the resource. Type: float @@ -2543,7 +2676,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__header__[key].json - HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = "http.request.header." + HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = ( + "http.request.header." + ) """HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -2565,7 +2700,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_end.json - HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = "http.request.redirect_end" + HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = ( + "http.request.redirect_end" + ) """The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect Type: float @@ -2575,7 +2712,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_start.json - HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = "http.request.redirect_start" + HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = ( + "http.request.redirect_start" + ) """The UNIX timestamp representing the start time of the fetch which that initiates the redirect. Type: float @@ -2585,7 +2724,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__request_start.json - HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = "http.request.request_start" + HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = ( + "http.request.request_start" + ) """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -2595,7 +2736,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__resend_count.json - HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = "http.request.resend_count" + HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = ( + "http.request.resend_count" + ) """The ordinal number of request resending attempt (for any reason, including redirects). Type: int @@ -2605,7 +2748,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_end.json - HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = "http.request.response_end" + HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = ( + "http.request.response_end" + ) """The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first. Type: float @@ -2615,7 +2760,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_start.json - HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = "http.request.response_start" + HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = ( + "http.request.response_start" + ) """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -2625,7 +2772,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__secure_connection_start.json - HTTP_REQUEST_SECURE_CONNECTION_START: Literal["http.request.secure_connection_start"] = "http.request.secure_connection_start" + HTTP_REQUEST_SECURE_CONNECTION_START: Literal[ + "http.request.secure_connection_start" + ] = "http.request.secure_connection_start" """The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero. Type: float @@ -2635,7 +2784,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__time_to_first_byte.json - HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = "http.request.time_to_first_byte" + HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = ( + "http.request.time_to_first_byte" + ) """The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests Type: float @@ -2645,7 +2796,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__worker_start.json - HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = "http.request.worker_start" + HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = ( + "http.request.worker_start" + ) """The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running. Type: float @@ -2655,7 +2808,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__body__size.json - HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = "http.response.body.size" + HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = ( + "http.response.body.size" + ) """The encoded body size of the response (in bytes). Type: int @@ -2666,7 +2821,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__[key].json - HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = "http.response.header." + HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = ( + "http.response.header." + ) """HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -2677,7 +2834,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__content-length.json - HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal["http.response.header.content-length"] = "http.response.header.content-length" + HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal[ + "http.response.header.content-length" + ] = "http.response.header.content-length" """The size of the message body sent to the recipient (in bytes) Type: str @@ -2699,7 +2858,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__status_code.json - HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = "http.response.status_code" + HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = ( + "http.response.status_code" + ) """The status code of the HTTP response. Type: int @@ -2710,7 +2871,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_content_length.json - HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = "http.response_content_length" + HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = ( + "http.response_content_length" + ) """The encoded body size of the response (in bytes). Type: int @@ -2722,7 +2885,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_transfer_size.json - HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = "http.response_transfer_size" + HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = ( + "http.response_transfer_size" + ) """The transfer size of the response (in bytes). Type: int @@ -2757,7 +2922,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__server__request__time_in_queue.json - HTTP_SERVER_REQUEST_TIME_IN_QUEUE: Literal["http.server.request.time_in_queue"] = "http.server.request.time_in_queue" + HTTP_SERVER_REQUEST_TIME_IN_QUEUE: Literal["http.server.request.time_in_queue"] = ( + "http.server.request.time_in_queue" + ) """The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request. Type: float @@ -3012,7 +3179,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__cancelled__request_id.json - MCP_CANCELLED_REQUEST_ID: Literal["mcp.cancelled.request_id"] = "mcp.cancelled.request_id" + MCP_CANCELLED_REQUEST_ID: Literal["mcp.cancelled.request_id"] = ( + "mcp.cancelled.request_id" + ) """Request ID of the cancelled MCP operation. Type: str @@ -3132,7 +3301,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__progress__percentage.json - MCP_PROGRESS_PERCENTAGE: Literal["mcp.progress.percentage"] = "mcp.progress.percentage" + MCP_PROGRESS_PERCENTAGE: Literal["mcp.progress.percentage"] = ( + "mcp.progress.percentage" + ) """Calculated progress percentage of an MCP operation. Computed from current/total * 100. Type: float @@ -3172,7 +3343,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__description.json - MCP_PROMPT_RESULT_DESCRIPTION: Literal["mcp.prompt.result.description"] = "mcp.prompt.result.description" + MCP_PROMPT_RESULT_DESCRIPTION: Literal["mcp.prompt.result.description"] = ( + "mcp.prompt.result.description" + ) """Description of the prompt result. Type: str @@ -3182,7 +3355,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_content.json - MCP_PROMPT_RESULT_MESSAGE_CONTENT: Literal["mcp.prompt.result.message_content"] = "mcp.prompt.result.message_content" + MCP_PROMPT_RESULT_MESSAGE_CONTENT: Literal["mcp.prompt.result.message_content"] = ( + "mcp.prompt.result.message_content" + ) """Content of the message in the prompt result. Used for single message results only. Type: str @@ -3192,7 +3367,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_count.json - MCP_PROMPT_RESULT_MESSAGE_COUNT: Literal["mcp.prompt.result.message_count"] = "mcp.prompt.result.message_count" + MCP_PROMPT_RESULT_MESSAGE_COUNT: Literal["mcp.prompt.result.message_count"] = ( + "mcp.prompt.result.message_count" + ) """Number of messages in the prompt result. Type: int @@ -3202,7 +3379,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_role.json - MCP_PROMPT_RESULT_MESSAGE_ROLE: Literal["mcp.prompt.result.message_role"] = "mcp.prompt.result.message_role" + MCP_PROMPT_RESULT_MESSAGE_ROLE: Literal["mcp.prompt.result.message_role"] = ( + "mcp.prompt.result.message_role" + ) """Role of the message in the prompt result. Used for single message results only. Type: str @@ -3232,7 +3411,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__[key].json - MCP_REQUEST_ARGUMENT_KEY: Literal["mcp.request.argument."] = "mcp.request.argument." + MCP_REQUEST_ARGUMENT_KEY: Literal["mcp.request.argument."] = ( + "mcp.request.argument." + ) """MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value. Type: str @@ -3243,7 +3424,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__name.json - MCP_REQUEST_ARGUMENT_NAME: Literal["mcp.request.argument.name"] = "mcp.request.argument.name" + MCP_REQUEST_ARGUMENT_NAME: Literal["mcp.request.argument.name"] = ( + "mcp.request.argument.name" + ) """Name argument from prompts/get MCP request. Type: str @@ -3253,7 +3436,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__uri.json - MCP_REQUEST_ARGUMENT_URI: Literal["mcp.request.argument.uri"] = "mcp.request.argument.uri" + MCP_REQUEST_ARGUMENT_URI: Literal["mcp.request.argument.uri"] = ( + "mcp.request.argument.uri" + ) """URI argument from resources/read MCP request. Type: str @@ -3343,7 +3528,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__content.json - MCP_TOOL_RESULT_CONTENT: Literal["mcp.tool.result.content"] = "mcp.tool.result.content" + MCP_TOOL_RESULT_CONTENT: Literal["mcp.tool.result.content"] = ( + "mcp.tool.result.content" + ) """The content of the tool result. Type: str @@ -3353,7 +3540,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__content_count.json - MCP_TOOL_RESULT_CONTENT_COUNT: Literal["mcp.tool.result.content_count"] = "mcp.tool.result.content_count" + MCP_TOOL_RESULT_CONTENT_COUNT: Literal["mcp.tool.result.content_count"] = ( + "mcp.tool.result.content_count" + ) """Number of content items in the tool result. Type: int @@ -3363,7 +3552,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__is_error.json - MCP_TOOL_RESULT_IS_ERROR: Literal["mcp.tool.result.is_error"] = "mcp.tool.result.is_error" + MCP_TOOL_RESULT_IS_ERROR: Literal["mcp.tool.result.is_error"] = ( + "mcp.tool.result.is_error" + ) """Whether a tool execution resulted in an error. Type: bool @@ -3394,7 +3585,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__connection.json - MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = "messaging.destination.connection" + MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = ( + "messaging.destination.connection" + ) """The message destination connection. Type: str @@ -3404,7 +3597,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__name.json - MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = "messaging.destination.name" + MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = ( + "messaging.destination.name" + ) """The message destination name. Type: str @@ -3414,7 +3609,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__body__size.json - MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = "messaging.message.body.size" + MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = ( + "messaging.message.body.size" + ) """The size of the message body in bytes. Type: int @@ -3424,7 +3621,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__envelope__size.json - MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = "messaging.message.envelope.size" + MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = ( + "messaging.message.envelope.size" + ) """The size of the message body and metadata in bytes. Type: int @@ -3444,7 +3643,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__receive__latency.json - MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = "messaging.message.receive.latency" + MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = ( + "messaging.message.receive.latency" + ) """The latency between when the message was published and received. Type: int @@ -3454,7 +3655,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__retry__count.json - MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = "messaging.message.retry.count" + MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = ( + "messaging.message.retry.count" + ) """The amount of attempts to send the message. Type: int @@ -3464,7 +3667,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__operation__type.json - MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = "messaging.operation.type" + MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = ( + "messaging.operation.type" + ) """A string identifying the type of the messaging operation Type: str @@ -3785,7 +3990,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/network/network__protocol__version.json - NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = "network.protocol.version" + NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = ( + "network.protocol.version" + ) """The actual version of the protocol used for network communication. Type: str @@ -3897,7 +4104,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/otel/otel__status_description.json - OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = "otel.status_description" + OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = ( + "otel.status_description" + ) """Description of the Status if it has a value, otherwise not set. Type: str @@ -3929,7 +4138,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__executable__name.json - PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = "process.executable.name" + PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = ( + "process.executable.name" + ) """The name of the executable that started the process. Type: str @@ -3949,7 +4160,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__description.json - PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = "process.runtime.description" + PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = ( + "process.runtime.description" + ) """An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context. Type: str @@ -3969,7 +4182,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__version.json - PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = "process.runtime.version" + PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = ( + "process.runtime.version" + ) """The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context. Type: str @@ -4003,7 +4218,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/remix/remix__action_form_data__[key].json - REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = "remix.action_form_data." + REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = ( + "remix.action_form_data." + ) """Remix form data, being the form data key, the value being the form data value. Type: str @@ -4026,7 +4243,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__deployment__environment.json - RESOURCE_DEPLOYMENT_ENVIRONMENT: Literal["resource.deployment.environment"] = "resource.deployment.environment" + RESOURCE_DEPLOYMENT_ENVIRONMENT: Literal["resource.deployment.environment"] = ( + "resource.deployment.environment" + ) """The software deployment environment name. Type: str @@ -4037,7 +4256,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__deployment__environment__name.json - RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal["resource.deployment.environment.name"] = "resource.deployment.environment.name" + RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal[ + "resource.deployment.environment.name" + ] = "resource.deployment.environment.name" """The software deployment environment name. Type: str @@ -4048,7 +4269,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__render_blocking_status.json - RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = "resource.render_blocking_status" + RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = ( + "resource.render_blocking_status" + ) """The render blocking status of the resource. Type: str @@ -4124,7 +4347,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__cancellation_reason.json - SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = "sentry.cancellation_reason" + SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = ( + "sentry.cancellation_reason" + ) """The reason why a span ended early. Type: str @@ -4144,7 +4369,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__client_sample_rate.json - SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = "sentry.client_sample_rate" + SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = ( + "sentry.client_sample_rate" + ) """Rate at which a span was sampled in the SDK. Type: float @@ -4275,7 +4502,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__graphql__operation.json - SENTRY_GRAPHQL_OPERATION: Literal["sentry.graphql.operation"] = "sentry.graphql.operation" + SENTRY_GRAPHQL_OPERATION: Literal["sentry.graphql.operation"] = ( + "sentry.graphql.operation" + ) """Indicates the type of graphql operation, emitted by the Javascript SDK. Type: str @@ -4304,7 +4533,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__idle_span_finish_reason.json - SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = "sentry.idle_span_finish_reason" + SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = ( + "sentry.idle_span_finish_reason" + ) """The reason why an idle span ended early. Type: str @@ -4334,7 +4565,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__parameter__[key].json - SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = "sentry.message.parameter." + SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = ( + "sentry.message.parameter." + ) """A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc) Type: str @@ -4344,7 +4577,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__template.json - SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = "sentry.message.template" + SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = ( + "sentry.message.template" + ) """The parameterized template string. Type: str @@ -4365,7 +4600,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__route.json - SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = "sentry.nextjs.ssr.function.route" + SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = ( + "sentry.nextjs.ssr.function.route" + ) """A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known. Type: str @@ -4375,7 +4612,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__type.json - SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = "sentry.nextjs.ssr.function.type" + SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = ( + "sentry.nextjs.ssr.function.type" + ) """A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions. Type: str @@ -4385,7 +4624,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_db_query.json - SENTRY_NORMALIZED_DB_QUERY: Literal["sentry.normalized_db_query"] = "sentry.normalized_db_query" + SENTRY_NORMALIZED_DB_QUERY: Literal["sentry.normalized_db_query"] = ( + "sentry.normalized_db_query" + ) """The normalized version of `db.query.text`. Type: str @@ -4395,7 +4636,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_db_query__hash.json - SENTRY_NORMALIZED_DB_QUERY_HASH: Literal["sentry.normalized_db_query.hash"] = "sentry.normalized_db_query.hash" + SENTRY_NORMALIZED_DB_QUERY_HASH: Literal["sentry.normalized_db_query.hash"] = ( + "sentry.normalized_db_query.hash" + ) """The hash of `sentry.normalized_db_query`. Type: str @@ -4404,7 +4647,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_description.json - SENTRY_NORMALIZED_DESCRIPTION: Literal["sentry.normalized_description"] = "sentry.normalized_description" + SENTRY_NORMALIZED_DESCRIPTION: Literal["sentry.normalized_description"] = ( + "sentry.normalized_description" + ) """Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc). Type: str @@ -4414,7 +4659,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__observed_timestamp_nanos.json - SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = "sentry.observed_timestamp_nanos" + SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = ( + "sentry.observed_timestamp_nanos" + ) """The timestamp at which an envelope was received by Relay, in nanoseconds. Type: str @@ -4486,7 +4733,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__replay_is_buffering.json - SENTRY_REPLAY_IS_BUFFERING: Literal["sentry.replay_is_buffering"] = "sentry.replay_is_buffering" + SENTRY_REPLAY_IS_BUFFERING: Literal["sentry.replay_is_buffering"] = ( + "sentry.replay_is_buffering" + ) """A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate). Type: bool @@ -4496,7 +4745,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__sdk__integrations.json - SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = "sentry.sdk.integrations" + SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = ( + "sentry.sdk.integrations" + ) """A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations. Type: List[str] @@ -4559,7 +4810,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__server_sample_rate.json - SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = "sentry.server_sample_rate" + SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = ( + "sentry.server_sample_rate" + ) """Rate at which a span was sampled in Relay. Type: float @@ -4610,7 +4863,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__timestamp__sequence.json - SENTRY_TIMESTAMP_SEQUENCE: Literal["sentry.timestamp.sequence"] = "sentry.timestamp.sequence" + SENTRY_TIMESTAMP_SEQUENCE: Literal["sentry.timestamp.sequence"] = ( + "sentry.timestamp.sequence" + ) """A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one. Type: int @@ -4620,7 +4875,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__trace__parent_span_id.json - SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = "sentry.trace.parent_span_id" + SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = ( + "sentry.trace.parent_span_id" + ) """The span id of the span that was active when the log was collected. This should not be set if there was no active span. Type: str @@ -4922,7 +5179,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/url/url__path__parameter__[key].json - URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = "url.path.parameter." + URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = ( + "url.path.parameter." + ) """Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. Type: str @@ -5169,7 +5428,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__execution_region.json - VERCEL_EXECUTION_REGION: Literal["vercel.execution_region"] = "vercel.execution_region" + VERCEL_EXECUTION_REGION: Literal["vercel.execution_region"] = ( + "vercel.execution_region" + ) """Region where the request is executed Type: str @@ -5269,7 +5530,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__lambda_region.json - VERCEL_PROXY_LAMBDA_REGION: Literal["vercel.proxy.lambda_region"] = "vercel.proxy.lambda_region" + VERCEL_PROXY_LAMBDA_REGION: Literal["vercel.proxy.lambda_region"] = ( + "vercel.proxy.lambda_region" + ) """Region where lambda function executed Type: str @@ -5309,7 +5572,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__path_type_variant.json - VERCEL_PROXY_PATH_TYPE_VARIANT: Literal["vercel.proxy.path_type_variant"] = "vercel.proxy.path_type_variant" + VERCEL_PROXY_PATH_TYPE_VARIANT: Literal["vercel.proxy.path_type_variant"] = ( + "vercel.proxy.path_type_variant" + ) """Variant of the path type Type: str @@ -5339,7 +5604,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__response_byte_size.json - VERCEL_PROXY_RESPONSE_BYTE_SIZE: Literal["vercel.proxy.response_byte_size"] = "vercel.proxy.response_byte_size" + VERCEL_PROXY_RESPONSE_BYTE_SIZE: Literal["vercel.proxy.response_byte_size"] = ( + "vercel.proxy.response_byte_size" + ) """Size of the response in bytes Type: int @@ -5359,7 +5626,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__status_code.json - VERCEL_PROXY_STATUS_CODE: Literal["vercel.proxy.status_code"] = "vercel.proxy.status_code" + VERCEL_PROXY_STATUS_CODE: Literal["vercel.proxy.status_code"] = ( + "vercel.proxy.status_code" + ) """HTTP status code of the proxy request Type: int @@ -5379,7 +5648,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__user_agent.json - VERCEL_PROXY_USER_AGENT: Literal["vercel.proxy.user_agent"] = "vercel.proxy.user_agent" + VERCEL_PROXY_USER_AGENT: Literal["vercel.proxy.user_agent"] = ( + "vercel.proxy.user_agent" + ) """User agent strings of the request Type: List[str] @@ -5389,7 +5660,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__vercel_cache.json - VERCEL_PROXY_VERCEL_CACHE: Literal["vercel.proxy.vercel_cache"] = "vercel.proxy.vercel_cache" + VERCEL_PROXY_VERCEL_CACHE: Literal["vercel.proxy.vercel_cache"] = ( + "vercel.proxy.vercel_cache" + ) """Cache status sent to the browser Type: str @@ -5409,7 +5682,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__waf_action.json - VERCEL_PROXY_WAF_ACTION: Literal["vercel.proxy.waf_action"] = "vercel.proxy.waf_action" + VERCEL_PROXY_WAF_ACTION: Literal["vercel.proxy.waf_action"] = ( + "vercel.proxy.waf_action" + ) """Action taken by firewall rules Type: str @@ -5419,7 +5694,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__waf_rule_id.json - VERCEL_PROXY_WAF_RULE_ID: Literal["vercel.proxy.waf_rule_id"] = "vercel.proxy.waf_rule_id" + VERCEL_PROXY_WAF_RULE_ID: Literal["vercel.proxy.waf_rule_id"] = ( + "vercel.proxy.waf_rule_id" + ) """ID of the firewall rule that matched Type: str @@ -5463,9 +5740,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.citations": AttributeMetadata( brief="References or sources cited by the AI model in its response.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["Citation 1", "Citation 2"], deprecation=DeprecationInfo(), @@ -5477,15 +5752,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.completion_tokens.used": AttributeMetadata( brief="The number of tokens used to respond to the message.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=10, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.output_tokens" - ), - aliases=["gen_ai.usage.output_tokens","gen_ai.usage.completion_tokens"], + deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), + aliases=["gen_ai.usage.output_tokens", "gen_ai.usage.completion_tokens"], sdks=["python"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5496,9 +5767,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.documents": AttributeMetadata( brief="Documents or content chunks used as context for the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["document1.txt", "document2.pdf"], deprecation=DeprecationInfo(), @@ -5510,14 +5779,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.finish_reason": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="COMPLETE", - deprecation=DeprecationInfo( - replacement="gen_ai.response.finish_reason" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.finish_reason"), aliases=["gen_ai.response.finish_reasons"], changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108, 127]), @@ -5526,14 +5791,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo( - replacement="gen_ai.request.frequency_penalty" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.frequency_penalty"), aliases=["gen_ai.request.frequency_penalty"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5543,14 +5804,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.function_call": AttributeMetadata( brief="For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="function_name", - deprecation=DeprecationInfo( - replacement="gen_ai.tool.name" - ), + deprecation=DeprecationInfo(replacement="gen_ai.tool.name"), aliases=["gen_ai.tool.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108]), @@ -5559,14 +5816,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.generation_id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="gen_123abc", - deprecation=DeprecationInfo( - replacement="gen_ai.response.id" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.id"), aliases=["gen_ai.response.id"], changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108, 127]), @@ -5575,14 +5828,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.input_messages": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"role\": \"user\", \"message\": \"hello\"}]", - deprecation=DeprecationInfo( - replacement="gen_ai.request.messages" - ), + example='[{"role": "user", "message": "hello"}]', + deprecation=DeprecationInfo(replacement="gen_ai.request.messages"), aliases=["gen_ai.request.messages"], sdks=["python"], changelog=[ @@ -5593,9 +5842,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.is_search_required": AttributeMetadata( brief="Boolean indicating if the model needs to perform a search.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=False, deprecation=DeprecationInfo(), @@ -5607,11 +5854,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.metadata": AttributeMetadata( brief="Extra metadata passed to an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="{\"user_id\": 123, \"session_id\": \"abc123\"}", + example='{"user_id": 123, "session_id": "abc123"}', deprecation=DeprecationInfo(), changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5621,15 +5866,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.model.provider": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="openai", - deprecation=DeprecationInfo( - replacement="gen_ai.provider.name" - ), - aliases=["gen_ai.provider.name","gen_ai.system"], + deprecation=DeprecationInfo(replacement="gen_ai.provider.name"), + aliases=["gen_ai.provider.name", "gen_ai.system"], changelog=[ ChangelogEntry(version="0.4.0", prs=[253]), ChangelogEntry(version="0.1.0", prs=[57, 61, 108, 127]), @@ -5638,14 +5879,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.model_id": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="gpt-4", - deprecation=DeprecationInfo( - replacement="gen_ai.response.model" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.model"), aliases=["gen_ai.response.model"], sdks=["python"], changelog=[ @@ -5656,14 +5893,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.pipeline.name": AttributeMetadata( brief="The name of the AI pipeline.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Autofix Pipeline", - deprecation=DeprecationInfo( - replacement="gen_ai.pipeline.name" - ), + deprecation=DeprecationInfo(replacement="gen_ai.pipeline.name"), aliases=["gen_ai.pipeline.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[53, 76, 108, 127]), @@ -5672,14 +5905,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.preamble": AttributeMetadata( brief="For an AI model call, the preamble parameter. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="You are now a clown.", - deprecation=DeprecationInfo( - replacement="gen_ai.system_instructions" - ), + deprecation=DeprecationInfo(replacement="gen_ai.system_instructions"), aliases=["gen_ai.system_instructions"], changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5689,14 +5918,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo( - replacement="gen_ai.request.presence_penalty" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.presence_penalty"), aliases=["gen_ai.request.presence_penalty"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5706,15 +5931,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.prompt_tokens.used": AttributeMetadata( brief="The number of tokens used to process just the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=20, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.input_tokens" - ), - aliases=["gen_ai.usage.prompt_tokens","gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), + aliases=["gen_ai.usage.prompt_tokens", "gen_ai.usage.input_tokens"], sdks=["python"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5725,9 +5946,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.raw_prompting": AttributeMetadata( brief="When enabled, the user’s prompt will be sent to the model without any pre-processing.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, deprecation=DeprecationInfo(), @@ -5739,9 +5958,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.response_format": AttributeMetadata( brief="For an AI model call, the format of the response", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="json_object", deprecation=DeprecationInfo(), @@ -5753,14 +5970,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.responses": AttributeMetadata( brief="The response messages sent back by the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["hello", "world"], - deprecation=DeprecationInfo( - replacement="gen_ai.response.text" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.text"), sdks=["python"], changelog=[ ChangelogEntry(version="0.1.0", prs=[65, 127]), @@ -5770,9 +5983,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.search_queries": AttributeMetadata( brief="Queries used to search for relevant context or documents.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["climate change effects", "renewable energy"], deprecation=DeprecationInfo(), @@ -5784,9 +5995,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.search_results": AttributeMetadata( brief="Results returned from search queries for context.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["search_result_1, search_result_2"], deprecation=DeprecationInfo(), @@ -5798,14 +6007,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="1234567890", - deprecation=DeprecationInfo( - replacement="gen_ai.request.seed" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.seed"), aliases=["gen_ai.request.seed"], changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108, 127]), @@ -5814,14 +6019,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.streaming": AttributeMetadata( brief="Whether the request was streamed back.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, - deprecation=DeprecationInfo( - replacement="gen_ai.response.streaming" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.streaming"), aliases=["gen_ai.response.streaming"], sdks=["python"], changelog=[ @@ -5832,11 +6033,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.tags": AttributeMetadata( brief="Tags that describe an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="{\"executed_function\": \"add_integers\"}", + example='{"executed_function": "add_integers"}', deprecation=DeprecationInfo(), changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5846,14 +6045,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.1, - deprecation=DeprecationInfo( - replacement="gen_ai.request.temperature" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.temperature"), aliases=["gen_ai.request.temperature"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5863,14 +6058,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.texts": AttributeMetadata( brief="Raw text inputs provided to the model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["Hello, how are you?", "What is the capital of France?"], - deprecation=DeprecationInfo( - replacement="gen_ai.input.messages" - ), + deprecation=DeprecationInfo(replacement="gen_ai.input.messages"), aliases=["gen_ai.input.messages"], changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5880,14 +6071,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.tool_calls": AttributeMetadata( brief="For an AI model call, the tool calls that were made.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["tool_call_1", "tool_call_2"], - deprecation=DeprecationInfo( - replacement="gen_ai.response.tool_calls" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.tool_calls"), changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 65]), ], @@ -5895,14 +6082,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.tools": AttributeMetadata( brief="For an AI model call, the functions that are available", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["function_1", "function_2"], - deprecation=DeprecationInfo( - replacement="gen_ai.request.available_tools" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.available_tools"), changelog=[ ChangelogEntry(version="0.1.0", prs=[55, 65, 127]), ], @@ -5910,14 +6093,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=35, - deprecation=DeprecationInfo( - replacement="gen_ai.request.top_k" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.top_k"), aliases=["gen_ai.request.top_k"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5927,14 +6106,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.7, - deprecation=DeprecationInfo( - replacement="gen_ai.request.top_p" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.top_p"), aliases=["gen_ai.request.top_p"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -5944,14 +6119,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.total_cost": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=12.34, - deprecation=DeprecationInfo( - replacement="gen_ai.cost.total_tokens" - ), + deprecation=DeprecationInfo(replacement="gen_ai.cost.total_tokens"), aliases=["gen_ai.cost.total_tokens"], changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -5962,14 +6133,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.total_tokens.used": AttributeMetadata( brief="The total number of tokens used to process the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=30, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.total_tokens" - ), + deprecation=DeprecationInfo(replacement="gen_ai.usage.total_tokens"), aliases=["gen_ai.usage.total_tokens"], sdks=["python"], changelog=[ @@ -5981,9 +6148,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.warnings": AttributeMetadata( brief="Warning messages generated during model execution.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["Token limit exceeded"], deprecation=DeprecationInfo(), @@ -5995,87 +6160,117 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "app.build": AttributeMetadata( brief="Internal build identifier, as it appears on the platform.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="1", - sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], changelog=[ - ChangelogEntry(version="next", prs=[296], description="Added app.build attribute"), + 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 - ), + 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"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], changelog=[ - ChangelogEntry(version="next", prs=[296], description="Added app.identifier attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, - sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], + 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"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="My App", - sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], changelog=[ - ChangelogEntry(version="next", prs=[296], description="Added app.name attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="2025-01-01T00:00:00.000Z", - sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], + 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"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="1.0.0", - sdks=["sentry.cocoa","sentry.java.android","sentry.javascript.react-native","sentry.dart.flutter"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], changelog=[ - ChangelogEntry(version="next", prs=[296], description="Added app.version attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="cold", changelog=[ @@ -6086,9 +6281,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "blocked_main_thread": AttributeMetadata( brief="Whether the main thread was blocked by the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, changelog=[ @@ -6098,9 +6291,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Chrome", aliases=["sentry.browser.name"], @@ -6112,9 +6303,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.report.type": AttributeMetadata( brief="A browser report sent via reporting API..", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="network-error", changelog=[ @@ -6124,9 +6313,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.invoker": AttributeMetadata( brief="How a script was called in the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Window.requestAnimationFrame", sdks=["browser"], @@ -6138,9 +6325,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.invoker_type": AttributeMetadata( brief="Browser script entry point type.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="event-listener", sdks=["browser"], @@ -6152,9 +6337,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.source_char_position": AttributeMetadata( brief="A number representing the script character position of the script.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=678, sdks=["browser"], @@ -6166,9 +6349,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="120.0.6099.130", aliases=["sentry.browser.version"], @@ -6179,9 +6360,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.cls.source.": AttributeMetadata( brief="The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="body > div#app", @@ -6194,23 +6373,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.cls.value": AttributeMetadata( brief="The value of the recorded Cumulative Layout Shift (CLS) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.2361, aliases=["cls"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[229], description="Added browser.web_vital.cls.value attribute"), + ChangelogEntry( + version="next", + prs=[229], + description="Added browser.web_vital.cls.value attribute", + ), ], ), "browser.web_vital.fcp.value": AttributeMetadata( brief="The time it takes for the browser to render the first piece of meaningful content on the screen", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=547.6951, aliases=["fcp"], @@ -6222,9 +6401,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.fp.value": AttributeMetadata( brief="The time in milliseconds it takes for the browser to render the first pixel on the screen", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=477.1926, aliases=["fp"], @@ -6236,23 +6413,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.inp.value": AttributeMetadata( brief="The value of the recorded Interaction to Next Paint (INP) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=200, aliases=["inp"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[229], description="Added browser.web_vital.inp.value attribute"), + ChangelogEntry( + version="next", + prs=[229], + description="Added browser.web_vital.inp.value attribute", + ), ], ), "browser.web_vital.lcp.element": AttributeMetadata( brief="The HTML element selector or component name for which LCP was reported", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="body > div#app > div#container > div", aliases=["lcp.element"], @@ -6264,9 +6441,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="#gero", aliases=["lcp.id"], @@ -6278,9 +6453,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.load_time": AttributeMetadata( brief="The time it took for the LCP element to be loaded", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1402, aliases=["lcp.loadTime"], @@ -6292,9 +6465,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.render_time": AttributeMetadata( brief="The time it took for the LCP element to be rendered", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1685, aliases=["lcp.renderTime"], @@ -6306,9 +6477,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1024, aliases=["lcp.size"], @@ -6320,9 +6489,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com/static/img.png", aliases=["lcp.url"], @@ -6334,23 +6501,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.lcp.value": AttributeMetadata( brief="The value of the recorded Largest Contentful Paint (LCP) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2500, aliases=["lcp"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[229], description="Added browser.web_vital.lcp.value attribute"), + ChangelogEntry( + version="next", + prs=[229], + description="Added browser.web_vital.lcp.value attribute", + ), ], ), "browser.web_vital.ttfb.request_time": AttributeMetadata( brief="The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1554.5814, aliases=["ttfb.requestTime"], @@ -6362,9 +6529,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.web_vital.ttfb.value": AttributeMetadata( brief="The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=194.3322, aliases=["ttfb"], @@ -6376,9 +6541,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.hit": AttributeMetadata( brief="If the cache was hit during this span.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, sdks=["php-laravel"], @@ -6389,9 +6552,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.item_size": AttributeMetadata( brief="The size of the requested item in the cache. In bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=58, changelog=[ @@ -6402,9 +6563,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.key": AttributeMetadata( brief="The key of the cache accessed.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["my-cache-key", "my-other-cache-key"], sdks=["php-laravel"], @@ -6415,9 +6574,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.operation": AttributeMetadata( brief="The operation being performed on the cache.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="get", sdks=["php-laravel"], @@ -6429,9 +6586,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.ttl": AttributeMetadata( brief="The ttl of the cache in seconds", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=120, sdks=["php-laravel"], @@ -6443,9 +6598,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "channel": AttributeMetadata( brief="The channel name that is being used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="mail", sdks=["php-laravel"], @@ -6457,9 +6610,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.address": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="example.com", aliases=["http.client_ip"], @@ -6471,9 +6622,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.port": AttributeMetadata( brief="Client port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=5432, changelog=[ @@ -6484,9 +6633,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.duration": AttributeMetadata( brief="The duration of a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=543, sdks=["javascript-cloudflare"], @@ -6498,9 +6645,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_read": AttributeMetadata( brief="The number of rows read in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -6512,9 +6657,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_written": AttributeMetadata( brief="The number of rows written in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -6526,16 +6669,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cls.source.": AttributeMetadata( brief="The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="body > div#app", deprecation=DeprecationInfo( replacement="browser.web_vital.cls.source.", reason="The CLS source is now recorded as a browser.web_vital.cls.source. attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.cls.source."], sdks=["javascript-browser"], @@ -6546,28 +6687,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cls": AttributeMetadata( brief="The value of the recorded Cumulative Layout Shift (CLS) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.2361, deprecation=DeprecationInfo( replacement="browser.web_vital.cls.value", reason="The CLS web vital is now recorded as a browser.web_vital.cls.value attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.cls.value"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[229], description="Added and deprecated attribute to document JS SDK's current behaviour"), + ChangelogEntry( + version="next", + prs=[229], + description="Added and deprecated attribute to document JS SDK's current behaviour", + ), ], ), "code.file.path": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/app/myapplication/http/handler/server.py", aliases=["code.filepath"], @@ -6578,14 +6719,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.filepath": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/app/myapplication/http/handler/server.py", - deprecation=DeprecationInfo( - replacement="code.file.path" - ), + deprecation=DeprecationInfo(replacement="code.file.path"), aliases=["code.file.path"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61]), @@ -6595,14 +6732,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.function": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="server_request", - deprecation=DeprecationInfo( - replacement="code.function.name" - ), + deprecation=DeprecationInfo(replacement="code.function.name"), aliases=["code.function.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 74]), @@ -6612,9 +6745,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.function.name": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="server_request", aliases=["code.function"], @@ -6626,9 +6757,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.line.number": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=42, aliases=["code.lineno"], @@ -6640,14 +6769,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.lineno": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=42, - deprecation=DeprecationInfo( - replacement="code.line.number" - ), + deprecation=DeprecationInfo(replacement="code.line.number"), aliases=["code.line.number"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -6658,14 +6783,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.namespace": AttributeMetadata( brief="The 'namespace' within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="http.handler", deprecation=DeprecationInfo( replacement="code.function.name", - reason="code.function.name should include the namespace." + reason="code.function.name should include the namespace.", ), changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 74]), @@ -6675,9 +6798,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.calendar": AttributeMetadata( brief="The calendar system used by the culture.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GregorianCalendar", changelog=[ @@ -6687,9 +6808,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.display_name": AttributeMetadata( brief="Human readable name of the culture.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="English (United States)", changelog=[ @@ -6699,9 +6818,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.is_24_hour_format": AttributeMetadata( brief="Whether the culture uses 24-hour time format.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=True, changelog=[ @@ -6711,9 +6828,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.locale": AttributeMetadata( brief="The locale identifier following RFC 4646.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="en-US", changelog=[ @@ -6723,9 +6838,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.timezone": AttributeMetadata( brief="The timezone of the culture, as a geographic timezone identifier.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Europe/Vienna", changelog=[ @@ -6735,9 +6848,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.collection.name": AttributeMetadata( brief="The name of a collection (table, container) within the database.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="users", changelog=[ @@ -6748,14 +6859,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.name": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="customers", - deprecation=DeprecationInfo( - replacement="db.namespace" - ), + deprecation=DeprecationInfo(replacement="db.namespace"), aliases=["db.namespace"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -6765,9 +6872,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.namespace": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="customers", aliases=["db.name"], @@ -6779,14 +6884,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.operation": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT", deprecation=DeprecationInfo( - replacement="db.operation.name", - status=DeprecationStatus.NORMALIZE + replacement="db.operation.name", status=DeprecationStatus.NORMALIZE ), aliases=["db.operation.name"], changelog=[ @@ -6798,9 +6900,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT", aliases=["db.operation"], @@ -6812,9 +6912,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.parameter.": AttributeMetadata( brief="A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, has_dynamic_suffix=True, example="db.query.parameter.foo='123'", @@ -6825,9 +6923,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.summary": AttributeMetadata( brief="A shortened representation of operation(s) in the full query. This attribute must be low-cardinality and should only contain the operation table names.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT users;", changelog=[ @@ -6839,9 +6935,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.text": AttributeMetadata( brief="The database parameterized query being executed. Any parameter values (filters, insertion values, etc) should be replaced with parameter placeholders. If applicable, use `db.query.parameter.` to add the parameter value.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT * FROM users WHERE id = $1", aliases=["db.statement"], @@ -6854,9 +6948,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.connection": AttributeMetadata( brief="The redis connection name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="my-redis-instance", sdks=["php-laravel"], @@ -6868,9 +6960,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.parameters": AttributeMetadata( brief="The array of command parameters given to a redis command.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["test", "*"], sdks=["php-laravel"], @@ -6881,14 +6971,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.sql.bindings": AttributeMetadata( brief="The array of query bindings.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["1", "foo"], deprecation=DeprecationInfo( replacement="db.query.parameter.", - reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.." + reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter..", ), sdks=["php-laravel"], changelog=[ @@ -6899,14 +6987,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.statement": AttributeMetadata( brief="The database statement being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT * FROM users", deprecation=DeprecationInfo( - replacement="db.query.text", - status=DeprecationStatus.NORMALIZE + replacement="db.query.text", status=DeprecationStatus.NORMALIZE ), aliases=["db.query.text"], changelog=[ @@ -6918,14 +7003,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.system": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="postgresql", deprecation=DeprecationInfo( - replacement="db.system.name", - status=DeprecationStatus.BACKFILL + replacement="db.system.name", status=DeprecationStatus.BACKFILL ), aliases=["db.system.name"], changelog=[ @@ -6937,9 +7019,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.system.name": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="postgresql", aliases=["db.system"], @@ -6951,9 +7031,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.user": AttributeMetadata( brief="The database user.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="fancy_user", changelog=[ @@ -6963,45 +7041,49 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "device.battery_level": AttributeMetadata( brief="The battery level of the device as a percentage (0-100).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=100, changelog=[ - ChangelogEntry(version="next", description="Added device.battery_level attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=25, changelog=[ - ChangelogEntry(version="next", description="Added device.battery_temperature attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="2018-02-08T12:52:12Z", changelog=[ - ChangelogEntry(version="next", description="Added device.boot_time attribute"), + ChangelogEntry( + version="next", + prs=[303], + description="Added device.boot_time attribute", + ), ], ), "device.brand": AttributeMetadata( brief="The brand of the device.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Apple", changelog=[ @@ -7011,33 +7093,31 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "device.charging": AttributeMetadata( brief="Whether the device was charging or not.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=False, changelog=[ - ChangelogEntry(version="next", description="Added device.charging attribute"), + ChangelogEntry( + version="next", prs=[303], description="Added device.charging 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, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="medium", changelog=[ - ChangelogEntry(version="next", prs=[300], description="Added device.class attribute"), + ChangelogEntry( + version="next", prs=[300], description="Added device.class attribute" + ), ], ), "device.family": AttributeMetadata( brief="The family of the device.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="iPhone", changelog=[ @@ -7047,95 +7127,105 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "device.free_memory": AttributeMetadata( brief="Free system memory in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2147483648, changelog=[ - ChangelogEntry(version="next", prs=[300], description="Added device.free_memory attribute"), + ChangelogEntry( + version="next", + prs=[300], + description="Added device.free_memory attribute", + ), ], ), "device.free_storage": AttributeMetadata( brief="Free device storage in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=107374182400, changelog=[ - ChangelogEntry(version="next", description="Added device.free_storage attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="a1b2c3d4-e5f6-7890-abcd-ef1234567890", changelog=[ - ChangelogEntry(version="next", description="Added device.id attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=False, changelog=[ - ChangelogEntry(version="next", description="Added device.low_memory attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Google", changelog=[ - ChangelogEntry(version="next", description="Added device.manufacturer attribute"), + 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, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=8, aliases=["deviceMemory"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[281], description="Added attribute device.memory.estimated_capacity to be used instead of deviceMemory"), + ChangelogEntry( + version="next", + prs=[281], + description="Added attribute device.memory.estimated_capacity to be used instead of deviceMemory", + ), ], ), "device.memory_size": AttributeMetadata( brief="Total system memory available in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=17179869184, changelog=[ - ChangelogEntry(version="next", prs=[300], description="Added device.memory_size attribute"), + ChangelogEntry( + version="next", + prs=[300], + description="Added device.memory_size attribute", + ), ], ), "device.model": AttributeMetadata( brief="The model of the device.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="iPhone 15 Pro Max", changelog=[ @@ -7145,191 +7235,213 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "device.model_id": AttributeMetadata( brief="An internal hardware revision to identify the device exactly.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="N861AP", changelog=[ - ChangelogEntry(version="next", prs=[300], description="Added device.model_id attribute"), + ChangelogEntry( + version="next", prs=[300], description="Added device.model_id attribute" + ), ], ), "device.name": AttributeMetadata( - brief="The name of the device, typically a hostname.", + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="localhost", changelog=[ - ChangelogEntry(version="next", description="Added device.name attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=True, changelog=[ - ChangelogEntry(version="next", description="Added device.online attribute"), + ChangelogEntry( + version="next", prs=[303], description="Added device.online attribute" + ), ], ), "device.orientation": AttributeMetadata( - brief="The orientation of the device, either \"portrait\" or \"landscape\".", + brief='The orientation of the device, either "portrait" or "landscape".', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="portrait", changelog=[ - ChangelogEntry(version="next", description="Added device.orientation attribute"), + ChangelogEntry( + version="next", + prs=[303], + description="Added device.orientation attribute", + ), ], ), "device.processor_count": AttributeMetadata( - brief="Number of \"logical processors\".", + brief='Number of "logical processors".', type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=8, aliases=["hardwareConcurrency"], changelog=[ - ChangelogEntry(version="next", prs=[300], description="Removed deprecation, device.processor_count is now the canonical attribute"), - ChangelogEntry(version="next", prs=[300], description="Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count"), + ChangelogEntry( + version="next", + prs=[300], + description="Removed deprecation, device.processor_count is now the canonical attribute", + ), + ChangelogEntry( + version="next", + prs=[300], + description="Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count", + ), ], ), "device.processor_frequency": AttributeMetadata( brief="Processor frequency in MHz.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2400, changelog=[ - ChangelogEntry(version="next", description="Added device.processor_frequency attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2.625, changelog=[ - ChangelogEntry(version="next", description="Added device.screen_density attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=420, changelog=[ - ChangelogEntry(version="next", description="Added device.screen_dpi attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2400, changelog=[ - ChangelogEntry(version="next", description="Added device.screen_height_pixels attribute"), + 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 - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1080, changelog=[ - ChangelogEntry(version="next", description="Added device.screen_width_pixels attribute"), + 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, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=False, changelog=[ - ChangelogEntry(version="next", prs=[300], description="Added device.simulator attribute"), + ChangelogEntry( + version="next", + prs=[300], + description="Added device.simulator attribute", + ), ], ), "device.storage_size": AttributeMetadata( brief="Total device storage in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=274877906944, changelog=[ - ChangelogEntry(version="next", description="Added device.storage_size attribute"), + ChangelogEntry( + version="next", + prs=[303], + description="Added device.storage_size attribute", + ), ], ), "device.usable_memory": AttributeMetadata( brief="Memory usable for the app in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2147483648, changelog=[ - ChangelogEntry(version="next", description="Added device.usable_memory attribute"), + 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, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="8 GB", deprecation=DeprecationInfo( replacement="device.memory.estimated_capacity", reason="Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["device.memory.estimated_capacity"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[281], description="Added and deprecated attribute to document JS SDK's current behaviour"), + ChangelogEntry( + version="next", + prs=[281], + description="Added and deprecated attribute to document JS SDK's current behaviour", + ), ], ), "environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="production", - deprecation=DeprecationInfo( - replacement="sentry.environment" - ), + deprecation=DeprecationInfo(replacement="sentry.environment"), aliases=["sentry.environment"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -7339,9 +7451,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "error.type": AttributeMetadata( brief="Describes a class of error the operation ended with.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="timeout", changelog=[ @@ -7352,9 +7462,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "event.id": AttributeMetadata( brief="The unique identifier for this event (log record)", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1234567890, changelog=[ @@ -7364,9 +7472,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "event.name": AttributeMetadata( brief="The name that uniquely identifies this event (log record)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Process Payload", changelog=[ @@ -7376,9 +7482,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "exception.escaped": AttributeMetadata( brief="SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, changelog=[ @@ -7388,9 +7492,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "exception.message": AttributeMetadata( brief="The error message.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ENOENT: no such file or directory", changelog=[ @@ -7401,11 +7503,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "exception.stacktrace": AttributeMetadata( brief="A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example="Exception in thread \"main\" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)", + example='Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)', changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -7414,9 +7514,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "exception.type": AttributeMetadata( brief="The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="OSError", changelog=[ @@ -7427,9 +7525,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "faas.coldstart": AttributeMetadata( brief="A boolean that is true if the serverless function is executed for the first time (aka cold-start).", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, changelog=[ @@ -7439,9 +7535,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "faas.cron": AttributeMetadata( brief="A string containing the schedule period as Cron Expression.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="0/5 * * * ? *", changelog=[ @@ -7452,9 +7546,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "faas.time": AttributeMetadata( brief="A string containing the function invocation time in the ISO 8601 format expressed in UTC.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="2020-01-23T13:47:06Z", changelog=[ @@ -7465,9 +7557,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "faas.trigger": AttributeMetadata( brief="Type of the trigger which caused this function invocation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="timer", changelog=[ @@ -7478,15 +7568,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "fcp": AttributeMetadata( brief="The time it takes for the browser to render the first piece of meaningful content on the screen", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=547.6951, deprecation=DeprecationInfo( replacement="browser.web_vital.fcp.value", reason="This attribute is being deprecated in favor of browser.web_vital.fcp.value", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.fcp.value"], sdks=["javascript-browser"], @@ -7497,9 +7585,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "flag.evaluation.": AttributeMetadata( brief="An instance of a feature flag evaluation. The value of this attribute is the boolean representing the evaluation result. The suffix is the name of the feature flag.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, has_dynamic_suffix=True, example="flag.evaluation.is_new_ui=true", @@ -7510,15 +7596,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "fp": AttributeMetadata( brief="The time it takes for the browser to render the first pixel on the screen", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=477.1926, deprecation=DeprecationInfo( replacement="browser.web_vital.fp.value", reason="This attribute is being deprecated in favor of browser.web_vital.fp.value", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.fp.value"], sdks=["javascript-browser"], @@ -7529,9 +7613,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.delay": AttributeMetadata( brief="The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=5, changelog=[ @@ -7542,9 +7624,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.frozen": AttributeMetadata( brief="The number of frozen frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=3, changelog=[ @@ -7555,9 +7635,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.slow": AttributeMetadata( brief="The number of slow frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1, changelog=[ @@ -7568,9 +7646,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.total": AttributeMetadata( brief="The number of total frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=60, changelog=[ @@ -7581,14 +7657,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "fs_error": AttributeMetadata( brief="The error message of a file system error.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="ENOENT: no such file or directory", deprecation=DeprecationInfo( replacement="error.type", - reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better." + reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better.", ), sdks=["javascript-node"], changelog=[ @@ -7599,9 +7673,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.agent.name": AttributeMetadata( brief="The name of the agent being used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ResearchAssistant", changelog=[ @@ -7611,9 +7683,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.conversation.id": AttributeMetadata( brief="The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="conv_5j66UpCpwteGg4YSxUnt7lPY", changelog=[ @@ -7623,9 +7693,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.cost.input_tokens": AttributeMetadata( brief="The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=123.45, changelog=[ @@ -7636,9 +7704,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.cost.output_tokens": AttributeMetadata( brief="The cost of tokens used for creating the AI output in USD (without reasoning tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=123.45, changelog=[ @@ -7649,9 +7715,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.cost.total_tokens": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=12.34, aliases=["ai.total_cost"], @@ -7664,9 +7728,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.embeddings.input": AttributeMetadata( brief="The input to the embeddings model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="What's the weather in Paris?", changelog=[ @@ -7674,13 +7736,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "gen_ai.input.messages": AttributeMetadata( - brief="The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example="[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Weather in Paris?\"}]}, {\"role\": \"assistant\", \"parts\": [{\"type\": \"tool_call\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]}, {\"role\": \"tool\", \"parts\": [{\"type\": \"tool_call_response\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"result\": \"rainy, 57°F\"}]}]", + example='[{"role": "user", "parts": [{"type": "text", "content": "Weather in Paris?"}]}, {"role": "assistant", "parts": [{"type": "tool_call", "id": "call_VSPygqKTWdrhaFErNvMV18Yl", "name": "get_weather", "arguments": {"location": "Paris"}}]}, {"role": "tool", "parts": [{"type": "tool_call_response", "id": "call_VSPygqKTWdrhaFErNvMV18Yl", "result": "rainy, 57°F"}]}]', aliases=["ai.texts"], changelog=[ ChangelogEntry(version="next", prs=[264]), @@ -7690,9 +7750,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.operation.name": AttributeMetadata( brief="The name of the operation being performed. It has the following list of well-known values: 'chat', 'create_agent', 'embeddings', 'execute_tool', 'generate_content', 'invoke_agent', 'text_completion'. If one of them applies, then that value MUST be used. Otherwise a custom value MAY be used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="chat", changelog=[ @@ -7703,9 +7761,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.operation.type": AttributeMetadata( brief="The type of AI operation. Must be one of 'agent' (invoke_agent and create_agent spans), 'ai_client' (any LLM call), 'tool' (execute_tool spans), 'handoff' (handoff spans), 'other' (input and output processors, skill loading, guardrails etc.) . Added during ingestion based on span.op and gen_ai.operation.type. Used to filter and aggregate data in the UI", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="tool", changelog=[ @@ -7716,11 +7772,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.output.messages": AttributeMetadata( brief="The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example="[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]", + example='[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]', changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ], @@ -7728,9 +7782,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.pipeline.name": AttributeMetadata( brief="Name of the AI pipeline or chain being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Autofix Pipeline", aliases=["ai.pipeline.name"], @@ -7741,11 +7793,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.prompt": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example="[{\"role\": \"user\", \"message\": \"hello\"}]", + example='[{"role": "user", "message": "hello"}]', deprecation=DeprecationInfo( reason="Deprecated from OTEL, use gen_ai.input.messages with the new format instead." ), @@ -7757,12 +7807,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.provider.name": AttributeMetadata( brief="The Generative AI provider as identified by the client or server instrumentation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="openai", - aliases=["ai.model.provider","gen_ai.system"], + aliases=["ai.model.provider", "gen_ai.system"], changelog=[ ChangelogEntry(version="0.4.0", prs=[253]), ], @@ -7770,14 +7818,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.available_tools": AttributeMetadata( brief="The available tools for the model. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]", - deprecation=DeprecationInfo( - replacement="gen_ai.tool.definitions" - ), + example='[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]', + deprecation=DeprecationInfo(replacement="gen_ai.tool.definitions"), changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ChangelogEntry(version="0.1.0", prs=[63, 127]), @@ -7786,9 +7830,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=0.5, aliases=["ai.frequency_penalty"], @@ -7800,9 +7842,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.max_tokens": AttributeMetadata( brief="The maximum number of tokens to generate in the response.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=2048, changelog=[ @@ -7811,16 +7851,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "gen_ai.request.messages": AttributeMetadata( - brief="The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]", - deprecation=DeprecationInfo( - replacement="gen_ai.input.messages" - ), + example='[{"role": "system", "content": "Generate a random number."}, {"role": "user", "content": [{"text": "Generate a random number between 0 and 10.", "type": "text"}]}, {"role": "tool", "content": {"toolCallId": "1", "toolName": "Weather", "output": "rainy"}}]', + deprecation=DeprecationInfo(replacement="gen_ai.input.messages"), aliases=["ai.input_messages"], changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), @@ -7830,9 +7866,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.model": AttributeMetadata( brief="The model identifier being used for the request.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="gpt-4-turbo-preview", changelog=[ @@ -7842,9 +7876,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=0.5, aliases=["ai.presence_penalty"], @@ -7856,9 +7888,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1234567890", aliases=["ai.seed"], @@ -7869,9 +7899,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=0.1, aliases=["ai.temperature"], @@ -7883,9 +7911,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=35, aliases=["ai.top_k"], @@ -7897,9 +7923,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=0.7, aliases=["ai.top_p"], @@ -7911,9 +7935,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.finish_reasons": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="COMPLETE", aliases=["ai.finish_reason"], @@ -7924,9 +7946,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="gen_123abc", aliases=["ai.generation_id"], @@ -7937,9 +7957,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.model": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="gpt-4", aliases=["ai.model_id"], @@ -7951,9 +7969,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.streaming": AttributeMetadata( brief="Whether or not the AI model call's response was streamed back asynchronously", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, aliases=["ai.streaming"], @@ -7964,14 +7980,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.text": AttributeMetadata( brief="The model's response text messages. It has to be a stringified version of an array of response text messages.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[\"The weather in Paris is rainy and overcast, with temperatures around 57°F\", \"The weather in London is sunny and warm, with temperatures around 65°F\"]", - deprecation=DeprecationInfo( - replacement="gen_ai.output.messages" - ), + example='["The weather in Paris is rainy and overcast, with temperatures around 57°F", "The weather in London is sunny and warm, with temperatures around 65°F"]', + deprecation=DeprecationInfo(replacement="gen_ai.output.messages"), changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ChangelogEntry(version="0.1.0", prs=[63, 74]), @@ -7980,9 +7992,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.time_to_first_token": AttributeMetadata( brief="Time in seconds when the first response content chunk arrived in streaming responses.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.6853435, changelog=[ @@ -7992,9 +8002,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.tokens_per_second": AttributeMetadata( brief="The total output tokens per seconds throughput", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=12345.67, changelog=[ @@ -8005,14 +8013,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.tool_calls": AttributeMetadata( brief="The tool calls in the model's response. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", - deprecation=DeprecationInfo( - replacement="gen_ai.output.messages" - ), + example='[{"name": "get_weather", "arguments": {"location": "Paris"}}]', + deprecation=DeprecationInfo(replacement="gen_ai.output.messages"), changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ChangelogEntry(version="0.1.0", prs=[63, 74]), @@ -8021,15 +8025,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="openai", - deprecation=DeprecationInfo( - replacement="gen_ai.provider.name" - ), - aliases=["ai.model.provider","gen_ai.provider.name"], + deprecation=DeprecationInfo(replacement="gen_ai.provider.name"), + aliases=["ai.model.provider", "gen_ai.provider.name"], changelog=[ ChangelogEntry(version="0.4.0", prs=[253]), ChangelogEntry(version="0.1.0", prs=[57, 127]), @@ -8038,14 +8038,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system.message": AttributeMetadata( brief="The system instructions passed to the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="You are a helpful assistant", - deprecation=DeprecationInfo( - replacement="gen_ai.system_instructions" - ), + deprecation=DeprecationInfo(replacement="gen_ai.system_instructions"), changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ChangelogEntry(version="0.1.0", prs=[62]), @@ -8054,9 +8050,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system_instructions": AttributeMetadata( brief="The system instructions passed to the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="You are a helpful assistant", aliases=["ai.preamble"], @@ -8068,11 +8062,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.call.arguments": AttributeMetadata( brief="The arguments of the tool call. It has to be a stringified version of the arguments to the tool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example="{\"location\": \"Paris\"}", + example='{"location": "Paris"}', aliases=["gen_ai.tool.input"], changelog=[ ChangelogEntry(version="next", prs=[265]), @@ -8082,12 +8074,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.call.result": AttributeMetadata( brief="The result of the tool call. It has to be a stringified version of the result of the tool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="rainy, 57°F", - aliases=["gen_ai.tool.output","gen_ai.tool.message"], + aliases=["gen_ai.tool.output", "gen_ai.tool.message"], changelog=[ ChangelogEntry(version="next", prs=[265]), ChangelogEntry(version="0.4.0", prs=[221]), @@ -8096,11 +8086,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.definitions": AttributeMetadata( brief="The list of source system tool definitions available to the GenAI agent or model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example="[{\"type\": \"function\", \"name\": \"get_current_weather\", \"description\": \"Get the current weather in a given location\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"The city and state, e.g. San Francisco, CA\"}, \"unit\": {\"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"]}}, \"required\": [\"location\", \"unit\"]}}]", + example='[{"type": "function", "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "The city and state, e.g. San Francisco, CA"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["location", "unit"]}}]', changelog=[ ChangelogEntry(version="0.4.0", prs=[221]), ], @@ -8108,9 +8096,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.description": AttributeMetadata( brief="The description of the tool being used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Searches the web for current information about a topic", changelog=[ @@ -8120,14 +8106,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.input": AttributeMetadata( brief="The input of the tool being used. It has to be a stringified version of the input to the tool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="{\"location\": \"Paris\"}", - deprecation=DeprecationInfo( - replacement="gen_ai.tool.call.arguments" - ), + example='{"location": "Paris"}', + deprecation=DeprecationInfo(replacement="gen_ai.tool.call.arguments"), aliases=["gen_ai.tool.call.arguments"], changelog=[ ChangelogEntry(version="next", prs=[265]), @@ -8137,15 +8119,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.message": AttributeMetadata( brief="The response from a tool or function call passed to the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="rainy, 57°F", - deprecation=DeprecationInfo( - replacement="gen_ai.tool.call.result" - ), - aliases=["gen_ai.tool.call.result","gen_ai.tool.output"], + deprecation=DeprecationInfo(replacement="gen_ai.tool.call.result"), + aliases=["gen_ai.tool.call.result", "gen_ai.tool.output"], changelog=[ ChangelogEntry(version="next", prs=[265]), ChangelogEntry(version="0.1.0", prs=[62]), @@ -8154,9 +8132,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.name": AttributeMetadata( brief="Name of the tool utilized by the agent.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Flights", aliases=["ai.function_call"], @@ -8167,15 +8143,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.output": AttributeMetadata( brief="The output of the tool being used. It has to be a stringified version of the output of the tool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="rainy, 57°F", - deprecation=DeprecationInfo( - replacement="gen_ai.tool.call.result" - ), - aliases=["gen_ai.tool.call.result","gen_ai.tool.message"], + deprecation=DeprecationInfo(replacement="gen_ai.tool.call.result"), + aliases=["gen_ai.tool.call.result", "gen_ai.tool.message"], changelog=[ ChangelogEntry(version="next", prs=[265]), ChangelogEntry(version="0.1.0", prs=[63, 74]), @@ -8184,9 +8156,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.type": AttributeMetadata( brief="The type of tool being used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="function", changelog=[ @@ -8196,15 +8166,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.completion_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI response (completion).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=10, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.output_tokens" - ), - aliases=["ai.completion_tokens.used","gen_ai.usage.output_tokens"], + deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), + aliases=["ai.completion_tokens.used", "gen_ai.usage.output_tokens"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[61]), @@ -8214,12 +8180,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.input_tokens": AttributeMetadata( brief="The number of tokens used to process the AI input (prompt) including cached input tokens.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=10, - aliases=["ai.prompt_tokens.used","gen_ai.usage.prompt_tokens"], + aliases=["ai.prompt_tokens.used", "gen_ai.usage.prompt_tokens"], changelog=[ ChangelogEntry(version="next", prs=[261]), ChangelogEntry(version="0.4.0", prs=[228]), @@ -8230,9 +8194,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.input_tokens.cache_write": AttributeMetadata( brief="The number of tokens written to the cache when processing the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=100, changelog=[ @@ -8242,9 +8204,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.input_tokens.cached": AttributeMetadata( brief="The number of cached tokens used to process the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=50, changelog=[ @@ -8255,12 +8215,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.output_tokens": AttributeMetadata( brief="The number of tokens used for creating the AI output (including reasoning tokens).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=10, - aliases=["ai.completion_tokens.used","gen_ai.usage.completion_tokens"], + aliases=["ai.completion_tokens.used", "gen_ai.usage.completion_tokens"], changelog=[ ChangelogEntry(version="next", prs=[261]), ChangelogEntry(version="0.4.0", prs=[228]), @@ -8271,9 +8229,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.output_tokens.reasoning": AttributeMetadata( brief="The number of tokens used for reasoning to create the AI output.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=75, changelog=[ @@ -8284,15 +8240,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.prompt_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=20, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.input_tokens" - ), - aliases=["ai.prompt_tokens.used","gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), + aliases=["ai.prompt_tokens.used", "gen_ai.usage.input_tokens"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[61]), @@ -8302,9 +8254,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.total_tokens": AttributeMetadata( brief="The total number of tokens used to process the prompt. (input tokens plus output todkens)", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=20, aliases=["ai.total_tokens.used"], @@ -8316,9 +8266,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "graphql.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="findBookById", changelog=[ @@ -8329,9 +8277,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "graphql.operation.type": AttributeMetadata( brief="The type of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="query", changelog=[ @@ -8342,34 +8288,36 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "hardwareConcurrency": AttributeMetadata( brief="The number of logical CPU cores available.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="14", deprecation=DeprecationInfo( replacement="device.processor_count", reason="Old namespace-less attribute, to be replaced with device.processor_count for span-first future", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["device.processor_count"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[300], description="Updated deprecation replacement from device.cpu.logical_core_count to device.processor_count"), - ChangelogEntry(version="next", prs=[281], description="Added and deprecated attribute to document JS SDK's current behaviour"), + ChangelogEntry( + version="next", + prs=[300], + description="Updated deprecation replacement from device.cpu.logical_core_count to device.processor_count", + ), + ChangelogEntry( + version="next", + prs=[281], + description="Added and deprecated attribute to document JS SDK's current behaviour", + ), ], ), "http.client_ip": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo( - replacement="client.address" - ), + deprecation=DeprecationInfo(replacement="client.address"), aliases=["client.address"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 106, 127]), @@ -8379,9 +8327,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.decoded_response_content_length": AttributeMetadata( brief="The decoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=456, sdks=["javascript-browser"], @@ -8393,15 +8339,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.flavor": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo( - replacement="network.protocol.version" - ), - aliases=["network.protocol.version","net.protocol.version"], + deprecation=DeprecationInfo(replacement="network.protocol.version"), + aliases=["network.protocol.version", "net.protocol.version"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -8410,9 +8352,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="#details", changelog=[ @@ -8422,16 +8362,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.host": AttributeMetadata( brief="The domain name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage" + reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage", ), - aliases=["server.address","client.address","http.server_name","net.host.name"], + aliases=[ + "server.address", + "client.address", + "http.server_name", + "net.host.name", + ], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -8440,14 +8383,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="GET", - deprecation=DeprecationInfo( - replacement="http.request.method" - ), + deprecation=DeprecationInfo(replacement="http.request.method"), aliases=["http.request.method"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -8459,7 +8398,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", ), is_in_otel=False, example="?foo=bar&bar=baz", @@ -8470,9 +8409,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connect_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.111, sdks=["javascript-browser"], @@ -8485,9 +8422,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connection_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.15, sdks=["javascript-browser"], @@ -8500,9 +8435,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.201, sdks=["javascript-browser"], @@ -8515,9 +8448,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.322, sdks=["javascript-browser"], @@ -8530,9 +8461,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.fetch_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.389, sdks=["javascript-browser"], @@ -8545,9 +8474,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.header.": AttributeMetadata( brief="HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, has_dynamic_suffix=True, example="http.request.header.custom-header=['foo', 'bar']", @@ -8559,12 +8486,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="GET", - aliases=["method","http.method"], + aliases=["method", "http.method"], changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -8573,9 +8498,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.redirect_end": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829558.502, sdks=["javascript-browser"], @@ -8587,9 +8510,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.redirect_start": AttributeMetadata( brief="The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.495, sdks=["javascript-browser"], @@ -8602,9 +8523,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.request_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.51, sdks=["javascript-browser"], @@ -8617,9 +8536,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.resend_count": AttributeMetadata( brief="The ordinal number of request resending attempt (for any reason, including redirects).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2, changelog=[ @@ -8630,9 +8547,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.response_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.89, sdks=["javascript-browser"], @@ -8645,9 +8560,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.response_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.7, sdks=["javascript-browser"], @@ -8660,9 +8573,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.secure_connection_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829555.73, sdks=["javascript-browser"], @@ -8675,9 +8586,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.time_to_first_byte": AttributeMetadata( brief="The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1.032, sdks=["javascript-browser"], @@ -8689,9 +8598,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.worker_start": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732829553.68, sdks=["javascript-browser"], @@ -8703,12 +8610,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.body.size": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=123, - aliases=["http.response_content_length","http.response.header.content-length"], + aliases=["http.response_content_length", "http.response.header.content-length"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[106]), @@ -8718,9 +8623,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.header.": AttributeMetadata( brief="HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, has_dynamic_suffix=True, example="http.response.header.custom-header=['foo', 'bar']", @@ -8732,12 +8635,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.header.content-length": AttributeMetadata( brief="The size of the message body sent to the recipient (in bytes)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="http.response.header.custom-header=['foo', 'bar']", - aliases=["http.response_content_length","http.response.body.size"], + aliases=["http.response_content_length", "http.response.body.size"], changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -8746,9 +8647,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=456, aliases=["http.response_transfer_size"], @@ -8760,9 +8659,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=404, aliases=["http.status_code"], @@ -8774,16 +8671,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response_content_length": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=123, deprecation=DeprecationInfo( - replacement="http.response.body.size", - status=DeprecationStatus.BACKFILL + replacement="http.response.body.size", status=DeprecationStatus.BACKFILL ), - aliases=["http.response.body.size","http.response.header.content-length"], + aliases=["http.response.body.size", "http.response.header.content-length"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[61, 106]), @@ -8793,14 +8687,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response_transfer_size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=456, deprecation=DeprecationInfo( - replacement="http.response.size", - status=DeprecationStatus.BACKFILL + replacement="http.response.size", status=DeprecationStatus.BACKFILL ), aliases=["http.response.size"], changelog=[ @@ -8812,9 +8703,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/users/:id", aliases=["url.template"], @@ -8826,14 +8715,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="https", - deprecation=DeprecationInfo( - replacement="url.scheme" - ), + deprecation=DeprecationInfo(replacement="url.scheme"), aliases=["url.scheme"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -8843,9 +8728,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.server.request.time_in_queue": AttributeMetadata( brief="The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=50, sdks=["ruby"], @@ -8856,15 +8739,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.server_name": AttributeMetadata( brief="The server domain name", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo( - replacement="server.address" - ), - aliases=["server.address","net.host.name","http.host"], + deprecation=DeprecationInfo(replacement="server.address"), + aliases=["server.address", "net.host.name", "http.host"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -8873,14 +8752,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=404, - deprecation=DeprecationInfo( - replacement="http.response.status_code" - ), + deprecation=DeprecationInfo(replacement="http.response.status_code"), aliases=["http.response.status_code"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -8891,14 +8766,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.target": AttributeMetadata( brief="The pathname and query string of the URL.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/test?foo=bar#buzz", deprecation=DeprecationInfo( replacement="url.path", - reason="This attribute is being deprecated in favor of url.path and url.query" + reason="This attribute is being deprecated in favor of url.path and url.query", ), changelog=[ ChangelogEntry(version="0.1.0", prs=[61]), @@ -8908,15 +8781,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo( - replacement="url.full" - ), - aliases=["url.full","url"], + deprecation=DeprecationInfo(replacement="url.full"), + aliases=["url.full", "url"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108]), ChangelogEntry(version="0.0.0"), @@ -8925,14 +8794,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.user_agent": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", - deprecation=DeprecationInfo( - replacement="user_agent.original" - ), + deprecation=DeprecationInfo(replacement="user_agent.original"), aliases=["user_agent.original"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -8942,9 +8807,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "id": AttributeMetadata( brief="A unique identifier for the span.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -8955,28 +8818,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "inp": AttributeMetadata( brief="The value of the recorded Interaction to Next Paint (INP) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=200, deprecation=DeprecationInfo( replacement="browser.web_vital.inp.value", reason="The INP web vital is now recorded as a browser.web_vital.inp.value attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.inp.value"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[229], description="Added and deprecated attribute to document JS SDK's current behaviour"), + ChangelogEntry( + version="next", + prs=[229], + description="Added and deprecated attribute to document JS SDK's current behaviour", + ), ], ), "jvm.gc.action": AttributeMetadata( brief="Name of the garbage collector action.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="end of minor GC", changelog=[ @@ -8987,9 +8850,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.gc.name": AttributeMetadata( brief="Name of the garbage collector.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Young Generation", changelog=[ @@ -9000,9 +8861,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.memory.pool.name": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Old Gen", changelog=[ @@ -9013,9 +8872,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.memory.type": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Old Gen", changelog=[ @@ -9026,9 +8883,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.thread.daemon": AttributeMetadata( brief="Whether the thread is daemon or not.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, changelog=[ @@ -9038,9 +8893,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.thread.state": AttributeMetadata( brief="State of the thread.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="blocked", changelog=[ @@ -9051,15 +8904,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.element": AttributeMetadata( brief="The dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="img", deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.element", reason="The LCP element is now recorded as a browser.web_vital.lcp.element attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.lcp.element"], changelog=[ @@ -9071,15 +8922,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="#hero", deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.id", reason="The LCP id is now recorded as a browser.web_vital.lcp.id attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.lcp.id"], changelog=[ @@ -9091,15 +8940,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.loadTime": AttributeMetadata( brief="The time it took for the LCP element to be loaded", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1402, deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.load_time", reason="The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.lcp.load_time"], sdks=["javascript-browser"], @@ -9110,15 +8957,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.renderTime": AttributeMetadata( brief="The time it took for the LCP element to be rendered", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1685, deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.render_time", reason="The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.lcp.render_time"], sdks=["javascript-browser"], @@ -9129,15 +8974,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1234, deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.size", reason="The LCP size is now recorded as a browser.web_vital.lcp.size attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.lcp.size"], changelog=[ @@ -9148,16 +8991,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), "lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint.", - type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com", deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.url", reason="The LCP url is now recorded as a browser.web_vital.lcp.url attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.lcp.url"], changelog=[ @@ -9169,28 +9010,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "lcp": AttributeMetadata( brief="The value of the recorded Largest Contentful Paint (LCP) web vital", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2500, deprecation=DeprecationInfo( replacement="browser.web_vital.lcp.value", reason="The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute.", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.lcp.value"], sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[229], description="Added and deprecated attribute to document JS SDK's current behaviour"), + ChangelogEntry( + version="next", + prs=[229], + description="Added and deprecated attribute to document JS SDK's current behaviour", + ), ], ), "logger.name": AttributeMetadata( brief="The name of the logger that generated this event.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="myLogger", changelog=[ @@ -9203,7 +9044,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Cancellation reasons may contain user-specific or sensitive information" + reason="Cancellation reasons may contain user-specific or sensitive information", ), is_in_otel=False, example="User cancelled the request", @@ -9214,9 +9055,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.cancelled.request_id": AttributeMetadata( brief="Request ID of the cancelled MCP operation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123", changelog=[ @@ -9226,9 +9065,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.client.name": AttributeMetadata( brief="Name of the MCP client application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="claude-desktop", changelog=[ @@ -9240,7 +9077,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Client titles may reveal user-specific application configurations or custom setups" + reason="Client titles may reveal user-specific application configurations or custom setups", ), is_in_otel=False, example="Claude Desktop", @@ -9251,9 +9088,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.client.version": AttributeMetadata( brief="Version of the MCP client application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0.0", changelog=[ @@ -9263,9 +9098,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.lifecycle.phase": AttributeMetadata( brief="Lifecycle phase indicator for MCP operations.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="initialization_complete", changelog=[ @@ -9275,9 +9108,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.logging.data_type": AttributeMetadata( brief="Data type of the logged message content.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="string", changelog=[ @@ -9287,9 +9118,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.logging.level": AttributeMetadata( brief="Log level for MCP logging operations.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="info", changelog=[ @@ -9301,7 +9130,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Logger names may be user-defined and could contain sensitive information" + reason="Logger names may be user-defined and could contain sensitive information", ), is_in_otel=False, example="mcp_server", @@ -9312,10 +9141,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.logging.message": AttributeMetadata( brief="Log message content from MCP logging operations.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="Log messages can contain user data" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="Log messages can contain user data"), is_in_otel=False, example="Tool execution completed successfully", changelog=[ @@ -9325,9 +9151,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.method.name": AttributeMetadata( brief="The name of the MCP request or notification method being called.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="tools/call", changelog=[ @@ -9337,9 +9161,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.current": AttributeMetadata( brief="Current progress value of an MCP operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=50, changelog=[ @@ -9352,7 +9174,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Progress messages may contain user-specific or sensitive information" + reason="Progress messages may contain user-specific or sensitive information", ), is_in_otel=False, example="Processing 50 of 100 items", @@ -9363,9 +9185,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.percentage": AttributeMetadata( brief="Calculated progress percentage of an MCP operation. Computed from current/total * 100.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=50, changelog=[ @@ -9376,9 +9196,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.token": AttributeMetadata( brief="Token for tracking progress of an MCP operation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="progress-token-123", changelog=[ @@ -9388,9 +9206,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.total": AttributeMetadata( brief="Total progress target value of an MCP operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=100, changelog=[ @@ -9403,7 +9219,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Prompt names may reveal user behavior patterns or sensitive operations" + reason="Prompt names may reveal user behavior patterns or sensitive operations", ), is_in_otel=False, example="summarize", @@ -9414,9 +9230,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.description": AttributeMetadata( brief="Description of the prompt result.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="A summary of the requested information", changelog=[ @@ -9426,9 +9240,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.message_content": AttributeMetadata( brief="Content of the message in the prompt result. Used for single message results only.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="Please provide a summary of the document", changelog=[ @@ -9438,9 +9250,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.message_count": AttributeMetadata( brief="Number of messages in the prompt result.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=3, changelog=[ @@ -9451,9 +9261,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.message_role": AttributeMetadata( brief="Role of the message in the prompt result. Used for single message results only.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="user", changelog=[ @@ -9463,9 +9271,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.protocol.ready": AttributeMetadata( brief="Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1, changelog=[ @@ -9476,9 +9282,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.protocol.version": AttributeMetadata( brief="MCP protocol version used in the session.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="2024-11-05", changelog=[ @@ -9488,10 +9292,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.argument.": AttributeMetadata( brief="MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="Arguments contain user input" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="Arguments contain user input"), is_in_otel=False, has_dynamic_suffix=True, example="mcp.request.argument.query='weather in Paris'", @@ -9502,10 +9303,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.argument.name": AttributeMetadata( brief="Name argument from prompts/get MCP request.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="Prompt names can contain user input" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="Prompt names can contain user input"), is_in_otel=False, example="summarize", changelog=[ @@ -9515,10 +9313,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.argument.uri": AttributeMetadata( brief="URI argument from resources/read MCP request.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="URIs can contain user file paths" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain user file paths"), is_in_otel=False, example="file:///path/to/resource", changelog=[ @@ -9528,9 +9323,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.id": AttributeMetadata( brief="JSON-RPC request identifier for the MCP request. Unique within the MCP session.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1", changelog=[ @@ -9540,9 +9333,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.resource.protocol": AttributeMetadata( brief="Protocol of the resource URI being accessed, extracted from the URI.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="file", changelog=[ @@ -9552,10 +9343,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.resource.uri": AttributeMetadata( brief="The resource URI being accessed in an MCP operation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="URIs can contain sensitive file paths" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain sensitive file paths"), is_in_otel=False, example="file:///path/to/file.txt", changelog=[ @@ -9565,9 +9353,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.server.name": AttributeMetadata( brief="Name of the MCP server application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sentry-mcp-server", changelog=[ @@ -9579,7 +9365,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Server titles may reveal user-specific application configurations or custom setups" + reason="Server titles may reveal user-specific application configurations or custom setups", ), is_in_otel=False, example="Sentry MCP Server", @@ -9590,9 +9376,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.server.version": AttributeMetadata( brief="Version of the MCP server application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="0.1.0", changelog=[ @@ -9602,9 +9386,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.session.id": AttributeMetadata( brief="Identifier for the MCP session.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="550e8400-e29b-41d4-a716-446655440000", changelog=[ @@ -9614,9 +9396,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.tool.name": AttributeMetadata( brief="Name of the MCP tool being called.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="calculator", changelog=[ @@ -9626,12 +9406,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.tool.result.content": AttributeMetadata( brief="The content of the tool result.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="Tool results can contain user data" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="Tool results can contain user data"), is_in_otel=False, - example="{\"output\": \"rainy\", \"toolCallId\": \"1\"}", + example='{"output": "rainy", "toolCallId": "1"}', changelog=[ ChangelogEntry(version="0.3.0", prs=[171]), ChangelogEntry(version="0.2.0", prs=[164]), @@ -9640,9 +9417,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.tool.result.content_count": AttributeMetadata( brief="Number of content items in the tool result.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1, changelog=[ @@ -9653,9 +9428,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.tool.result.is_error": AttributeMetadata( brief="Whether a tool execution resulted in an error.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=False, changelog=[ @@ -9665,9 +9438,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.transport": AttributeMetadata( brief="Transport method used for MCP communication.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="stdio", changelog=[ @@ -9677,13 +9448,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mdc.": AttributeMetadata( brief="Attributes from the Mapped Diagnostic Context (MDC) present at the moment the log record was created. The MDC is supported by all the most popular logging solutions in the Java ecosystem, and it's usually implemented as a thread-local map that stores context for e.g. a specific request.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="mdc.some_key='some_value'", - sdks=["java","java.logback","java.jul","java.log4j2"], + sdks=["java", "java.logback", "java.jul", "java.log4j2"], changelog=[ ChangelogEntry(version="0.3.0", prs=[176]), ], @@ -9691,9 +9460,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.destination.connection": AttributeMetadata( brief="The message destination connection.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="BestTopic", sdks=["php-laravel"], @@ -9705,9 +9472,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.destination.name": AttributeMetadata( brief="The message destination name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="BestTopic", sdks=["php-laravel"], @@ -9719,9 +9484,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.body.size": AttributeMetadata( brief="The size of the message body in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=839, sdks=["php-laravel"], @@ -9733,9 +9496,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.envelope.size": AttributeMetadata( brief="The size of the message body and metadata in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=1045, sdks=["php-laravel"], @@ -9747,9 +9508,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.id": AttributeMetadata( brief="A value used by the messaging system as an identifier for the message, represented as a string.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -9761,9 +9520,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.receive.latency": AttributeMetadata( brief="The latency between when the message was published and received.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1732847252, sdks=["php-laravel"], @@ -9775,9 +9532,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.retry.count": AttributeMetadata( brief="The amount of attempts to send the message.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2, sdks=["php-laravel"], @@ -9789,9 +9544,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.operation.type": AttributeMetadata( brief="A string identifying the type of the messaging operation", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="create", changelog=[ @@ -9801,9 +9554,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.system": AttributeMetadata( brief="The messaging system as identified by the client instrumentation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="activemq", sdks=["php-laravel"], @@ -9815,16 +9566,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GET", - deprecation=DeprecationInfo( - replacement="http.request.method" - ), + deprecation=DeprecationInfo(replacement="http.request.method"), aliases=["http.request.method"], - sdks=["javascript-browser","javascript-node"], + sdks=["javascript-browser", "javascript-node"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), ChangelogEntry(version="0.0.0"), @@ -9833,9 +9580,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "navigation.type": AttributeMetadata( brief="The type of navigation done by a client-side router.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="router.push", changelog=[ @@ -9846,9 +9591,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "nel.elapsed_time": AttributeMetadata( brief="The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=100, changelog=[ @@ -9857,11 +9600,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "nel.phase": AttributeMetadata( - brief="If request failed, the phase of its network error. If request succeeded, \"application\".", + brief='If request failed, the phase of its network error. If request succeeded, "application".', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="application", changelog=[ @@ -9871,9 +9612,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "nel.referrer": AttributeMetadata( brief="request's referrer, as determined by the referrer policy associated with its client.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com/foo?bar=baz", changelog=[ @@ -9883,9 +9622,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "nel.sampling_function": AttributeMetadata( brief="The sampling function used to determine if the request should be sampled.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.5, changelog=[ @@ -9894,11 +9631,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "nel.type": AttributeMetadata( - brief="If request failed, the type of its network error. If request succeeded, \"ok\".", + brief='If request failed, the type of its network error. If request succeeded, "ok".', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="dns.unreachable", changelog=[ @@ -9908,15 +9643,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.host.ip": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo( - replacement="network.local.address" - ), - aliases=["network.local.address","net.sock.host.addr"], + deprecation=DeprecationInfo(replacement="network.local.address"), + aliases=["network.local.address", "net.sock.host.addr"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9925,15 +9656,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.host.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo( - replacement="server.address" - ), - aliases=["server.address","http.server_name","http.host"], + deprecation=DeprecationInfo(replacement="server.address"), + aliases=["server.address", "http.server_name", "http.host"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9942,14 +9669,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.host.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=1337, - deprecation=DeprecationInfo( - replacement="server.port" - ), + deprecation=DeprecationInfo(replacement="server.port"), aliases=["server.port"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -9960,15 +9683,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.peer.ip": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo( - replacement="network.peer.address" - ), - aliases=["network.peer.address","net.sock.peer.addr"], + deprecation=DeprecationInfo(replacement="network.peer.address"), + aliases=["network.peer.address", "net.sock.peer.addr"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -9977,14 +9696,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.peer.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use server.address on client spans and client.address on server spans." + reason="Deprecated, use server.address on client spans and client.address on server spans.", ), changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -9994,14 +9711,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.peer.port": AttributeMetadata( brief="Peer port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=1337, deprecation=DeprecationInfo( replacement="server.port", - reason="Deprecated, use server.port on client spans and client.port on server spans." + reason="Deprecated, use server.port on client spans and client.port on server spans.", ), changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -10012,14 +9727,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="http", - deprecation=DeprecationInfo( - replacement="network.protocol.name" - ), + deprecation=DeprecationInfo(replacement="network.protocol.name"), aliases=["network.protocol.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -10029,15 +9740,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo( - replacement="network.protocol.version" - ), - aliases=["network.protocol.version","http.flavor"], + deprecation=DeprecationInfo(replacement="network.protocol.version"), + aliases=["network.protocol.version", "http.flavor"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -10046,14 +9753,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.family": AttributeMetadata( brief="OSI transport and network layer", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="inet", deprecation=DeprecationInfo( replacement="network.transport", - reason="Deprecated, use network.transport and network.type." + reason="Deprecated, use network.transport and network.type.", ), changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -10063,15 +9768,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.host.addr": AttributeMetadata( brief="Local address of the network connection mapping to Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/var/my.sock", - deprecation=DeprecationInfo( - replacement="network.local.address" - ), - aliases=["network.local.address","net.host.ip"], + deprecation=DeprecationInfo(replacement="network.local.address"), + aliases=["network.local.address", "net.host.ip"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -10080,14 +9781,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.host.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=8080, - deprecation=DeprecationInfo( - replacement="network.local.port" - ), + deprecation=DeprecationInfo(replacement="network.local.port"), aliases=["network.local.port"], changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), @@ -10098,15 +9795,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.addr": AttributeMetadata( brief="Peer address of the network connection - IP address", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo( - replacement="network.peer.address" - ), - aliases=["network.peer.address","net.peer.ip"], + deprecation=DeprecationInfo(replacement="network.peer.address"), + aliases=["network.peer.address", "net.peer.ip"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -10115,9 +9808,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.name": AttributeMetadata( brief="Peer address of the network connection - Unix domain socket name", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/var/my.sock", deprecation=DeprecationInfo( @@ -10131,14 +9822,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=8080, - deprecation=DeprecationInfo( - replacement="network.peer.port" - ), + deprecation=DeprecationInfo(replacement="network.peer.port"), changelog=[ ChangelogEntry(version="0.4.0", prs=[228]), ChangelogEntry(version="0.1.0", prs=[61]), @@ -10148,14 +9835,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="tcp", - deprecation=DeprecationInfo( - replacement="network.transport" - ), + deprecation=DeprecationInfo(replacement="network.transport"), aliases=["network.transport"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -10165,12 +9848,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.local.address": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="10.1.2.80", - aliases=["net.host.ip","net.sock.host.addr"], + aliases=["net.host.ip", "net.sock.host.addr"], changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -10179,9 +9860,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.local.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=65400, aliases=["net.sock.host.port"], @@ -10193,12 +9872,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.peer.address": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="10.1.2.80", - aliases=["net.peer.ip","net.sock.peer.addr"], + aliases=["net.peer.ip", "net.sock.peer.addr"], changelog=[ ChangelogEntry(version="0.1.0", prs=[108, 127]), ChangelogEntry(version="0.0.0"), @@ -10207,9 +9884,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=65400, changelog=[ @@ -10220,9 +9895,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="http", aliases=["net.protocol.name"], @@ -10234,12 +9907,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1.1", - aliases=["http.flavor","net.protocol.version"], + aliases=["http.flavor", "net.protocol.version"], changelog=[ ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), @@ -10248,9 +9919,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="tcp", aliases=["net.transport"], @@ -10262,9 +9931,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.type": AttributeMetadata( brief="OSI network layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ipv4", changelog=[ @@ -10275,9 +9942,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.build_id": AttributeMetadata( brief="The build ID of the operating system.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1234567890", changelog=[ @@ -10288,9 +9953,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.description": AttributeMetadata( brief="Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Ubuntu 18.04.1 LTS", changelog=[ @@ -10301,9 +9964,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.name": AttributeMetadata( brief="Human readable operating system name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Ubuntu", changelog=[ @@ -10314,9 +9975,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.type": AttributeMetadata( brief="The operating system type.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="linux", changelog=[ @@ -10327,9 +9986,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "os.version": AttributeMetadata( brief="The version of the operating system.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="18.04.2", changelog=[ @@ -10340,9 +9997,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "otel.scope.name": AttributeMetadata( brief="The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="io.opentelemetry.contrib.mongodb", changelog=[ @@ -10353,9 +10008,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "otel.scope.version": AttributeMetadata( brief="The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="2.4.5", changelog=[ @@ -10366,9 +10019,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "otel.status_code": AttributeMetadata( brief="Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="OK", changelog=[ @@ -10379,9 +10030,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "otel.status_description": AttributeMetadata( brief="Description of the Status if it has a value, otherwise not set.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="resource not found", changelog=[ @@ -10392,9 +10041,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "params.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="params.id='123'", @@ -10406,9 +10053,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "previous_route": AttributeMetadata( brief="Also used by mobile SDKs to indicate the previous route in the application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="HomeScreen", sdks=["javascript-reactnative"], @@ -10420,9 +10065,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.executable.name": AttributeMetadata( brief="The name of the executable that started the process.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="getsentry", changelog=[ @@ -10433,9 +10076,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.pid": AttributeMetadata( brief="The process ID of the running process.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=12345, changelog=[ @@ -10446,9 +10087,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.runtime.description": AttributeMetadata( brief="An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Eclipse OpenJ9 VM openj9-0.21.0", changelog=[ @@ -10459,9 +10098,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.runtime.name": AttributeMetadata( brief="The name of the runtime. Equivalent to `name` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="node", changelog=[ @@ -10472,9 +10109,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.runtime.version": AttributeMetadata( brief="The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="18.04.2", changelog=[ @@ -10485,15 +10120,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "query.": AttributeMetadata( brief="An item in a query string. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="query.id='123'", deprecation=DeprecationInfo( replacement="url.query", - reason="Instead of sending items individually in query., they should be sent all together with url.query." + reason="Instead of sending items individually in query., they should be sent all together with url.query.", ), changelog=[ ChangelogEntry(version="0.1.0", prs=[103]), @@ -10502,14 +10135,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="production", - deprecation=DeprecationInfo( - replacement="sentry.release" - ), + deprecation=DeprecationInfo(replacement="sentry.release"), aliases=["sentry.release"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -10519,9 +10148,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "remix.action_form_data.": AttributeMetadata( brief="Remix form data, being the form data key, the value being the form data value.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="http.response.header.text='test'", @@ -10533,14 +10160,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123e4567e89b12d3a456426614174000", - deprecation=DeprecationInfo( - replacement="sentry.replay_id" - ), + deprecation=DeprecationInfo(replacement="sentry.replay_id"), aliases=["sentry.replay_id"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61]), @@ -10550,14 +10173,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "resource.deployment.environment": AttributeMetadata( brief="The software deployment environment name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example="production", deprecation=DeprecationInfo( - replacement="sentry.environment", - status=DeprecationStatus.BACKFILL + replacement="sentry.environment", status=DeprecationStatus.BACKFILL ), changelog=[ ChangelogEntry(version="next", prs=[266]), @@ -10566,14 +10186,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "resource.deployment.environment.name": AttributeMetadata( brief="The software deployment environment name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example="production", deprecation=DeprecationInfo( - replacement="sentry.environment", - status=DeprecationStatus.BACKFILL + replacement="sentry.environment", status=DeprecationStatus.BACKFILL ), changelog=[ ChangelogEntry(version="0.3.1", prs=[196]), @@ -10582,9 +10199,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "resource.render_blocking_status": AttributeMetadata( brief="The render blocking status of the resource.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="non-blocking", sdks=["javascript-browser"], @@ -10596,16 +10211,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework. Also used by mobile SDKs to indicate the current route in the application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="App\\Controller::indexAction", - deprecation=DeprecationInfo( - replacement="http.route" - ), + deprecation=DeprecationInfo(replacement="http.route"), aliases=["http.route"], - sdks=["php-laravel","javascript-reactnative"], + sdks=["php-laravel", "javascript-reactnative"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 74]), ChangelogEntry(version="0.0.0"), @@ -10614,9 +10225,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "rpc.grpc.status_code": AttributeMetadata( brief="The numeric status code of the gRPC request.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=2, changelog=[ @@ -10627,9 +10236,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "rpc.service": AttributeMetadata( brief="The full (logical) name of the service being called, including its package name, if applicable.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="myService.BestService", changelog=[ @@ -10640,9 +10247,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.action": AttributeMetadata( brief="Used as a generic attribute representing the action depending on the type of span. For instance, this is the database query operation for DB spans, and the request method for HTTP spans.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT", changelog=[ @@ -10652,14 +10257,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Chrome", - deprecation=DeprecationInfo( - replacement="browser.name" - ), + deprecation=DeprecationInfo(replacement="browser.name"), aliases=["browser.name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[139]), @@ -10668,14 +10269,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="120.0.6099.130", - deprecation=DeprecationInfo( - replacement="browser.version" - ), + deprecation=DeprecationInfo(replacement="browser.version"), aliases=["browser.version"], changelog=[ ChangelogEntry(version="0.1.0", prs=[139]), @@ -10684,9 +10281,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.cancellation_reason": AttributeMetadata( brief="The reason why a span ended early.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="document.hidden", changelog=[ @@ -10696,9 +10291,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.category": AttributeMetadata( brief="The high-level category of a span, derived from the span operation or span attributes. This categorizes spans by their general purpose (e.g., database, HTTP, UI). Known values include: 'ai', 'ai.pipeline', 'app', 'browser', 'cache', 'console', 'db', 'event', 'file', 'function.aws', 'function.azure', 'function.gcp', 'function.nextjs', 'function.remix', 'graphql', 'grpc', 'http', 'measure', 'middleware', 'navigation', 'pageload', 'queue', 'resource', 'rpc', 'serialize', 'subprocess', 'template', 'topic', 'ui', 'ui.angular', 'ui.ember', 'ui.react', 'ui.svelte', 'ui.vue', 'view', 'websocket'.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="db", changelog=[ @@ -10708,9 +10301,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.client_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in the SDK.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, changelog=[ @@ -10720,9 +10311,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.description": AttributeMetadata( brief="The human-readable description of a span.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="index view query", changelog=[ @@ -10732,9 +10321,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dist": AttributeMetadata( brief="The sentry dist.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0", changelog=[ @@ -10744,9 +10331,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.domain": AttributeMetadata( brief="Used as a generic attribute representing the domain depending on the type of span. For instance, this is the collection/table name for database spans, and the server address for HTTP spans.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="example.com", changelog=[ @@ -10755,10 +10340,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), "sentry.dsc.environment": AttributeMetadata( brief="The environment from the dynamic sampling context.", - type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="prod", changelog=[ @@ -10768,9 +10351,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.public_key": AttributeMetadata( brief="The public key from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="c51734c603c4430eb57cb0a5728a479d", changelog=[ @@ -10780,9 +10361,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.release": AttributeMetadata( brief="The release identifier from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="frontend@e8211be71b214afab5b85de4b4c54be3714952bb", changelog=[ @@ -10792,9 +10371,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.sample_rate": AttributeMetadata( brief="The sample rate from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0", changelog=[ @@ -10804,9 +10381,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.sampled": AttributeMetadata( brief="Whether the event was sampled according to the dynamic sampling context.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, changelog=[ @@ -10816,9 +10391,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.trace_id": AttributeMetadata( brief="The trace ID from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="047372980460430cbc78d9779df33a46", changelog=[ @@ -10828,9 +10401,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.dsc.transaction": AttributeMetadata( brief="The transaction name from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="/issues/errors-outages/", changelog=[ @@ -10840,9 +10411,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="production", aliases=["environment"], @@ -10853,9 +10422,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.exclusive_time": AttributeMetadata( brief="The exclusive time duration of the span in milliseconds.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1234, changelog=[ @@ -10867,9 +10434,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.graphql.operation": AttributeMetadata( brief="Indicates the type of graphql operation, emitted by the Javascript SDK.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="getUserById", changelog=[ @@ -10879,9 +10444,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.group": AttributeMetadata( brief="Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, changelog=[ ChangelogEntry(version="0.4.0", prs=[212]), @@ -10890,9 +10453,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.http.prefetch": AttributeMetadata( brief="If an http request was a prefetch request.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, changelog=[ @@ -10902,9 +10463,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.idle_span_finish_reason": AttributeMetadata( brief="The reason why an idle span ended early.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="idleTimeout", changelog=[ @@ -10914,9 +10473,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.is_remote": AttributeMetadata( brief="Indicates whether a span's parent is remote.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, changelog=[ @@ -10926,9 +10483,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.kind": AttributeMetadata( brief="Used to clarify the relationship between parents and children, or to distinguish between spans, e.g. a `server` and `client` span with the same name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="server", changelog=[ @@ -10938,9 +10493,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.message.parameter.": AttributeMetadata( brief="A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="sentry.message.parameter.0='123'", changelog=[ @@ -10950,9 +10503,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.message.template": AttributeMetadata( brief="The parameterized template string.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Hello, {name}!", changelog=[ @@ -10962,9 +10513,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.module.": AttributeMetadata( brief="A module that was loaded in the process. The key is the name of the module.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="sentry.module.brianium/paratest='v7.7.0'", @@ -10975,9 +10524,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.route": AttributeMetadata( brief="A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="/posts/[id]/layout", sdks=["javascript"], @@ -10988,9 +10535,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.type": AttributeMetadata( brief="A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="generateMetadata", sdks=["javascript"], @@ -11001,9 +10546,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.normalized_db_query": AttributeMetadata( brief="The normalized version of `db.query.text`.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", changelog=[ @@ -11013,9 +10556,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.normalized_db_query.hash": AttributeMetadata( brief="The hash of `sentry.normalized_db_query`.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, changelog=[ ChangelogEntry(version="0.4.0", prs=[200]), @@ -11024,9 +10565,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.normalized_description": AttributeMetadata( brief="Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", changelog=[ @@ -11036,9 +10575,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.observed_timestamp_nanos": AttributeMetadata( brief="The timestamp at which an envelope was received by Relay, in nanoseconds.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1544712660300000000", changelog=[ @@ -11049,9 +10586,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.op": AttributeMetadata( brief="The operation of a span.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="http.client", changelog=[ @@ -11061,9 +10596,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.origin": AttributeMetadata( brief="The origin of the instrumentation (e.g. span, log, etc.)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="auto.http.otel.fastify", changelog=[ @@ -11074,9 +10607,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.platform": AttributeMetadata( brief="The sdk platform that generated the event.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="php", changelog=[ @@ -11086,9 +10617,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.profiler_id": AttributeMetadata( brief="The id of the currently running profiler (continuous profiling)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="18779b64dd35d1a538e7ce2dd2d3fad3", changelog=[ @@ -11098,12 +10627,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="7.0.0", - aliases=["service.version","release"], + aliases=["service.version", "release"], changelog=[ ChangelogEntry(version="0.0.0"), ], @@ -11111,9 +10638,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["replay_id"], @@ -11124,9 +10649,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.replay_is_buffering": AttributeMetadata( brief="A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, changelog=[ @@ -11136,11 +10659,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.sdk.integrations": AttributeMetadata( brief="A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, - example=["InboundFilters", "FunctionToString", "BrowserApiErrors", "Breadcrumbs"], + example=[ + "InboundFilters", + "FunctionToString", + "BrowserApiErrors", + "Breadcrumbs", + ], changelog=[ ChangelogEntry(version="0.0.0", prs=[42]), ], @@ -11148,9 +10674,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.sdk.name": AttributeMetadata( brief="The sentry sdk name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="@sentry/react", changelog=[ @@ -11160,9 +10684,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.sdk.version": AttributeMetadata( brief="The sentry sdk version.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="7.0.0", changelog=[ @@ -11172,9 +10694,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment.id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="051581bf3cb55c13", aliases=["sentry.segment_id"], @@ -11185,9 +10705,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment.name": AttributeMetadata( brief="The segment name of a span", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GET /user", changelog=[ @@ -11197,14 +10715,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment_id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="051581bf3cb55c13", - deprecation=DeprecationInfo( - replacement="sentry.segment.id" - ), + deprecation=DeprecationInfo(replacement="sentry.segment.id"), aliases=["sentry.segment.id"], changelog=[ ChangelogEntry(version="0.1.0", prs=[124]), @@ -11213,9 +10727,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.server_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in Relay.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, changelog=[ @@ -11225,15 +10737,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.source": AttributeMetadata( brief="The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="route", deprecation=DeprecationInfo( replacement="sentry.span.source", reason="This attribute is being deprecated in favor of sentry.span.source", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), changelog=[ ChangelogEntry(version="next"), @@ -11242,9 +10752,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.span.source": AttributeMetadata( brief="The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="route", changelog=[ @@ -11255,9 +10763,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.status.message": AttributeMetadata( brief="The from OTLP extracted status message.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="foobar", changelog=[ @@ -11267,9 +10773,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.status_code": AttributeMetadata( brief="The HTTP status code used in Sentry Insights. Typically set by Sentry during ingestion, rather than by clients.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=200, changelog=[ @@ -11279,9 +10783,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.timestamp.sequence": AttributeMetadata( brief="A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0, changelog=[ @@ -11291,23 +10793,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.trace.parent_span_id": AttributeMetadata( brief="The span id of the span that was active when the log was collected. This should not be set if there was no active span.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="b0e6f15b45c36b12", deprecation=DeprecationInfo(), changelog=[ - ChangelogEntry(version="next", prs=[287], description="Deprecate `sentry.trace.parent_span_id`"), + ChangelogEntry( + version="next", + prs=[287], + description="Deprecate `sentry.trace.parent_span_id`", + ), ChangelogEntry(version="0.1.0", prs=[116]), ], ), "sentry.transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="GET /", aliases=["transaction"], @@ -11318,12 +10820,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "server.address": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", - aliases=["http.server_name","net.host.name","http.host"], + aliases=["http.server_name", "net.host.name", "http.host"], changelog=[ ChangelogEntry(version="0.1.0", prs=[108, 127]), ChangelogEntry(version="0.0.0"), @@ -11332,9 +10832,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "server.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=1337, aliases=["net.host.port"], @@ -11346,9 +10844,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "service.name": AttributeMetadata( brief="Logical name of the service.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="omegastar", changelog=[ @@ -11359,9 +10855,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "service.version": AttributeMetadata( brief="The version string of the service API or implementation. The format is not defined by these conventions.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="5.0.0", aliases=["sentry.release"], @@ -11373,9 +10867,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "thread.id": AttributeMetadata( brief="Current “managed” thread ID.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=56, changelog=[ @@ -11385,9 +10877,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "thread.name": AttributeMetadata( brief="Current thread name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="main", changelog=[ @@ -11398,9 +10888,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "timber.tag": AttributeMetadata( brief="The log tag provided by the timber logging framework.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="MyTag", sdks=["sentry.java.android"], @@ -11411,14 +10899,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GET /", - deprecation=DeprecationInfo( - replacement="sentry.transaction" - ), + deprecation=DeprecationInfo(replacement="sentry.transaction"), aliases=["sentry.transaction"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 127]), @@ -11428,15 +10912,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ttfb.requestTime": AttributeMetadata( brief="The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1554.5814, deprecation=DeprecationInfo( replacement="browser.web_vital.ttfb.request_time", reason="This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.ttfb.request_time"], sdks=["javascript-browser"], @@ -11447,15 +10929,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ttfb": AttributeMetadata( brief="The value of the recorded Time To First Byte (TTFB) web vital in milliseconds", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=194, deprecation=DeprecationInfo( replacement="browser.web_vital.ttfb.value", reason="This attribute is being deprecated in favor of browser.web_vital.ttfb.value", - status=DeprecationStatus.BACKFILL + status=DeprecationStatus.BACKFILL, ), aliases=["browser.web_vital.ttfb.value"], sdks=["javascript-browser"], @@ -11466,12 +10946,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "type": AttributeMetadata( brief="More granular type of the operation happening.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="fetch", - sdks=["javascript-browser","javascript-node"], + sdks=["javascript-browser", "javascript-node"], changelog=[ ChangelogEntry(version="0.0.0"), ], @@ -11479,9 +10957,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ui.component_name": AttributeMetadata( brief="The name of the associated component.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="HomeButton", changelog=[ @@ -11492,9 +10968,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ui.contributes_to_ttfd": AttributeMetadata( brief="Whether the span execution contributed to the TTFD (time to fully drawn) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, changelog=[ @@ -11504,9 +10978,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ui.contributes_to_ttid": AttributeMetadata( brief="Whether the span execution contributed to the TTID (time to initial display) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, changelog=[ @@ -11516,126 +10988,136 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ui.element.height": AttributeMetadata( brief="The height of the UI element (for Html in pixels)", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=256, sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.height attribute"), + ChangelogEntry( + version="next", + prs=[284], + description="Added ui.element.height attribute", + ), ], ), "ui.element.id": AttributeMetadata( brief="The id of the UI element", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="btn-login", sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.id attribute"), + ChangelogEntry( + version="next", prs=[284], description="Added ui.element.id attribute" + ), ], ), "ui.element.identifier": AttributeMetadata( brief="The identifier used to measure the UI element timing", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="heroImage", sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.identifier attribute"), + ChangelogEntry( + version="next", + prs=[284], + description="Added ui.element.identifier attribute", + ), ], ), "ui.element.load_time": AttributeMetadata( brief="The loading time of a UI element (from time origin to finished loading)", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=998.2234, sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.load_time attribute"), + ChangelogEntry( + version="next", + prs=[284], + description="Added ui.element.load_time attribute", + ), ], ), "ui.element.paint_type": AttributeMetadata( brief="The type of element paint. Can either be 'image-paint' or 'text-paint'", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="image-paint", sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.paint_type attribute"), + ChangelogEntry( + version="next", + prs=[284], + description="Added ui.element.paint_type attribute", + ), ], ), "ui.element.render_time": AttributeMetadata( brief="The rendering time of the UI element (from time origin to finished rendering)", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1023.1124, sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.render_time attribute"), + ChangelogEntry( + version="next", + prs=[284], + description="Added ui.element.render_time attribute", + ), ], ), "ui.element.type": AttributeMetadata( brief="type of the UI element", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="img", sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.type attribute"), + ChangelogEntry( + version="next", prs=[284], description="Added ui.element.type attribute" + ), ], ), "ui.element.url": AttributeMetadata( brief="The URL of the UI element (e.g. an img src)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://assets.myapp.com/hero.png", sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.url attribute"), + ChangelogEntry( + version="next", prs=[284], description="Added ui.element.url attribute" + ), ], ), "ui.element.width": AttributeMetadata( brief="The width of the UI element (for HTML in pixels)", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=512, sdks=["javascript-browser"], changelog=[ - ChangelogEntry(version="next", prs=[284], description="Added ui.element.width attribute"), + ChangelogEntry( + version="next", + prs=[284], + description="Added ui.element.width attribute", + ), ], ), "url.domain": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", changelog=[ @@ -11646,9 +11128,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="details", changelog=[ @@ -11658,12 +11138,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.full": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - aliases=["http.url","url"], + aliases=["http.url", "url"], changelog=[ ChangelogEntry(version="0.1.0", prs=[108]), ChangelogEntry(version="0.0.0"), @@ -11672,9 +11150,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.path": AttributeMetadata( brief="The URI path component.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/foo", changelog=[ @@ -11684,9 +11160,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.path.parameter.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="url.path.parameter.id='123'", @@ -11698,9 +11172,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=1337, changelog=[ @@ -11713,7 +11185,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", ), is_in_otel=True, example="foo=bar&bar=baz", @@ -11724,9 +11196,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="https", aliases=["http.scheme"], @@ -11738,9 +11208,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.template": AttributeMetadata( brief="The low-cardinality template of an absolute path reference.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/users/:id", aliases=["http.route"], @@ -11752,16 +11220,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo( - replacement="url.full" - ), - aliases=["url.full","http.url"], - sdks=["javascript-browser","javascript-node"], + deprecation=DeprecationInfo(replacement="url.full"), + aliases=["url.full", "http.url"], + sdks=["javascript-browser", "javascript-node"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61]), ChangelogEntry(version="0.0.0"), @@ -11770,9 +11234,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.email": AttributeMetadata( brief="User email address.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="test@example.com", changelog=[ @@ -11782,9 +11244,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.full_name": AttributeMetadata( brief="User's full name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="John Smith", changelog=[ @@ -11794,9 +11254,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.geo.city": AttributeMetadata( brief="Human readable city name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Toronto", changelog=[ @@ -11806,9 +11264,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.geo.country_code": AttributeMetadata( brief="Two-letter country code (ISO 3166-1 alpha-2).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="CA", changelog=[ @@ -11818,9 +11274,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.geo.region": AttributeMetadata( brief="Human readable region name or code.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Canada", changelog=[ @@ -11830,9 +11284,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.geo.subdivision": AttributeMetadata( brief="Human readable subdivision name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Ontario", changelog=[ @@ -11842,9 +11294,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.hash": AttributeMetadata( brief="Unique user hash to correlate information for a user in anonymized form.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", changelog=[ @@ -11854,9 +11304,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.id": AttributeMetadata( brief="Unique identifier of the user.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="S-1-5-21-202424912787-2692429404-2351956786-1000", changelog=[ @@ -11866,9 +11314,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.ip_address": AttributeMetadata( brief="The IP address of the user.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="192.168.1.1", changelog=[ @@ -11878,9 +11324,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.name": AttributeMetadata( brief="Short name or login/username of the user.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="j.smith", changelog=[ @@ -11890,9 +11334,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user.roles": AttributeMetadata( brief="Array of user roles at the time of the event.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example=["admin", "editor"], changelog=[ @@ -11902,9 +11344,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "user_agent.original": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", aliases=["http.user_agent"], @@ -11916,9 +11356,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.branch": AttributeMetadata( brief="Git branch name for Vercel project", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="main", changelog=[ @@ -11928,9 +11366,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.build_id": AttributeMetadata( brief="Identifier for the Vercel build (only present on build logs)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="bld_cotnkcr76", changelog=[ @@ -11940,9 +11376,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.deployment_id": AttributeMetadata( brief="Identifier for the Vercel deployment", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="dpl_233NRGRjVZX1caZrXWtz5g1TAksD", changelog=[ @@ -11952,9 +11386,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.destination": AttributeMetadata( brief="Origin of the external content in Vercel (only on external logs)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://vitals.vercel-insights.com/v1", changelog=[ @@ -11964,9 +11396,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.edge_type": AttributeMetadata( brief="Type of edge runtime in Vercel", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="edge-function", changelog=[ @@ -11976,9 +11406,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.entrypoint": AttributeMetadata( brief="Entrypoint for the request in Vercel", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="api/index.js", changelog=[ @@ -11988,9 +11416,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.execution_region": AttributeMetadata( brief="Region where the request is executed", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", changelog=[ @@ -12000,9 +11426,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.id": AttributeMetadata( brief="Unique identifier for the log entry in Vercel", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1573817187330377061717300000", changelog=[ @@ -12012,9 +11436,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.ja3_digest": AttributeMetadata( brief="JA3 fingerprint digest of Vercel request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0", changelog=[ @@ -12024,9 +11446,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.ja4_digest": AttributeMetadata( brief="JA4 fingerprint digest", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="t13d1516h2_8daaf6152771_02713d6af862", changelog=[ @@ -12036,9 +11456,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.log_type": AttributeMetadata( brief="Vercel log output type", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="stdout", changelog=[ @@ -12048,9 +11466,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.project_id": AttributeMetadata( brief="Identifier for the Vercel project", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="gdufoJxB6b9b1fEqr1jUtFkyavUU", changelog=[ @@ -12060,9 +11476,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.project_name": AttributeMetadata( brief="Name of the Vercel project", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="my-app", changelog=[ @@ -12072,9 +11486,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.cache_id": AttributeMetadata( brief="Original request ID when request is served from cache", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="pdx1::v8g4b-1744143786684-93dafbc0f70d", changelog=[ @@ -12084,9 +11496,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.client_ip": AttributeMetadata( brief="Client IP address", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="120.75.16.101", changelog=[ @@ -12096,9 +11506,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.host": AttributeMetadata( brief="Hostname of the request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="test.vercel.app", changelog=[ @@ -12108,9 +11516,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.lambda_region": AttributeMetadata( brief="Region where lambda function executed", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", changelog=[ @@ -12120,9 +11526,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.method": AttributeMetadata( brief="HTTP method of the request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="GET", changelog=[ @@ -12132,9 +11536,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.path": AttributeMetadata( brief="Request path with query parameters", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="/dynamic/some-value.json?route=some-value", changelog=[ @@ -12144,9 +11546,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.path_type": AttributeMetadata( brief="How the request was served based on its path and project configuration", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="func", changelog=[ @@ -12156,9 +11556,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.path_type_variant": AttributeMetadata( brief="Variant of the path type", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="api", changelog=[ @@ -12168,9 +11566,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.referer": AttributeMetadata( brief="Referer of the request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="*.vercel.app", changelog=[ @@ -12180,9 +11576,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.region": AttributeMetadata( brief="Region where the request is processed", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", changelog=[ @@ -12192,9 +11586,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.response_byte_size": AttributeMetadata( brief="Size of the response in bytes", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1024, changelog=[ @@ -12205,9 +11597,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.scheme": AttributeMetadata( brief="Protocol of the request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="https", changelog=[ @@ -12217,9 +11607,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.status_code": AttributeMetadata( brief="HTTP status code of the proxy request", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=200, changelog=[ @@ -12230,9 +11618,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.timestamp": AttributeMetadata( brief="Unix timestamp when the proxy request was made", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1573817250172, changelog=[ @@ -12243,9 +11629,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.user_agent": AttributeMetadata( brief="User agent strings of the request", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["Mozilla/5.0..."], changelog=[ @@ -12255,9 +11639,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.vercel_cache": AttributeMetadata( brief="Cache status sent to the browser", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="REVALIDATED", changelog=[ @@ -12267,9 +11649,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.vercel_id": AttributeMetadata( brief="Vercel-specific identifier", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1::abc123", changelog=[ @@ -12279,9 +11659,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.waf_action": AttributeMetadata( brief="Action taken by firewall rules", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="deny", changelog=[ @@ -12291,9 +11669,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.proxy.waf_rule_id": AttributeMetadata( brief="ID of the firewall rule that matched", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="rule_gAHz8jtSB1Gy", changelog=[ @@ -12303,9 +11679,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.request_id": AttributeMetadata( brief="Identifier of the Vercel request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="643af4e3-975a-4cc7-9e7a-1eda11539d90", changelog=[ @@ -12315,9 +11689,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.source": AttributeMetadata( brief="Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="build", changelog=[ @@ -12327,9 +11699,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.status_code": AttributeMetadata( brief="HTTP status code of the request (-1 means no response returned and the lambda crashed)", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=200, changelog=[ @@ -12344,504 +11714,508 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): If a key is not present in this dictionary, it means that attribute is not defined in the Sentry Semantic Conventions. """ -Attributes = TypedDict("Attributes", { - "ai.citations": List[str], - "ai.completion_tokens.used": int, - "ai.documents": List[str], - "ai.finish_reason": str, - "ai.frequency_penalty": float, - "ai.function_call": str, - "ai.generation_id": str, - "ai.input_messages": str, - "ai.is_search_required": bool, - "ai.metadata": str, - "ai.model.provider": str, - "ai.model_id": str, - "ai.pipeline.name": str, - "ai.preamble": str, - "ai.presence_penalty": float, - "ai.prompt_tokens.used": int, - "ai.raw_prompting": bool, - "ai.response_format": str, - "ai.responses": List[str], - "ai.search_queries": List[str], - "ai.search_results": List[str], - "ai.seed": str, - "ai.streaming": bool, - "ai.tags": str, - "ai.temperature": float, - "ai.texts": List[str], - "ai.tool_calls": List[str], - "ai.tools": List[str], - "ai.top_k": int, - "ai.top_p": float, - "ai.total_cost": float, - "ai.total_tokens.used": int, - "ai.warnings": List[str], - "app.build": str, - "app.identifier": str, - "app.in_foreground": bool, - "app.name": str, - "app.start_time": str, - "app.version": str, - "app_start_type": str, - "blocked_main_thread": bool, - "browser.name": str, - "browser.report.type": str, - "browser.script.invoker": str, - "browser.script.invoker_type": str, - "browser.script.source_char_position": int, - "browser.version": str, - "browser.web_vital.cls.source.": str, - "browser.web_vital.cls.value": float, - "browser.web_vital.fcp.value": float, - "browser.web_vital.fp.value": float, - "browser.web_vital.inp.value": float, - "browser.web_vital.lcp.element": str, - "browser.web_vital.lcp.id": str, - "browser.web_vital.lcp.load_time": int, - "browser.web_vital.lcp.render_time": int, - "browser.web_vital.lcp.size": int, - "browser.web_vital.lcp.url": str, - "browser.web_vital.lcp.value": float, - "browser.web_vital.ttfb.request_time": float, - "browser.web_vital.ttfb.value": float, - "cache.hit": bool, - "cache.item_size": int, - "cache.key": List[str], - "cache.operation": str, - "cache.ttl": int, - "channel": str, - "client.address": str, - "client.port": int, - "cloudflare.d1.duration": int, - "cloudflare.d1.rows_read": int, - "cloudflare.d1.rows_written": int, - "cls.source.": str, - "cls": float, - "code.file.path": str, - "code.filepath": str, - "code.function": str, - "code.function.name": str, - "code.line.number": int, - "code.lineno": int, - "code.namespace": str, - "culture.calendar": str, - "culture.display_name": str, - "culture.is_24_hour_format": bool, - "culture.locale": str, - "culture.timezone": str, - "db.collection.name": str, - "db.name": str, - "db.namespace": str, - "db.operation": str, - "db.operation.name": str, - "db.query.parameter.": str, - "db.query.summary": str, - "db.query.text": str, - "db.redis.connection": str, - "db.redis.parameters": List[str], - "db.sql.bindings": List[str], - "db.statement": str, - "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.class": str, - "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.usable_memory": int, - "deviceMemory": str, - "environment": str, - "error.type": str, - "event.id": int, - "event.name": str, - "exception.escaped": bool, - "exception.message": str, - "exception.stacktrace": str, - "exception.type": str, - "faas.coldstart": bool, - "faas.cron": str, - "faas.time": str, - "faas.trigger": str, - "fcp": float, - "flag.evaluation.": bool, - "fp": float, - "frames.delay": int, - "frames.frozen": int, - "frames.slow": int, - "frames.total": int, - "fs_error": str, - "gen_ai.agent.name": str, - "gen_ai.conversation.id": str, - "gen_ai.cost.input_tokens": float, - "gen_ai.cost.output_tokens": float, - "gen_ai.cost.total_tokens": float, - "gen_ai.embeddings.input": str, - "gen_ai.input.messages": str, - "gen_ai.operation.name": str, - "gen_ai.operation.type": str, - "gen_ai.output.messages": str, - "gen_ai.pipeline.name": str, - "gen_ai.prompt": str, - "gen_ai.provider.name": str, - "gen_ai.request.available_tools": str, - "gen_ai.request.frequency_penalty": float, - "gen_ai.request.max_tokens": int, - "gen_ai.request.messages": str, - "gen_ai.request.model": str, - "gen_ai.request.presence_penalty": float, - "gen_ai.request.seed": str, - "gen_ai.request.temperature": float, - "gen_ai.request.top_k": int, - "gen_ai.request.top_p": float, - "gen_ai.response.finish_reasons": str, - "gen_ai.response.id": str, - "gen_ai.response.model": str, - "gen_ai.response.streaming": bool, - "gen_ai.response.text": str, - "gen_ai.response.time_to_first_token": float, - "gen_ai.response.tokens_per_second": float, - "gen_ai.response.tool_calls": str, - "gen_ai.system": str, - "gen_ai.system.message": str, - "gen_ai.system_instructions": str, - "gen_ai.tool.call.arguments": str, - "gen_ai.tool.call.result": str, - "gen_ai.tool.definitions": str, - "gen_ai.tool.description": str, - "gen_ai.tool.input": str, - "gen_ai.tool.message": str, - "gen_ai.tool.name": str, - "gen_ai.tool.output": str, - "gen_ai.tool.type": str, - "gen_ai.usage.completion_tokens": int, - "gen_ai.usage.input_tokens": int, - "gen_ai.usage.input_tokens.cache_write": int, - "gen_ai.usage.input_tokens.cached": int, - "gen_ai.usage.output_tokens": int, - "gen_ai.usage.output_tokens.reasoning": int, - "gen_ai.usage.prompt_tokens": int, - "gen_ai.usage.total_tokens": int, - "graphql.operation.name": str, - "graphql.operation.type": str, - "hardwareConcurrency": str, - "http.client_ip": str, - "http.decoded_response_content_length": int, - "http.flavor": str, - "http.fragment": str, - "http.host": str, - "http.method": str, - "http.query": str, - "http.request.connect_start": float, - "http.request.connection_end": float, - "http.request.domain_lookup_end": float, - "http.request.domain_lookup_start": float, - "http.request.fetch_start": float, - "http.request.header.": List[str], - "http.request.method": str, - "http.request.redirect_end": float, - "http.request.redirect_start": float, - "http.request.request_start": float, - "http.request.resend_count": int, - "http.request.response_end": float, - "http.request.response_start": float, - "http.request.secure_connection_start": float, - "http.request.time_to_first_byte": float, - "http.request.worker_start": float, - "http.response.body.size": int, - "http.response.header.": List[str], - "http.response.header.content-length": str, - "http.response.size": int, - "http.response.status_code": int, - "http.response_content_length": int, - "http.response_transfer_size": int, - "http.route": str, - "http.scheme": str, - "http.server.request.time_in_queue": float, - "http.server_name": str, - "http.status_code": int, - "http.target": str, - "http.url": str, - "http.user_agent": str, - "id": str, - "inp": float, - "jvm.gc.action": str, - "jvm.gc.name": str, - "jvm.memory.pool.name": str, - "jvm.memory.type": str, - "jvm.thread.daemon": bool, - "jvm.thread.state": str, - "lcp.element": str, - "lcp.id": str, - "lcp.loadTime": int, - "lcp.renderTime": int, - "lcp.size": int, - "lcp.url": str, - "lcp": float, - "logger.name": str, - "mcp.cancelled.reason": str, - "mcp.cancelled.request_id": str, - "mcp.client.name": str, - "mcp.client.title": str, - "mcp.client.version": str, - "mcp.lifecycle.phase": str, - "mcp.logging.data_type": str, - "mcp.logging.level": str, - "mcp.logging.logger": str, - "mcp.logging.message": str, - "mcp.method.name": str, - "mcp.progress.current": int, - "mcp.progress.message": str, - "mcp.progress.percentage": float, - "mcp.progress.token": str, - "mcp.progress.total": int, - "mcp.prompt.name": str, - "mcp.prompt.result.description": str, - "mcp.prompt.result.message_content": str, - "mcp.prompt.result.message_count": int, - "mcp.prompt.result.message_role": str, - "mcp.protocol.ready": int, - "mcp.protocol.version": str, - "mcp.request.argument.": str, - "mcp.request.argument.name": str, - "mcp.request.argument.uri": str, - "mcp.request.id": str, - "mcp.resource.protocol": str, - "mcp.resource.uri": str, - "mcp.server.name": str, - "mcp.server.title": str, - "mcp.server.version": str, - "mcp.session.id": str, - "mcp.tool.name": str, - "mcp.tool.result.content": str, - "mcp.tool.result.content_count": int, - "mcp.tool.result.is_error": bool, - "mcp.transport": str, - "mdc.": str, - "messaging.destination.connection": str, - "messaging.destination.name": str, - "messaging.message.body.size": int, - "messaging.message.envelope.size": int, - "messaging.message.id": str, - "messaging.message.receive.latency": int, - "messaging.message.retry.count": int, - "messaging.operation.type": str, - "messaging.system": str, - "method": str, - "navigation.type": str, - "nel.elapsed_time": int, - "nel.phase": str, - "nel.referrer": str, - "nel.sampling_function": float, - "nel.type": str, - "net.host.ip": str, - "net.host.name": str, - "net.host.port": int, - "net.peer.ip": str, - "net.peer.name": str, - "net.peer.port": int, - "net.protocol.name": str, - "net.protocol.version": str, - "net.sock.family": str, - "net.sock.host.addr": str, - "net.sock.host.port": int, - "net.sock.peer.addr": str, - "net.sock.peer.name": str, - "net.sock.peer.port": int, - "net.transport": str, - "network.local.address": str, - "network.local.port": int, - "network.peer.address": str, - "network.peer.port": int, - "network.protocol.name": str, - "network.protocol.version": str, - "network.transport": str, - "network.type": str, - "os.build_id": str, - "os.description": str, - "os.name": str, - "os.type": str, - "os.version": str, - "otel.scope.name": str, - "otel.scope.version": str, - "otel.status_code": str, - "otel.status_description": str, - "params.": str, - "previous_route": str, - "process.executable.name": str, - "process.pid": int, - "process.runtime.description": str, - "process.runtime.name": str, - "process.runtime.version": str, - "query.": str, - "release": str, - "remix.action_form_data.": str, - "replay_id": str, - "resource.deployment.environment": str, - "resource.deployment.environment.name": str, - "resource.render_blocking_status": str, - "route": str, - "rpc.grpc.status_code": int, - "rpc.service": str, - "sentry.action": str, - "sentry.browser.name": str, - "sentry.browser.version": str, - "sentry.cancellation_reason": str, - "sentry.category": str, - "sentry.client_sample_rate": float, - "sentry.description": str, - "sentry.dist": str, - "sentry.domain": str, - "sentry.dsc.environment": str, - "sentry.dsc.public_key": str, - "sentry.dsc.release": str, - "sentry.dsc.sample_rate": str, - "sentry.dsc.sampled": bool, - "sentry.dsc.trace_id": str, - "sentry.dsc.transaction": str, - "sentry.environment": str, - "sentry.exclusive_time": float, - "sentry.graphql.operation": str, - "sentry.group": str, - "sentry.http.prefetch": bool, - "sentry.idle_span_finish_reason": str, - "sentry.is_remote": bool, - "sentry.kind": str, - "sentry.message.parameter.": str, - "sentry.message.template": str, - "sentry.module.": str, - "sentry.nextjs.ssr.function.route": str, - "sentry.nextjs.ssr.function.type": str, - "sentry.normalized_db_query": str, - "sentry.normalized_db_query.hash": str, - "sentry.normalized_description": str, - "sentry.observed_timestamp_nanos": str, - "sentry.op": str, - "sentry.origin": str, - "sentry.platform": str, - "sentry.profiler_id": str, - "sentry.release": str, - "sentry.replay_id": str, - "sentry.replay_is_buffering": bool, - "sentry.sdk.integrations": List[str], - "sentry.sdk.name": str, - "sentry.sdk.version": str, - "sentry.segment.id": str, - "sentry.segment.name": str, - "sentry.segment_id": str, - "sentry.server_sample_rate": float, - "sentry.source": str, - "sentry.span.source": str, - "sentry.status.message": str, - "sentry.status_code": int, - "sentry.timestamp.sequence": int, - "sentry.trace.parent_span_id": str, - "sentry.transaction": str, - "server.address": str, - "server.port": int, - "service.name": str, - "service.version": str, - "thread.id": int, - "thread.name": str, - "timber.tag": str, - "transaction": str, - "ttfb.requestTime": float, - "ttfb": float, - "type": str, - "ui.component_name": str, - "ui.contributes_to_ttfd": bool, - "ui.contributes_to_ttid": bool, - "ui.element.height": int, - "ui.element.id": str, - "ui.element.identifier": str, - "ui.element.load_time": float, - "ui.element.paint_type": str, - "ui.element.render_time": float, - "ui.element.type": str, - "ui.element.url": str, - "ui.element.width": int, - "url.domain": str, - "url.fragment": str, - "url.full": str, - "url.path": str, - "url.path.parameter.": str, - "url.port": int, - "url.query": str, - "url.scheme": str, - "url.template": str, - "url": str, - "user.email": str, - "user.full_name": str, - "user.geo.city": str, - "user.geo.country_code": str, - "user.geo.region": str, - "user.geo.subdivision": str, - "user.hash": str, - "user.id": str, - "user.ip_address": str, - "user.name": str, - "user.roles": List[str], - "user_agent.original": str, - "vercel.branch": str, - "vercel.build_id": str, - "vercel.deployment_id": str, - "vercel.destination": str, - "vercel.edge_type": str, - "vercel.entrypoint": str, - "vercel.execution_region": str, - "vercel.id": str, - "vercel.ja3_digest": str, - "vercel.ja4_digest": str, - "vercel.log_type": str, - "vercel.project_id": str, - "vercel.project_name": str, - "vercel.proxy.cache_id": str, - "vercel.proxy.client_ip": str, - "vercel.proxy.host": str, - "vercel.proxy.lambda_region": str, - "vercel.proxy.method": str, - "vercel.proxy.path": str, - "vercel.proxy.path_type": str, - "vercel.proxy.path_type_variant": str, - "vercel.proxy.referer": str, - "vercel.proxy.region": str, - "vercel.proxy.response_byte_size": int, - "vercel.proxy.scheme": str, - "vercel.proxy.status_code": int, - "vercel.proxy.timestamp": int, - "vercel.proxy.user_agent": List[str], - "vercel.proxy.vercel_cache": str, - "vercel.proxy.vercel_id": str, - "vercel.proxy.waf_action": str, - "vercel.proxy.waf_rule_id": str, - "vercel.request_id": str, - "vercel.source": str, - "vercel.status_code": int, -}, total=False) +Attributes = TypedDict( + "Attributes", + { + "ai.citations": List[str], + "ai.completion_tokens.used": int, + "ai.documents": List[str], + "ai.finish_reason": str, + "ai.frequency_penalty": float, + "ai.function_call": str, + "ai.generation_id": str, + "ai.input_messages": str, + "ai.is_search_required": bool, + "ai.metadata": str, + "ai.model.provider": str, + "ai.model_id": str, + "ai.pipeline.name": str, + "ai.preamble": str, + "ai.presence_penalty": float, + "ai.prompt_tokens.used": int, + "ai.raw_prompting": bool, + "ai.response_format": str, + "ai.responses": List[str], + "ai.search_queries": List[str], + "ai.search_results": List[str], + "ai.seed": str, + "ai.streaming": bool, + "ai.tags": str, + "ai.temperature": float, + "ai.texts": List[str], + "ai.tool_calls": List[str], + "ai.tools": List[str], + "ai.top_k": int, + "ai.top_p": float, + "ai.total_cost": float, + "ai.total_tokens.used": int, + "ai.warnings": List[str], + "app.build": str, + "app.identifier": str, + "app.in_foreground": bool, + "app.name": str, + "app.start_time": str, + "app.version": str, + "app_start_type": str, + "blocked_main_thread": bool, + "browser.name": str, + "browser.report.type": str, + "browser.script.invoker": str, + "browser.script.invoker_type": str, + "browser.script.source_char_position": int, + "browser.version": str, + "browser.web_vital.cls.source.": str, + "browser.web_vital.cls.value": float, + "browser.web_vital.fcp.value": float, + "browser.web_vital.fp.value": float, + "browser.web_vital.inp.value": float, + "browser.web_vital.lcp.element": str, + "browser.web_vital.lcp.id": str, + "browser.web_vital.lcp.load_time": int, + "browser.web_vital.lcp.render_time": int, + "browser.web_vital.lcp.size": int, + "browser.web_vital.lcp.url": str, + "browser.web_vital.lcp.value": float, + "browser.web_vital.ttfb.request_time": float, + "browser.web_vital.ttfb.value": float, + "cache.hit": bool, + "cache.item_size": int, + "cache.key": List[str], + "cache.operation": str, + "cache.ttl": int, + "channel": str, + "client.address": str, + "client.port": int, + "cloudflare.d1.duration": int, + "cloudflare.d1.rows_read": int, + "cloudflare.d1.rows_written": int, + "cls.source.": str, + "cls": float, + "code.file.path": str, + "code.filepath": str, + "code.function": str, + "code.function.name": str, + "code.line.number": int, + "code.lineno": int, + "code.namespace": str, + "culture.calendar": str, + "culture.display_name": str, + "culture.is_24_hour_format": bool, + "culture.locale": str, + "culture.timezone": str, + "db.collection.name": str, + "db.name": str, + "db.namespace": str, + "db.operation": str, + "db.operation.name": str, + "db.query.parameter.": str, + "db.query.summary": str, + "db.query.text": str, + "db.redis.connection": str, + "db.redis.parameters": List[str], + "db.sql.bindings": List[str], + "db.statement": str, + "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.class": str, + "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.usable_memory": int, + "deviceMemory": str, + "environment": str, + "error.type": str, + "event.id": int, + "event.name": str, + "exception.escaped": bool, + "exception.message": str, + "exception.stacktrace": str, + "exception.type": str, + "faas.coldstart": bool, + "faas.cron": str, + "faas.time": str, + "faas.trigger": str, + "fcp": float, + "flag.evaluation.": bool, + "fp": float, + "frames.delay": int, + "frames.frozen": int, + "frames.slow": int, + "frames.total": int, + "fs_error": str, + "gen_ai.agent.name": str, + "gen_ai.conversation.id": str, + "gen_ai.cost.input_tokens": float, + "gen_ai.cost.output_tokens": float, + "gen_ai.cost.total_tokens": float, + "gen_ai.embeddings.input": str, + "gen_ai.input.messages": str, + "gen_ai.operation.name": str, + "gen_ai.operation.type": str, + "gen_ai.output.messages": str, + "gen_ai.pipeline.name": str, + "gen_ai.prompt": str, + "gen_ai.provider.name": str, + "gen_ai.request.available_tools": str, + "gen_ai.request.frequency_penalty": float, + "gen_ai.request.max_tokens": int, + "gen_ai.request.messages": str, + "gen_ai.request.model": str, + "gen_ai.request.presence_penalty": float, + "gen_ai.request.seed": str, + "gen_ai.request.temperature": float, + "gen_ai.request.top_k": int, + "gen_ai.request.top_p": float, + "gen_ai.response.finish_reasons": str, + "gen_ai.response.id": str, + "gen_ai.response.model": str, + "gen_ai.response.streaming": bool, + "gen_ai.response.text": str, + "gen_ai.response.time_to_first_token": float, + "gen_ai.response.tokens_per_second": float, + "gen_ai.response.tool_calls": str, + "gen_ai.system": str, + "gen_ai.system.message": str, + "gen_ai.system_instructions": str, + "gen_ai.tool.call.arguments": str, + "gen_ai.tool.call.result": str, + "gen_ai.tool.definitions": str, + "gen_ai.tool.description": str, + "gen_ai.tool.input": str, + "gen_ai.tool.message": str, + "gen_ai.tool.name": str, + "gen_ai.tool.output": str, + "gen_ai.tool.type": str, + "gen_ai.usage.completion_tokens": int, + "gen_ai.usage.input_tokens": int, + "gen_ai.usage.input_tokens.cache_write": int, + "gen_ai.usage.input_tokens.cached": int, + "gen_ai.usage.output_tokens": int, + "gen_ai.usage.output_tokens.reasoning": int, + "gen_ai.usage.prompt_tokens": int, + "gen_ai.usage.total_tokens": int, + "graphql.operation.name": str, + "graphql.operation.type": str, + "hardwareConcurrency": str, + "http.client_ip": str, + "http.decoded_response_content_length": int, + "http.flavor": str, + "http.fragment": str, + "http.host": str, + "http.method": str, + "http.query": str, + "http.request.connect_start": float, + "http.request.connection_end": float, + "http.request.domain_lookup_end": float, + "http.request.domain_lookup_start": float, + "http.request.fetch_start": float, + "http.request.header.": List[str], + "http.request.method": str, + "http.request.redirect_end": float, + "http.request.redirect_start": float, + "http.request.request_start": float, + "http.request.resend_count": int, + "http.request.response_end": float, + "http.request.response_start": float, + "http.request.secure_connection_start": float, + "http.request.time_to_first_byte": float, + "http.request.worker_start": float, + "http.response.body.size": int, + "http.response.header.": List[str], + "http.response.header.content-length": str, + "http.response.size": int, + "http.response.status_code": int, + "http.response_content_length": int, + "http.response_transfer_size": int, + "http.route": str, + "http.scheme": str, + "http.server.request.time_in_queue": float, + "http.server_name": str, + "http.status_code": int, + "http.target": str, + "http.url": str, + "http.user_agent": str, + "id": str, + "inp": float, + "jvm.gc.action": str, + "jvm.gc.name": str, + "jvm.memory.pool.name": str, + "jvm.memory.type": str, + "jvm.thread.daemon": bool, + "jvm.thread.state": str, + "lcp.element": str, + "lcp.id": str, + "lcp.loadTime": int, + "lcp.renderTime": int, + "lcp.size": int, + "lcp.url": str, + "lcp": float, + "logger.name": str, + "mcp.cancelled.reason": str, + "mcp.cancelled.request_id": str, + "mcp.client.name": str, + "mcp.client.title": str, + "mcp.client.version": str, + "mcp.lifecycle.phase": str, + "mcp.logging.data_type": str, + "mcp.logging.level": str, + "mcp.logging.logger": str, + "mcp.logging.message": str, + "mcp.method.name": str, + "mcp.progress.current": int, + "mcp.progress.message": str, + "mcp.progress.percentage": float, + "mcp.progress.token": str, + "mcp.progress.total": int, + "mcp.prompt.name": str, + "mcp.prompt.result.description": str, + "mcp.prompt.result.message_content": str, + "mcp.prompt.result.message_count": int, + "mcp.prompt.result.message_role": str, + "mcp.protocol.ready": int, + "mcp.protocol.version": str, + "mcp.request.argument.": str, + "mcp.request.argument.name": str, + "mcp.request.argument.uri": str, + "mcp.request.id": str, + "mcp.resource.protocol": str, + "mcp.resource.uri": str, + "mcp.server.name": str, + "mcp.server.title": str, + "mcp.server.version": str, + "mcp.session.id": str, + "mcp.tool.name": str, + "mcp.tool.result.content": str, + "mcp.tool.result.content_count": int, + "mcp.tool.result.is_error": bool, + "mcp.transport": str, + "mdc.": str, + "messaging.destination.connection": str, + "messaging.destination.name": str, + "messaging.message.body.size": int, + "messaging.message.envelope.size": int, + "messaging.message.id": str, + "messaging.message.receive.latency": int, + "messaging.message.retry.count": int, + "messaging.operation.type": str, + "messaging.system": str, + "method": str, + "navigation.type": str, + "nel.elapsed_time": int, + "nel.phase": str, + "nel.referrer": str, + "nel.sampling_function": float, + "nel.type": str, + "net.host.ip": str, + "net.host.name": str, + "net.host.port": int, + "net.peer.ip": str, + "net.peer.name": str, + "net.peer.port": int, + "net.protocol.name": str, + "net.protocol.version": str, + "net.sock.family": str, + "net.sock.host.addr": str, + "net.sock.host.port": int, + "net.sock.peer.addr": str, + "net.sock.peer.name": str, + "net.sock.peer.port": int, + "net.transport": str, + "network.local.address": str, + "network.local.port": int, + "network.peer.address": str, + "network.peer.port": int, + "network.protocol.name": str, + "network.protocol.version": str, + "network.transport": str, + "network.type": str, + "os.build_id": str, + "os.description": str, + "os.name": str, + "os.type": str, + "os.version": str, + "otel.scope.name": str, + "otel.scope.version": str, + "otel.status_code": str, + "otel.status_description": str, + "params.": str, + "previous_route": str, + "process.executable.name": str, + "process.pid": int, + "process.runtime.description": str, + "process.runtime.name": str, + "process.runtime.version": str, + "query.": str, + "release": str, + "remix.action_form_data.": str, + "replay_id": str, + "resource.deployment.environment": str, + "resource.deployment.environment.name": str, + "resource.render_blocking_status": str, + "route": str, + "rpc.grpc.status_code": int, + "rpc.service": str, + "sentry.action": str, + "sentry.browser.name": str, + "sentry.browser.version": str, + "sentry.cancellation_reason": str, + "sentry.category": str, + "sentry.client_sample_rate": float, + "sentry.description": str, + "sentry.dist": str, + "sentry.domain": str, + "sentry.dsc.environment": str, + "sentry.dsc.public_key": str, + "sentry.dsc.release": str, + "sentry.dsc.sample_rate": str, + "sentry.dsc.sampled": bool, + "sentry.dsc.trace_id": str, + "sentry.dsc.transaction": str, + "sentry.environment": str, + "sentry.exclusive_time": float, + "sentry.graphql.operation": str, + "sentry.group": str, + "sentry.http.prefetch": bool, + "sentry.idle_span_finish_reason": str, + "sentry.is_remote": bool, + "sentry.kind": str, + "sentry.message.parameter.": str, + "sentry.message.template": str, + "sentry.module.": str, + "sentry.nextjs.ssr.function.route": str, + "sentry.nextjs.ssr.function.type": str, + "sentry.normalized_db_query": str, + "sentry.normalized_db_query.hash": str, + "sentry.normalized_description": str, + "sentry.observed_timestamp_nanos": str, + "sentry.op": str, + "sentry.origin": str, + "sentry.platform": str, + "sentry.profiler_id": str, + "sentry.release": str, + "sentry.replay_id": str, + "sentry.replay_is_buffering": bool, + "sentry.sdk.integrations": List[str], + "sentry.sdk.name": str, + "sentry.sdk.version": str, + "sentry.segment.id": str, + "sentry.segment.name": str, + "sentry.segment_id": str, + "sentry.server_sample_rate": float, + "sentry.source": str, + "sentry.span.source": str, + "sentry.status.message": str, + "sentry.status_code": int, + "sentry.timestamp.sequence": int, + "sentry.trace.parent_span_id": str, + "sentry.transaction": str, + "server.address": str, + "server.port": int, + "service.name": str, + "service.version": str, + "thread.id": int, + "thread.name": str, + "timber.tag": str, + "transaction": str, + "ttfb.requestTime": float, + "ttfb": float, + "type": str, + "ui.component_name": str, + "ui.contributes_to_ttfd": bool, + "ui.contributes_to_ttid": bool, + "ui.element.height": int, + "ui.element.id": str, + "ui.element.identifier": str, + "ui.element.load_time": float, + "ui.element.paint_type": str, + "ui.element.render_time": float, + "ui.element.type": str, + "ui.element.url": str, + "ui.element.width": int, + "url.domain": str, + "url.fragment": str, + "url.full": str, + "url.path": str, + "url.path.parameter.": str, + "url.port": int, + "url.query": str, + "url.scheme": str, + "url.template": str, + "url": str, + "user.email": str, + "user.full_name": str, + "user.geo.city": str, + "user.geo.country_code": str, + "user.geo.region": str, + "user.geo.subdivision": str, + "user.hash": str, + "user.id": str, + "user.ip_address": str, + "user.name": str, + "user.roles": List[str], + "user_agent.original": str, + "vercel.branch": str, + "vercel.build_id": str, + "vercel.deployment_id": str, + "vercel.destination": str, + "vercel.edge_type": str, + "vercel.entrypoint": str, + "vercel.execution_region": str, + "vercel.id": str, + "vercel.ja3_digest": str, + "vercel.ja4_digest": str, + "vercel.log_type": str, + "vercel.project_id": str, + "vercel.project_name": str, + "vercel.proxy.cache_id": str, + "vercel.proxy.client_ip": str, + "vercel.proxy.host": str, + "vercel.proxy.lambda_region": str, + "vercel.proxy.method": str, + "vercel.proxy.path": str, + "vercel.proxy.path_type": str, + "vercel.proxy.path_type_variant": str, + "vercel.proxy.referer": str, + "vercel.proxy.region": str, + "vercel.proxy.response_byte_size": int, + "vercel.proxy.scheme": str, + "vercel.proxy.status_code": int, + "vercel.proxy.timestamp": int, + "vercel.proxy.user_agent": List[str], + "vercel.proxy.vercel_cache": str, + "vercel.proxy.vercel_id": str, + "vercel.proxy.waf_action": str, + "vercel.proxy.waf_rule_id": str, + "vercel.request_id": str, + "vercel.source": str, + "vercel.status_code": int, + }, + total=False, +) """TypedDict representing a collection of attributes, including deprecated and non-deprecated ones.""" __all__ = [ @@ -12849,4 +12223,3 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "Attributes", "ATTRIBUTE_NAMES", ] - From 90811f962606a9636c9f6e6f812256c114f980d9 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 24 Mar 2026 13:56:21 +0100 Subject: [PATCH 4/7] feat(attributes): Add more device context and network connection attributes Add device.chipset, device.cpu_description, device.external_storage_size, device.external_free_storage, device.thermal_state, device.connection_type (deprecated), and network.connection.type (OTel) attributes. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../sentry-conventions/src/attributes.ts | 246 ++++++++++++++++++ model/attributes/device/device__chipset.json | 17 ++ .../device/device__connection_type.json | 23 ++ .../device/device__cpu_description.json | 17 ++ .../device/device__external_free_storage.json | 17 ++ .../device/device__external_storage_size.json | 17 ++ .../device/device__thermal_state.json | 17 ++ .../network/network__connection__type.json | 17 ++ python/src/sentry_conventions/attributes.py | 188 +++++++++++++ shared/deprecated_attributes.json | 23 ++ 10 files changed, 582 insertions(+) create mode 100644 model/attributes/device/device__chipset.json create mode 100644 model/attributes/device/device__connection_type.json create mode 100644 model/attributes/device/device__cpu_description.json create mode 100644 model/attributes/device/device__external_free_storage.json create mode 100644 model/attributes/device/device__external_storage_size.json create mode 100644 model/attributes/device/device__thermal_state.json create mode 100644 model/attributes/network/network__connection__type.json diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index fa73344b..dad91cb3 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -2299,6 +2299,26 @@ export const 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 /** @@ -2319,6 +2339,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 /** @@ -2743,6 +2846,26 @@ export const 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 + * + * @example "nominal" + */ +export const DEVICE_THERMAL_STATE = 'device.thermal_state'; + +/** + * Type for {@link DEVICE_THERMAL_STATE} device.thermal_state + */ +export type DEVICE_THERMAL_STATE_TYPE = string; + // Path: model/attributes/device/device__usable_memory.json /** @@ -6587,6 +6710,26 @@ export const NEL_TYPE = 'nel.type'; */ export type NEL_TYPE_TYPE = string; +// Path: model/attributes/network/network__connection__type.json + +/** + * The internet connection type currently being used by the host. `network.connection.type` + * + * Attribute Value Type: `string` {@link NETWORK_CONNECTION_TYPE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: Yes + * + * @example "wifi" + */ +export const NETWORK_CONNECTION_TYPE = 'network.connection.type'; + +/** + * Type for {@link NETWORK_CONNECTION_TYPE} network.connection.type + */ +export type NETWORK_CONNECTION_TYPE_TYPE = string; + // Path: model/attributes/network/network__local__address.json /** @@ -10530,7 +10673,12 @@ export const ATTRIBUTE_TYPE: Record = { [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', @@ -10552,6 +10700,7 @@ export const ATTRIBUTE_TYPE: Record = { [DEVICE_SCREEN_WIDTH_PIXELS]: 'integer', [DEVICE_SIMULATOR]: 'boolean', [DEVICE_STORAGE_SIZE]: 'integer', + [DEVICE_THERMAL_STATE]: 'string', [DEVICE_USABLE_MEMORY]: 'integer', [ENVIRONMENT]: 'string', [ERROR_TYPE]: 'string', @@ -10736,6 +10885,7 @@ export const ATTRIBUTE_TYPE: Record = { [NEL_REFERRER]: 'string', [NEL_SAMPLING_FUNCTION]: 'double', [NEL_TYPE]: 'string', + [NETWORK_CONNECTION_TYPE]: 'string', [NETWORK_LOCAL_ADDRESS]: 'string', [NETWORK_LOCAL_PORT]: 'integer', [NETWORK_PEER_ADDRESS]: 'string', @@ -11029,7 +11179,12 @@ export type AttributeName = | 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 @@ -11051,6 +11206,7 @@ export type AttributeName = | typeof DEVICE_SCREEN_WIDTH_PIXELS | typeof DEVICE_SIMULATOR | typeof DEVICE_STORAGE_SIZE + | typeof DEVICE_THERMAL_STATE | typeof DEVICE_USABLE_MEMORY | typeof ENVIRONMENT | typeof ERROR_TYPE @@ -11235,6 +11391,7 @@ export type AttributeName = | typeof NEL_REFERRER | typeof NEL_SAMPLING_FUNCTION | typeof NEL_TYPE + | typeof NETWORK_CONNECTION_TYPE | typeof NETWORK_LOCAL_ADDRESS | typeof NETWORK_LOCAL_PORT | typeof NETWORK_PEER_ADDRESS @@ -12802,6 +12959,16 @@ export const ATTRIBUTE_METADATA: Record = { 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.', @@ -12813,6 +12980,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', @@ -13045,6 +13263,17 @@ export const ATTRIBUTE_METADATA: Record = { 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', @@ -15329,6 +15558,16 @@ export const ATTRIBUTE_METADATA: Record = { example: 'dns.unreachable', changelog: [{ version: '0.1.0', prs: [68, 127] }], }, + [NETWORK_CONNECTION_TYPE]: { + brief: 'The internet connection type currently being used by the host.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: true, + example: 'wifi', + changelog: [{ version: 'next', prs: [303], description: 'Added network.connection.type attribute' }], + }, [NETWORK_LOCAL_ADDRESS]: { brief: 'Local address of the network connection - IP address or Unix domain socket name.', type: 'string', @@ -17479,7 +17718,12 @@ export type Attributes = { [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; @@ -17501,6 +17745,7 @@ export type Attributes = { [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; [ENVIRONMENT]?: ENVIRONMENT_TYPE; [ERROR_TYPE]?: ERROR_TYPE_TYPE; @@ -17685,6 +17930,7 @@ export type Attributes = { [NEL_REFERRER]?: NEL_REFERRER_TYPE; [NEL_SAMPLING_FUNCTION]?: NEL_SAMPLING_FUNCTION_TYPE; [NEL_TYPE]?: NEL_TYPE_TYPE; + [NETWORK_CONNECTION_TYPE]?: NETWORK_CONNECTION_TYPE_TYPE; [NETWORK_LOCAL_ADDRESS]?: NETWORK_LOCAL_ADDRESS_TYPE; [NETWORK_LOCAL_PORT]?: NETWORK_LOCAL_PORT_TYPE; [NETWORK_PEER_ADDRESS]?: NETWORK_PEER_ADDRESS_TYPE; 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__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/network/network__connection__type.json b/model/attributes/network/network__connection__type.json new file mode 100644 index 00000000..39163ceb --- /dev/null +++ b/model/attributes/network/network__connection__type.json @@ -0,0 +1,17 @@ +{ + "key": "network.connection.type", + "brief": "The internet connection type currently being used by the host.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": true, + "example": "wifi", + "changelog": [ + { + "version": "next", + "prs": [303], + "description": "Added network.connection.type attribute" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 636988e2..a581c3f3 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -147,6 +147,7 @@ class _AttributeNamesMeta(type): "DB_SQL_BINDINGS", "DB_STATEMENT", "DB_SYSTEM", + "DEVICE_CONNECTION_TYPE", "DEVICEMEMORY", "ENVIRONMENT", "FCP", @@ -1437,6 +1438,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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. @@ -1447,6 +1458,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. @@ -1667,6 +1724,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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. @@ -3935,6 +4002,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "tcp" """ + # Path: model/attributes/network/network__connection__type.json + NETWORK_CONNECTION_TYPE: Literal["network.connection.type"] = ( + "network.connection.type" + ) + """The internet connection type currently being used by the host. + + Type: str + Contains PII: maybe + Defined in OTEL: Yes + Example: "wifi" + """ + # Path: model/attributes/network/network__local__address.json NETWORK_LOCAL_ADDRESS: Literal["network.local.address"] = "network.local.address" """Local address of the network connection - IP address or Unix domain socket name. @@ -7102,6 +7181,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "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, @@ -7114,6 +7205,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, @@ -7400,6 +7553,20 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), ], ), + "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, @@ -9845,6 +10012,20 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "network.connection.type": AttributeMetadata( + 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", + changelog=[ + ChangelogEntry( + version="next", + prs=[303], + description="Added network.connection.type attribute", + ), + ], + ), "network.local.address": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, @@ -11823,7 +12004,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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, @@ -11845,6 +12031,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "device.screen_width_pixels": int, "device.simulator": bool, "device.storage_size": int, + "device.thermal_state": str, "device.usable_memory": int, "deviceMemory": str, "environment": str, @@ -12045,6 +12232,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.name": str, "net.sock.peer.port": int, "net.transport": str, + "network.connection.type": str, "network.local.address": str, "network.local.port": int, "network.peer.address": str, diff --git a/shared/deprecated_attributes.json b/shared/deprecated_attributes.json index fb86f362..3468e895 100644 --- a/shared/deprecated_attributes.json +++ b/shared/deprecated_attributes.json @@ -1438,6 +1438,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", From ad8779ee63dbba1c905eb3cb348cc453d9cbc5ff Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Tue, 24 Mar 2026 14:03:07 +0100 Subject: [PATCH 5/7] fix: Add symmetric alias between network.connection.type and device.connection_type Co-Authored-By: Claude Opus 4.6 (1M context) --- javascript/sentry-conventions/src/attributes.ts | 3 +++ model/attributes/network/network__connection__type.json | 1 + python/src/sentry_conventions/attributes.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index dad91cb3..0cd73173 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -6721,6 +6721,8 @@ export type NEL_TYPE_TYPE = string; * * Attribute defined in OTEL: Yes * + * Aliases: {@link DEVICE_CONNECTION_TYPE} `device.connection_type` + * * @example "wifi" */ export const NETWORK_CONNECTION_TYPE = 'network.connection.type'; @@ -15566,6 +15568,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'wifi', + aliases: [DEVICE_CONNECTION_TYPE], changelog: [{ version: 'next', prs: [303], description: 'Added network.connection.type attribute' }], }, [NETWORK_LOCAL_ADDRESS]: { diff --git a/model/attributes/network/network__connection__type.json b/model/attributes/network/network__connection__type.json index 39163ceb..8960b89c 100644 --- a/model/attributes/network/network__connection__type.json +++ b/model/attributes/network/network__connection__type.json @@ -7,6 +7,7 @@ }, "is_in_otel": true, "example": "wifi", + "alias": ["device.connection_type"], "changelog": [ { "version": "next", diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index a581c3f3..e3a2050c 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -4011,6 +4011,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: Yes + Aliases: device.connection_type Example: "wifi" """ @@ -10018,6 +10019,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="wifi", + aliases=["device.connection_type"], changelog=[ ChangelogEntry( version="next", From 278a08090d02022afb2f58fcd90c5a72ef058582 Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Mon, 30 Mar 2026 14:24:18 +0200 Subject: [PATCH 6/7] feat(attributes): Add deprecated app.app_* attributes with backfill to canonical app.* names Instead of renaming app.build to app.app_build, keep app.build as canonical and add app.app_build as a deprecated attribute with backfill status that aliases to app.build. Same pattern for app_identifier, app_name, app_start_time, and app_version. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../sentry-conventions/src/attributes.ts | 241 ++++++++++++++++++ model/attributes/app/app__app_build.json | 24 ++ model/attributes/app/app__app_identifier.json | 24 ++ model/attributes/app/app__app_name.json | 24 ++ model/attributes/app/app__app_start_time.json | 24 ++ model/attributes/app/app__app_version.json | 24 ++ model/attributes/app/app__build.json | 1 + model/attributes/app/app__identifier.json | 1 + model/attributes/app/app__name.json | 1 + model/attributes/app/app__start_time.json | 1 + model/attributes/app/app__version.json | 1 + python/src/sentry_conventions/attributes.py | 210 +++++++++++++++ shared/deprecated_attributes.json | 120 +++++++++ 13 files changed, 696 insertions(+) create mode 100644 model/attributes/app/app__app_build.json create mode 100644 model/attributes/app/app__app_identifier.json create mode 100644 model/attributes/app/app__app_name.json create mode 100644 model/attributes/app/app__app_start_time.json create mode 100644 model/attributes/app/app__app_version.json diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 0cd73173..1f49aca4 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'; @@ -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'; @@ -10601,6 +10726,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', @@ -11107,6 +11237,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 @@ -12080,6 +12215,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', @@ -12088,6 +12319,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' }], }, @@ -12099,6 +12331,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' }], }, @@ -12121,6 +12354,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' }], }, @@ -12132,6 +12366,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' }], }, @@ -12153,6 +12388,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' }], }, @@ -17647,6 +17883,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; 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__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/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index e3a2050c..5d91749e 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", @@ -619,6 +624,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. @@ -626,6 +691,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_build Example: "1" """ @@ -636,6 +702,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_identifier Example: "com.example.myapp" """ @@ -656,6 +723,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_name Example: "My App" """ @@ -666,6 +734,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" """ @@ -676,6 +745,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: app.app_version Example: "1.0.0" """ @@ -6237,12 +6307,143 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.1.0", prs=[55]), ], ), + "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", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[296], + description="Added and deprecated app.app_build in favor of app.build", + ), + ], + ), + "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", + deprecation=DeprecationInfo( + replacement="app.identifier", + reason="Deprecated in favor of app.identifier", + status=DeprecationStatus.BACKFILL, + ), + aliases=["app.identifier"], + sdks=[ + "sentry.cocoa", + "sentry.java.android", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[296], + description="Added and deprecated app.app_identifier in favor of app.identifier", + ), + ], + ), + "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", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[296], + description="Added and deprecated app.app_name in favor of app.name", + ), + ], + ), + "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", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[296], + description="Added and deprecated app.app_start_time in favor of app.start_time", + ), + ], + ), + "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", + "sentry.javascript.react-native", + "sentry.dart.flutter", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[296], + description="Added and deprecated app.app_version in favor of app.version", + ), + ], + ), "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", + aliases=["app.app_build"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -6261,6 +6462,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="com.example.myapp", + aliases=["app.app_identifier"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -6299,6 +6501,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="My App", + aliases=["app.app_name"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -6317,6 +6520,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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", @@ -6335,6 +6539,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="1.0.0", + aliases=["app.app_version"], sdks=[ "sentry.cocoa", "sentry.java.android", @@ -11933,6 +12138,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, diff --git a/shared/deprecated_attributes.json b/shared/deprecated_attributes.json index 3468e895..7cc186e1 100644 --- a/shared/deprecated_attributes.json +++ b/shared/deprecated_attributes.json @@ -1181,6 +1181,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", From 9db3ed560a4d5e8cfa262d50947d96ead5513b9f Mon Sep 17 00:00:00 2001 From: Giancarlo Buenaflor Date: Mon, 30 Mar 2026 14:36:28 +0200 Subject: [PATCH 7/7] fix(attributes): Set app.in_foreground pii to maybe Co-Authored-By: Claude Opus 4.6 (1M context) --- javascript/sentry-conventions/src/attributes.ts | 4 ++-- model/attributes/app/app__in_foreground.json | 2 +- python/src/sentry_conventions/attributes.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 9dcf94a4..f590df3d 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -899,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 * @@ -12484,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, 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/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 7a55d598..166a226a 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -714,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 """ @@ -6553,7 +6553,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "app.in_foreground": AttributeMetadata( brief="Whether the application is currently in the foreground.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=True, sdks=[