From 4da22d3a4bc933102c0af4c0d0c5ae9b3d511120 Mon Sep 17 00:00:00 2001 From: Alexander Alderman Webb Date: Thu, 19 Mar 2026 16:00:27 +0100 Subject: [PATCH 1/3] feat(attributes): Add db.driver.name attribute --- .../sentry-conventions/src/attributes.ts | 32 +++++++++++++++++++ python/src/sentry_conventions/attributes.py | 18 +++++++++++ 2 files changed, 50 insertions(+) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index ba0a8b59..94151023 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -1376,6 +1376,26 @@ export const DB_COLLECTION_NAME = 'db.collection.name'; */ export type DB_COLLECTION_NAME_TYPE = string; +// Path: model/attributes/db/db__driver__name.json + +/** + * The name of the driver used for database connections. `db.driver.name` + * + * Attribute Value Type: `string` {@link DB_DRIVER_NAME_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: No + * + * @example "psycopg2" + */ +export const DB_DRIVER_NAME = 'db.driver.name'; + +/** + * Type for {@link DB_DRIVER_NAME} db.driver.name + */ +export type DB_DRIVER_NAME_TYPE = string; + // Path: model/attributes/db/db__name.json /** @@ -8951,6 +8971,7 @@ export const ATTRIBUTE_TYPE: Record = { [CULTURE_LOCALE]: 'string', [CULTURE_TIMEZONE]: 'string', [DB_COLLECTION_NAME]: 'string', + [DB_DRIVER_NAME]: 'string', [DB_NAME]: 'string', [DB_NAMESPACE]: 'string', [DB_OPERATION]: 'string', @@ -9380,6 +9401,7 @@ export type AttributeName = | typeof CULTURE_LOCALE | typeof CULTURE_TIMEZONE | typeof DB_COLLECTION_NAME + | typeof DB_DRIVER_NAME | typeof DB_NAME | typeof DB_NAMESPACE | typeof DB_OPERATION @@ -10458,6 +10480,15 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'users', }, + [DB_DRIVER_NAME]: { + brief: 'The name of the driver used for database connections.', + type: 'string', + pii: { + isPii: 'false', + }, + isInOtel: false, + example: 'psycopg2', + }, [DB_NAME]: { brief: 'The name of the database being accessed.', type: 'string', @@ -14172,6 +14203,7 @@ export type Attributes = { [CULTURE_LOCALE]?: CULTURE_LOCALE_TYPE; [CULTURE_TIMEZONE]?: CULTURE_TIMEZONE_TYPE; [DB_COLLECTION_NAME]?: DB_COLLECTION_NAME_TYPE; + [DB_DRIVER_NAME]?: DB_DRIVER_NAME_TYPE; [DB_NAME]?: DB_NAME_TYPE; [DB_NAMESPACE]?: DB_NAMESPACE_TYPE; [DB_OPERATION]?: DB_OPERATION_TYPE; diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 2a2b4330..9a273a90 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -892,6 +892,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "users" """ + # Path: model/attributes/db/db__driver__name.json + DB_DRIVER_NAME: Literal["db.driver.name"] = "db.driver.name" + """The name of the driver used for database connections. + + Type: str + Contains PII: false + Defined in OTEL: No + Example: "psycopg2" + """ + # Path: model/attributes/db/db__name.json DB_NAME: Literal["db.name"] = "db.name" """The name of the database being accessed. @@ -5386,6 +5396,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="users", ), + "db.driver.name": AttributeMetadata( + brief="The name of the driver used for database connections.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.FALSE), + is_in_otel=False, + example="psycopg2", + ), "db.name": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, @@ -8248,6 +8265,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "culture.locale": str, "culture.timezone": str, "db.collection.name": str, + "db.driver.name": str, "db.name": str, "db.namespace": str, "db.operation": str, From 4a1462e1078988fb6b0dcc9cf46503811b4f967d Mon Sep 17 00:00:00 2001 From: Alexander Alderman Webb Date: Thu, 19 Mar 2026 16:05:57 +0100 Subject: [PATCH 2/3] . --- model/attributes/db/db__driver__name.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 model/attributes/db/db__driver__name.json diff --git a/model/attributes/db/db__driver__name.json b/model/attributes/db/db__driver__name.json new file mode 100644 index 00000000..86e688ce --- /dev/null +++ b/model/attributes/db/db__driver__name.json @@ -0,0 +1,10 @@ +{ + "key": "db.driver.name", + "brief": "The name of the driver used for database connections.", + "type": "string", + "pii": { + "key": "false" + }, + "is_in_otel": false, + "example": "psycopg2" +} From 41d745a630f7dc539ff0d4ca23eb5e7bbcb31adc Mon Sep 17 00:00:00 2001 From: Alexander Alderman Webb Date: Thu, 19 Mar 2026 16:17:47 +0100 Subject: [PATCH 3/3] re-run generation script --- .../sentry-conventions/src/attributes.ts | 2614 ++++++++++++++- model/attributes/db/db__driver__name.json | 11 +- python/src/sentry_conventions/attributes.py | 2907 ++++++++++++++++- 3 files changed, 5378 insertions(+), 154 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 94151023..e67d70b4 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -11,6 +11,7 @@ * * Attribute defined in OTEL: No * + * @deprecated * @example ["Citation 1","Citation 2"] */ export const AI_CITATIONS = 'ai.citations'; @@ -54,6 +55,7 @@ export type AI_COMPLETION_TOKENS_USED_TYPE = number; * * Attribute defined in OTEL: No * + * @deprecated * @example ["document1.txt","document2.pdf"] */ export const AI_DOCUMENTS = 'ai.documents'; @@ -189,6 +191,7 @@ export type AI_INPUT_MESSAGES_TYPE = string; * * Attribute defined in OTEL: No * + * @deprecated * @example false */ export const AI_IS_SEARCH_REQUIRED = 'ai.is_search_required'; @@ -209,6 +212,7 @@ export type AI_IS_SEARCH_REQUIRED_TYPE = boolean; * * Attribute defined in OTEL: No * + * @deprecated * @example "{\"user_id\": 123, \"session_id\": \"abc123\"}" */ export const AI_METADATA = 'ai.metadata'; @@ -298,6 +302,9 @@ export type AI_PIPELINE_NAME_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link GEN_AI_SYSTEM_INSTRUCTIONS} `gen_ai.system_instructions` + * + * @deprecated Use {@link GEN_AI_SYSTEM_INSTRUCTIONS} (gen_ai.system_instructions) instead * @example "You are now a clown." */ export const AI_PREAMBLE = 'ai.preamble'; @@ -364,6 +371,7 @@ export type AI_PROMPT_TOKENS_USED_TYPE = number; * * Attribute defined in OTEL: No * + * @deprecated * @example true */ export const AI_RAW_PROMPTING = 'ai.raw_prompting'; @@ -405,6 +413,7 @@ export type AI_RESPONSES_TYPE = Array; * * Attribute defined in OTEL: No * + * @deprecated * @example "json_object" */ export const AI_RESPONSE_FORMAT = 'ai.response_format'; @@ -425,6 +434,7 @@ export type AI_RESPONSE_FORMAT_TYPE = string; * * Attribute defined in OTEL: No * + * @deprecated * @example ["climate change effects","renewable energy"] */ export const AI_SEARCH_QUERIES = 'ai.search_queries'; @@ -445,6 +455,7 @@ export type AI_SEARCH_QUERIES_TYPE = Array; * * Attribute defined in OTEL: No * + * @deprecated * @example ["search_result_1, search_result_2"] */ export const AI_SEARCH_RESULTS = 'ai.search_results'; @@ -511,6 +522,7 @@ export type AI_STREAMING_TYPE = boolean; * * Attribute defined in OTEL: No * + * @deprecated * @example "{\"executed_function\": \"add_integers\"}" */ export const AI_TAGS = 'ai.tags'; @@ -554,6 +566,9 @@ export type AI_TEMPERATURE_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link GEN_AI_INPUT_MESSAGES} `gen_ai.input.messages` + * + * @deprecated Use {@link GEN_AI_INPUT_MESSAGES} (gen_ai.input.messages) instead * @example ["Hello, how are you?","What is the capital of France?"] */ export const AI_TEXTS = 'ai.texts'; @@ -662,6 +677,9 @@ export type AI_TOP_P_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link GEN_AI_COST_TOTAL_TOKENS} `gen_ai.cost.total_tokens` + * + * @deprecated Use {@link GEN_AI_COST_TOTAL_TOKENS} (gen_ai.cost.total_tokens) instead * @example 12.34 */ export const AI_TOTAL_COST = 'ai.total_cost'; @@ -705,6 +723,7 @@ export type AI_TOTAL_TOKENS_USED_TYPE = number; * * Attribute defined in OTEL: No * + * @deprecated * @example ["Token limit exceeded"] */ export const AI_WARNINGS = 'ai.warnings'; @@ -878,6 +897,316 @@ export const BROWSER_VERSION = 'browser.version'; */ export type BROWSER_VERSION_TYPE = string; +// Path: model/attributes/browser/browser__web_vital__cls__source__[key].json + +/** + * The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N `browser.web_vital.cls.source.` + * + * Attribute Value Type: `string` {@link BROWSER_WEB_VITAL_CLS_SOURCE_KEY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Has Dynamic Suffix: true + * + * Aliases: {@link CLS_SOURCE_KEY} `cls.source.` + * + * @example "body > div#app" + */ +export const BROWSER_WEB_VITAL_CLS_SOURCE_KEY = 'browser.web_vital.cls.source.'; + +/** + * Type for {@link BROWSER_WEB_VITAL_CLS_SOURCE_KEY} browser.web_vital.cls.source. + */ +export type BROWSER_WEB_VITAL_CLS_SOURCE_KEY_TYPE = string; + +// Path: model/attributes/browser/browser__web_vital__cls__value.json + +/** + * The value of the recorded Cumulative Layout Shift (CLS) web vital `browser.web_vital.cls.value` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_CLS_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link CLS} `cls` + * + * @example 0.2361 + */ +export const BROWSER_WEB_VITAL_CLS_VALUE = 'browser.web_vital.cls.value'; + +/** + * Type for {@link BROWSER_WEB_VITAL_CLS_VALUE} browser.web_vital.cls.value + */ +export type BROWSER_WEB_VITAL_CLS_VALUE_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__fcp__value.json + +/** + * The time it takes for the browser to render the first piece of meaningful content on the screen `browser.web_vital.fcp.value` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_FCP_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link FCP} `fcp` + * + * @example 547.6951 + */ +export const BROWSER_WEB_VITAL_FCP_VALUE = 'browser.web_vital.fcp.value'; + +/** + * Type for {@link BROWSER_WEB_VITAL_FCP_VALUE} browser.web_vital.fcp.value + */ +export type BROWSER_WEB_VITAL_FCP_VALUE_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__fp__value.json + +/** + * The time in milliseconds it takes for the browser to render the first pixel on the screen `browser.web_vital.fp.value` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_FP_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link FP} `fp` + * + * @example 477.1926 + */ +export const BROWSER_WEB_VITAL_FP_VALUE = 'browser.web_vital.fp.value'; + +/** + * Type for {@link BROWSER_WEB_VITAL_FP_VALUE} browser.web_vital.fp.value + */ +export type BROWSER_WEB_VITAL_FP_VALUE_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__inp__value.json + +/** + * The value of the recorded Interaction to Next Paint (INP) web vital `browser.web_vital.inp.value` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_INP_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link INP} `inp` + * + * @example 200 + */ +export const BROWSER_WEB_VITAL_INP_VALUE = 'browser.web_vital.inp.value'; + +/** + * Type for {@link BROWSER_WEB_VITAL_INP_VALUE} browser.web_vital.inp.value + */ +export type BROWSER_WEB_VITAL_INP_VALUE_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__lcp__element.json + +/** + * The HTML element selector or component name for which LCP was reported `browser.web_vital.lcp.element` + * + * Attribute Value Type: `string` {@link BROWSER_WEB_VITAL_LCP_ELEMENT_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_ELEMENT} `lcp.element` + * + * @example "body > div#app > div#container > div" + */ +export const BROWSER_WEB_VITAL_LCP_ELEMENT = 'browser.web_vital.lcp.element'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_ELEMENT} browser.web_vital.lcp.element + */ +export type BROWSER_WEB_VITAL_LCP_ELEMENT_TYPE = string; + +// Path: model/attributes/browser/browser__web_vital__lcp__id.json + +/** + * The id of the dom element responsible for the largest contentful paint `browser.web_vital.lcp.id` + * + * Attribute Value Type: `string` {@link BROWSER_WEB_VITAL_LCP_ID_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_ID} `lcp.id` + * + * @example "#gero" + */ +export const BROWSER_WEB_VITAL_LCP_ID = 'browser.web_vital.lcp.id'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_ID} browser.web_vital.lcp.id + */ +export type BROWSER_WEB_VITAL_LCP_ID_TYPE = string; + +// Path: model/attributes/browser/browser__web_vital__lcp__load_time.json + +/** + * The time it took for the LCP element to be loaded `browser.web_vital.lcp.load_time` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_LCP_LOAD_TIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_LOADTIME} `lcp.loadTime` + * + * @example 1402 + */ +export const BROWSER_WEB_VITAL_LCP_LOAD_TIME = 'browser.web_vital.lcp.load_time'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_LOAD_TIME} browser.web_vital.lcp.load_time + */ +export type BROWSER_WEB_VITAL_LCP_LOAD_TIME_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__lcp__render_time.json + +/** + * The time it took for the LCP element to be rendered `browser.web_vital.lcp.render_time` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_LCP_RENDER_TIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_RENDERTIME} `lcp.renderTime` + * + * @example 1685 + */ +export const BROWSER_WEB_VITAL_LCP_RENDER_TIME = 'browser.web_vital.lcp.render_time'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_RENDER_TIME} browser.web_vital.lcp.render_time + */ +export type BROWSER_WEB_VITAL_LCP_RENDER_TIME_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__lcp__size.json + +/** + * The size of the largest contentful paint element `browser.web_vital.lcp.size` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_LCP_SIZE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_SIZE} `lcp.size` + * + * @example 1024 + */ +export const BROWSER_WEB_VITAL_LCP_SIZE = 'browser.web_vital.lcp.size'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_SIZE} browser.web_vital.lcp.size + */ +export type BROWSER_WEB_VITAL_LCP_SIZE_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__lcp__url.json + +/** + * The url of the dom element responsible for the largest contentful paint `browser.web_vital.lcp.url` + * + * Attribute Value Type: `string` {@link BROWSER_WEB_VITAL_LCP_URL_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP_URL} `lcp.url` + * + * @example "https://example.com/static/img.png" + */ +export const BROWSER_WEB_VITAL_LCP_URL = 'browser.web_vital.lcp.url'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_URL} browser.web_vital.lcp.url + */ +export type BROWSER_WEB_VITAL_LCP_URL_TYPE = string; + +// Path: model/attributes/browser/browser__web_vital__lcp__value.json + +/** + * The value of the recorded Largest Contentful Paint (LCP) web vital `browser.web_vital.lcp.value` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_LCP_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link LCP} `lcp` + * + * @example 2500 + */ +export const BROWSER_WEB_VITAL_LCP_VALUE = 'browser.web_vital.lcp.value'; + +/** + * Type for {@link BROWSER_WEB_VITAL_LCP_VALUE} browser.web_vital.lcp.value + */ +export type BROWSER_WEB_VITAL_LCP_VALUE_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__ttfb__request_time.json + +/** + * 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 `browser.web_vital.ttfb.request_time` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_TTFB_REQUEST_TIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link TTFB_REQUESTTIME} `ttfb.requestTime` + * + * @example 1554.5814 + */ +export const BROWSER_WEB_VITAL_TTFB_REQUEST_TIME = 'browser.web_vital.ttfb.request_time'; + +/** + * Type for {@link BROWSER_WEB_VITAL_TTFB_REQUEST_TIME} browser.web_vital.ttfb.request_time + */ +export type BROWSER_WEB_VITAL_TTFB_REQUEST_TIME_TYPE = number; + +// Path: model/attributes/browser/browser__web_vital__ttfb__value.json + +/** + * The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds `browser.web_vital.ttfb.value` + * + * Attribute Value Type: `number` {@link BROWSER_WEB_VITAL_TTFB_VALUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link TTFB} `ttfb` + * + * @example 194.3322 + */ +export const BROWSER_WEB_VITAL_TTFB_VALUE = 'browser.web_vital.ttfb.value'; + +/** + * Type for {@link BROWSER_WEB_VITAL_TTFB_VALUE} browser.web_vital.ttfb.value + */ +export type BROWSER_WEB_VITAL_TTFB_VALUE_TYPE = number; + // Path: model/attributes/cache/cache__hit.json /** @@ -1100,6 +1429,54 @@ export const CLOUDFLARE_D1_ROWS_WRITTEN = 'cloudflare.d1.rows_written'; */ export type CLOUDFLARE_D1_ROWS_WRITTEN_TYPE = number; +// Path: model/attributes/cls.json + +/** + * The value of the recorded Cumulative Layout Shift (CLS) web vital `cls` + * + * Attribute Value Type: `number` {@link CLS_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_CLS_VALUE} `browser.web_vital.cls.value` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_CLS_VALUE} (browser.web_vital.cls.value) instead - The CLS web vital is now recorded as a browser.web_vital.cls.value attribute. + * @example 0.2361 + */ +export const CLS = 'cls'; + +/** + * Type for {@link CLS} cls + */ +export type CLS_TYPE = number; + +// Path: model/attributes/cls/cls__source__[key].json + +/** + * The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N `cls.source.` + * + * Attribute Value Type: `string` {@link CLS_SOURCE_KEY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Has Dynamic Suffix: true + * + * Aliases: {@link BROWSER_WEB_VITAL_CLS_SOURCE_KEY} `browser.web_vital.cls.source.` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_CLS_SOURCE_KEY} (browser.web_vital.cls.source.) instead - The CLS source is now recorded as a browser.web_vital.cls.source. attribute. + * @example "body > div#app" + */ +export const CLS_SOURCE_KEY = 'cls.source.'; + +/** + * Type for {@link CLS_SOURCE_KEY} cls.source. + */ +export type CLS_SOURCE_KEY_TYPE = string; + // Path: model/attributes/code/code__filepath.json /** @@ -1379,7 +1756,7 @@ export type DB_COLLECTION_NAME_TYPE = string; // Path: model/attributes/db/db__driver__name.json /** - * The name of the driver used for database connections. `db.driver.name` + * The name of the driver used for the database connection. `db.driver.name` * * Attribute Value Type: `string` {@link DB_DRIVER_NAME_TYPE} * @@ -1699,6 +2076,29 @@ export const DB_USER = 'db.user'; */ export type DB_USER_TYPE = string; +// Path: model/attributes/deviceMemory.json + +/** + * The estimated total memory capacity of the device, only a rough estimation in gigabytes. `deviceMemory` + * + * Attribute Value Type: `string` {@link DEVICEMEMORY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link DEVICE_MEMORY_ESTIMATED_CAPACITY} `device.memory.estimated_capacity` + * + * @deprecated Use {@link DEVICE_MEMORY_ESTIMATED_CAPACITY} (device.memory.estimated_capacity) instead - Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future + * @example "8 GB" + */ +export const DEVICEMEMORY = 'deviceMemory'; + +/** + * Type for {@link DEVICEMEMORY} deviceMemory + */ +export type DEVICEMEMORY_TYPE = string; + // Path: model/attributes/device/device__brand.json /** @@ -1719,26 +2119,70 @@ export const DEVICE_BRAND = 'device.brand'; */ export type DEVICE_BRAND_TYPE = string; -// Path: model/attributes/device/device__family.json +// Path: model/attributes/device/device__cpu__logical_core_count.json /** - * The family of the device. `device.family` + * The number of logical CPU cores available. `device.cpu.logical_core_count` * - * Attribute Value Type: `string` {@link DEVICE_FAMILY_TYPE} + * Attribute Value Type: `number` {@link DEVICE_CPU_LOGICAL_CORE_COUNT_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example "iPhone" + * Aliases: {@link HARDWARECONCURRENCY} `hardwareConcurrency` + * + * @example 14 */ -export const DEVICE_FAMILY = 'device.family'; +export const DEVICE_CPU_LOGICAL_CORE_COUNT = 'device.cpu.logical_core_count'; /** - * Type for {@link DEVICE_FAMILY} device.family + * Type for {@link DEVICE_CPU_LOGICAL_CORE_COUNT} device.cpu.logical_core_count + */ +export type DEVICE_CPU_LOGICAL_CORE_COUNT_TYPE = number; + +// Path: model/attributes/device/device__family.json + +/** + * The family of the device. `device.family` + * + * Attribute Value Type: `string` {@link DEVICE_FAMILY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "iPhone" + */ +export const DEVICE_FAMILY = 'device.family'; + +/** + * Type for {@link DEVICE_FAMILY} device.family */ export type DEVICE_FAMILY_TYPE = string; +// Path: model/attributes/device/device__memory__estimated_capacity.json + +/** + * The estimated total memory capacity of the device, only a rough estimation in gigabytes. Browsers report estimations in buckets of powers of 2, mostly capped at 8 GB `device.memory.estimated_capacity` + * + * Attribute Value Type: `number` {@link DEVICE_MEMORY_ESTIMATED_CAPACITY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link DEVICEMEMORY} `deviceMemory` + * + * @example 8 + */ +export const DEVICE_MEMORY_ESTIMATED_CAPACITY = 'device.memory.estimated_capacity'; + +/** + * Type for {@link DEVICE_MEMORY_ESTIMATED_CAPACITY} device.memory.estimated_capacity + */ +export type DEVICE_MEMORY_ESTIMATED_CAPACITY_TYPE = number; + // Path: model/attributes/device/device__model.json /** @@ -2002,6 +2446,29 @@ export const FAAS_TRIGGER = 'faas.trigger'; */ export type FAAS_TRIGGER_TYPE = string; +// Path: model/attributes/fcp.json + +/** + * The time it takes for the browser to render the first piece of meaningful content on the screen `fcp` + * + * Attribute Value Type: `number` {@link FCP_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_FCP_VALUE} `browser.web_vital.fcp.value` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_FCP_VALUE} (browser.web_vital.fcp.value) instead - This attribute is being deprecated in favor of browser.web_vital.fcp.value + * @example 547.6951 + */ +export const FCP = 'fcp'; + +/** + * Type for {@link FCP} fcp + */ +export type FCP_TYPE = number; + // Path: model/attributes/flag/flag__evaluation__[key].json /** @@ -2024,6 +2491,29 @@ export const FLAG_EVALUATION_KEY = 'flag.evaluation.'; */ export type FLAG_EVALUATION_KEY_TYPE = boolean; +// Path: model/attributes/fp.json + +/** + * The time it takes for the browser to render the first pixel on the screen `fp` + * + * Attribute Value Type: `number` {@link FP_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_FP_VALUE} `browser.web_vital.fp.value` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_FP_VALUE} (browser.web_vital.fp.value) instead - This attribute is being deprecated in favor of browser.web_vital.fp.value + * @example 477.1926 + */ +export const FP = 'fp'; + +/** + * Type for {@link FP} fp + */ +export type FP_TYPE = number; + // Path: model/attributes/frames/frames__delay.json /** @@ -2216,6 +2706,8 @@ export type GEN_AI_COST_OUTPUT_TOKENS_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link AI_TOTAL_COST} `ai.total_cost` + * * @example 12.34 */ export const GEN_AI_COST_TOTAL_TOKENS = 'gen_ai.cost.total_tokens'; @@ -2256,6 +2748,8 @@ export type GEN_AI_EMBEDDINGS_INPUT_TYPE = string; * * Attribute defined in OTEL: Yes * + * Aliases: {@link AI_TEXTS} `ai.texts` + * * @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\"}]}]" */ export const GEN_AI_INPUT_MESSAGES = 'gen_ai.input.messages'; @@ -2810,6 +3304,8 @@ export type GEN_AI_SYSTEM_TYPE = string; * * Attribute defined in OTEL: Yes * + * Aliases: {@link AI_PREAMBLE} `ai.preamble` + * * @example "You are a helpful assistant" */ export const GEN_AI_SYSTEM_INSTRUCTIONS = 'gen_ai.system_instructions'; @@ -2851,6 +3347,8 @@ export type GEN_AI_SYSTEM_MESSAGE_TYPE = string; * * Attribute defined in OTEL: Yes * + * Aliases: {@link GEN_AI_TOOL_INPUT} `gen_ai.tool.input` + * * @example "{\"location\": \"Paris\"}" */ export const GEN_AI_TOOL_CALL_ARGUMENTS = 'gen_ai.tool.call.arguments'; @@ -2871,6 +3369,8 @@ export type GEN_AI_TOOL_CALL_ARGUMENTS_TYPE = string; * * Attribute defined in OTEL: Yes * + * Aliases: {@link GEN_AI_TOOL_OUTPUT} `gen_ai.tool.output`, {@link GEN_AI_TOOL_MESSAGE} `gen_ai.tool.message` + * * @example "rainy, 57°F" */ export const GEN_AI_TOOL_CALL_RESULT = 'gen_ai.tool.call.result'; @@ -2931,6 +3431,9 @@ export type GEN_AI_TOOL_DESCRIPTION_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link GEN_AI_TOOL_CALL_ARGUMENTS} `gen_ai.tool.call.arguments` + * + * @deprecated Use {@link GEN_AI_TOOL_CALL_ARGUMENTS} (gen_ai.tool.call.arguments) instead * @example "{\"location\": \"Paris\"}" */ export const GEN_AI_TOOL_INPUT = 'gen_ai.tool.input'; @@ -2951,6 +3454,9 @@ export type GEN_AI_TOOL_INPUT_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link GEN_AI_TOOL_CALL_RESULT} `gen_ai.tool.call.result`, {@link GEN_AI_TOOL_OUTPUT} `gen_ai.tool.output` + * + * @deprecated Use {@link GEN_AI_TOOL_CALL_RESULT} (gen_ai.tool.call.result) instead * @example "rainy, 57°F" */ export const GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message'; @@ -2993,6 +3499,9 @@ export type GEN_AI_TOOL_NAME_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link GEN_AI_TOOL_CALL_RESULT} `gen_ai.tool.call.result`, {@link GEN_AI_TOOL_MESSAGE} `gen_ai.tool.message` + * + * @deprecated Use {@link GEN_AI_TOOL_CALL_RESULT} (gen_ai.tool.call.result) instead * @example "rainy, 57°F" */ export const GEN_AI_TOOL_OUTPUT = 'gen_ai.tool.output'; @@ -3234,6 +3743,29 @@ export const GRAPHQL_OPERATION_TYPE = 'graphql.operation.type'; */ export type GRAPHQL_OPERATION_TYPE_TYPE = string; +// Path: model/attributes/hardwareConcurrency.json + +/** + * The number of logical CPU cores available. `hardwareConcurrency` + * + * Attribute Value Type: `string` {@link HARDWARECONCURRENCY_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link DEVICE_CPU_LOGICAL_CORE_COUNT} `device.cpu.logical_core_count` + * + * @deprecated Use {@link DEVICE_CPU_LOGICAL_CORE_COUNT} (device.cpu.logical_core_count) instead - Old namespace-less attribute, to be replaced with device.cpu.logical_core_count for span-first future + * @example "14" + */ +export const HARDWARECONCURRENCY = 'hardwareConcurrency'; + +/** + * Type for {@link HARDWARECONCURRENCY} hardwareConcurrency + */ +export type HARDWARECONCURRENCY_TYPE = string; + // Path: model/attributes/http/http__client_ip.json /** @@ -3934,6 +4466,26 @@ export const HTTP_SERVER_NAME = 'http.server_name'; */ export type HTTP_SERVER_NAME_TYPE = string; +// Path: model/attributes/http/http__server__request__time_in_queue.json + +/** + * 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. `http.server.request.time_in_queue` + * + * Attribute Value Type: `number` {@link HTTP_SERVER_REQUEST_TIME_IN_QUEUE_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example 50 + */ +export const HTTP_SERVER_REQUEST_TIME_IN_QUEUE = 'http.server.request.time_in_queue'; + +/** + * Type for {@link HTTP_SERVER_REQUEST_TIME_IN_QUEUE} http.server.request.time_in_queue + */ +export type HTTP_SERVER_REQUEST_TIME_IN_QUEUE_TYPE = number; + // Path: model/attributes/http/http__status_code.json /** @@ -4044,6 +4596,29 @@ export const ID = 'id'; */ export type ID_TYPE = string; +// Path: model/attributes/inp.json + +/** + * The value of the recorded Interaction to Next Paint (INP) web vital `inp` + * + * Attribute Value Type: `number` {@link INP_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_INP_VALUE} `browser.web_vital.inp.value` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_INP_VALUE} (browser.web_vital.inp.value) instead - The INP web vital is now recorded as a browser.web_vital.inp.value attribute. + * @example 200 + */ +export const INP = 'inp'; + +/** + * Type for {@link INP} inp + */ +export type INP_TYPE = number; + // Path: model/attributes/jvm/jvm__gc__action.json /** @@ -4164,6 +4739,29 @@ export const JVM_THREAD_STATE = 'jvm.thread.state'; */ export type JVM_THREAD_STATE_TYPE = string; +// Path: model/attributes/lcp.json + +/** + * The value of the recorded Largest Contentful Paint (LCP) web vital `lcp` + * + * Attribute Value Type: `number` {@link LCP_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_VALUE} `browser.web_vital.lcp.value` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_VALUE} (browser.web_vital.lcp.value) instead - The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute. + * @example 2500 + */ +export const LCP = 'lcp'; + +/** + * Type for {@link LCP} lcp + */ +export type LCP_TYPE = number; + // Path: model/attributes/lcp/lcp__element.json /** @@ -4175,6 +4773,9 @@ export type JVM_THREAD_STATE_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_ELEMENT} `browser.web_vital.lcp.element` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_ELEMENT} (browser.web_vital.lcp.element) instead - The LCP element is now recorded as a browser.web_vital.lcp.element attribute. * @example "img" */ export const LCP_ELEMENT = 'lcp.element'; @@ -4195,6 +4796,9 @@ export type LCP_ELEMENT_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_ID} `browser.web_vital.lcp.id` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_ID} (browser.web_vital.lcp.id) instead - The LCP id is now recorded as a browser.web_vital.lcp.id attribute. * @example "#hero" */ export const LCP_ID = 'lcp.id'; @@ -4204,6 +4808,52 @@ export const LCP_ID = 'lcp.id'; */ export type LCP_ID_TYPE = string; +// Path: model/attributes/lcp/lcp__loadTime.json + +/** + * The time it took for the LCP element to be loaded `lcp.loadTime` + * + * Attribute Value Type: `number` {@link LCP_LOADTIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_LOAD_TIME} `browser.web_vital.lcp.load_time` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_LOAD_TIME} (browser.web_vital.lcp.load_time) instead - The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute. + * @example 1402 + */ +export const LCP_LOADTIME = 'lcp.loadTime'; + +/** + * Type for {@link LCP_LOADTIME} lcp.loadTime + */ +export type LCP_LOADTIME_TYPE = number; + +// Path: model/attributes/lcp/lcp__renderTime.json + +/** + * The time it took for the LCP element to be rendered `lcp.renderTime` + * + * Attribute Value Type: `number` {@link LCP_RENDERTIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_RENDER_TIME} `browser.web_vital.lcp.render_time` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_RENDER_TIME} (browser.web_vital.lcp.render_time) instead - The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute. + * @example 1685 + */ +export const LCP_RENDERTIME = 'lcp.renderTime'; + +/** + * Type for {@link LCP_RENDERTIME} lcp.renderTime + */ +export type LCP_RENDERTIME_TYPE = number; + // Path: model/attributes/lcp/lcp__size.json /** @@ -4215,6 +4865,9 @@ export type LCP_ID_TYPE = string; * * Attribute defined in OTEL: No * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_SIZE} `browser.web_vital.lcp.size` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_SIZE} (browser.web_vital.lcp.size) instead - The LCP size is now recorded as a browser.web_vital.lcp.size attribute. * @example 1234 */ export const LCP_SIZE = 'lcp.size'; @@ -4235,6 +4888,9 @@ export type LCP_SIZE_TYPE = number; * * Attribute defined in OTEL: No * + * Aliases: {@link BROWSER_WEB_VITAL_LCP_URL} `browser.web_vital.lcp.url` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_LCP_URL} (browser.web_vital.lcp.url) instead - The LCP url is now recorded as a browser.web_vital.lcp.url attribute. * @example "https://example.com" */ export const LCP_URL = 'lcp.url'; @@ -6293,6 +6949,27 @@ export const REPLAY_ID = 'replay_id'; */ export type REPLAY_ID_TYPE = string; +// Path: model/attributes/resource/resource__deployment__environment.json + +/** + * The software deployment environment name. `resource.deployment.environment` + * + * Attribute Value Type: `string` {@link RESOURCE_DEPLOYMENT_ENVIRONMENT_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: Yes + * + * @deprecated Use {@link SENTRY_ENVIRONMENT} (sentry.environment) instead + * @example "production" + */ +export const RESOURCE_DEPLOYMENT_ENVIRONMENT = 'resource.deployment.environment'; + +/** + * Type for {@link RESOURCE_DEPLOYMENT_ENVIRONMENT} resource.deployment.environment + */ +export type RESOURCE_DEPLOYMENT_ENVIRONMENT_TYPE = string; + // Path: model/attributes/resource/resource__deployment__environment__name.json /** @@ -7352,10 +8029,31 @@ export const SENTRY_SERVER_SAMPLE_RATE = 'sentry.server_sample_rate'; */ export type SENTRY_SERVER_SAMPLE_RATE_TYPE = number; +// Path: model/attributes/sentry/sentry__source.json + +/** + * 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. `sentry.source` + * + * Attribute Value Type: `string` {@link SENTRY_SOURCE_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: No + * + * @deprecated Use {@link SENTRY_SPAN_SOURCE} (sentry.span.source) instead - This attribute is being deprecated in favor of sentry.span.source + * @example "route" + */ +export const SENTRY_SOURCE = 'sentry.source'; + +/** + * Type for {@link SENTRY_SOURCE} sentry.source + */ +export type SENTRY_SOURCE_TYPE = string; + // Path: model/attributes/sentry/sentry__span__source.json /** - * The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. `sentry.span.source` + * 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. `sentry.span.source` * * Attribute Value Type: `string` {@link SENTRY_SPAN_SOURCE_TYPE} * @@ -7412,6 +8110,26 @@ export const SENTRY_STATUS_MESSAGE = 'sentry.status.message'; */ export type SENTRY_STATUS_MESSAGE_TYPE = string; +// Path: model/attributes/sentry/sentry__timestamp__sequence.json + +/** + * 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. `sentry.timestamp.sequence` + * + * Attribute Value Type: `number` {@link SENTRY_TIMESTAMP_SEQUENCE_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: No + * + * @example 0 + */ +export const SENTRY_TIMESTAMP_SEQUENCE = 'sentry.timestamp.sequence'; + +/** + * Type for {@link SENTRY_TIMESTAMP_SEQUENCE} sentry.timestamp.sequence + */ +export type SENTRY_TIMESTAMP_SEQUENCE_TYPE = number; + // Path: model/attributes/sentry/sentry__trace__parent_span_id.json /** @@ -7423,6 +8141,7 @@ export type SENTRY_STATUS_MESSAGE_TYPE = string; * * Attribute defined in OTEL: No * + * @deprecated * @example "b0e6f15b45c36b12" */ export const SENTRY_TRACE_PARENT_SPAN_ID = 'sentry.trace.parent_span_id'; @@ -7454,254 +8173,480 @@ export const SENTRY_TRANSACTION = 'sentry.transaction'; */ export type SENTRY_TRANSACTION_TYPE = string; -// Path: model/attributes/server/server__address.json +// Path: model/attributes/server/server__address.json + +/** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. `server.address` + * + * Attribute Value Type: `string` {@link SERVER_ADDRESS_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: Yes + * + * Aliases: {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host` + * + * @example "example.com" + */ +export const SERVER_ADDRESS = 'server.address'; + +/** + * Type for {@link SERVER_ADDRESS} server.address + */ +export type SERVER_ADDRESS_TYPE = string; + +// Path: model/attributes/server/server__port.json + +/** + * Server port number. `server.port` + * + * Attribute Value Type: `number` {@link SERVER_PORT_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: Yes + * + * Aliases: {@link NET_HOST_PORT} `net.host.port` + * + * @example 1337 + */ +export const SERVER_PORT = 'server.port'; + +/** + * Type for {@link SERVER_PORT} server.port + */ +export type SERVER_PORT_TYPE = number; + +// Path: model/attributes/service/service__name.json + +/** + * Logical name of the service. `service.name` + * + * Attribute Value Type: `string` {@link SERVICE_NAME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: Yes + * + * @example "omegastar" + */ +export const SERVICE_NAME = 'service.name'; + +/** + * Type for {@link SERVICE_NAME} service.name + */ +export type SERVICE_NAME_TYPE = string; + +// Path: model/attributes/service/service__version.json + +/** + * The version string of the service API or implementation. The format is not defined by these conventions. `service.version` + * + * Attribute Value Type: `string` {@link SERVICE_VERSION_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: Yes + * + * Aliases: {@link SENTRY_RELEASE} `sentry.release` + * + * @example "5.0.0" + */ +export const SERVICE_VERSION = 'service.version'; + +/** + * Type for {@link SERVICE_VERSION} service.version + */ +export type SERVICE_VERSION_TYPE = string; + +// Path: model/attributes/thread/thread__id.json + +/** + * Current “managed” thread ID. `thread.id` + * + * Attribute Value Type: `number` {@link THREAD_ID_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: Yes + * + * @example 56 + */ +export const THREAD_ID = 'thread.id'; + +/** + * Type for {@link THREAD_ID} thread.id + */ +export type THREAD_ID_TYPE = number; + +// Path: model/attributes/thread/thread__name.json + +/** + * Current thread name. `thread.name` + * + * Attribute Value Type: `string` {@link THREAD_NAME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: Yes + * + * @example "main" + */ +export const THREAD_NAME = 'thread.name'; + +/** + * Type for {@link THREAD_NAME} thread.name + */ +export type THREAD_NAME_TYPE = string; + +// Path: model/attributes/timber/timber__tag.json + +/** + * The log tag provided by the timber logging framework. `timber.tag` + * + * Attribute Value Type: `string` {@link TIMBER_TAG_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "MyTag" + */ +export const TIMBER_TAG = 'timber.tag'; + +/** + * Type for {@link TIMBER_TAG} timber.tag + */ +export type TIMBER_TAG_TYPE = string; + +// Path: model/attributes/transaction.json + +/** + * The sentry transaction (segment name). `transaction` + * + * Attribute Value Type: `string` {@link TRANSACTION_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link SENTRY_TRANSACTION} `sentry.transaction` + * + * @deprecated Use {@link SENTRY_TRANSACTION} (sentry.transaction) instead + * @example "GET /" + */ +export const TRANSACTION = 'transaction'; + +/** + * Type for {@link TRANSACTION} transaction + */ +export type TRANSACTION_TYPE = string; + +// Path: model/attributes/ttfb.json + +/** + * The value of the recorded Time To First Byte (TTFB) web vital in milliseconds `ttfb` + * + * Attribute Value Type: `number` {@link TTFB_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_TTFB_VALUE} `browser.web_vital.ttfb.value` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_TTFB_VALUE} (browser.web_vital.ttfb.value) instead - This attribute is being deprecated in favor of browser.web_vital.ttfb.value + * @example 194 + */ +export const TTFB = 'ttfb'; + +/** + * Type for {@link TTFB} ttfb + */ +export type TTFB_TYPE = number; + +// Path: model/attributes/ttfb/ttfb__requestTime.json + +/** + * 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 `ttfb.requestTime` + * + * Attribute Value Type: `number` {@link TTFB_REQUESTTIME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link BROWSER_WEB_VITAL_TTFB_REQUEST_TIME} `browser.web_vital.ttfb.request_time` + * + * @deprecated Use {@link BROWSER_WEB_VITAL_TTFB_REQUEST_TIME} (browser.web_vital.ttfb.request_time) instead - This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time + * @example 1554.5814 + */ +export const TTFB_REQUESTTIME = 'ttfb.requestTime'; + +/** + * Type for {@link TTFB_REQUESTTIME} ttfb.requestTime + */ +export type TTFB_REQUESTTIME_TYPE = number; + +// Path: model/attributes/type.json + +/** + * More granular type of the operation happening. `type` + * + * Attribute Value Type: `string` {@link TYPE_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: No + * + * @example "fetch" + */ +export const TYPE = 'type'; + +/** + * Type for {@link TYPE} type + */ +export type TYPE_TYPE = string; + +// Path: model/attributes/ui/ui__component_name.json /** - * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. `server.address` + * The name of the associated component. `ui.component_name` * - * Attribute Value Type: `string` {@link SERVER_ADDRESS_TYPE} + * Attribute Value Type: `string` {@link UI_COMPONENT_NAME_TYPE} * * Contains PII: maybe * - * Attribute defined in OTEL: Yes - * - * Aliases: {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host` + * Attribute defined in OTEL: No * - * @example "example.com" + * @example "HomeButton" */ -export const SERVER_ADDRESS = 'server.address'; +export const UI_COMPONENT_NAME = 'ui.component_name'; /** - * Type for {@link SERVER_ADDRESS} server.address + * Type for {@link UI_COMPONENT_NAME} ui.component_name */ -export type SERVER_ADDRESS_TYPE = string; +export type UI_COMPONENT_NAME_TYPE = string; -// Path: model/attributes/server/server__port.json +// Path: model/attributes/ui/ui__contributes_to_ttfd.json /** - * Server port number. `server.port` - * - * Attribute Value Type: `number` {@link SERVER_PORT_TYPE} + * Whether the span execution contributed to the TTFD (time to fully drawn) metric. `ui.contributes_to_ttfd` * - * Contains PII: maybe + * Attribute Value Type: `boolean` {@link UI_CONTRIBUTES_TO_TTFD_TYPE} * - * Attribute defined in OTEL: Yes + * Contains PII: false * - * Aliases: {@link NET_HOST_PORT} `net.host.port` + * Attribute defined in OTEL: No * - * @example 1337 + * @example true */ -export const SERVER_PORT = 'server.port'; +export const UI_CONTRIBUTES_TO_TTFD = 'ui.contributes_to_ttfd'; /** - * Type for {@link SERVER_PORT} server.port + * Type for {@link UI_CONTRIBUTES_TO_TTFD} ui.contributes_to_ttfd */ -export type SERVER_PORT_TYPE = number; +export type UI_CONTRIBUTES_TO_TTFD_TYPE = boolean; -// Path: model/attributes/service/service__name.json +// Path: model/attributes/ui/ui__contributes_to_ttid.json /** - * Logical name of the service. `service.name` + * Whether the span execution contributed to the TTID (time to initial display) metric. `ui.contributes_to_ttid` * - * Attribute Value Type: `string` {@link SERVICE_NAME_TYPE} + * Attribute Value Type: `boolean` {@link UI_CONTRIBUTES_TO_TTID_TYPE} * - * Contains PII: maybe + * Contains PII: false * - * Attribute defined in OTEL: Yes + * Attribute defined in OTEL: No * - * @example "omegastar" + * @example true */ -export const SERVICE_NAME = 'service.name'; +export const UI_CONTRIBUTES_TO_TTID = 'ui.contributes_to_ttid'; /** - * Type for {@link SERVICE_NAME} service.name + * Type for {@link UI_CONTRIBUTES_TO_TTID} ui.contributes_to_ttid */ -export type SERVICE_NAME_TYPE = string; +export type UI_CONTRIBUTES_TO_TTID_TYPE = boolean; -// Path: model/attributes/service/service__version.json +// Path: model/attributes/ui/ui__element__height.json /** - * The version string of the service API or implementation. The format is not defined by these conventions. `service.version` + * The height of the UI element (for Html in pixels) `ui.element.height` * - * Attribute Value Type: `string` {@link SERVICE_VERSION_TYPE} + * Attribute Value Type: `number` {@link UI_ELEMENT_HEIGHT_TYPE} * * Contains PII: maybe * - * Attribute defined in OTEL: Yes - * - * Aliases: {@link SENTRY_RELEASE} `sentry.release` + * Attribute defined in OTEL: No * - * @example "5.0.0" + * @example 256 */ -export const SERVICE_VERSION = 'service.version'; +export const UI_ELEMENT_HEIGHT = 'ui.element.height'; /** - * Type for {@link SERVICE_VERSION} service.version + * Type for {@link UI_ELEMENT_HEIGHT} ui.element.height */ -export type SERVICE_VERSION_TYPE = string; +export type UI_ELEMENT_HEIGHT_TYPE = number; -// Path: model/attributes/thread/thread__id.json +// Path: model/attributes/ui/ui__element__id.json /** - * Current “managed” thread ID. `thread.id` + * The id of the UI element `ui.element.id` * - * Attribute Value Type: `number` {@link THREAD_ID_TYPE} + * Attribute Value Type: `string` {@link UI_ELEMENT_ID_TYPE} * - * Contains PII: false + * Contains PII: maybe * - * Attribute defined in OTEL: Yes + * Attribute defined in OTEL: No * - * @example 56 + * @example "btn-login" */ -export const THREAD_ID = 'thread.id'; +export const UI_ELEMENT_ID = 'ui.element.id'; /** - * Type for {@link THREAD_ID} thread.id + * Type for {@link UI_ELEMENT_ID} ui.element.id */ -export type THREAD_ID_TYPE = number; +export type UI_ELEMENT_ID_TYPE = string; -// Path: model/attributes/thread/thread__name.json +// Path: model/attributes/ui/ui__element__identifier.json /** - * Current thread name. `thread.name` + * The identifier used to measure the UI element timing `ui.element.identifier` * - * Attribute Value Type: `string` {@link THREAD_NAME_TYPE} + * Attribute Value Type: `string` {@link UI_ELEMENT_IDENTIFIER_TYPE} * * Contains PII: maybe * - * Attribute defined in OTEL: Yes + * Attribute defined in OTEL: No * - * @example "main" + * @example "heroImage" */ -export const THREAD_NAME = 'thread.name'; +export const UI_ELEMENT_IDENTIFIER = 'ui.element.identifier'; /** - * Type for {@link THREAD_NAME} thread.name + * Type for {@link UI_ELEMENT_IDENTIFIER} ui.element.identifier */ -export type THREAD_NAME_TYPE = string; +export type UI_ELEMENT_IDENTIFIER_TYPE = string; -// Path: model/attributes/timber/timber__tag.json +// Path: model/attributes/ui/ui__element__load_time.json /** - * The log tag provided by the timber logging framework. `timber.tag` + * The loading time of a UI element (from time origin to finished loading) `ui.element.load_time` * - * Attribute Value Type: `string` {@link TIMBER_TAG_TYPE} + * Attribute Value Type: `number` {@link UI_ELEMENT_LOAD_TIME_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example "MyTag" + * @example 998.2234 */ -export const TIMBER_TAG = 'timber.tag'; +export const UI_ELEMENT_LOAD_TIME = 'ui.element.load_time'; /** - * Type for {@link TIMBER_TAG} timber.tag + * Type for {@link UI_ELEMENT_LOAD_TIME} ui.element.load_time */ -export type TIMBER_TAG_TYPE = string; +export type UI_ELEMENT_LOAD_TIME_TYPE = number; -// Path: model/attributes/transaction.json +// Path: model/attributes/ui/ui__element__paint_type.json /** - * The sentry transaction (segment name). `transaction` + * The type of element paint. Can either be 'image-paint' or 'text-paint' `ui.element.paint_type` * - * Attribute Value Type: `string` {@link TRANSACTION_TYPE} + * Attribute Value Type: `string` {@link UI_ELEMENT_PAINT_TYPE_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * Aliases: {@link SENTRY_TRANSACTION} `sentry.transaction` - * - * @deprecated Use {@link SENTRY_TRANSACTION} (sentry.transaction) instead - * @example "GET /" + * @example "image-paint" */ -export const TRANSACTION = 'transaction'; +export const UI_ELEMENT_PAINT_TYPE = 'ui.element.paint_type'; /** - * Type for {@link TRANSACTION} transaction + * Type for {@link UI_ELEMENT_PAINT_TYPE} ui.element.paint_type */ -export type TRANSACTION_TYPE = string; +export type UI_ELEMENT_PAINT_TYPE_TYPE = string; -// Path: model/attributes/type.json +// Path: model/attributes/ui/ui__element__render_time.json /** - * More granular type of the operation happening. `type` + * The rendering time of the UI element (from time origin to finished rendering) `ui.element.render_time` * - * Attribute Value Type: `string` {@link TYPE_TYPE} + * Attribute Value Type: `number` {@link UI_ELEMENT_RENDER_TIME_TYPE} * - * Contains PII: false + * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example "fetch" + * @example 1023.1124 */ -export const TYPE = 'type'; +export const UI_ELEMENT_RENDER_TIME = 'ui.element.render_time'; /** - * Type for {@link TYPE} type + * Type for {@link UI_ELEMENT_RENDER_TIME} ui.element.render_time */ -export type TYPE_TYPE = string; +export type UI_ELEMENT_RENDER_TIME_TYPE = number; -// Path: model/attributes/ui/ui__component_name.json +// Path: model/attributes/ui/ui__element__type.json /** - * The name of the associated component. `ui.component_name` + * type of the UI element `ui.element.type` * - * Attribute Value Type: `string` {@link UI_COMPONENT_NAME_TYPE} + * Attribute Value Type: `string` {@link UI_ELEMENT_TYPE_TYPE} * * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example "HomeButton" + * @example "img" */ -export const UI_COMPONENT_NAME = 'ui.component_name'; +export const UI_ELEMENT_TYPE = 'ui.element.type'; /** - * Type for {@link UI_COMPONENT_NAME} ui.component_name + * Type for {@link UI_ELEMENT_TYPE} ui.element.type */ -export type UI_COMPONENT_NAME_TYPE = string; +export type UI_ELEMENT_TYPE_TYPE = string; -// Path: model/attributes/ui/ui__contributes_to_ttfd.json +// Path: model/attributes/ui/ui__element__url.json /** - * Whether the span execution contributed to the TTFD (time to fully drawn) metric. `ui.contributes_to_ttfd` + * The URL of the UI element (e.g. an img src) `ui.element.url` * - * Attribute Value Type: `boolean` {@link UI_CONTRIBUTES_TO_TTFD_TYPE} + * Attribute Value Type: `string` {@link UI_ELEMENT_URL_TYPE} * - * Contains PII: false + * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example true + * @example "https://assets.myapp.com/hero.png" */ -export const UI_CONTRIBUTES_TO_TTFD = 'ui.contributes_to_ttfd'; +export const UI_ELEMENT_URL = 'ui.element.url'; /** - * Type for {@link UI_CONTRIBUTES_TO_TTFD} ui.contributes_to_ttfd + * Type for {@link UI_ELEMENT_URL} ui.element.url */ -export type UI_CONTRIBUTES_TO_TTFD_TYPE = boolean; +export type UI_ELEMENT_URL_TYPE = string; -// Path: model/attributes/ui/ui__contributes_to_ttid.json +// Path: model/attributes/ui/ui__element__width.json /** - * Whether the span execution contributed to the TTID (time to initial display) metric. `ui.contributes_to_ttid` + * The width of the UI element (for HTML in pixels) `ui.element.width` * - * Attribute Value Type: `boolean` {@link UI_CONTRIBUTES_TO_TTID_TYPE} + * Attribute Value Type: `number` {@link UI_ELEMENT_WIDTH_TYPE} * - * Contains PII: false + * Contains PII: maybe * * Attribute defined in OTEL: No * - * @example true + * @example 512 */ -export const UI_CONTRIBUTES_TO_TTID = 'ui.contributes_to_ttid'; +export const UI_ELEMENT_WIDTH = 'ui.element.width'; /** - * Type for {@link UI_CONTRIBUTES_TO_TTID} ui.contributes_to_ttid + * Type for {@link UI_ELEMENT_WIDTH} ui.element.width */ -export type UI_CONTRIBUTES_TO_TTID_TYPE = boolean; +export type UI_ELEMENT_WIDTH_TYPE = number; // Path: model/attributes/url.json @@ -8866,7 +9811,8 @@ export type AttributeType = | 'string[]' | 'boolean[]' | 'integer[]' - | 'double[]'; + | 'double[]' + | 'any'; export type IsPii = 'true' | 'false' | 'maybe'; @@ -8884,6 +9830,15 @@ export interface DeprecationInfo { reason?: string; } +export interface ChangelogEntry { + /** The sentry-conventions release version */ + version: string; + /** GitHub PR numbers */ + prs?: number[]; + /** Optional description of what changed */ + description?: string; +} + export interface AttributeMetadata { /** A description of the attribute */ brief: string; @@ -8903,6 +9858,8 @@ export interface AttributeMetadata { aliases?: AttributeName[]; /** If an attribute is SDK specific, list the SDKs that use this attribute */ sdks?: string[]; + /** Changelog entries tracking how this attribute has changed across versions */ + changelog?: ChangelogEntry[]; } export const ATTRIBUTE_TYPE: Record = { @@ -8947,6 +9904,20 @@ export const ATTRIBUTE_TYPE: Record = { [BROWSER_SCRIPT_INVOKER_TYPE]: 'string', [BROWSER_SCRIPT_SOURCE_CHAR_POSITION]: 'integer', [BROWSER_VERSION]: 'string', + [BROWSER_WEB_VITAL_CLS_SOURCE_KEY]: 'string', + [BROWSER_WEB_VITAL_CLS_VALUE]: 'double', + [BROWSER_WEB_VITAL_FCP_VALUE]: 'double', + [BROWSER_WEB_VITAL_FP_VALUE]: 'double', + [BROWSER_WEB_VITAL_INP_VALUE]: 'double', + [BROWSER_WEB_VITAL_LCP_ELEMENT]: 'string', + [BROWSER_WEB_VITAL_LCP_ID]: 'string', + [BROWSER_WEB_VITAL_LCP_LOAD_TIME]: 'integer', + [BROWSER_WEB_VITAL_LCP_RENDER_TIME]: 'integer', + [BROWSER_WEB_VITAL_LCP_SIZE]: 'integer', + [BROWSER_WEB_VITAL_LCP_URL]: 'string', + [BROWSER_WEB_VITAL_LCP_VALUE]: 'double', + [BROWSER_WEB_VITAL_TTFB_REQUEST_TIME]: 'double', + [BROWSER_WEB_VITAL_TTFB_VALUE]: 'double', [CACHE_HIT]: 'boolean', [CACHE_ITEM_SIZE]: 'integer', [CACHE_KEY]: 'string[]', @@ -8958,6 +9929,8 @@ export const ATTRIBUTE_TYPE: Record = { [CLOUDFLARE_D1_DURATION]: 'integer', [CLOUDFLARE_D1_ROWS_READ]: 'integer', [CLOUDFLARE_D1_ROWS_WRITTEN]: 'integer', + [CLS]: 'double', + [CLS_SOURCE_KEY]: 'string', [CODE_FILEPATH]: 'string', [CODE_FILE_PATH]: 'string', [CODE_FUNCTION]: 'string', @@ -8986,8 +9959,11 @@ export const ATTRIBUTE_TYPE: Record = { [DB_SYSTEM]: 'string', [DB_SYSTEM_NAME]: 'string', [DB_USER]: 'string', + [DEVICEMEMORY]: 'string', [DEVICE_BRAND]: 'string', + [DEVICE_CPU_LOGICAL_CORE_COUNT]: 'integer', [DEVICE_FAMILY]: 'string', + [DEVICE_MEMORY_ESTIMATED_CAPACITY]: 'integer', [DEVICE_MODEL]: 'string', [ENVIRONMENT]: 'string', [ERROR_TYPE]: 'string', @@ -9001,7 +9977,9 @@ export const ATTRIBUTE_TYPE: Record = { [FAAS_CRON]: 'string', [FAAS_TIME]: 'string', [FAAS_TRIGGER]: 'string', + [FCP]: 'double', [FLAG_EVALUATION_KEY]: 'boolean', + [FP]: 'double', [FRAMES_DELAY]: 'integer', [FRAMES_FROZEN]: 'integer', [FRAMES_SLOW]: 'integer', @@ -9060,6 +10038,7 @@ export const ATTRIBUTE_TYPE: Record = { [GEN_AI_USAGE_TOTAL_TOKENS]: 'integer', [GRAPHQL_OPERATION_NAME]: 'string', [GRAPHQL_OPERATION_TYPE]: 'string', + [HARDWARECONCURRENCY]: 'string', [HTTP_CLIENT_IP]: 'string', [HTTP_DECODED_RESPONSE_CONTENT_LENGTH]: 'integer', [HTTP_FLAVOR]: 'string', @@ -9093,19 +10072,24 @@ export const ATTRIBUTE_TYPE: Record = { [HTTP_ROUTE]: 'string', [HTTP_SCHEME]: 'string', [HTTP_SERVER_NAME]: 'string', + [HTTP_SERVER_REQUEST_TIME_IN_QUEUE]: 'double', [HTTP_STATUS_CODE]: 'integer', [HTTP_TARGET]: 'string', [HTTP_URL]: 'string', [HTTP_USER_AGENT]: 'string', [ID]: 'string', + [INP]: 'double', [JVM_GC_ACTION]: 'string', [JVM_GC_NAME]: 'string', [JVM_MEMORY_POOL_NAME]: 'string', [JVM_MEMORY_TYPE]: 'string', [JVM_THREAD_DAEMON]: 'boolean', [JVM_THREAD_STATE]: 'string', + [LCP]: 'double', [LCP_ELEMENT]: 'string', [LCP_ID]: 'string', + [LCP_LOADTIME]: 'integer', + [LCP_RENDERTIME]: 'integer', [LCP_SIZE]: 'integer', [LCP_URL]: 'string', [LOGGER_NAME]: 'string', @@ -9207,6 +10191,7 @@ export const ATTRIBUTE_TYPE: Record = { [RELEASE]: 'string', [REMIX_ACTION_FORM_DATA_KEY]: 'string', [REPLAY_ID]: 'string', + [RESOURCE_DEPLOYMENT_ENVIRONMENT]: 'string', [RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME]: 'string', [RESOURCE_RENDER_BLOCKING_STATUS]: 'string', [ROUTE]: 'string', @@ -9259,9 +10244,11 @@ export const ATTRIBUTE_TYPE: Record = { [_SENTRY_SEGMENT_ID]: 'string', [SENTRY_SEGMENT_NAME]: 'string', [SENTRY_SERVER_SAMPLE_RATE]: 'double', + [SENTRY_SOURCE]: 'string', [SENTRY_SPAN_SOURCE]: 'string', [SENTRY_STATUS_CODE]: 'integer', [SENTRY_STATUS_MESSAGE]: 'string', + [SENTRY_TIMESTAMP_SEQUENCE]: 'integer', [SENTRY_TRACE_PARENT_SPAN_ID]: 'string', [SENTRY_TRANSACTION]: 'string', [SERVER_ADDRESS]: 'string', @@ -9272,10 +10259,21 @@ export const ATTRIBUTE_TYPE: Record = { [THREAD_NAME]: 'string', [TIMBER_TAG]: 'string', [TRANSACTION]: 'string', + [TTFB]: 'double', + [TTFB_REQUESTTIME]: 'double', [TYPE]: 'string', [UI_COMPONENT_NAME]: 'string', [UI_CONTRIBUTES_TO_TTFD]: 'boolean', [UI_CONTRIBUTES_TO_TTID]: 'boolean', + [UI_ELEMENT_HEIGHT]: 'integer', + [UI_ELEMENT_ID]: 'string', + [UI_ELEMENT_IDENTIFIER]: 'string', + [UI_ELEMENT_LOAD_TIME]: 'double', + [UI_ELEMENT_PAINT_TYPE]: 'string', + [UI_ELEMENT_RENDER_TIME]: 'double', + [UI_ELEMENT_TYPE]: 'string', + [UI_ELEMENT_URL]: 'string', + [UI_ELEMENT_WIDTH]: 'integer', [URL]: 'string', [URL_DOMAIN]: 'string', [URL_FRAGMENT]: 'string', @@ -9377,6 +10375,20 @@ export type AttributeName = | typeof BROWSER_SCRIPT_INVOKER_TYPE | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION | typeof BROWSER_VERSION + | typeof BROWSER_WEB_VITAL_CLS_SOURCE_KEY + | typeof BROWSER_WEB_VITAL_CLS_VALUE + | typeof BROWSER_WEB_VITAL_FCP_VALUE + | typeof BROWSER_WEB_VITAL_FP_VALUE + | typeof BROWSER_WEB_VITAL_INP_VALUE + | typeof BROWSER_WEB_VITAL_LCP_ELEMENT + | typeof BROWSER_WEB_VITAL_LCP_ID + | typeof BROWSER_WEB_VITAL_LCP_LOAD_TIME + | typeof BROWSER_WEB_VITAL_LCP_RENDER_TIME + | typeof BROWSER_WEB_VITAL_LCP_SIZE + | typeof BROWSER_WEB_VITAL_LCP_URL + | typeof BROWSER_WEB_VITAL_LCP_VALUE + | typeof BROWSER_WEB_VITAL_TTFB_REQUEST_TIME + | typeof BROWSER_WEB_VITAL_TTFB_VALUE | typeof CACHE_HIT | typeof CACHE_ITEM_SIZE | typeof CACHE_KEY @@ -9388,6 +10400,8 @@ export type AttributeName = | typeof CLOUDFLARE_D1_DURATION | typeof CLOUDFLARE_D1_ROWS_READ | typeof CLOUDFLARE_D1_ROWS_WRITTEN + | typeof CLS + | typeof CLS_SOURCE_KEY | typeof CODE_FILEPATH | typeof CODE_FILE_PATH | typeof CODE_FUNCTION @@ -9416,8 +10430,11 @@ export type AttributeName = | typeof DB_SYSTEM | typeof DB_SYSTEM_NAME | typeof DB_USER + | typeof DEVICEMEMORY | typeof DEVICE_BRAND + | typeof DEVICE_CPU_LOGICAL_CORE_COUNT | typeof DEVICE_FAMILY + | typeof DEVICE_MEMORY_ESTIMATED_CAPACITY | typeof DEVICE_MODEL | typeof ENVIRONMENT | typeof ERROR_TYPE @@ -9431,7 +10448,9 @@ export type AttributeName = | typeof FAAS_CRON | typeof FAAS_TIME | typeof FAAS_TRIGGER + | typeof FCP | typeof FLAG_EVALUATION_KEY + | typeof FP | typeof FRAMES_DELAY | typeof FRAMES_FROZEN | typeof FRAMES_SLOW @@ -9490,6 +10509,7 @@ export type AttributeName = | typeof GEN_AI_USAGE_TOTAL_TOKENS | typeof GRAPHQL_OPERATION_NAME | typeof GRAPHQL_OPERATION_TYPE + | typeof HARDWARECONCURRENCY | typeof HTTP_CLIENT_IP | typeof HTTP_DECODED_RESPONSE_CONTENT_LENGTH | typeof HTTP_FLAVOR @@ -9523,19 +10543,24 @@ export type AttributeName = | typeof HTTP_ROUTE | typeof HTTP_SCHEME | typeof HTTP_SERVER_NAME + | typeof HTTP_SERVER_REQUEST_TIME_IN_QUEUE | typeof HTTP_STATUS_CODE | typeof HTTP_TARGET | typeof HTTP_URL | typeof HTTP_USER_AGENT | typeof ID + | typeof INP | typeof JVM_GC_ACTION | typeof JVM_GC_NAME | typeof JVM_MEMORY_POOL_NAME | typeof JVM_MEMORY_TYPE | typeof JVM_THREAD_DAEMON | typeof JVM_THREAD_STATE + | typeof LCP | typeof LCP_ELEMENT | typeof LCP_ID + | typeof LCP_LOADTIME + | typeof LCP_RENDERTIME | typeof LCP_SIZE | typeof LCP_URL | typeof LOGGER_NAME @@ -9637,6 +10662,7 @@ export type AttributeName = | typeof RELEASE | typeof REMIX_ACTION_FORM_DATA_KEY | typeof REPLAY_ID + | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME | typeof RESOURCE_RENDER_BLOCKING_STATUS | typeof ROUTE @@ -9689,9 +10715,11 @@ export type AttributeName = | typeof _SENTRY_SEGMENT_ID | typeof SENTRY_SEGMENT_NAME | typeof SENTRY_SERVER_SAMPLE_RATE + | typeof SENTRY_SOURCE | typeof SENTRY_SPAN_SOURCE | typeof SENTRY_STATUS_CODE | typeof SENTRY_STATUS_MESSAGE + | typeof SENTRY_TIMESTAMP_SEQUENCE | typeof SENTRY_TRACE_PARENT_SPAN_ID | typeof SENTRY_TRANSACTION | typeof SERVER_ADDRESS @@ -9702,10 +10730,21 @@ export type AttributeName = | typeof THREAD_NAME | typeof TIMBER_TAG | typeof TRANSACTION + | typeof TTFB + | typeof TTFB_REQUESTTIME | typeof TYPE | typeof UI_COMPONENT_NAME | typeof UI_CONTRIBUTES_TO_TTFD | typeof UI_CONTRIBUTES_TO_TTID + | typeof UI_ELEMENT_HEIGHT + | typeof UI_ELEMENT_ID + | typeof UI_ELEMENT_IDENTIFIER + | typeof UI_ELEMENT_LOAD_TIME + | typeof UI_ELEMENT_PAINT_TYPE + | typeof UI_ELEMENT_RENDER_TIME + | typeof UI_ELEMENT_TYPE + | typeof UI_ELEMENT_URL + | typeof UI_ELEMENT_WIDTH | typeof URL | typeof URL_DOMAIN | typeof URL_FRAGMENT @@ -9773,6 +10812,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: ['Citation 1', 'Citation 2'], + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [AI_COMPLETION_TOKENS_USED]: { brief: 'The number of tokens used to respond to the message.', @@ -9787,6 +10831,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [GEN_AI_USAGE_OUTPUT_TOKENS, GEN_AI_USAGE_COMPLETION_TOKENS], sdks: ['python'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61] }, { version: '0.0.0' }], }, [AI_DOCUMENTS]: { brief: 'Documents or content chunks used as context for the AI model.', @@ -9796,6 +10841,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: ['document1.txt', 'document2.pdf'], + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [AI_FINISH_REASON]: { brief: 'The reason why the model stopped generating.', @@ -9809,6 +10859,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.response.finish_reason', }, aliases: [GEN_AI_RESPONSE_FINISH_REASONS], + changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], }, [AI_FREQUENCY_PENALTY]: { brief: @@ -9823,6 +10874,10 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.request.frequency_penalty', }, aliases: [GEN_AI_REQUEST_FREQUENCY_PENALTY], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, + ], }, [AI_FUNCTION_CALL]: { brief: @@ -9837,6 +10892,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.tool.name', }, aliases: [GEN_AI_TOOL_NAME], + changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108] }], }, [AI_GENERATION_ID]: { brief: 'Unique identifier for the completion.', @@ -9850,6 +10906,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.response.id', }, aliases: [GEN_AI_RESPONSE_ID], + changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], }, [AI_INPUT_MESSAGES]: { brief: 'The input messages sent to the model', @@ -9864,6 +10921,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [GEN_AI_REQUEST_MESSAGES], sdks: ['python'], + changelog: [{ version: '0.1.0', prs: [65, 119] }, { version: '0.0.0' }], }, [AI_IS_SEARCH_REQUIRED]: { brief: 'Boolean indicating if the model needs to perform a search.', @@ -9873,6 +10931,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: false, + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [AI_METADATA]: { brief: 'Extra metadata passed to an AI pipeline step.', @@ -9882,6 +10945,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '{"user_id": 123, "session_id": "abc123"}', + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55, 127] }, + ], }, [AI_MODEL_ID]: { brief: 'The vendor-specific ID of the model used.', @@ -9896,6 +10964,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [GEN_AI_RESPONSE_MODEL], sdks: ['python'], + changelog: [{ version: '0.1.0', prs: [57, 61, 127] }, { version: '0.0.0' }], }, [AI_MODEL_PROVIDER]: { brief: 'The provider of the model.', @@ -9909,6 +10978,10 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.provider.name', }, aliases: [GEN_AI_PROVIDER_NAME, GEN_AI_SYSTEM], + changelog: [ + { version: '0.4.0', prs: [253] }, + { version: '0.1.0', prs: [57, 61, 108, 127] }, + ], }, [AI_PIPELINE_NAME]: { brief: 'The name of the AI pipeline.', @@ -9922,6 +10995,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.pipeline.name', }, aliases: [GEN_AI_PIPELINE_NAME], + changelog: [{ version: '0.1.0', prs: [53, 76, 108, 127] }], }, [AI_PREAMBLE]: { brief: @@ -9932,6 +11006,14 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'You are now a clown.', + deprecation: { + replacement: 'gen_ai.system_instructions', + }, + aliases: [GEN_AI_SYSTEM_INSTRUCTIONS], + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [AI_PRESENCE_PENALTY]: { brief: @@ -9946,6 +11028,10 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.request.presence_penalty', }, aliases: [GEN_AI_REQUEST_PRESENCE_PENALTY], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, + ], }, [AI_PROMPT_TOKENS_USED]: { brief: 'The number of tokens used to process just the prompt.', @@ -9960,6 +11046,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [GEN_AI_USAGE_PROMPT_TOKENS, GEN_AI_USAGE_INPUT_TOKENS], sdks: ['python'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61] }, { version: '0.0.0' }], }, [AI_RAW_PROMPTING]: { brief: 'When enabled, the user’s prompt will be sent to the model without any pre-processing.', @@ -9969,6 +11056,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [AI_RESPONSES]: { brief: 'The response messages sent back by the AI model.', @@ -9982,6 +11074,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.response.text', }, sdks: ['python'], + changelog: [{ version: '0.1.0', prs: [65, 127] }, { version: '0.0.0' }], }, [AI_RESPONSE_FORMAT]: { brief: 'For an AI model call, the format of the response', @@ -9991,6 +11084,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'json_object', + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55, 127] }, + ], }, [AI_SEARCH_QUERIES]: { brief: 'Queries used to search for relevant context or documents.', @@ -10000,6 +11098,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: ['climate change effects', 'renewable energy'], + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [AI_SEARCH_RESULTS]: { brief: 'Results returned from search queries for context.', @@ -10009,6 +11112,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: ['search_result_1, search_result_2'], + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [AI_SEED]: { brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', @@ -10022,6 +11130,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.request.seed', }, aliases: [GEN_AI_REQUEST_SEED], + changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], }, [AI_STREAMING]: { brief: 'Whether the request was streamed back.', @@ -10036,6 +11145,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [GEN_AI_RESPONSE_STREAMING], sdks: ['python'], + changelog: [{ version: '0.1.0', prs: [76, 108] }, { version: '0.0.0' }], }, [AI_TAGS]: { brief: 'Tags that describe an AI pipeline step.', @@ -10045,6 +11155,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '{"executed_function": "add_integers"}', + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55, 127] }, + ], }, [AI_TEMPERATURE]: { brief: @@ -10059,6 +11174,10 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.request.temperature', }, aliases: [GEN_AI_REQUEST_TEMPERATURE], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, + ], }, [AI_TEXTS]: { brief: 'Raw text inputs provided to the model.', @@ -10068,6 +11187,14 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: ['Hello, how are you?', 'What is the capital of France?'], + deprecation: { + replacement: 'gen_ai.input.messages', + }, + aliases: [GEN_AI_INPUT_MESSAGES], + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [AI_TOOLS]: { brief: 'For an AI model call, the functions that are available', @@ -10080,6 +11207,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'gen_ai.request.available_tools', }, + changelog: [{ version: '0.1.0', prs: [55, 65, 127] }], }, [AI_TOOL_CALLS]: { brief: 'For an AI model call, the tool calls that were made.', @@ -10092,6 +11220,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'gen_ai.response.tool_calls', }, + changelog: [{ version: '0.1.0', prs: [55, 65] }], }, [AI_TOP_K]: { brief: @@ -10106,6 +11235,10 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.request.top_k', }, aliases: [GEN_AI_REQUEST_TOP_K], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, + ], }, [AI_TOP_P]: { brief: @@ -10120,6 +11253,10 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.request.top_p', }, aliases: [GEN_AI_REQUEST_TOP_P], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, + ], }, [AI_TOTAL_COST]: { brief: 'The total cost for the tokens used.', @@ -10129,6 +11266,15 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 12.34, + deprecation: { + replacement: 'gen_ai.cost.total_tokens', + }, + aliases: [GEN_AI_COST_TOTAL_TOKENS], + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [53] }, + ], }, [AI_TOTAL_TOKENS_USED]: { brief: 'The total number of tokens used to process the prompt.', @@ -10143,6 +11289,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [GEN_AI_USAGE_TOTAL_TOKENS], sdks: ['python'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61, 108] }, { version: '0.0.0' }], }, [AI_WARNINGS]: { brief: 'Warning messages generated during model execution.', @@ -10152,6 +11299,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: ['Token limit exceeded'], + deprecation: {}, + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.1.0', prs: [55] }, + ], }, [APP_START_TYPE]: { brief: 'Mobile app start variant. Either cold or warm.', @@ -10161,6 +11313,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'cold', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [BLOCKED_MAIN_THREAD]: { brief: 'Whether the main thread was blocked by the span.', @@ -10170,6 +11323,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + changelog: [{ version: '0.0.0' }], }, [BROWSER_NAME]: { brief: 'The name of the browser.', @@ -10180,6 +11334,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'Chrome', aliases: [SENTRY_BROWSER_NAME], + changelog: [{ version: '0.1.0', prs: [127, 139] }, { version: '0.0.0' }], }, [BROWSER_REPORT_TYPE]: { brief: 'A browser report sent via reporting API..', @@ -10189,6 +11344,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'network-error', + changelog: [{ version: '0.1.0', prs: [68, 127] }], }, [BROWSER_SCRIPT_INVOKER]: { brief: 'How a script was called in the browser.', @@ -10199,6 +11355,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'Window.requestAnimationFrame', sdks: ['browser'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [BROWSER_SCRIPT_INVOKER_TYPE]: { brief: 'Browser script entry point type.', @@ -10209,26 +11366,199 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'event-listener', sdks: ['browser'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + }, + [BROWSER_SCRIPT_SOURCE_CHAR_POSITION]: { + brief: 'A number representing the script character position of the script.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 678, + sdks: ['browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + }, + [BROWSER_VERSION]: { + brief: 'The version of the browser.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '120.0.6099.130', + aliases: [SENTRY_BROWSER_VERSION], + changelog: [{ version: '0.1.0', prs: [59, 127, 139] }], + }, + [BROWSER_WEB_VITAL_CLS_SOURCE_KEY]: { + brief: 'The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + hasDynamicSuffix: true, + example: 'body > div#app', + aliases: [CLS_SOURCE_KEY], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [234] }], + }, + [BROWSER_WEB_VITAL_CLS_VALUE]: { + brief: 'The value of the recorded Cumulative Layout Shift (CLS) web vital', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 0.2361, + aliases: [CLS], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [229], description: 'Added browser.web_vital.cls.value attribute' }], + }, + [BROWSER_WEB_VITAL_FCP_VALUE]: { + brief: 'The time it takes for the browser to render the first piece of meaningful content on the screen', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 547.6951, + aliases: [FCP], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [235] }], + }, + [BROWSER_WEB_VITAL_FP_VALUE]: { + brief: 'The time in milliseconds it takes for the browser to render the first pixel on the screen', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 477.1926, + aliases: [FP], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [235] }], + }, + [BROWSER_WEB_VITAL_INP_VALUE]: { + brief: 'The value of the recorded Interaction to Next Paint (INP) web vital', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 200, + aliases: [INP], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [229], description: 'Added browser.web_vital.inp.value attribute' }], + }, + [BROWSER_WEB_VITAL_LCP_ELEMENT]: { + brief: 'The HTML element selector or component name for which LCP was reported', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'body > div#app > div#container > div', + aliases: [LCP_ELEMENT], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [233] }], + }, + [BROWSER_WEB_VITAL_LCP_ID]: { + brief: 'The id of the dom element responsible for the largest contentful paint', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '#gero', + aliases: [LCP_ID], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [233] }], + }, + [BROWSER_WEB_VITAL_LCP_LOAD_TIME]: { + brief: 'The time it took for the LCP element to be loaded', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1402, + aliases: [LCP_LOADTIME], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [233] }], + }, + [BROWSER_WEB_VITAL_LCP_RENDER_TIME]: { + brief: 'The time it took for the LCP element to be rendered', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1685, + aliases: [LCP_RENDERTIME], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [233] }], + }, + [BROWSER_WEB_VITAL_LCP_SIZE]: { + brief: 'The size of the largest contentful paint element', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1024, + aliases: [LCP_SIZE], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [233] }], + }, + [BROWSER_WEB_VITAL_LCP_URL]: { + brief: 'The url of the dom element responsible for the largest contentful paint', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'https://example.com/static/img.png', + aliases: [LCP_URL], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [233] }], + }, + [BROWSER_WEB_VITAL_LCP_VALUE]: { + brief: 'The value of the recorded Largest Contentful Paint (LCP) web vital', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 2500, + aliases: [LCP], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [229], description: 'Added browser.web_vital.lcp.value attribute' }], }, - [BROWSER_SCRIPT_SOURCE_CHAR_POSITION]: { - brief: 'A number representing the script character position of the script.', - type: 'integer', + [BROWSER_WEB_VITAL_TTFB_REQUEST_TIME]: { + 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: 'double', pii: { isPii: 'maybe', }, isInOtel: false, - example: 678, - sdks: ['browser'], + example: 1554.5814, + aliases: [TTFB_REQUESTTIME], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [235] }], }, - [BROWSER_VERSION]: { - brief: 'The version of the browser.', - type: 'string', + [BROWSER_WEB_VITAL_TTFB_VALUE]: { + brief: 'The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds', + type: 'double', pii: { isPii: 'maybe', }, isInOtel: false, - example: '120.0.6099.130', - aliases: [SENTRY_BROWSER_VERSION], + example: 194.3322, + aliases: [TTFB], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [235] }], }, [CACHE_HIT]: { brief: 'If the cache was hit during this span.', @@ -10239,6 +11569,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: true, sdks: ['php-laravel'], + changelog: [{ version: '0.0.0' }], }, [CACHE_ITEM_SIZE]: { brief: 'The size of the requested item in the cache. In bytes.', @@ -10248,6 +11579,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 58, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [CACHE_KEY]: { brief: 'The key of the cache accessed.', @@ -10258,6 +11590,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: ['my-cache-key', 'my-other-cache-key'], sdks: ['php-laravel'], + changelog: [{ version: '0.0.0' }], }, [CACHE_OPERATION]: { brief: 'The operation being performed on the cache.', @@ -10268,6 +11601,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'get', sdks: ['php-laravel'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [CACHE_TTL]: { brief: 'The ttl of the cache in seconds', @@ -10278,6 +11612,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 120, sdks: ['php-laravel'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [CHANNEL]: { brief: 'The channel name that is being used.', @@ -10288,6 +11623,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'mail', sdks: ['php-laravel'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [CLIENT_ADDRESS]: { brief: @@ -10299,6 +11635,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'example.com', aliases: [HTTP_CLIENT_IP], + changelog: [{ version: '0.1.0', prs: [106, 127] }, { version: '0.0.0' }], }, [CLIENT_PORT]: { brief: 'Client port number.', @@ -10308,6 +11645,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 5432, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [CLOUDFLARE_D1_DURATION]: { brief: 'The duration of a Cloudflare D1 operation.', @@ -10318,6 +11656,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 543, sdks: ['javascript-cloudflare'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [CLOUDFLARE_D1_ROWS_READ]: { brief: 'The number of rows read in a Cloudflare D1 operation.', @@ -10328,6 +11667,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 12, sdks: ['javascript-cloudflare'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [CLOUDFLARE_D1_ROWS_WRITTEN]: { brief: 'The number of rows written in a Cloudflare D1 operation.', @@ -10338,6 +11678,46 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 12, sdks: ['javascript-cloudflare'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + }, + [CLS]: { + brief: 'The value of the recorded Cumulative Layout Shift (CLS) web vital', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 0.2361, + deprecation: { + replacement: 'browser.web_vital.cls.value', + reason: 'The CLS web vital is now recorded as a browser.web_vital.cls.value attribute.', + }, + aliases: [BROWSER_WEB_VITAL_CLS_VALUE], + sdks: ['javascript-browser'], + changelog: [ + { + version: 'next', + prs: [229], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, + ], + }, + [CLS_SOURCE_KEY]: { + brief: 'The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + hasDynamicSuffix: true, + example: 'body > div#app', + deprecation: { + replacement: 'browser.web_vital.cls.source.', + reason: 'The CLS source is now recorded as a browser.web_vital.cls.source. attribute.', + }, + aliases: [BROWSER_WEB_VITAL_CLS_SOURCE_KEY], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [234] }], }, [CODE_FILEPATH]: { brief: @@ -10352,6 +11732,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'code.file.path', }, aliases: [CODE_FILE_PATH], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [CODE_FILE_PATH]: { brief: @@ -10363,6 +11744,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '/app/myapplication/http/handler/server.py', aliases: [CODE_FILEPATH], + changelog: [{ version: '0.0.0' }], }, [CODE_FUNCTION]: { brief: "The method or function name, or equivalent (usually rightmost part of the code unit's name).", @@ -10376,6 +11758,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'code.function.name', }, aliases: [CODE_FUNCTION_NAME], + changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], }, [CODE_FUNCTION_NAME]: { brief: "The method or function name, or equivalent (usually rightmost part of the code unit's name).", @@ -10386,6 +11769,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'server_request', aliases: [CODE_FUNCTION], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [CODE_LINENO]: { brief: @@ -10400,6 +11784,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'code.line.number', }, aliases: [CODE_LINE_NUMBER], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61, 108] }, { version: '0.0.0' }], }, [CODE_LINE_NUMBER]: { brief: @@ -10411,6 +11796,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 42, aliases: [CODE_LINENO], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [CODE_NAMESPACE]: { brief: @@ -10425,6 +11811,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'code.function.name', reason: 'code.function.name should include the namespace.', }, + changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], }, [CULTURE_CALENDAR]: { brief: 'The calendar system used by the culture.', @@ -10434,6 +11821,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'GregorianCalendar', + changelog: [{ version: '0.4.0', prs: [243] }], }, [CULTURE_DISPLAY_NAME]: { brief: 'Human readable name of the culture.', @@ -10443,6 +11831,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'English (United States)', + changelog: [{ version: '0.4.0', prs: [243] }], }, [CULTURE_IS_24_HOUR_FORMAT]: { brief: 'Whether the culture uses 24-hour time format.', @@ -10452,6 +11841,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + changelog: [{ version: '0.4.0', prs: [243] }], }, [CULTURE_LOCALE]: { brief: 'The locale identifier following RFC 4646.', @@ -10461,6 +11851,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'en-US', + changelog: [{ version: '0.4.0', prs: [243] }], }, [CULTURE_TIMEZONE]: { brief: 'The timezone of the culture, as a geographic timezone identifier.', @@ -10470,6 +11861,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Europe/Vienna', + changelog: [{ version: '0.4.0', prs: [243] }], }, [DB_COLLECTION_NAME]: { brief: 'The name of a collection (table, container) within the database.', @@ -10479,15 +11871,17 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'users', + changelog: [{ version: '0.1.0', prs: [106, 127] }, { version: '0.0.0' }], }, [DB_DRIVER_NAME]: { - brief: 'The name of the driver used for database connections.', + brief: 'The name of the driver used for the database connection.', type: 'string', pii: { isPii: 'false', }, isInOtel: false, example: 'psycopg2', + changelog: [{ version: 'next', prs: [297], description: 'Added db.driver.name attribute' }], }, [DB_NAME]: { brief: 'The name of the database being accessed.', @@ -10501,6 +11895,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'db.namespace', }, aliases: [DB_NAMESPACE], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [DB_NAMESPACE]: { brief: 'The name of the database being accessed.', @@ -10511,6 +11906,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'customers', aliases: [DB_NAME], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [DB_OPERATION]: { brief: 'The name of the operation being executed.', @@ -10524,6 +11920,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'db.operation.name', }, aliases: [DB_OPERATION_NAME], + changelog: [{ version: '0.4.0', prs: [199] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [DB_OPERATION_NAME]: { brief: 'The name of the operation being executed.', @@ -10534,6 +11931,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'SELECT', aliases: [DB_OPERATION], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [DB_QUERY_PARAMETER_KEY]: { brief: @@ -10545,6 +11943,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, hasDynamicSuffix: true, example: "db.query.parameter.foo='123'", + changelog: [{ version: '0.1.0', prs: [103, 127] }], }, [DB_QUERY_SUMMARY]: { brief: @@ -10555,6 +11954,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'SELECT users;', + changelog: [{ version: '0.4.0', prs: [208] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [DB_QUERY_TEXT]: { brief: @@ -10566,6 +11966,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'SELECT * FROM users WHERE id = $1', aliases: [DB_STATEMENT], + changelog: [{ version: '0.4.0', prs: [208] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [DB_REDIS_CONNECTION]: { brief: 'The redis connection name.', @@ -10576,6 +11977,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'my-redis-instance', sdks: ['php-laravel'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [DB_REDIS_PARAMETERS]: { brief: 'The array of command parameters given to a redis command.', @@ -10586,6 +11988,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: ['test', '*'], sdks: ['php-laravel'], + changelog: [{ version: '0.0.0' }], }, [DB_SQL_BINDINGS]: { brief: 'The array of query bindings.', @@ -10601,6 +12004,7 @@ export const ATTRIBUTE_METADATA: Record = { 'Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter..', }, sdks: ['php-laravel'], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [DB_STATEMENT]: { brief: 'The database statement being executed.', @@ -10614,6 +12018,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'db.query.text', }, aliases: [DB_QUERY_TEXT], + changelog: [{ version: '0.4.0', prs: [199] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [DB_SYSTEM]: { brief: @@ -10628,6 +12033,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'db.system.name', }, aliases: [DB_SYSTEM_NAME], + changelog: [{ version: '0.4.0', prs: [199, 224] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [DB_SYSTEM_NAME]: { brief: @@ -10639,6 +12045,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'postgresql', aliases: [DB_SYSTEM], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [DB_USER]: { brief: 'The database user.', @@ -10648,6 +12055,30 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'fancy_user', + changelog: [{ version: '0.0.0' }], + }, + [DEVICEMEMORY]: { + brief: 'The estimated total memory capacity of the device, only a rough estimation in gigabytes.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '8 GB', + deprecation: { + replacement: 'device.memory.estimated_capacity', + reason: + 'Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future', + }, + aliases: [DEVICE_MEMORY_ESTIMATED_CAPACITY], + sdks: ['javascript-browser'], + changelog: [ + { + version: 'next', + prs: [281], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, + ], }, [DEVICE_BRAND]: { brief: 'The brand of the device.', @@ -10657,6 +12088,25 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Apple', + changelog: [{ version: '0.1.0', prs: [116, 127] }], + }, + [DEVICE_CPU_LOGICAL_CORE_COUNT]: { + brief: 'The number of logical CPU cores available.', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 14, + aliases: [HARDWARECONCURRENCY], + sdks: ['javascript-browser'], + changelog: [ + { + version: 'next', + prs: [281], + description: 'Added attribute device.cpu.logical_core_count to be used instead of hardwareConcurrency', + }, + ], }, [DEVICE_FAMILY]: { brief: 'The family of the device.', @@ -10666,6 +12116,26 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'iPhone', + changelog: [{ version: '0.1.0', prs: [116, 127] }], + }, + [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', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 8, + aliases: [DEVICEMEMORY], + sdks: ['javascript-browser'], + changelog: [ + { + version: 'next', + prs: [281], + description: 'Added attribute device.memory.estimated_capacity to be used instead of deviceMemory', + }, + ], }, [DEVICE_MODEL]: { brief: 'The model of the device.', @@ -10675,6 +12145,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'iPhone 15 Pro Max', + changelog: [{ version: '0.1.0', prs: [116, 127] }], }, [ENVIRONMENT]: { brief: 'The sentry environment.', @@ -10688,6 +12159,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'sentry.environment', }, aliases: [SENTRY_ENVIRONMENT], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [ERROR_TYPE]: { brief: 'Describes a class of error the operation ended with.', @@ -10697,6 +12169,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'timeout', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [EVENT_ID]: { brief: 'The unique identifier for this event (log record)', @@ -10706,6 +12179,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1234567890, + changelog: [{ version: '0.1.0', prs: [101] }], }, [EVENT_NAME]: { brief: 'The name that uniquely identifies this event (log record)', @@ -10715,6 +12189,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Process Payload', + changelog: [{ version: '0.1.0', prs: [101, 127] }], }, [EXCEPTION_ESCAPED]: { brief: @@ -10725,6 +12200,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: true, + changelog: [{ version: '0.0.0' }], }, [EXCEPTION_MESSAGE]: { brief: 'The error message.', @@ -10734,6 +12210,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'ENOENT: no such file or directory', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [EXCEPTION_STACKTRACE]: { brief: @@ -10745,6 +12222,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: 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)', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [EXCEPTION_TYPE]: { brief: @@ -10755,6 +12233,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'OSError', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [FAAS_COLDSTART]: { brief: 'A boolean that is true if the serverless function is executed for the first time (aka cold-start).', @@ -10764,6 +12243,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: true, + changelog: [{ version: '0.0.0' }], }, [FAAS_CRON]: { brief: 'A string containing the schedule period as Cron Expression.', @@ -10773,6 +12253,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '0/5 * * * ? *', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [FAAS_TIME]: { brief: 'A string containing the function invocation time in the ISO 8601 format expressed in UTC.', @@ -10782,6 +12263,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '2020-01-23T13:47:06Z', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [FAAS_TRIGGER]: { brief: 'Type of the trigger which caused this function invocation.', @@ -10791,6 +12273,23 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'timer', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + }, + [FCP]: { + brief: 'The time it takes for the browser to render the first piece of meaningful content on the screen', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 547.6951, + deprecation: { + replacement: 'browser.web_vital.fcp.value', + reason: 'This attribute is being deprecated in favor of browser.web_vital.fcp.value', + }, + aliases: [BROWSER_WEB_VITAL_FCP_VALUE], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [235] }], }, [FLAG_EVALUATION_KEY]: { brief: @@ -10802,6 +12301,23 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, hasDynamicSuffix: true, example: 'flag.evaluation.is_new_ui=true', + changelog: [{ version: '0.1.0', prs: [103] }], + }, + [FP]: { + brief: 'The time it takes for the browser to render the first pixel on the screen', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 477.1926, + deprecation: { + replacement: 'browser.web_vital.fp.value', + reason: 'This attribute is being deprecated in favor of browser.web_vital.fp.value', + }, + aliases: [BROWSER_WEB_VITAL_FP_VALUE], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [235] }], }, [FRAMES_DELAY]: { brief: @@ -10812,6 +12328,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 5, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [FRAMES_FROZEN]: { brief: 'The number of frozen frames rendered during the lifetime of the span.', @@ -10821,6 +12338,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 3, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [FRAMES_SLOW]: { brief: 'The number of slow frames rendered during the lifetime of the span.', @@ -10830,6 +12348,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [FRAMES_TOTAL]: { brief: 'The number of total frames rendered during the lifetime of the span.', @@ -10839,6 +12358,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 60, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [FS_ERROR]: { brief: 'The error message of a file system error.', @@ -10853,6 +12373,7 @@ export const ATTRIBUTE_METADATA: Record = { reason: 'This attribute is not part of the OpenTelemetry specification and error.type fits much better.', }, sdks: ['javascript-node'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [GEN_AI_AGENT_NAME]: { brief: 'The name of the agent being used.', @@ -10862,6 +12383,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'ResearchAssistant', + changelog: [{ version: '0.1.0', prs: [62, 127] }], }, [GEN_AI_CONVERSATION_ID]: { brief: @@ -10872,6 +12394,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'conv_5j66UpCpwteGg4YSxUnt7lPY', + changelog: [{ version: '0.4.0', prs: [250] }], }, [GEN_AI_COST_INPUT_TOKENS]: { brief: 'The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).', @@ -10881,6 +12404,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 123.45, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [112] }, + ], }, [GEN_AI_COST_OUTPUT_TOKENS]: { brief: 'The cost of tokens used for creating the AI output in USD (without reasoning tokens).', @@ -10890,6 +12417,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 123.45, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [112] }, + ], }, [GEN_AI_COST_TOTAL_TOKENS]: { brief: 'The total cost for the tokens used.', @@ -10899,6 +12430,12 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 12.34, + aliases: [AI_TOTAL_COST], + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [126] }, + ], }, [GEN_AI_EMBEDDINGS_INPUT]: { brief: 'The input to the embeddings model.', @@ -10908,6 +12445,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: "What's the weather in Paris?", + changelog: [{ version: '0.3.1', prs: [195] }], }, [GEN_AI_INPUT_MESSAGES]: { brief: @@ -10919,6 +12457,11 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: 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"}]}]', + aliases: [AI_TEXTS], + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.4.0', prs: [221] }, + ], }, [GEN_AI_OPERATION_NAME]: { brief: @@ -10929,6 +12472,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'chat', + changelog: [ + { version: '0.4.0', prs: [225] }, + { version: '0.1.0', prs: [62, 127] }, + ], }, [GEN_AI_OPERATION_TYPE]: { brief: @@ -10939,6 +12486,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'tool', + changelog: [ + { version: '0.4.0', prs: [257] }, + { version: '0.1.0', prs: [113, 127] }, + ], }, [GEN_AI_OUTPUT_MESSAGES]: { brief: @@ -10950,6 +12501,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]', + changelog: [{ version: '0.4.0', prs: [221] }], }, [GEN_AI_PIPELINE_NAME]: { brief: 'Name of the AI pipeline or chain being executed.', @@ -10960,6 +12512,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'Autofix Pipeline', aliases: [AI_PIPELINE_NAME], + changelog: [{ version: '0.1.0', prs: [76, 127] }], }, [GEN_AI_PROMPT]: { brief: 'The input messages sent to the model', @@ -10972,6 +12525,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { reason: 'Deprecated from OTEL, use gen_ai.input.messages with the new format instead.', }, + changelog: [{ version: '0.1.0', prs: [74, 108, 119] }, { version: '0.0.0' }], }, [GEN_AI_PROVIDER_NAME]: { brief: 'The Generative AI provider as identified by the client or server instrumentation.', @@ -10982,6 +12536,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'openai', aliases: [AI_MODEL_PROVIDER, GEN_AI_SYSTEM], + changelog: [{ version: '0.4.0', prs: [253] }], }, [GEN_AI_REQUEST_AVAILABLE_TOOLS]: { brief: 'The available tools for the model. It has to be a stringified version of an array of objects.', @@ -10995,6 +12550,10 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'gen_ai.tool.definitions', }, + changelog: [ + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [63, 127] }, + ], }, [GEN_AI_REQUEST_FREQUENCY_PENALTY]: { brief: @@ -11006,6 +12565,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 0.5, aliases: [AI_FREQUENCY_PENALTY], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, + ], }, [GEN_AI_REQUEST_MAX_TOKENS]: { brief: 'The maximum number of tokens to generate in the response.', @@ -11015,6 +12578,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 2048, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [62] }, + ], }, [GEN_AI_REQUEST_MESSAGES]: { brief: @@ -11030,6 +12597,10 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.input.messages', }, aliases: [AI_INPUT_MESSAGES], + changelog: [ + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [63, 74, 108, 119, 122] }, + ], }, [GEN_AI_REQUEST_MODEL]: { brief: 'The model identifier being used for the request.', @@ -11039,6 +12610,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'gpt-4-turbo-preview', + changelog: [{ version: '0.1.0', prs: [62, 127] }], }, [GEN_AI_REQUEST_PRESENCE_PENALTY]: { brief: @@ -11050,6 +12622,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 0.5, aliases: [AI_PRESENCE_PENALTY], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, + ], }, [GEN_AI_REQUEST_SEED]: { brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', @@ -11060,6 +12636,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '1234567890', aliases: [AI_SEED], + changelog: [{ version: '0.1.0', prs: [57, 127] }], }, [GEN_AI_REQUEST_TEMPERATURE]: { brief: @@ -11071,6 +12648,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 0.1, aliases: [AI_TEMPERATURE], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, + ], }, [GEN_AI_REQUEST_TOP_K]: { brief: @@ -11082,6 +12663,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 35, aliases: [AI_TOP_K], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, + ], }, [GEN_AI_REQUEST_TOP_P]: { brief: @@ -11093,6 +12678,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 0.7, aliases: [AI_TOP_P], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, + ], }, [GEN_AI_RESPONSE_FINISH_REASONS]: { brief: 'The reason why the model stopped generating.', @@ -11103,6 +12692,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'COMPLETE', aliases: [AI_FINISH_REASON], + changelog: [{ version: '0.1.0', prs: [57, 127] }], }, [GEN_AI_RESPONSE_ID]: { brief: 'Unique identifier for the completion.', @@ -11113,6 +12703,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'gen_123abc', aliases: [AI_GENERATION_ID], + changelog: [{ version: '0.1.0', prs: [57, 127] }], }, [GEN_AI_RESPONSE_MODEL]: { brief: 'The vendor-specific ID of the model used.', @@ -11123,6 +12714,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'gpt-4', aliases: [AI_MODEL_ID], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [GEN_AI_RESPONSE_STREAMING]: { brief: "Whether or not the AI model call's response was streamed back asynchronously", @@ -11133,6 +12725,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: true, aliases: [AI_STREAMING], + changelog: [{ version: '0.1.0', prs: [76] }], }, [GEN_AI_RESPONSE_TEXT]: { brief: @@ -11147,6 +12740,10 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'gen_ai.output.messages', }, + changelog: [ + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [63, 74] }, + ], }, [GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN]: { brief: 'Time in seconds when the first response content chunk arrived in streaming responses.', @@ -11156,6 +12753,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 0.6853435, + changelog: [{ version: '0.4.0', prs: [227] }], }, [GEN_AI_RESPONSE_TOKENS_PER_SECOND]: { brief: 'The total output tokens per seconds throughput', @@ -11165,6 +12763,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 12345.67, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [66] }, + ], }, [GEN_AI_RESPONSE_TOOL_CALLS]: { brief: "The tool calls in the model's response. It has to be a stringified version of an array of objects.", @@ -11177,6 +12779,10 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'gen_ai.output.messages', }, + changelog: [ + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [63, 74] }, + ], }, [GEN_AI_SYSTEM]: { brief: 'The provider of the model.', @@ -11190,6 +12796,10 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.provider.name', }, aliases: [AI_MODEL_PROVIDER, GEN_AI_PROVIDER_NAME], + changelog: [ + { version: '0.4.0', prs: [253] }, + { version: '0.1.0', prs: [57, 127] }, + ], }, [GEN_AI_SYSTEM_INSTRUCTIONS]: { brief: 'The system instructions passed to the model.', @@ -11199,6 +12809,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'You are a helpful assistant', + aliases: [AI_PREAMBLE], + changelog: [ + { version: 'next', prs: [264] }, + { version: '0.4.0', prs: [221] }, + ], }, [GEN_AI_SYSTEM_MESSAGE]: { brief: 'The system instructions passed to the model.', @@ -11211,6 +12826,10 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'gen_ai.system_instructions', }, + changelog: [ + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [62] }, + ], }, [GEN_AI_TOOL_CALL_ARGUMENTS]: { brief: 'The arguments of the tool call. It has to be a stringified version of the arguments to the tool.', @@ -11220,6 +12839,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '{"location": "Paris"}', + aliases: [GEN_AI_TOOL_INPUT], + changelog: [ + { version: 'next', prs: [265] }, + { version: '0.4.0', prs: [221] }, + ], }, [GEN_AI_TOOL_CALL_RESULT]: { brief: 'The result of the tool call. It has to be a stringified version of the result of the tool.', @@ -11229,6 +12853,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'rainy, 57°F', + aliases: [GEN_AI_TOOL_OUTPUT, GEN_AI_TOOL_MESSAGE], + changelog: [ + { version: 'next', prs: [265] }, + { version: '0.4.0', prs: [221] }, + ], }, [GEN_AI_TOOL_DEFINITIONS]: { brief: 'The list of source system tool definitions available to the GenAI agent or model.', @@ -11239,6 +12868,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: 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"]}}]', + changelog: [{ version: '0.4.0', prs: [221] }], }, [GEN_AI_TOOL_DESCRIPTION]: { brief: 'The description of the tool being used.', @@ -11248,6 +12878,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'Searches the web for current information about a topic', + changelog: [{ version: '0.1.0', prs: [62, 127] }], }, [GEN_AI_TOOL_INPUT]: { brief: 'The input of the tool being used. It has to be a stringified version of the input to the tool.', @@ -11257,6 +12888,14 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '{"location": "Paris"}', + deprecation: { + replacement: 'gen_ai.tool.call.arguments', + }, + aliases: [GEN_AI_TOOL_CALL_ARGUMENTS], + changelog: [ + { version: 'next', prs: [265] }, + { version: '0.1.0', prs: [63, 74] }, + ], }, [GEN_AI_TOOL_MESSAGE]: { brief: 'The response from a tool or function call passed to the model.', @@ -11266,6 +12905,14 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'rainy, 57°F', + deprecation: { + replacement: 'gen_ai.tool.call.result', + }, + aliases: [GEN_AI_TOOL_CALL_RESULT, GEN_AI_TOOL_OUTPUT], + changelog: [ + { version: 'next', prs: [265] }, + { version: '0.1.0', prs: [62] }, + ], }, [GEN_AI_TOOL_NAME]: { brief: 'Name of the tool utilized by the agent.', @@ -11276,6 +12923,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'Flights', aliases: [AI_FUNCTION_CALL], + changelog: [{ version: '0.1.0', prs: [57, 127] }], }, [GEN_AI_TOOL_OUTPUT]: { brief: 'The output of the tool being used. It has to be a stringified version of the output of the tool.', @@ -11285,6 +12933,14 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'rainy, 57°F', + deprecation: { + replacement: 'gen_ai.tool.call.result', + }, + aliases: [GEN_AI_TOOL_CALL_RESULT, GEN_AI_TOOL_MESSAGE], + changelog: [ + { version: 'next', prs: [265] }, + { version: '0.1.0', prs: [63, 74] }, + ], }, [GEN_AI_TOOL_TYPE]: { brief: 'The type of tool being used.', @@ -11294,6 +12950,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'function', + changelog: [{ version: '0.1.0', prs: [62, 127] }], }, [GEN_AI_USAGE_COMPLETION_TOKENS]: { brief: 'The number of tokens used in the GenAI response (completion).', @@ -11307,6 +12964,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.usage.output_tokens', }, aliases: [AI_COMPLETION_TOKENS_USED, GEN_AI_USAGE_OUTPUT_TOKENS], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [GEN_AI_USAGE_INPUT_TOKENS]: { brief: 'The number of tokens used to process the AI input (prompt) including cached input tokens.', @@ -11317,6 +12975,12 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 10, aliases: [AI_PROMPT_TOKENS_USED, GEN_AI_USAGE_PROMPT_TOKENS], + changelog: [ + { version: 'next', prs: [261] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [112] }, + { version: '0.0.0' }, + ], }, [GEN_AI_USAGE_INPUT_TOKENS_CACHED]: { brief: 'The number of cached tokens used to process the AI input (prompt).', @@ -11326,6 +12990,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 50, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [62, 112] }, + ], }, [GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE]: { brief: 'The number of tokens written to the cache when processing the AI input (prompt).', @@ -11335,6 +13003,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 100, + changelog: [{ version: '0.4.0', prs: [217, 228] }], }, [GEN_AI_USAGE_OUTPUT_TOKENS]: { brief: 'The number of tokens used for creating the AI output (including reasoning tokens).', @@ -11345,6 +13014,12 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 10, aliases: [AI_COMPLETION_TOKENS_USED, GEN_AI_USAGE_COMPLETION_TOKENS], + changelog: [ + { version: 'next', prs: [261] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [112] }, + { version: '0.0.0' }, + ], }, [GEN_AI_USAGE_OUTPUT_TOKENS_REASONING]: { brief: 'The number of tokens used for reasoning to create the AI output.', @@ -11354,6 +13029,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 75, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [62, 112] }, + ], }, [GEN_AI_USAGE_PROMPT_TOKENS]: { brief: 'The number of tokens used in the GenAI input (prompt).', @@ -11367,6 +13046,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'gen_ai.usage.input_tokens', }, aliases: [AI_PROMPT_TOKENS_USED, GEN_AI_USAGE_INPUT_TOKENS], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [GEN_AI_USAGE_TOTAL_TOKENS]: { brief: 'The total number of tokens used to process the prompt. (input tokens plus output todkens)', @@ -11377,6 +13057,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 20, aliases: [AI_TOTAL_TOKENS_USED], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, + ], }, [GRAPHQL_OPERATION_NAME]: { brief: 'The name of the operation being executed.', @@ -11386,6 +13070,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'findBookById', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [GRAPHQL_OPERATION_TYPE]: { brief: 'The type of the operation being executed.', @@ -11395,6 +13080,29 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'query', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + }, + [HARDWARECONCURRENCY]: { + brief: 'The number of logical CPU cores available.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '14', + deprecation: { + replacement: 'device.cpu.logical_core_count', + reason: 'Old namespace-less attribute, to be replaced with device.cpu.logical_core_count for span-first future', + }, + aliases: [DEVICE_CPU_LOGICAL_CORE_COUNT], + sdks: ['javascript-browser'], + changelog: [ + { + version: 'next', + prs: [281], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, + ], }, [HTTP_CLIENT_IP]: { brief: @@ -11409,6 +13117,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'client.address', }, aliases: [CLIENT_ADDRESS], + changelog: [{ version: '0.1.0', prs: [61, 106, 127] }, { version: '0.0.0' }], }, [HTTP_DECODED_RESPONSE_CONTENT_LENGTH]: { brief: 'The decoded body size of the response (in bytes).', @@ -11419,6 +13128,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 456, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [HTTP_FLAVOR]: { brief: 'The actual version of the protocol used for network communication.', @@ -11432,6 +13142,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.protocol.version', }, aliases: [NETWORK_PROTOCOL_VERSION, NET_PROTOCOL_VERSION], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, [HTTP_FRAGMENT]: { brief: @@ -11442,6 +13153,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '#details', + changelog: [{ version: '0.0.0' }], }, [HTTP_HOST]: { brief: 'The domain name.', @@ -11456,6 +13168,7 @@ export const ATTRIBUTE_METADATA: Record = { 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], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, [HTTP_METHOD]: { brief: 'The HTTP method used.', @@ -11469,6 +13182,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'http.request.method', }, aliases: [HTTP_REQUEST_METHOD], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [HTTP_QUERY]: { brief: @@ -11481,6 +13195,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '?foo=bar&bar=baz', + changelog: [{ version: '0.0.0' }], }, [HTTP_REQUEST_CONNECTION_END]: { brief: @@ -11492,6 +13207,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.15, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_CONNECT_START]: { brief: @@ -11503,6 +13219,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.111, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_DOMAIN_LOOKUP_END]: { brief: @@ -11514,6 +13231,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.201, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_DOMAIN_LOOKUP_START]: { brief: @@ -11525,6 +13243,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.322, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_FETCH_START]: { brief: 'The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.', @@ -11535,6 +13254,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.389, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_HEADER_KEY]: { brief: @@ -11546,6 +13266,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, hasDynamicSuffix: true, example: "http.request.header.custom-header=['foo', 'bar']", + changelog: [ + { version: '0.4.0', prs: [201, 204] }, + { version: '0.1.0', prs: [103] }, + ], }, [HTTP_REQUEST_METHOD]: { brief: 'The HTTP method used.', @@ -11556,6 +13280,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'GET', aliases: [METHOD, HTTP_METHOD], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [HTTP_REQUEST_REDIRECT_END]: { brief: @@ -11567,6 +13292,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829558.502, sdks: ['javascript-browser'], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [130, 134] }, + ], }, [HTTP_REQUEST_REDIRECT_START]: { brief: 'The UNIX timestamp representing the start time of the fetch which that initiates the redirect.', @@ -11577,6 +13306,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.495, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_REQUEST_START]: { brief: @@ -11588,6 +13318,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.51, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_RESEND_COUNT]: { brief: 'The ordinal number of request resending attempt (for any reason, including redirects).', @@ -11597,6 +13328,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 2, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [HTTP_REQUEST_RESPONSE_END]: { brief: @@ -11608,6 +13340,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.89, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_RESPONSE_START]: { brief: @@ -11619,6 +13352,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.7, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_SECURE_CONNECTION_START]: { brief: @@ -11630,6 +13364,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829555.73, sdks: ['javascript-browser'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, [HTTP_REQUEST_TIME_TO_FIRST_BYTE]: { brief: @@ -11641,6 +13376,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1.032, sdks: ['javascript-browser'], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [131] }, + ], }, [HTTP_REQUEST_WORKER_START]: { brief: @@ -11652,6 +13391,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732829553.68, sdks: ['javascript-browser'], + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [130, 134] }, + ], }, [HTTP_RESPONSE_BODY_SIZE]: { brief: 'The encoded body size of the response (in bytes).', @@ -11662,6 +13405,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 123, aliases: [HTTP_RESPONSE_CONTENT_LENGTH, HTTP_RESPONSE_HEADER_CONTENT_LENGTH], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [106] }, { version: '0.0.0' }], }, [HTTP_RESPONSE_CONTENT_LENGTH]: { brief: 'The encoded body size of the response (in bytes).', @@ -11675,6 +13419,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'http.response.body.size', }, aliases: [HTTP_RESPONSE_BODY_SIZE, HTTP_RESPONSE_HEADER_CONTENT_LENGTH], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61, 106] }, { version: '0.0.0' }], }, [HTTP_RESPONSE_HEADER_CONTENT_LENGTH]: { brief: 'The size of the message body sent to the recipient (in bytes)', @@ -11685,6 +13430,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: "http.response.header.custom-header=['foo', 'bar']", aliases: [HTTP_RESPONSE_CONTENT_LENGTH, HTTP_RESPONSE_BODY_SIZE], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [HTTP_RESPONSE_HEADER_KEY]: { brief: @@ -11696,6 +13442,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, hasDynamicSuffix: true, example: "http.response.header.custom-header=['foo', 'bar']", + changelog: [ + { version: '0.4.0', prs: [201, 204] }, + { version: '0.1.0', prs: [103] }, + ], }, [HTTP_RESPONSE_SIZE]: { brief: 'The transfer size of the response (in bytes).', @@ -11706,6 +13456,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 456, aliases: [HTTP_RESPONSE_TRANSFER_SIZE], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [HTTP_RESPONSE_STATUS_CODE]: { brief: 'The status code of the HTTP response.', @@ -11716,6 +13467,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 404, aliases: [HTTP_STATUS_CODE], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [HTTP_RESPONSE_TRANSFER_SIZE]: { brief: 'The transfer size of the response (in bytes).', @@ -11729,6 +13481,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'http.response.size', }, aliases: [HTTP_RESPONSE_SIZE], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [HTTP_ROUTE]: { brief: 'The matched route, that is, the path template in the format used by the respective server framework.', @@ -11739,6 +13492,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '/users/:id', aliases: [URL_TEMPLATE], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [HTTP_SCHEME]: { brief: 'The URI scheme component identifying the used protocol.', @@ -11752,6 +13506,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'url.scheme', }, aliases: [URL_SCHEME], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [HTTP_SERVER_NAME]: { brief: 'The server domain name', @@ -11765,6 +13520,19 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'server.address', }, aliases: [SERVER_ADDRESS, NET_HOST_NAME, HTTP_HOST], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + }, + [HTTP_SERVER_REQUEST_TIME_IN_QUEUE]: { + 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: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 50, + sdks: ['ruby'], + changelog: [{ version: 'next', prs: [267] }], }, [HTTP_STATUS_CODE]: { brief: 'The status code of the HTTP response.', @@ -11778,6 +13546,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'http.response.status_code', }, aliases: [HTTP_RESPONSE_STATUS_CODE], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [HTTP_TARGET]: { brief: 'The pathname and query string of the URL.', @@ -11791,6 +13560,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'url.path', reason: 'This attribute is being deprecated in favor of url.path and url.query', }, + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [HTTP_URL]: { brief: 'The URL of the resource that was fetched.', @@ -11804,6 +13574,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'url.full', }, aliases: [URL_FULL, URL], + changelog: [{ version: '0.1.0', prs: [61, 108] }, { version: '0.0.0' }], }, [HTTP_USER_AGENT]: { brief: 'Value of the HTTP User-Agent header sent by the client.', @@ -11818,6 +13589,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'user_agent.original', }, aliases: [USER_AGENT_ORIGINAL], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [ID]: { brief: 'A unique identifier for the span.', @@ -11828,6 +13600,29 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'f47ac10b58cc4372a5670e02b2c3d479', sdks: ['php-laravel'], + changelog: [{ version: '0.0.0' }], + }, + [INP]: { + brief: 'The value of the recorded Interaction to Next Paint (INP) web vital', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 200, + deprecation: { + replacement: 'browser.web_vital.inp.value', + reason: 'The INP web vital is now recorded as a browser.web_vital.inp.value attribute.', + }, + aliases: [BROWSER_WEB_VITAL_INP_VALUE], + sdks: ['javascript-browser'], + changelog: [ + { + version: 'next', + prs: [229], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, + ], }, [JVM_GC_ACTION]: { brief: 'Name of the garbage collector action.', @@ -11837,6 +13632,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'end of minor GC', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [JVM_GC_NAME]: { brief: 'Name of the garbage collector.', @@ -11846,6 +13642,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'G1 Young Generation', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [JVM_MEMORY_POOL_NAME]: { brief: 'Name of the memory pool.', @@ -11855,6 +13652,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'G1 Old Gen', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [JVM_MEMORY_TYPE]: { brief: 'Name of the memory pool.', @@ -11864,6 +13662,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'G1 Old Gen', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [JVM_THREAD_DAEMON]: { brief: 'Whether the thread is daemon or not.', @@ -11873,6 +13672,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: true, + changelog: [{ version: '0.0.0' }], }, [JVM_THREAD_STATE]: { brief: 'State of the thread.', @@ -11882,6 +13682,29 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'blocked', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + }, + [LCP]: { + brief: 'The value of the recorded Largest Contentful Paint (LCP) web vital', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 2500, + deprecation: { + replacement: 'browser.web_vital.lcp.value', + reason: 'The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_VALUE], + sdks: ['javascript-browser'], + changelog: [ + { + version: 'next', + prs: [229], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, + ], }, [LCP_ELEMENT]: { brief: 'The dom element responsible for the largest contentful paint.', @@ -11891,6 +13714,12 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'img', + deprecation: { + replacement: 'browser.web_vital.lcp.element', + reason: 'The LCP element is now recorded as a browser.web_vital.lcp.element attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_ELEMENT], + changelog: [{ version: 'next', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [LCP_ID]: { brief: 'The id of the dom element responsible for the largest contentful paint.', @@ -11900,6 +13729,44 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '#hero', + deprecation: { + replacement: 'browser.web_vital.lcp.id', + reason: 'The LCP id is now recorded as a browser.web_vital.lcp.id attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_ID], + changelog: [{ version: 'next', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + }, + [LCP_LOADTIME]: { + brief: 'The time it took for the LCP element to be loaded', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1402, + deprecation: { + replacement: 'browser.web_vital.lcp.load_time', + reason: 'The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_LOAD_TIME], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [233] }], + }, + [LCP_RENDERTIME]: { + brief: 'The time it took for the LCP element to be rendered', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1685, + deprecation: { + replacement: 'browser.web_vital.lcp.render_time', + reason: 'The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_RENDER_TIME], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [233] }], }, [LCP_SIZE]: { brief: 'The size of the largest contentful paint element.', @@ -11909,6 +13776,12 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1234, + deprecation: { + replacement: 'browser.web_vital.lcp.size', + reason: 'The LCP size is now recorded as a browser.web_vital.lcp.size attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_SIZE], + changelog: [{ version: 'next', prs: [233] }, { version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [LCP_URL]: { brief: 'The url of the dom element responsible for the largest contentful paint.', @@ -11918,6 +13791,12 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'https://example.com', + deprecation: { + replacement: 'browser.web_vital.lcp.url', + reason: 'The LCP url is now recorded as a browser.web_vital.lcp.url attribute.', + }, + aliases: [BROWSER_WEB_VITAL_LCP_URL], + changelog: [{ version: 'next', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [LOGGER_NAME]: { brief: 'The name of the logger that generated this event.', @@ -11927,6 +13806,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'myLogger', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [MCP_CANCELLED_REASON]: { brief: 'Reason for the cancellation of an MCP operation.', @@ -11937,6 +13817,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'User cancelled the request', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_CANCELLED_REQUEST_ID]: { brief: 'Request ID of the cancelled MCP operation.', @@ -11946,6 +13827,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '123', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_CLIENT_NAME]: { brief: 'Name of the MCP client application.', @@ -11955,6 +13837,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'claude-desktop', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_CLIENT_TITLE]: { brief: 'Display title of the MCP client application.', @@ -11965,6 +13848,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Claude Desktop', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_CLIENT_VERSION]: { brief: 'Version of the MCP client application.', @@ -11974,6 +13858,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '1.0.0', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_LIFECYCLE_PHASE]: { brief: 'Lifecycle phase indicator for MCP operations.', @@ -11983,6 +13868,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'initialization_complete', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_LOGGING_DATA_TYPE]: { brief: 'Data type of the logged message content.', @@ -11992,6 +13878,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'string', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_LOGGING_LEVEL]: { brief: 'Log level for MCP logging operations.', @@ -12001,6 +13888,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'info', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_LOGGING_LOGGER]: { brief: 'Logger name for MCP logging operations.', @@ -12011,6 +13899,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'mcp_server', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_LOGGING_MESSAGE]: { brief: 'Log message content from MCP logging operations.', @@ -12021,6 +13910,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Tool execution completed successfully', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_METHOD_NAME]: { brief: 'The name of the MCP request or notification method being called.', @@ -12030,6 +13920,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'tools/call', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_PROGRESS_CURRENT]: { brief: 'Current progress value of an MCP operation.', @@ -12039,6 +13930,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 50, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, + ], }, [MCP_PROGRESS_MESSAGE]: { brief: 'Progress message describing the current state of an MCP operation.', @@ -12049,6 +13944,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Processing 50 of 100 items', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_PROGRESS_PERCENTAGE]: { brief: 'Calculated progress percentage of an MCP operation. Computed from current/total * 100.', @@ -12058,6 +13954,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 50, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, + ], }, [MCP_PROGRESS_TOKEN]: { brief: 'Token for tracking progress of an MCP operation.', @@ -12067,6 +13967,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'progress-token-123', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_PROGRESS_TOTAL]: { brief: 'Total progress target value of an MCP operation.', @@ -12076,6 +13977,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 100, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, + ], }, [MCP_PROMPT_NAME]: { brief: 'Name of the MCP prompt template being used.', @@ -12086,6 +13991,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'summarize', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_PROMPT_RESULT_DESCRIPTION]: { brief: 'Description of the prompt result.', @@ -12095,6 +14001,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'A summary of the requested information', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_PROMPT_RESULT_MESSAGE_CONTENT]: { brief: 'Content of the message in the prompt result. Used for single message results only.', @@ -12104,6 +14011,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Please provide a summary of the document', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_PROMPT_RESULT_MESSAGE_COUNT]: { brief: 'Number of messages in the prompt result.', @@ -12113,6 +14021,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 3, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, + ], }, [MCP_PROMPT_RESULT_MESSAGE_ROLE]: { brief: 'Role of the message in the prompt result. Used for single message results only.', @@ -12122,6 +14034,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'user', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_PROTOCOL_READY]: { brief: 'Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.', @@ -12131,6 +14044,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, + ], }, [MCP_PROTOCOL_VERSION]: { brief: 'MCP protocol version used in the session.', @@ -12140,6 +14057,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '2024-11-05', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_REQUEST_ARGUMENT_KEY]: { brief: @@ -12152,6 +14070,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, hasDynamicSuffix: true, example: "mcp.request.argument.query='weather in Paris'", + changelog: [{ version: '0.3.0', prs: [176] }], }, [MCP_REQUEST_ARGUMENT_NAME]: { brief: 'Name argument from prompts/get MCP request.', @@ -12162,6 +14081,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'summarize', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_REQUEST_ARGUMENT_URI]: { brief: 'URI argument from resources/read MCP request.', @@ -12172,6 +14092,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'file:///path/to/resource', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_REQUEST_ID]: { brief: 'JSON-RPC request identifier for the MCP request. Unique within the MCP session.', @@ -12181,6 +14102,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '1', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_RESOURCE_PROTOCOL]: { brief: 'Protocol of the resource URI being accessed, extracted from the URI.', @@ -12190,6 +14112,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'file', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_RESOURCE_URI]: { brief: 'The resource URI being accessed in an MCP operation.', @@ -12200,6 +14123,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'file:///path/to/file.txt', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_SERVER_NAME]: { brief: 'Name of the MCP server application.', @@ -12209,6 +14133,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'sentry-mcp-server', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_SERVER_TITLE]: { brief: 'Display title of the MCP server application.', @@ -12219,6 +14144,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Sentry MCP Server', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_SERVER_VERSION]: { brief: 'Version of the MCP server application.', @@ -12228,6 +14154,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '0.1.0', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_SESSION_ID]: { brief: 'Identifier for the MCP session.', @@ -12237,6 +14164,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '550e8400-e29b-41d4-a716-446655440000', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_TOOL_NAME]: { brief: 'Name of the MCP tool being called.', @@ -12246,6 +14174,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'calculator', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_TOOL_RESULT_CONTENT]: { brief: 'The content of the tool result.', @@ -12256,6 +14185,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '{"output": "rainy", "toolCallId": "1"}', + changelog: [ + { version: '0.3.0', prs: [171] }, + { version: '0.2.0', prs: [164] }, + ], }, [MCP_TOOL_RESULT_CONTENT_COUNT]: { brief: 'Number of content items in the tool result.', @@ -12265,6 +14198,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, + ], }, [MCP_TOOL_RESULT_IS_ERROR]: { brief: 'Whether a tool execution resulted in an error.', @@ -12274,6 +14211,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: false, + changelog: [{ version: '0.3.0', prs: [171] }], }, [MCP_TRANSPORT]: { brief: 'Transport method used for MCP communication.', @@ -12283,6 +14221,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'stdio', + changelog: [{ version: '0.3.0', prs: [171] }], }, [MDC_KEY]: { brief: @@ -12295,6 +14234,7 @@ export const ATTRIBUTE_METADATA: Record = { hasDynamicSuffix: true, example: "mdc.some_key='some_value'", sdks: ['java', 'java.logback', 'java.jul', 'java.log4j2'], + changelog: [{ version: '0.3.0', prs: [176] }], }, [MESSAGING_DESTINATION_CONNECTION]: { brief: 'The message destination connection.', @@ -12305,6 +14245,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'BestTopic', sdks: ['php-laravel'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [MESSAGING_DESTINATION_NAME]: { brief: 'The message destination name.', @@ -12315,6 +14256,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'BestTopic', sdks: ['php-laravel'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [MESSAGING_MESSAGE_BODY_SIZE]: { brief: 'The size of the message body in bytes.', @@ -12325,6 +14267,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 839, sdks: ['php-laravel'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [MESSAGING_MESSAGE_ENVELOPE_SIZE]: { brief: 'The size of the message body and metadata in bytes.', @@ -12335,6 +14278,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 1045, sdks: ['php-laravel'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [MESSAGING_MESSAGE_ID]: { brief: 'A value used by the messaging system as an identifier for the message, represented as a string.', @@ -12345,6 +14289,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'f47ac10b58cc4372a5670e02b2c3d479', sdks: ['php-laravel'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [MESSAGING_MESSAGE_RECEIVE_LATENCY]: { brief: 'The latency between when the message was published and received.', @@ -12355,6 +14300,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 1732847252, sdks: ['php-laravel'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [MESSAGING_MESSAGE_RETRY_COUNT]: { brief: 'The amount of attempts to send the message.', @@ -12365,6 +14311,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 2, sdks: ['php-laravel'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [MESSAGING_OPERATION_TYPE]: { brief: 'A string identifying the type of the messaging operation', @@ -12374,6 +14321,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'create', + changelog: [{ version: '0.1.0', prs: [51, 127] }], }, [MESSAGING_SYSTEM]: { brief: 'The messaging system as identified by the client instrumentation.', @@ -12384,6 +14332,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'activemq', sdks: ['php-laravel'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [METHOD]: { brief: 'The HTTP method used.', @@ -12398,6 +14347,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [HTTP_REQUEST_METHOD], sdks: ['javascript-browser', 'javascript-node'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [NAVIGATION_TYPE]: { brief: 'The type of navigation done by a client-side router.', @@ -12407,6 +14357,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'router.push', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [NEL_ELAPSED_TIME]: { brief: @@ -12417,6 +14368,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 100, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [68] }, + ], }, [NEL_PHASE]: { brief: 'If request failed, the phase of its network error. If request succeeded, "application".', @@ -12426,6 +14381,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'application', + changelog: [{ version: '0.1.0', prs: [68, 127] }], }, [NEL_REFERRER]: { brief: "request's referrer, as determined by the referrer policy associated with its client.", @@ -12435,6 +14391,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'https://example.com/foo?bar=baz', + changelog: [{ version: '0.1.0', prs: [68, 127] }], }, [NEL_SAMPLING_FUNCTION]: { brief: 'The sampling function used to determine if the request should be sampled.', @@ -12444,6 +14401,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 0.5, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [68] }, + ], }, [NEL_TYPE]: { brief: 'If request failed, the type of its network error. If request succeeded, "ok".', @@ -12453,6 +14414,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'dns.unreachable', + changelog: [{ version: '0.1.0', prs: [68, 127] }], }, [NETWORK_LOCAL_ADDRESS]: { brief: 'Local address of the network connection - IP address or Unix domain socket name.', @@ -12463,6 +14425,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '10.1.2.80', aliases: [NET_HOST_IP, NET_SOCK_HOST_ADDR], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [NETWORK_LOCAL_PORT]: { brief: 'Local port number of the network connection.', @@ -12473,6 +14436,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 65400, aliases: [NET_SOCK_HOST_PORT], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [NETWORK_PEER_ADDRESS]: { brief: 'Peer address of the network connection - IP address or Unix domain socket name.', @@ -12483,6 +14447,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '10.1.2.80', aliases: [NET_PEER_IP, NET_SOCK_PEER_ADDR], + changelog: [{ version: '0.1.0', prs: [108, 127] }, { version: '0.0.0' }], }, [NETWORK_PEER_PORT]: { brief: 'Peer port number of the network connection.', @@ -12492,6 +14457,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 65400, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [NETWORK_PROTOCOL_NAME]: { brief: 'OSI application layer or non-OSI equivalent.', @@ -12502,6 +14468,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'http', aliases: [NET_PROTOCOL_NAME], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [NETWORK_PROTOCOL_VERSION]: { brief: 'The actual version of the protocol used for network communication.', @@ -12512,6 +14479,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '1.1', aliases: [HTTP_FLAVOR, NET_PROTOCOL_VERSION], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [NETWORK_TRANSPORT]: { brief: 'OSI transport layer or inter-process communication method.', @@ -12522,6 +14490,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'tcp', aliases: [NET_TRANSPORT], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [NETWORK_TYPE]: { brief: 'OSI network layer or non-OSI equivalent.', @@ -12531,6 +14500,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'ipv4', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [NET_HOST_IP]: { brief: 'Local address of the network connection - IP address or Unix domain socket name.', @@ -12544,6 +14514,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.local.address', }, aliases: [NETWORK_LOCAL_ADDRESS, NET_SOCK_HOST_ADDR], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, [NET_HOST_NAME]: { brief: @@ -12558,6 +14529,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'server.address', }, aliases: [SERVER_ADDRESS, HTTP_SERVER_NAME, HTTP_HOST], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, [NET_HOST_PORT]: { brief: 'Server port number.', @@ -12571,6 +14543,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'server.port', }, aliases: [SERVER_PORT], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [NET_PEER_IP]: { brief: 'Peer address of the network connection - IP address or Unix domain socket name.', @@ -12584,6 +14557,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.peer.address', }, aliases: [NETWORK_PEER_ADDRESS, NET_SOCK_PEER_ADDR], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, [NET_PEER_NAME]: { brief: @@ -12598,6 +14572,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'server.address', reason: 'Deprecated, use server.address on client spans and client.address on server spans.', }, + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [NET_PEER_PORT]: { brief: 'Peer port number.', @@ -12611,6 +14586,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'server.port', reason: 'Deprecated, use server.port on client spans and client.port on server spans.', }, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [NET_PROTOCOL_NAME]: { brief: 'OSI application layer or non-OSI equivalent.', @@ -12624,6 +14600,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.protocol.name', }, aliases: [NETWORK_PROTOCOL_NAME], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [NET_PROTOCOL_VERSION]: { brief: 'The actual version of the protocol used for network communication.', @@ -12637,6 +14614,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.protocol.version', }, aliases: [NETWORK_PROTOCOL_VERSION, HTTP_FLAVOR], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, [NET_SOCK_FAMILY]: { brief: 'OSI transport and network layer', @@ -12650,6 +14628,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.transport', reason: 'Deprecated, use network.transport and network.type.', }, + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [NET_SOCK_HOST_ADDR]: { brief: 'Local address of the network connection mapping to Unix domain socket name.', @@ -12663,6 +14642,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.local.address', }, aliases: [NETWORK_LOCAL_ADDRESS, NET_HOST_IP], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, [NET_SOCK_HOST_PORT]: { brief: 'Local port number of the network connection.', @@ -12676,6 +14656,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.local.port', }, aliases: [NETWORK_LOCAL_PORT], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [NET_SOCK_PEER_ADDR]: { brief: 'Peer address of the network connection - IP address', @@ -12689,6 +14670,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.peer.address', }, aliases: [NETWORK_PEER_ADDRESS, NET_PEER_IP], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, [NET_SOCK_PEER_NAME]: { brief: 'Peer address of the network connection - Unix domain socket name', @@ -12701,6 +14683,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { reason: 'Deprecated from OTEL, no replacement at this time', }, + changelog: [{ version: '0.1.0', prs: [61, 119, 127] }, { version: '0.0.0' }], }, [NET_SOCK_PEER_PORT]: { brief: 'Peer port number of the network connection.', @@ -12713,6 +14696,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'network.peer.port', }, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [NET_TRANSPORT]: { brief: 'OSI transport layer or inter-process communication method.', @@ -12726,6 +14710,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'network.transport', }, aliases: [NETWORK_TRANSPORT], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [OS_BUILD_ID]: { brief: 'The build ID of the operating system.', @@ -12735,6 +14720,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '1234567890', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [OS_DESCRIPTION]: { brief: @@ -12745,6 +14731,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'Ubuntu 18.04.1 LTS', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [OS_NAME]: { brief: 'Human readable operating system name.', @@ -12754,6 +14741,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'Ubuntu', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [OS_TYPE]: { brief: 'The operating system type.', @@ -12763,6 +14751,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'linux', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [OS_VERSION]: { brief: 'The version of the operating system.', @@ -12772,6 +14761,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '18.04.2', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [OTEL_SCOPE_NAME]: { brief: 'The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).', @@ -12781,6 +14771,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'io.opentelemetry.contrib.mongodb', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [OTEL_SCOPE_VERSION]: { brief: 'The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).', @@ -12790,6 +14781,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '2.4.5', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [OTEL_STATUS_CODE]: { brief: 'Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.', @@ -12799,6 +14791,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'OK', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [OTEL_STATUS_DESCRIPTION]: { brief: 'Description of the Status if it has a value, otherwise not set.', @@ -12808,6 +14801,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'resource not found', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [PARAMS_KEY]: { brief: @@ -12820,6 +14814,7 @@ export const ATTRIBUTE_METADATA: Record = { hasDynamicSuffix: true, example: "params.id='123'", aliases: [URL_PATH_PARAMETER_KEY], + changelog: [{ version: '0.1.0', prs: [103] }], }, [PREVIOUS_ROUTE]: { brief: 'Also used by mobile SDKs to indicate the previous route in the application.', @@ -12830,6 +14825,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'HomeScreen', sdks: ['javascript-reactnative'], + changelog: [{ version: '0.1.0', prs: [74] }, { version: '0.0.0' }], }, [PROCESS_EXECUTABLE_NAME]: { brief: 'The name of the executable that started the process.', @@ -12839,6 +14835,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'getsentry', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [PROCESS_PID]: { brief: 'The process ID of the running process.', @@ -12848,6 +14845,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 12345, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [PROCESS_RUNTIME_DESCRIPTION]: { brief: @@ -12858,6 +14856,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'Eclipse OpenJ9 VM openj9-0.21.0', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [PROCESS_RUNTIME_NAME]: { brief: 'The name of the runtime. Equivalent to `name` in the Sentry runtime context.', @@ -12867,6 +14866,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'node', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [PROCESS_RUNTIME_VERSION]: { brief: @@ -12877,6 +14877,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '18.04.2', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [QUERY_KEY]: { brief: 'An item in a query string. Usually added by client-side routing frameworks like vue-router.', @@ -12891,6 +14892,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'url.query', reason: 'Instead of sending items individually in query., they should be sent all together with url.query.', }, + changelog: [{ version: '0.1.0', prs: [103] }], }, [RELEASE]: { brief: 'The sentry release.', @@ -12904,6 +14906,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'sentry.release', }, aliases: [SENTRY_RELEASE], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, [REMIX_ACTION_FORM_DATA_KEY]: { brief: 'Remix form data, being the form data key, the value being the form data value.', @@ -12915,6 +14918,7 @@ export const ATTRIBUTE_METADATA: Record = { hasDynamicSuffix: true, example: "http.response.header.text='test'", sdks: ['javascript-remix'], + changelog: [{ version: '0.1.0', prs: [103] }], }, [REPLAY_ID]: { brief: 'The id of the sentry replay.', @@ -12928,6 +14932,20 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'sentry.replay_id', }, aliases: [SENTRY_REPLAY_ID], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + }, + [RESOURCE_DEPLOYMENT_ENVIRONMENT]: { + brief: 'The software deployment environment name.', + type: 'string', + pii: { + isPii: 'false', + }, + isInOtel: true, + example: 'production', + deprecation: { + replacement: 'sentry.environment', + }, + changelog: [{ version: 'next', prs: [266] }], }, [RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME]: { brief: 'The software deployment environment name.', @@ -12940,6 +14958,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'sentry.environment', }, + changelog: [{ version: '0.3.1', prs: [196] }], }, [RESOURCE_RENDER_BLOCKING_STATUS]: { brief: 'The render blocking status of the resource.', @@ -12950,6 +14969,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'non-blocking', sdks: ['javascript-browser'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [ROUTE]: { brief: @@ -12965,6 +14985,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [HTTP_ROUTE], sdks: ['php-laravel', 'javascript-reactnative'], + changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], }, [RPC_GRPC_STATUS_CODE]: { brief: 'The numeric status code of the gRPC request.', @@ -12974,6 +14995,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 2, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [RPC_SERVICE]: { brief: 'The full (logical) name of the service being called, including its package name, if applicable.', @@ -12983,6 +15005,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'myService.BestService', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [SENTRY_ACTION]: { brief: @@ -12993,6 +15016,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'SELECT', + changelog: [{ version: '0.4.0', prs: [212] }], }, [SENTRY_BROWSER_NAME]: { brief: 'The name of the browser.', @@ -13006,6 +15030,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'browser.name', }, aliases: [BROWSER_NAME], + changelog: [{ version: '0.1.0', prs: [139] }], }, [SENTRY_BROWSER_VERSION]: { brief: 'The version of the browser.', @@ -13019,6 +15044,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'browser.version', }, aliases: [BROWSER_VERSION], + changelog: [{ version: '0.1.0', prs: [139] }], }, [SENTRY_CANCELLATION_REASON]: { brief: 'The reason why a span ended early.', @@ -13028,6 +15054,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'document.hidden', + changelog: [{ version: '0.0.0' }], }, [SENTRY_CATEGORY]: { brief: @@ -13038,6 +15065,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'db', + changelog: [{ version: '0.4.0', prs: [218] }], }, [SENTRY_CLIENT_SAMPLE_RATE]: { brief: 'Rate at which a span was sampled in the SDK.', @@ -13047,6 +15075,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 0.5, + changelog: [{ version: '0.1.0', prs: [102] }], }, [SENTRY_DESCRIPTION]: { brief: 'The human-readable description of a span.', @@ -13056,6 +15085,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'index view query', + changelog: [{ version: '0.1.0', prs: [135] }], }, [SENTRY_DIST]: { brief: 'The sentry dist.', @@ -13065,6 +15095,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '1.0', + changelog: [{ version: '0.0.0' }], }, [SENTRY_DOMAIN]: { brief: @@ -13075,6 +15106,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'example.com', + changelog: [{ version: '0.4.0', prs: [212] }], }, [SENTRY_DSC_ENVIRONMENT]: { brief: 'The environment from the dynamic sampling context.', @@ -13084,6 +15116,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'prod', + changelog: [{ version: '0.3.0', prs: [185] }], }, [SENTRY_DSC_PUBLIC_KEY]: { brief: 'The public key from the dynamic sampling context.', @@ -13093,6 +15126,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'c51734c603c4430eb57cb0a5728a479d', + changelog: [{ version: '0.3.0', prs: [185] }], }, [SENTRY_DSC_RELEASE]: { brief: 'The release identifier from the dynamic sampling context.', @@ -13102,6 +15136,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'frontend@e8211be71b214afab5b85de4b4c54be3714952bb', + changelog: [{ version: '0.3.0', prs: [185] }], }, [SENTRY_DSC_SAMPLED]: { brief: 'Whether the event was sampled according to the dynamic sampling context.', @@ -13111,6 +15146,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + changelog: [{ version: '0.3.0', prs: [185] }], }, [SENTRY_DSC_SAMPLE_RATE]: { brief: 'The sample rate from the dynamic sampling context.', @@ -13120,6 +15156,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '1.0', + changelog: [{ version: '0.3.0', prs: [185] }], }, [SENTRY_DSC_TRACE_ID]: { brief: 'The trace ID from the dynamic sampling context.', @@ -13129,6 +15166,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '047372980460430cbc78d9779df33a46', + changelog: [{ version: '0.3.0', prs: [185] }], }, [SENTRY_DSC_TRANSACTION]: { brief: 'The transaction name from the dynamic sampling context.', @@ -13138,6 +15176,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '/issues/errors-outages/', + changelog: [{ version: '0.3.0', prs: [185] }], }, [SENTRY_ENVIRONMENT]: { brief: 'The sentry environment.', @@ -13148,6 +15187,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'production', aliases: [ENVIRONMENT], + changelog: [{ version: '0.0.0' }], }, [SENTRY_EXCLUSIVE_TIME]: { brief: 'The exclusive time duration of the span in milliseconds.', @@ -13157,6 +15197,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1234, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.3.0', prs: [160] }, { version: '0.0.0' }], }, [SENTRY_GRAPHQL_OPERATION]: { brief: 'Indicates the type of graphql operation, emitted by the Javascript SDK.', @@ -13166,6 +15207,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'getUserById', + changelog: [{ version: '0.3.1', prs: [190] }], }, [SENTRY_GROUP]: { brief: @@ -13175,6 +15217,7 @@ export const ATTRIBUTE_METADATA: Record = { isPii: 'false', }, isInOtel: false, + changelog: [{ version: '0.4.0', prs: [212] }], }, [SENTRY_HTTP_PREFETCH]: { brief: 'If an http request was a prefetch request.', @@ -13184,6 +15227,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + changelog: [{ version: '0.0.0' }], }, [SENTRY_IDLE_SPAN_FINISH_REASON]: { brief: 'The reason why an idle span ended early.', @@ -13193,6 +15237,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'idleTimeout', + changelog: [{ version: '0.0.0' }], }, [SENTRY_IS_REMOTE]: { brief: "Indicates whether a span's parent is remote.", @@ -13202,6 +15247,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + changelog: [{ version: '0.3.1', prs: [190] }], }, [SENTRY_KIND]: { brief: @@ -13212,6 +15258,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'server', + changelog: [{ version: '0.3.1', prs: [190] }], }, [SENTRY_MESSAGE_PARAMETER_KEY]: { brief: @@ -13222,6 +15269,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: "sentry.message.parameter.0='123'", + changelog: [{ version: '0.1.0', prs: [116] }], }, [SENTRY_MESSAGE_TEMPLATE]: { brief: 'The parameterized template string.', @@ -13231,6 +15279,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Hello, {name}!', + changelog: [{ version: '0.1.0', prs: [116] }], }, [SENTRY_MODULE_KEY]: { brief: 'A module that was loaded in the process. The key is the name of the module.', @@ -13241,6 +15290,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, hasDynamicSuffix: true, example: "sentry.module.brianium/paratest='v7.7.0'", + changelog: [{ version: '0.1.0', prs: [103] }], }, [SENTRY_NEXTJS_SSR_FUNCTION_ROUTE]: { brief: @@ -13252,6 +15302,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: '/posts/[id]/layout', sdks: ['javascript'], + changelog: [{ version: '0.1.0', prs: [54, 106] }], }, [SENTRY_NEXTJS_SSR_FUNCTION_TYPE]: { brief: @@ -13263,6 +15314,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'generateMetadata', sdks: ['javascript'], + changelog: [{ version: '0.1.0', prs: [54, 106] }], }, [SENTRY_NORMALIZED_DB_QUERY]: { brief: 'The normalized version of `db.query.text`.', @@ -13272,6 +15324,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', + changelog: [{ version: '0.3.1', prs: [194] }], }, [SENTRY_NORMALIZED_DB_QUERY_HASH]: { brief: 'The hash of `sentry.normalized_db_query`.', @@ -13280,6 +15333,7 @@ export const ATTRIBUTE_METADATA: Record = { isPii: 'false', }, isInOtel: false, + changelog: [{ version: '0.4.0', prs: [200] }], }, [SENTRY_NORMALIZED_DESCRIPTION]: { brief: @@ -13290,6 +15344,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', + changelog: [{ version: '0.4.0', prs: [212] }], }, [SENTRY_OBSERVED_TIMESTAMP_NANOS]: { brief: 'The timestamp at which an envelope was received by Relay, in nanoseconds.', @@ -13299,6 +15354,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '1544712660300000000', + changelog: [ + { version: '0.3.0', prs: [174] }, + { version: '0.2.0', prs: [137] }, + ], }, [SENTRY_OP]: { brief: 'The operation of a span.', @@ -13308,6 +15367,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'http.client', + changelog: [{ version: '0.0.0' }], }, [SENTRY_ORIGIN]: { brief: 'The origin of the instrumentation (e.g. span, log, etc.)', @@ -13317,6 +15377,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'auto.http.otel.fastify', + changelog: [{ version: '0.1.0', prs: [68] }, { version: '0.0.0' }], }, [SENTRY_PLATFORM]: { brief: 'The sdk platform that generated the event.', @@ -13326,6 +15387,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'php', + changelog: [{ version: '0.0.0' }], }, [SENTRY_PROFILER_ID]: { brief: 'The id of the currently running profiler (continuous profiling)', @@ -13335,6 +15397,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '18779b64dd35d1a538e7ce2dd2d3fad3', + changelog: [{ version: '0.4.0', prs: [242] }], }, [SENTRY_RELEASE]: { brief: 'The sentry release.', @@ -13345,6 +15408,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: '7.0.0', aliases: [SERVICE_VERSION, RELEASE], + changelog: [{ version: '0.0.0' }], }, [SENTRY_REPLAY_ID]: { brief: 'The id of the sentry replay.', @@ -13355,6 +15419,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: '123e4567e89b12d3a456426614174000', aliases: [REPLAY_ID], + changelog: [{ version: '0.0.0' }], }, [SENTRY_REPLAY_IS_BUFFERING]: { brief: @@ -13365,6 +15430,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + changelog: [{ version: '0.3.0', prs: [185] }], }, [SENTRY_SDK_INTEGRATIONS]: { brief: @@ -13375,6 +15441,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: ['InboundFilters', 'FunctionToString', 'BrowserApiErrors', 'Breadcrumbs'], + changelog: [{ version: '0.0.0', prs: [42] }], }, [SENTRY_SDK_NAME]: { brief: 'The sentry sdk name.', @@ -13384,6 +15451,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '@sentry/react', + changelog: [{ version: '0.0.0' }], }, [SENTRY_SDK_VERSION]: { brief: 'The sentry sdk version.', @@ -13393,6 +15461,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '7.0.0', + changelog: [{ version: '0.0.0' }], }, [SENTRY_SEGMENT_ID]: { brief: 'The segment ID of a span', @@ -13403,6 +15472,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: '051581bf3cb55c13', aliases: [_SENTRY_SEGMENT_ID], + changelog: [{ version: '0.1.0', prs: [107, 124] }], }, [_SENTRY_SEGMENT_ID]: { brief: 'The segment ID of a span', @@ -13416,6 +15486,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'sentry.segment.id', }, aliases: [SENTRY_SEGMENT_ID], + changelog: [{ version: '0.1.0', prs: [124] }], }, [SENTRY_SEGMENT_NAME]: { brief: 'The segment name of a span', @@ -13425,6 +15496,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'GET /user', + changelog: [{ version: '0.1.0', prs: [104] }], }, [SENTRY_SERVER_SAMPLE_RATE]: { brief: 'Rate at which a span was sampled in Relay.', @@ -13434,16 +15506,33 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 0.5, + changelog: [{ version: '0.1.0', prs: [102] }], + }, + [SENTRY_SOURCE]: { + 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: 'string', + pii: { + isPii: 'false', + }, + isInOtel: false, + example: 'route', + deprecation: { + replacement: 'sentry.span.source', + reason: 'This attribute is being deprecated in favor of sentry.span.source', + }, + changelog: [{ version: 'next' }], }, [SENTRY_SPAN_SOURCE]: { brief: - "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`.", + "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: 'string', pii: { isPii: 'false', }, isInOtel: false, example: 'route', + changelog: [{ version: '0.4.0', prs: [214] }, { version: '0.0.0' }], }, [SENTRY_STATUS_CODE]: { brief: @@ -13454,6 +15543,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 200, + changelog: [{ version: '0.4.0', prs: [223, 228] }], }, [SENTRY_STATUS_MESSAGE]: { brief: 'The from OTLP extracted status message.', @@ -13463,6 +15553,18 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'foobar', + changelog: [{ version: '0.3.1', prs: [190] }], + }, + [SENTRY_TIMESTAMP_SEQUENCE]: { + 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: 'integer', + pii: { + isPii: 'false', + }, + isInOtel: false, + example: 0, + changelog: [{ version: 'next', prs: [262] }], }, [SENTRY_TRACE_PARENT_SPAN_ID]: { brief: @@ -13473,6 +15575,11 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'b0e6f15b45c36b12', + deprecation: {}, + changelog: [ + { version: 'next', prs: [287], description: 'Deprecate `sentry.trace.parent_span_id`' }, + { version: '0.1.0', prs: [116] }, + ], }, [SENTRY_TRANSACTION]: { brief: 'The sentry transaction (segment name).', @@ -13483,6 +15590,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'GET /', aliases: [TRANSACTION], + changelog: [{ version: '0.0.0' }], }, [SERVER_ADDRESS]: { brief: @@ -13494,6 +15602,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'example.com', aliases: [HTTP_SERVER_NAME, NET_HOST_NAME, HTTP_HOST], + changelog: [{ version: '0.1.0', prs: [108, 127] }, { version: '0.0.0' }], }, [SERVER_PORT]: { brief: 'Server port number.', @@ -13504,6 +15613,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 1337, aliases: [NET_HOST_PORT], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [SERVICE_NAME]: { brief: 'Logical name of the service.', @@ -13513,6 +15623,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'omegastar', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [SERVICE_VERSION]: { brief: 'The version string of the service API or implementation. The format is not defined by these conventions.', @@ -13523,6 +15634,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '5.0.0', aliases: [SENTRY_RELEASE], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [THREAD_ID]: { brief: 'Current “managed” thread ID.', @@ -13532,6 +15644,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 56, + changelog: [{ version: '0.0.0' }], }, [THREAD_NAME]: { brief: 'Current thread name.', @@ -13541,6 +15654,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'main', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [TIMBER_TAG]: { brief: 'The log tag provided by the timber logging framework.', @@ -13551,6 +15665,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'MyTag', sdks: ['sentry.java.android'], + changelog: [{ version: '0.3.0', prs: [183] }], }, [TRANSACTION]: { brief: 'The sentry transaction (segment name).', @@ -13564,6 +15679,40 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'sentry.transaction', }, aliases: [SENTRY_TRANSACTION], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + }, + [TTFB]: { + brief: 'The value of the recorded Time To First Byte (TTFB) web vital in milliseconds', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 194, + deprecation: { + replacement: 'browser.web_vital.ttfb.value', + reason: 'This attribute is being deprecated in favor of browser.web_vital.ttfb.value', + }, + aliases: [BROWSER_WEB_VITAL_TTFB_VALUE], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [235] }], + }, + [TTFB_REQUESTTIME]: { + 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: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1554.5814, + deprecation: { + replacement: 'browser.web_vital.ttfb.request_time', + reason: 'This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time', + }, + aliases: [BROWSER_WEB_VITAL_TTFB_REQUEST_TIME], + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [235] }], }, [TYPE]: { brief: 'More granular type of the operation happening.', @@ -13574,6 +15723,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: false, example: 'fetch', sdks: ['javascript-browser', 'javascript-node'], + changelog: [{ version: '0.0.0' }], }, [UI_COMPONENT_NAME]: { brief: 'The name of the associated component.', @@ -13583,6 +15733,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'HomeButton', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [UI_CONTRIBUTES_TO_TTFD]: { brief: 'Whether the span execution contributed to the TTFD (time to fully drawn) metric.', @@ -13592,6 +15743,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + changelog: [{ version: '0.0.0' }], }, [UI_CONTRIBUTES_TO_TTID]: { brief: 'Whether the span execution contributed to the TTID (time to initial display) metric.', @@ -13601,6 +15753,106 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: true, + changelog: [{ version: '0.0.0' }], + }, + [UI_ELEMENT_HEIGHT]: { + brief: 'The height of the UI element (for Html in pixels)', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 256, + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.height attribute' }], + }, + [UI_ELEMENT_ID]: { + brief: 'The id of the UI element', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'btn-login', + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.id attribute' }], + }, + [UI_ELEMENT_IDENTIFIER]: { + brief: 'The identifier used to measure the UI element timing', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'heroImage', + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.identifier attribute' }], + }, + [UI_ELEMENT_LOAD_TIME]: { + brief: 'The loading time of a UI element (from time origin to finished loading)', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 998.2234, + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.load_time attribute' }], + }, + [UI_ELEMENT_PAINT_TYPE]: { + brief: "The type of element paint. Can either be 'image-paint' or 'text-paint'", + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'image-paint', + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.paint_type attribute' }], + }, + [UI_ELEMENT_RENDER_TIME]: { + brief: 'The rendering time of the UI element (from time origin to finished rendering)', + type: 'double', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 1023.1124, + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.render_time attribute' }], + }, + [UI_ELEMENT_TYPE]: { + brief: 'type of the UI element', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'img', + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.type attribute' }], + }, + [UI_ELEMENT_URL]: { + brief: 'The URL of the UI element (e.g. an img src)', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'https://assets.myapp.com/hero.png', + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.url attribute' }], + }, + [UI_ELEMENT_WIDTH]: { + brief: 'The width of the UI element (for HTML in pixels)', + type: 'integer', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 512, + sdks: ['javascript-browser'], + changelog: [{ version: 'next', prs: [284], description: 'Added ui.element.width attribute' }], }, [URL]: { brief: 'The URL of the resource that was fetched.', @@ -13615,6 +15867,7 @@ export const ATTRIBUTE_METADATA: Record = { }, aliases: [URL_FULL, HTTP_URL], sdks: ['javascript-browser', 'javascript-node'], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, [URL_DOMAIN]: { brief: @@ -13625,6 +15878,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'example.com', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [URL_FRAGMENT]: { brief: @@ -13635,6 +15889,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'details', + changelog: [{ version: '0.0.0' }], }, [URL_FULL]: { brief: 'The URL of the resource that was fetched.', @@ -13645,6 +15900,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'https://example.com/test?foo=bar#buzz', aliases: [HTTP_URL, URL], + changelog: [{ version: '0.1.0', prs: [108] }, { version: '0.0.0' }], }, [URL_PATH]: { brief: 'The URI path component.', @@ -13654,6 +15910,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '/foo', + changelog: [{ version: '0.0.0' }], }, [URL_PATH_PARAMETER_KEY]: { brief: @@ -13666,6 +15923,7 @@ export const ATTRIBUTE_METADATA: Record = { hasDynamicSuffix: true, example: "url.path.parameter.id='123'", aliases: [PARAMS_KEY], + changelog: [{ version: '0.1.0', prs: [103] }], }, [URL_PORT]: { brief: 'Server port number.', @@ -13675,6 +15933,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 1337, + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, [URL_QUERY]: { brief: @@ -13687,6 +15946,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'foo=bar&bar=baz', + changelog: [{ version: '0.0.0' }], }, [URL_SCHEME]: { brief: 'The URI scheme component identifying the used protocol.', @@ -13697,6 +15957,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: 'https', aliases: [HTTP_SCHEME], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [URL_TEMPLATE]: { brief: 'The low-cardinality template of an absolute path reference.', @@ -13707,6 +15968,7 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, example: '/users/:id', aliases: [HTTP_ROUTE], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [USER_AGENT_ORIGINAL]: { brief: 'Value of the HTTP User-Agent header sent by the client.', @@ -13718,6 +15980,7 @@ export const ATTRIBUTE_METADATA: Record = { 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], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, [USER_EMAIL]: { brief: 'User email address.', @@ -13727,6 +15990,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'test@example.com', + changelog: [{ version: '0.0.0' }], }, [USER_FULL_NAME]: { brief: "User's full name.", @@ -13736,6 +16000,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'John Smith', + changelog: [{ version: '0.0.0' }], }, [USER_GEO_CITY]: { brief: 'Human readable city name.', @@ -13745,6 +16010,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Toronto', + changelog: [{ version: '0.0.0' }], }, [USER_GEO_COUNTRY_CODE]: { brief: 'Two-letter country code (ISO 3166-1 alpha-2).', @@ -13754,6 +16020,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'CA', + changelog: [{ version: '0.0.0' }], }, [USER_GEO_REGION]: { brief: 'Human readable region name or code.', @@ -13763,6 +16030,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Canada', + changelog: [{ version: '0.0.0' }], }, [USER_GEO_SUBDIVISION]: { brief: 'Human readable subdivision name.', @@ -13772,6 +16040,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'Ontario', + changelog: [{ version: '0.0.0' }], }, [USER_HASH]: { brief: 'Unique user hash to correlate information for a user in anonymized form.', @@ -13781,6 +16050,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d', + changelog: [{ version: '0.0.0' }], }, [USER_ID]: { brief: 'Unique identifier of the user.', @@ -13790,6 +16060,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + changelog: [{ version: '0.0.0' }], }, [USER_IP_ADDRESS]: { brief: 'The IP address of the user.', @@ -13799,6 +16070,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '192.168.1.1', + changelog: [{ version: '0.1.0', prs: [75] }], }, [USER_NAME]: { brief: 'Short name or login/username of the user.', @@ -13808,6 +16080,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: 'j.smith', + changelog: [{ version: '0.0.0' }], }, [USER_ROLES]: { brief: 'Array of user roles at the time of the event.', @@ -13817,6 +16090,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: ['admin', 'editor'], + changelog: [{ version: '0.0.0' }], }, [VERCEL_BRANCH]: { brief: 'Git branch name for Vercel project', @@ -13826,6 +16100,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'main', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_BUILD_ID]: { brief: 'Identifier for the Vercel build (only present on build logs)', @@ -13835,6 +16110,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'bld_cotnkcr76', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_DEPLOYMENT_ID]: { brief: 'Identifier for the Vercel deployment', @@ -13844,6 +16120,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'dpl_233NRGRjVZX1caZrXWtz5g1TAksD', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_DESTINATION]: { brief: 'Origin of the external content in Vercel (only on external logs)', @@ -13853,6 +16130,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'https://vitals.vercel-insights.com/v1', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_EDGE_TYPE]: { brief: 'Type of edge runtime in Vercel', @@ -13862,6 +16140,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'edge-function', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_ENTRYPOINT]: { brief: 'Entrypoint for the request in Vercel', @@ -13871,6 +16150,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'api/index.js', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_EXECUTION_REGION]: { brief: 'Region where the request is executed', @@ -13880,6 +16160,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'sfo1', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_ID]: { brief: 'Unique identifier for the log entry in Vercel', @@ -13889,6 +16170,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '1573817187330377061717300000', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_JA3_DIGEST]: { brief: 'JA3 fingerprint digest of Vercel request', @@ -13898,6 +16180,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_JA4_DIGEST]: { brief: 'JA4 fingerprint digest', @@ -13907,6 +16190,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 't13d1516h2_8daaf6152771_02713d6af862', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_LOG_TYPE]: { brief: 'Vercel log output type', @@ -13916,6 +16200,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'stdout', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROJECT_ID]: { brief: 'Identifier for the Vercel project', @@ -13925,6 +16210,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'gdufoJxB6b9b1fEqr1jUtFkyavUU', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROJECT_NAME]: { brief: 'Name of the Vercel project', @@ -13934,6 +16220,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'my-app', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_CACHE_ID]: { brief: 'Original request ID when request is served from cache', @@ -13943,6 +16230,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'pdx1::v8g4b-1744143786684-93dafbc0f70d', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_CLIENT_IP]: { brief: 'Client IP address', @@ -13952,6 +16240,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '120.75.16.101', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_HOST]: { brief: 'Hostname of the request', @@ -13961,6 +16250,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'test.vercel.app', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_LAMBDA_REGION]: { brief: 'Region where lambda function executed', @@ -13970,6 +16260,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'sfo1', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_METHOD]: { brief: 'HTTP method of the request', @@ -13979,6 +16270,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'GET', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_PATH]: { brief: 'Request path with query parameters', @@ -13988,6 +16280,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '/dynamic/some-value.json?route=some-value', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_PATH_TYPE]: { brief: 'How the request was served based on its path and project configuration', @@ -13997,6 +16290,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'func', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_PATH_TYPE_VARIANT]: { brief: 'Variant of the path type', @@ -14006,6 +16300,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'api', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_REFERER]: { brief: 'Referer of the request', @@ -14015,6 +16310,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '*.vercel.app', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_REGION]: { brief: 'Region where the request is processed', @@ -14024,6 +16320,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'sfo1', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_RESPONSE_BYTE_SIZE]: { brief: 'Size of the response in bytes', @@ -14033,6 +16330,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1024, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.2.0', prs: [163] }, + ], }, [VERCEL_PROXY_SCHEME]: { brief: 'Protocol of the request', @@ -14042,6 +16343,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'https', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_STATUS_CODE]: { brief: 'HTTP status code of the proxy request', @@ -14051,6 +16353,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 200, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.2.0', prs: [163] }, + ], }, [VERCEL_PROXY_TIMESTAMP]: { brief: 'Unix timestamp when the proxy request was made', @@ -14060,6 +16366,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 1573817250172, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.2.0', prs: [163] }, + ], }, [VERCEL_PROXY_USER_AGENT]: { brief: 'User agent strings of the request', @@ -14069,6 +16379,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: ['Mozilla/5.0...'], + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_VERCEL_CACHE]: { brief: 'Cache status sent to the browser', @@ -14078,6 +16389,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'REVALIDATED', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_VERCEL_ID]: { brief: 'Vercel-specific identifier', @@ -14087,6 +16399,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'sfo1::abc123', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_WAF_ACTION]: { brief: 'Action taken by firewall rules', @@ -14096,6 +16409,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'deny', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_PROXY_WAF_RULE_ID]: { brief: 'ID of the firewall rule that matched', @@ -14105,6 +16419,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'rule_gAHz8jtSB1Gy', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_REQUEST_ID]: { brief: 'Identifier of the Vercel request', @@ -14114,6 +16429,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: '643af4e3-975a-4cc7-9e7a-1eda11539d90', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_SOURCE]: { brief: 'Origin of the Vercel log (build, edge, lambda, static, external, or firewall)', @@ -14123,6 +16439,7 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 'build', + changelog: [{ version: '0.2.0', prs: [163] }], }, [VERCEL_STATUS_CODE]: { brief: 'HTTP status code of the request (-1 means no response returned and the lambda crashed)', @@ -14132,6 +16449,10 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: false, example: 200, + changelog: [ + { version: '0.4.0', prs: [228] }, + { version: '0.2.0', prs: [163] }, + ], }, }; @@ -14179,6 +16500,20 @@ export type Attributes = { [BROWSER_SCRIPT_INVOKER_TYPE]?: BROWSER_SCRIPT_INVOKER_TYPE_TYPE; [BROWSER_SCRIPT_SOURCE_CHAR_POSITION]?: BROWSER_SCRIPT_SOURCE_CHAR_POSITION_TYPE; [BROWSER_VERSION]?: BROWSER_VERSION_TYPE; + [BROWSER_WEB_VITAL_CLS_SOURCE_KEY]?: BROWSER_WEB_VITAL_CLS_SOURCE_KEY_TYPE; + [BROWSER_WEB_VITAL_CLS_VALUE]?: BROWSER_WEB_VITAL_CLS_VALUE_TYPE; + [BROWSER_WEB_VITAL_FCP_VALUE]?: BROWSER_WEB_VITAL_FCP_VALUE_TYPE; + [BROWSER_WEB_VITAL_FP_VALUE]?: BROWSER_WEB_VITAL_FP_VALUE_TYPE; + [BROWSER_WEB_VITAL_INP_VALUE]?: BROWSER_WEB_VITAL_INP_VALUE_TYPE; + [BROWSER_WEB_VITAL_LCP_ELEMENT]?: BROWSER_WEB_VITAL_LCP_ELEMENT_TYPE; + [BROWSER_WEB_VITAL_LCP_ID]?: BROWSER_WEB_VITAL_LCP_ID_TYPE; + [BROWSER_WEB_VITAL_LCP_LOAD_TIME]?: BROWSER_WEB_VITAL_LCP_LOAD_TIME_TYPE; + [BROWSER_WEB_VITAL_LCP_RENDER_TIME]?: BROWSER_WEB_VITAL_LCP_RENDER_TIME_TYPE; + [BROWSER_WEB_VITAL_LCP_SIZE]?: BROWSER_WEB_VITAL_LCP_SIZE_TYPE; + [BROWSER_WEB_VITAL_LCP_URL]?: BROWSER_WEB_VITAL_LCP_URL_TYPE; + [BROWSER_WEB_VITAL_LCP_VALUE]?: BROWSER_WEB_VITAL_LCP_VALUE_TYPE; + [BROWSER_WEB_VITAL_TTFB_REQUEST_TIME]?: BROWSER_WEB_VITAL_TTFB_REQUEST_TIME_TYPE; + [BROWSER_WEB_VITAL_TTFB_VALUE]?: BROWSER_WEB_VITAL_TTFB_VALUE_TYPE; [CACHE_HIT]?: CACHE_HIT_TYPE; [CACHE_ITEM_SIZE]?: CACHE_ITEM_SIZE_TYPE; [CACHE_KEY]?: CACHE_KEY_TYPE; @@ -14190,6 +16525,8 @@ export type Attributes = { [CLOUDFLARE_D1_DURATION]?: CLOUDFLARE_D1_DURATION_TYPE; [CLOUDFLARE_D1_ROWS_READ]?: CLOUDFLARE_D1_ROWS_READ_TYPE; [CLOUDFLARE_D1_ROWS_WRITTEN]?: CLOUDFLARE_D1_ROWS_WRITTEN_TYPE; + [CLS]?: CLS_TYPE; + [CLS_SOURCE_KEY]?: CLS_SOURCE_KEY_TYPE; [CODE_FILEPATH]?: CODE_FILEPATH_TYPE; [CODE_FILE_PATH]?: CODE_FILE_PATH_TYPE; [CODE_FUNCTION]?: CODE_FUNCTION_TYPE; @@ -14218,8 +16555,11 @@ export type Attributes = { [DB_SYSTEM]?: DB_SYSTEM_TYPE; [DB_SYSTEM_NAME]?: DB_SYSTEM_NAME_TYPE; [DB_USER]?: DB_USER_TYPE; + [DEVICEMEMORY]?: DEVICEMEMORY_TYPE; [DEVICE_BRAND]?: DEVICE_BRAND_TYPE; + [DEVICE_CPU_LOGICAL_CORE_COUNT]?: DEVICE_CPU_LOGICAL_CORE_COUNT_TYPE; [DEVICE_FAMILY]?: DEVICE_FAMILY_TYPE; + [DEVICE_MEMORY_ESTIMATED_CAPACITY]?: DEVICE_MEMORY_ESTIMATED_CAPACITY_TYPE; [DEVICE_MODEL]?: DEVICE_MODEL_TYPE; [ENVIRONMENT]?: ENVIRONMENT_TYPE; [ERROR_TYPE]?: ERROR_TYPE_TYPE; @@ -14233,7 +16573,9 @@ export type Attributes = { [FAAS_CRON]?: FAAS_CRON_TYPE; [FAAS_TIME]?: FAAS_TIME_TYPE; [FAAS_TRIGGER]?: FAAS_TRIGGER_TYPE; + [FCP]?: FCP_TYPE; [FLAG_EVALUATION_KEY]?: FLAG_EVALUATION_KEY_TYPE; + [FP]?: FP_TYPE; [FRAMES_DELAY]?: FRAMES_DELAY_TYPE; [FRAMES_FROZEN]?: FRAMES_FROZEN_TYPE; [FRAMES_SLOW]?: FRAMES_SLOW_TYPE; @@ -14292,6 +16634,7 @@ export type Attributes = { [GEN_AI_USAGE_TOTAL_TOKENS]?: GEN_AI_USAGE_TOTAL_TOKENS_TYPE; [GRAPHQL_OPERATION_NAME]?: GRAPHQL_OPERATION_NAME_TYPE; [GRAPHQL_OPERATION_TYPE]?: GRAPHQL_OPERATION_TYPE_TYPE; + [HARDWARECONCURRENCY]?: HARDWARECONCURRENCY_TYPE; [HTTP_CLIENT_IP]?: HTTP_CLIENT_IP_TYPE; [HTTP_DECODED_RESPONSE_CONTENT_LENGTH]?: HTTP_DECODED_RESPONSE_CONTENT_LENGTH_TYPE; [HTTP_FLAVOR]?: HTTP_FLAVOR_TYPE; @@ -14325,19 +16668,24 @@ export type Attributes = { [HTTP_ROUTE]?: HTTP_ROUTE_TYPE; [HTTP_SCHEME]?: HTTP_SCHEME_TYPE; [HTTP_SERVER_NAME]?: HTTP_SERVER_NAME_TYPE; + [HTTP_SERVER_REQUEST_TIME_IN_QUEUE]?: HTTP_SERVER_REQUEST_TIME_IN_QUEUE_TYPE; [HTTP_STATUS_CODE]?: HTTP_STATUS_CODE_TYPE; [HTTP_TARGET]?: HTTP_TARGET_TYPE; [HTTP_URL]?: HTTP_URL_TYPE; [HTTP_USER_AGENT]?: HTTP_USER_AGENT_TYPE; [ID]?: ID_TYPE; + [INP]?: INP_TYPE; [JVM_GC_ACTION]?: JVM_GC_ACTION_TYPE; [JVM_GC_NAME]?: JVM_GC_NAME_TYPE; [JVM_MEMORY_POOL_NAME]?: JVM_MEMORY_POOL_NAME_TYPE; [JVM_MEMORY_TYPE]?: JVM_MEMORY_TYPE_TYPE; [JVM_THREAD_DAEMON]?: JVM_THREAD_DAEMON_TYPE; [JVM_THREAD_STATE]?: JVM_THREAD_STATE_TYPE; + [LCP]?: LCP_TYPE; [LCP_ELEMENT]?: LCP_ELEMENT_TYPE; [LCP_ID]?: LCP_ID_TYPE; + [LCP_LOADTIME]?: LCP_LOADTIME_TYPE; + [LCP_RENDERTIME]?: LCP_RENDERTIME_TYPE; [LCP_SIZE]?: LCP_SIZE_TYPE; [LCP_URL]?: LCP_URL_TYPE; [LOGGER_NAME]?: LOGGER_NAME_TYPE; @@ -14439,6 +16787,7 @@ export type Attributes = { [RELEASE]?: RELEASE_TYPE; [REMIX_ACTION_FORM_DATA_KEY]?: REMIX_ACTION_FORM_DATA_KEY_TYPE; [REPLAY_ID]?: REPLAY_ID_TYPE; + [RESOURCE_DEPLOYMENT_ENVIRONMENT]?: RESOURCE_DEPLOYMENT_ENVIRONMENT_TYPE; [RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME]?: RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME_TYPE; [RESOURCE_RENDER_BLOCKING_STATUS]?: RESOURCE_RENDER_BLOCKING_STATUS_TYPE; [ROUTE]?: ROUTE_TYPE; @@ -14491,9 +16840,11 @@ export type Attributes = { [_SENTRY_SEGMENT_ID]?: _SENTRY_SEGMENT_ID_TYPE; [SENTRY_SEGMENT_NAME]?: SENTRY_SEGMENT_NAME_TYPE; [SENTRY_SERVER_SAMPLE_RATE]?: SENTRY_SERVER_SAMPLE_RATE_TYPE; + [SENTRY_SOURCE]?: SENTRY_SOURCE_TYPE; [SENTRY_SPAN_SOURCE]?: SENTRY_SPAN_SOURCE_TYPE; [SENTRY_STATUS_CODE]?: SENTRY_STATUS_CODE_TYPE; [SENTRY_STATUS_MESSAGE]?: SENTRY_STATUS_MESSAGE_TYPE; + [SENTRY_TIMESTAMP_SEQUENCE]?: SENTRY_TIMESTAMP_SEQUENCE_TYPE; [SENTRY_TRACE_PARENT_SPAN_ID]?: SENTRY_TRACE_PARENT_SPAN_ID_TYPE; [SENTRY_TRANSACTION]?: SENTRY_TRANSACTION_TYPE; [SERVER_ADDRESS]?: SERVER_ADDRESS_TYPE; @@ -14504,10 +16855,21 @@ export type Attributes = { [THREAD_NAME]?: THREAD_NAME_TYPE; [TIMBER_TAG]?: TIMBER_TAG_TYPE; [TRANSACTION]?: TRANSACTION_TYPE; + [TTFB]?: TTFB_TYPE; + [TTFB_REQUESTTIME]?: TTFB_REQUESTTIME_TYPE; [TYPE]?: TYPE_TYPE; [UI_COMPONENT_NAME]?: UI_COMPONENT_NAME_TYPE; [UI_CONTRIBUTES_TO_TTFD]?: UI_CONTRIBUTES_TO_TTFD_TYPE; [UI_CONTRIBUTES_TO_TTID]?: UI_CONTRIBUTES_TO_TTID_TYPE; + [UI_ELEMENT_HEIGHT]?: UI_ELEMENT_HEIGHT_TYPE; + [UI_ELEMENT_ID]?: UI_ELEMENT_ID_TYPE; + [UI_ELEMENT_IDENTIFIER]?: UI_ELEMENT_IDENTIFIER_TYPE; + [UI_ELEMENT_LOAD_TIME]?: UI_ELEMENT_LOAD_TIME_TYPE; + [UI_ELEMENT_PAINT_TYPE]?: UI_ELEMENT_PAINT_TYPE_TYPE; + [UI_ELEMENT_RENDER_TIME]?: UI_ELEMENT_RENDER_TIME_TYPE; + [UI_ELEMENT_TYPE]?: UI_ELEMENT_TYPE_TYPE; + [UI_ELEMENT_URL]?: UI_ELEMENT_URL_TYPE; + [UI_ELEMENT_WIDTH]?: UI_ELEMENT_WIDTH_TYPE; [URL]?: URL_TYPE; [URL_DOMAIN]?: URL_DOMAIN_TYPE; [URL_FRAGMENT]?: URL_FRAGMENT_TYPE; diff --git a/model/attributes/db/db__driver__name.json b/model/attributes/db/db__driver__name.json index 86e688ce..38ca0bf3 100644 --- a/model/attributes/db/db__driver__name.json +++ b/model/attributes/db/db__driver__name.json @@ -1,10 +1,17 @@ { "key": "db.driver.name", - "brief": "The name of the driver used for database connections.", + "brief": "The name of the driver used for the database connection.", "type": "string", "pii": { "key": "false" }, "is_in_otel": false, - "example": "psycopg2" + "example": "psycopg2", + "changelog": [ + { + "version": "next", + "prs": [297], + "description": "Added db.driver.name attribute" + } + ] } diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 9a273a90..02cd88bc 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -21,6 +21,7 @@ class AttributeType(Enum): BOOLEAN_ARRAY = "boolean[]" INTEGER_ARRAY = "integer[]" DOUBLE_ARRAY = "double[]" + ANY = "any" class IsPii(Enum): @@ -51,6 +52,20 @@ class DeprecationInfo: 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.""" @@ -82,29 +97,47 @@ class AttributeMetadata: 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", "AI_COMPLETION_TOKENS_USED", + "AI_DOCUMENTS", "AI_FINISH_REASON", "AI_FREQUENCY_PENALTY", "AI_FUNCTION_CALL", "AI_GENERATION_ID", "AI_INPUT_MESSAGES", + "AI_IS_SEARCH_REQUIRED", + "AI_METADATA", "AI_MODEL_PROVIDER", "AI_MODEL_ID", "AI_PIPELINE_NAME", + "AI_PREAMBLE", "AI_PRESENCE_PENALTY", "AI_PROMPT_TOKENS_USED", + "AI_RAW_PROMPTING", + "AI_RESPONSE_FORMAT", "AI_RESPONSES", + "AI_SEARCH_QUERIES", + "AI_SEARCH_RESULTS", "AI_SEED", "AI_STREAMING", + "AI_TAGS", "AI_TEMPERATURE", + "AI_TEXTS", "AI_TOOL_CALLS", "AI_TOOLS", "AI_TOP_K", "AI_TOP_P", + "AI_TOTAL_COST", "AI_TOTAL_TOKENS_USED", + "AI_WARNINGS", + "CLS_SOURCE_KEY", + "CLS", "CODE_FILEPATH", "CODE_FUNCTION", "CODE_LINENO", @@ -114,7 +147,10 @@ class _AttributeNamesMeta(type): "DB_SQL_BINDINGS", "DB_STATEMENT", "DB_SYSTEM", + "DEVICEMEMORY", "ENVIRONMENT", + "FCP", + "FP", "FS_ERROR", "GEN_AI_PROMPT", "GEN_AI_REQUEST_AVAILABLE_TOOLS", @@ -123,8 +159,12 @@ class _AttributeNamesMeta(type): "GEN_AI_RESPONSE_TOOL_CALLS", "GEN_AI_SYSTEM", "GEN_AI_SYSTEM_MESSAGE", + "GEN_AI_TOOL_INPUT", + "GEN_AI_TOOL_MESSAGE", + "GEN_AI_TOOL_OUTPUT", "GEN_AI_USAGE_COMPLETION_TOKENS", "GEN_AI_USAGE_PROMPT_TOKENS", + "HARDWARECONCURRENCY", "HTTP_CLIENT_IP", "HTTP_FLAVOR", "HTTP_HOST", @@ -137,6 +177,14 @@ class _AttributeNamesMeta(type): "HTTP_TARGET", "HTTP_URL", "HTTP_USER_AGENT", + "INP", + "LCP_ELEMENT", + "LCP_ID", + "LCP_LOADTIME", + "LCP_RENDERTIME", + "LCP_SIZE", + "LCP_URL", + "LCP", "METHOD", "NET_HOST_IP", "NET_HOST_NAME", @@ -156,12 +204,17 @@ class _AttributeNamesMeta(type): "QUERY_KEY", "RELEASE", "REPLAY_ID", + "RESOURCE_DEPLOYMENT_ENVIRONMENT", "RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME", "ROUTE", "SENTRY_BROWSER_NAME", "SENTRY_BROWSER_VERSION", "_SENTRY_SEGMENT_ID", + "SENTRY_SOURCE", + "SENTRY_TRACE_PARENT_SPAN_ID", "TRANSACTION", + "TTFB_REQUESTTIME", + "TTFB", "URL", } @@ -187,6 +240,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: List[str] Contains PII: true Defined in OTEL: No + DEPRECATED: No replacement at this time Example: ["Citation 1","Citation 2"] """ @@ -211,6 +265,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: List[str] Contains PII: true Defined in OTEL: No + DEPRECATED: No replacement at this time Example: ["document1.txt","document2.pdf"] """ @@ -281,6 +336,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: bool Contains PII: false Defined in OTEL: No + DEPRECATED: No replacement at this time Example: false """ @@ -291,6 +347,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + DEPRECATED: No replacement at this time Example: "{\"user_id\": 123, \"session_id\": \"abc123\"}" """ @@ -337,6 +394,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: true Defined in OTEL: No + Aliases: gen_ai.system_instructions + DEPRECATED: Use gen_ai.system_instructions instead Example: "You are now a clown." """ @@ -371,6 +430,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: bool Contains PII: false Defined in OTEL: No + DEPRECATED: No replacement at this time Example: true """ @@ -381,6 +441,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + DEPRECATED: No replacement at this time Example: "json_object" """ @@ -402,6 +463,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: List[str] Contains PII: true Defined in OTEL: No + DEPRECATED: No replacement at this time Example: ["climate change effects","renewable energy"] """ @@ -412,6 +474,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: List[str] Contains PII: true Defined in OTEL: No + DEPRECATED: No replacement at this time Example: ["search_result_1, search_result_2"] """ @@ -446,6 +509,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + DEPRECATED: No replacement at this time Example: "{\"executed_function\": \"add_integers\"}" """ @@ -468,6 +532,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: List[str] Contains PII: true Defined in OTEL: No + Aliases: gen_ai.input.messages + DEPRECATED: Use gen_ai.input.messages instead Example: ["Hello, how are you?","What is the capital of France?"] """ @@ -524,6 +590,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: float Contains PII: maybe Defined in OTEL: No + Aliases: gen_ai.cost.total_tokens + DEPRECATED: Use gen_ai.cost.total_tokens instead Example: 12.34 """ @@ -546,6 +614,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: List[str] Contains PII: true Defined in OTEL: No + DEPRECATED: No replacement at this time Example: ["Token limit exceeded"] """ @@ -635,6 +704,189 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "120.0.6099.130" """ + # 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." + ) + """The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N + + Type: str + Contains PII: maybe + Defined in OTEL: No + Has Dynamic Suffix: true + Aliases: cls.source. + Example: "body > div#app" + """ + + # 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" + ) + """The value of the recorded Cumulative Layout Shift (CLS) web vital + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: cls + Example: 0.2361 + """ + + # 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" + ) + """The time it takes for the browser to render the first piece of meaningful content on the screen + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: fcp + Example: 547.6951 + """ + + # 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" + ) + """The time in milliseconds it takes for the browser to render the first pixel on the screen + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: fp + Example: 477.1926 + """ + + # 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" + ) + """The value of the recorded Interaction to Next Paint (INP) web vital + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: inp + Example: 200 + """ + + # 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" + ) + """The HTML element selector or component name for which LCP was reported + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.element + Example: "body > div#app > div#container > div" + """ + + # 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" + ) + """The id of the dom element responsible for the largest contentful paint + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.id + Example: "#gero" + """ + + # 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" + ) + """The time it took for the LCP element to be loaded + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.loadTime + Example: 1402 + """ + + # 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" + ) + """The time it took for the LCP element to be rendered + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.renderTime + Example: 1685 + """ + + # 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" + ) + """The size of the largest contentful paint element + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.size + Example: 1024 + """ + + # 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" + ) + """The url of the dom element responsible for the largest contentful paint + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp.url + Example: "https://example.com/static/img.png" + """ + + # 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" + ) + """The value of the recorded Largest Contentful Paint (LCP) web vital + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: lcp + Example: 2500 + """ + + # 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" + """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 + Contains PII: maybe + Defined in OTEL: No + Aliases: ttfb.requestTime + Example: 1554.5814 + """ + + # 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" + ) + """The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: ttfb + Example: 194.3322 + """ + # Path: model/attributes/cache/cache__hit.json CACHE_HIT: Literal["cache.hit"] = "cache.hit" """If the cache was hit during this span. @@ -750,6 +1002,31 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 12 """ + # Path: model/attributes/cls/cls__source__[key].json + CLS_SOURCE_KEY: Literal["cls.source."] = "cls.source." + """The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N + + Type: str + Contains PII: maybe + Defined in OTEL: No + Has Dynamic Suffix: true + Aliases: browser.web_vital.cls.source. + DEPRECATED: Use browser.web_vital.cls.source. instead - The CLS source is now recorded as a browser.web_vital.cls.source. attribute. + Example: "body > div#app" + """ + + # Path: model/attributes/cls.json + CLS: Literal["cls"] = "cls" + """The value of the recorded Cumulative Layout Shift (CLS) web vital + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.cls.value + DEPRECATED: Use browser.web_vital.cls.value instead - The CLS web vital is now recorded as a browser.web_vital.cls.value attribute. + Example: 0.2361 + """ + # Path: model/attributes/code/code__file__path.json CODE_FILE_PATH: Literal["code.file.path"] = "code.file.path" """The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). @@ -894,7 +1171,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): # Path: model/attributes/db/db__driver__name.json DB_DRIVER_NAME: Literal["db.driver.name"] = "db.driver.name" - """The name of the driver used for database connections. + """The name of the driver used for the database connection. Type: str Contains PII: false @@ -1068,6 +1345,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "Apple" """ + # Path: model/attributes/device/device__cpu__logical_core_count.json + DEVICE_CPU_LOGICAL_CORE_COUNT: Literal["device.cpu.logical_core_count"] = ( + "device.cpu.logical_core_count" + ) + """The number of logical CPU cores available. + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: hardwareConcurrency + Example: 14 + """ + # Path: model/attributes/device/device__family.json DEVICE_FAMILY: Literal["device.family"] = "device.family" """The family of the device. @@ -1078,6 +1368,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "iPhone" """ + # Path: model/attributes/device/device__memory__estimated_capacity.json + 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 + Contains PII: maybe + Defined in OTEL: No + Aliases: deviceMemory + Example: 8 + """ + # Path: model/attributes/device/device__model.json DEVICE_MODEL: Literal["device.model"] = "device.model" """The model of the device. @@ -1088,6 +1391,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "iPhone 15 Pro Max" """ + # Path: model/attributes/deviceMemory.json + DEVICEMEMORY: Literal["deviceMemory"] = "deviceMemory" + """The estimated total memory capacity of the device, only a rough estimation in gigabytes. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: device.memory.estimated_capacity + DEPRECATED: Use device.memory.estimated_capacity instead - Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future + Example: "8 GB" + """ + # Path: model/attributes/environment.json ENVIRONMENT: Literal["environment"] = "environment" """The sentry environment. @@ -1210,6 +1525,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "timer" """ + # Path: model/attributes/fcp.json + FCP: Literal["fcp"] = "fcp" + """The time it takes for the browser to render the first piece of meaningful content on the screen + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.fcp.value + DEPRECATED: Use browser.web_vital.fcp.value instead - This attribute is being deprecated in favor of browser.web_vital.fcp.value + Example: 547.6951 + """ + # Path: model/attributes/flag/flag__evaluation__[key].json FLAG_EVALUATION_KEY: Literal["flag.evaluation."] = "flag.evaluation." """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. @@ -1221,6 +1548,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "flag.evaluation.is_new_ui=true" """ + # Path: model/attributes/fp.json + FP: Literal["fp"] = "fp" + """The time it takes for the browser to render the first pixel on the screen + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.fp.value + DEPRECATED: Use browser.web_vital.fp.value instead - This attribute is being deprecated in favor of browser.web_vital.fp.value + Example: 477.1926 + """ + # Path: model/attributes/frames/frames__delay.json FRAMES_DELAY: Literal["frames.delay"] = "frames.delay" """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/). @@ -1325,6 +1664,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: float Contains PII: maybe Defined in OTEL: No + Aliases: ai.total_cost Example: 12.34 """ @@ -1347,6 +1687,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: Yes + Aliases: ai.texts 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\"}]}]" """ @@ -1662,6 +2003,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: Yes + Aliases: ai.preamble Example: "You are a helpful assistant" """ @@ -1674,6 +2016,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: Yes + Aliases: gen_ai.tool.input Example: "{\"location\": \"Paris\"}" """ @@ -1686,6 +2029,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: Yes + Aliases: gen_ai.tool.output, gen_ai.tool.message Example: "rainy, 57°F" """ @@ -1720,6 +2064,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: gen_ai.tool.call.arguments + DEPRECATED: Use gen_ai.tool.call.arguments instead Example: "{\"location\": \"Paris\"}" """ @@ -1730,6 +2076,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: true Defined in OTEL: No + Aliases: gen_ai.tool.call.result, gen_ai.tool.output + DEPRECATED: Use gen_ai.tool.call.result instead Example: "rainy, 57°F" """ @@ -1751,6 +2099,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: gen_ai.tool.call.result, gen_ai.tool.message + DEPRECATED: Use gen_ai.tool.call.result instead Example: "rainy, 57°F" """ @@ -1887,6 +2237,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "query" """ + # Path: model/attributes/hardwareConcurrency.json + HARDWARECONCURRENCY: Literal["hardwareConcurrency"] = "hardwareConcurrency" + """The number of logical CPU cores available. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: device.cpu.logical_core_count + DEPRECATED: Use device.cpu.logical_core_count instead - Old namespace-less attribute, to be replaced with device.cpu.logical_core_count for span-first future + Example: "14" + """ + # Path: model/attributes/http/http__client_ip.json HTTP_CLIENT_IP: Literal["http.client_ip"] = "http.client_ip" """Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. @@ -2273,6 +2635,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "https" """ + # 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" + ) + """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 + Contains PII: maybe + Defined in OTEL: No + Example: 50 + """ + # Path: model/attributes/http/http__server_name.json HTTP_SERVER_NAME: Literal["http.server_name"] = "http.server_name" """The server domain name @@ -2342,6 +2716,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "f47ac10b58cc4372a5670e02b2c3d479" """ + # Path: model/attributes/inp.json + INP: Literal["inp"] = "inp" + """The value of the recorded Interaction to Next Paint (INP) web vital + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.inp.value + DEPRECATED: Use browser.web_vital.inp.value instead - The INP web vital is now recorded as a browser.web_vital.inp.value attribute. + Example: 200 + """ + # Path: model/attributes/jvm/jvm__gc__action.json JVM_GC_ACTION: Literal["jvm.gc.action"] = "jvm.gc.action" """Name of the garbage collector action. @@ -2409,6 +2795,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: browser.web_vital.lcp.element + DEPRECATED: Use browser.web_vital.lcp.element instead - The LCP element is now recorded as a browser.web_vital.lcp.element attribute. Example: "img" """ @@ -2419,9 +2807,35 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: browser.web_vital.lcp.id + DEPRECATED: Use browser.web_vital.lcp.id instead - The LCP id is now recorded as a browser.web_vital.lcp.id attribute. Example: "#hero" """ + # Path: model/attributes/lcp/lcp__loadTime.json + LCP_LOADTIME: Literal["lcp.loadTime"] = "lcp.loadTime" + """The time it took for the LCP element to be loaded + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.lcp.load_time + DEPRECATED: Use browser.web_vital.lcp.load_time instead - The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute. + Example: 1402 + """ + + # Path: model/attributes/lcp/lcp__renderTime.json + LCP_RENDERTIME: Literal["lcp.renderTime"] = "lcp.renderTime" + """The time it took for the LCP element to be rendered + + Type: int + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.lcp.render_time + DEPRECATED: Use browser.web_vital.lcp.render_time instead - The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute. + Example: 1685 + """ + # Path: model/attributes/lcp/lcp__size.json LCP_SIZE: Literal["lcp.size"] = "lcp.size" """The size of the largest contentful paint element. @@ -2429,6 +2843,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: int Contains PII: maybe Defined in OTEL: No + Aliases: browser.web_vital.lcp.size + DEPRECATED: Use browser.web_vital.lcp.size instead - The LCP size is now recorded as a browser.web_vital.lcp.size attribute. Example: 1234 """ @@ -2439,9 +2855,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + Aliases: browser.web_vital.lcp.url + DEPRECATED: Use browser.web_vital.lcp.url instead - The LCP url is now recorded as a browser.web_vital.lcp.url attribute. Example: "https://example.com" """ + # Path: model/attributes/lcp.json + LCP: Literal["lcp"] = "lcp" + """The value of the recorded Largest Contentful Paint (LCP) web vital + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.lcp.value + DEPRECATED: Use browser.web_vital.lcp.value instead - The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute. + Example: 2500 + """ + # Path: model/attributes/logger/logger__name.json LOGGER_NAME: Literal["logger.name"] = "logger.name" """The name of the logger that generated this event. @@ -3526,6 +3956,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "123e4567e89b12d3a456426614174000" """ + # Path: model/attributes/resource/resource__deployment__environment.json + RESOURCE_DEPLOYMENT_ENVIRONMENT: Literal["resource.deployment.environment"] = ( + "resource.deployment.environment" + ) + """The software deployment environment name. + + Type: str + Contains PII: false + Defined in OTEL: Yes + DEPRECATED: Use sentry.environment instead + Example: "production" + """ + # Path: model/attributes/resource/resource__deployment__environment__name.json RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal[ "resource.deployment.environment.name" @@ -4092,9 +4535,20 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 0.5 """ + # Path: model/attributes/sentry/sentry__source.json + SENTRY_SOURCE: Literal["sentry.source"] = "sentry.source" + """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: str + Contains PII: false + Defined in OTEL: No + DEPRECATED: Use sentry.span.source instead - This attribute is being deprecated in favor of sentry.span.source + Example: "route" + """ + # Path: model/attributes/sentry/sentry__span__source.json SENTRY_SPAN_SOURCE: Literal["sentry.span.source"] = "sentry.span.source" - """The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. + """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: str Contains PII: false @@ -4122,6 +4576,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 200 """ + # Path: model/attributes/sentry/sentry__timestamp__sequence.json + 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 + Contains PII: false + Defined in OTEL: No + Example: 0 + """ + # 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" @@ -4131,6 +4597,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: false Defined in OTEL: No + DEPRECATED: No replacement at this time Example: "b0e6f15b45c36b12" """ @@ -4230,6 +4697,30 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "GET /" """ + # Path: model/attributes/ttfb/ttfb__requestTime.json + TTFB_REQUESTTIME: Literal["ttfb.requestTime"] = "ttfb.requestTime" + """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 + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.ttfb.request_time + DEPRECATED: Use browser.web_vital.ttfb.request_time instead - This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time + Example: 1554.5814 + """ + + # Path: model/attributes/ttfb.json + TTFB: Literal["ttfb"] = "ttfb" + """The value of the recorded Time To First Byte (TTFB) web vital in milliseconds + + Type: float + Contains PII: maybe + Defined in OTEL: No + Aliases: browser.web_vital.ttfb.value + DEPRECATED: Use browser.web_vital.ttfb.value instead - This attribute is being deprecated in favor of browser.web_vital.ttfb.value + Example: 194 + """ + # Path: model/attributes/type.json TYPE: Literal["type"] = "type" """More granular type of the operation happening. @@ -4270,44 +4761,134 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: true """ - # Path: model/attributes/url/url__domain.json - URL_DOMAIN: Literal["url.domain"] = "url.domain" - """Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + # Path: model/attributes/ui/ui__element__height.json + UI_ELEMENT_HEIGHT: Literal["ui.element.height"] = "ui.element.height" + """The height of the UI element (for Html in pixels) - Type: str + Type: int Contains PII: maybe - Defined in OTEL: Yes - Example: "example.com" + Defined in OTEL: No + Example: 256 """ - # Path: model/attributes/url/url__fragment.json - URL_FRAGMENT: Literal["url.fragment"] = "url.fragment" - """The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does. + # Path: model/attributes/ui/ui__element__id.json + UI_ELEMENT_ID: Literal["ui.element.id"] = "ui.element.id" + """The id of the UI element Type: str Contains PII: maybe - Defined in OTEL: Yes - Example: "details" + Defined in OTEL: No + Example: "btn-login" """ - # Path: model/attributes/url/url__full.json - URL_FULL: Literal["url.full"] = "url.full" - """The URL of the resource that was fetched. + # Path: model/attributes/ui/ui__element__identifier.json + UI_ELEMENT_IDENTIFIER: Literal["ui.element.identifier"] = "ui.element.identifier" + """The identifier used to measure the UI element timing Type: str Contains PII: maybe - Defined in OTEL: Yes - Aliases: http.url, url - Example: "https://example.com/test?foo=bar#buzz" + Defined in OTEL: No + Example: "heroImage" """ - # Path: model/attributes/url/url__path.json - URL_PATH: Literal["url.path"] = "url.path" - """The URI path component. + # Path: model/attributes/ui/ui__element__load_time.json + UI_ELEMENT_LOAD_TIME: Literal["ui.element.load_time"] = "ui.element.load_time" + """The loading time of a UI element (from time origin to finished loading) - Type: str + Type: float Contains PII: maybe - Defined in OTEL: Yes + Defined in OTEL: No + Example: 998.2234 + """ + + # Path: model/attributes/ui/ui__element__paint_type.json + UI_ELEMENT_PAINT_TYPE: Literal["ui.element.paint_type"] = "ui.element.paint_type" + """The type of element paint. Can either be 'image-paint' or 'text-paint' + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "image-paint" + """ + + # Path: model/attributes/ui/ui__element__render_time.json + UI_ELEMENT_RENDER_TIME: Literal["ui.element.render_time"] = "ui.element.render_time" + """The rendering time of the UI element (from time origin to finished rendering) + + Type: float + Contains PII: maybe + Defined in OTEL: No + Example: 1023.1124 + """ + + # Path: model/attributes/ui/ui__element__type.json + UI_ELEMENT_TYPE: Literal["ui.element.type"] = "ui.element.type" + """type of the UI element + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "img" + """ + + # Path: model/attributes/ui/ui__element__url.json + UI_ELEMENT_URL: Literal["ui.element.url"] = "ui.element.url" + """The URL of the UI element (e.g. an img src) + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "https://assets.myapp.com/hero.png" + """ + + # Path: model/attributes/ui/ui__element__width.json + UI_ELEMENT_WIDTH: Literal["ui.element.width"] = "ui.element.width" + """The width of the UI element (for HTML in pixels) + + Type: int + Contains PII: maybe + Defined in OTEL: No + Example: 512 + """ + + # Path: model/attributes/url/url__domain.json + URL_DOMAIN: Literal["url.domain"] = "url.domain" + """Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + + Type: str + Contains PII: maybe + Defined in OTEL: Yes + Example: "example.com" + """ + + # Path: model/attributes/url/url__fragment.json + URL_FRAGMENT: Literal["url.fragment"] = "url.fragment" + """The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does. + + Type: str + Contains PII: maybe + Defined in OTEL: Yes + Example: "details" + """ + + # Path: model/attributes/url/url__full.json + URL_FULL: Literal["url.full"] = "url.full" + """The URL of the resource that was fetched. + + Type: str + Contains PII: maybe + Defined in OTEL: Yes + Aliases: http.url, url + Example: "https://example.com/test?foo=bar#buzz" + """ + + # Path: model/attributes/url/url__path.json + URL_PATH: Literal["url.path"] = "url.path" + """The URI path component. + + Type: str + Contains PII: maybe + Defined in OTEL: Yes Example: "/foo" """ @@ -4876,6 +5457,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["Citation 1", "Citation 2"], + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "ai.completion_tokens.used": AttributeMetadata( brief="The number of tokens used to respond to the message.", @@ -4886,6 +5472,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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]), + ChangelogEntry(version="0.1.0", prs=[57, 61]), + ChangelogEntry(version="0.0.0"), + ], ), "ai.documents": AttributeMetadata( brief="Documents or content chunks used as context for the AI model.", @@ -4893,6 +5484,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["document1.txt", "document2.pdf"], + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "ai.finish_reason": AttributeMetadata( brief="The reason why the model stopped generating.", @@ -4902,6 +5498,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="COMPLETE", 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]), + ], ), "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.", @@ -4911,6 +5510,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=0.5, deprecation=DeprecationInfo(replacement="gen_ai.request.frequency_penalty"), aliases=["gen_ai.request.frequency_penalty"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108]), + ], ), "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", @@ -4920,6 +5523,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="function_name", deprecation=DeprecationInfo(replacement="gen_ai.tool.name"), aliases=["gen_ai.tool.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108]), + ], ), "ai.generation_id": AttributeMetadata( brief="Unique identifier for the completion.", @@ -4929,6 +5535,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="gen_123abc", deprecation=DeprecationInfo(replacement="gen_ai.response.id"), aliases=["gen_ai.response.id"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108, 127]), + ], ), "ai.input_messages": AttributeMetadata( brief="The input messages sent to the model", @@ -4939,6 +5548,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo(replacement="gen_ai.request.messages"), aliases=["gen_ai.request.messages"], sdks=["python"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[65, 119]), + ChangelogEntry(version="0.0.0"), + ], ), "ai.is_search_required": AttributeMetadata( brief="Boolean indicating if the model needs to perform a search.", @@ -4946,6 +5559,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=False, + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "ai.metadata": AttributeMetadata( brief="Extra metadata passed to an AI pipeline step.", @@ -4953,6 +5571,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example='{"user_id": 123, "session_id": "abc123"}', + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55, 127]), + ], ), "ai.model.provider": AttributeMetadata( brief="The provider of the model.", @@ -4962,6 +5585,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="openai", 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]), + ], ), "ai.model_id": AttributeMetadata( brief="The vendor-specific ID of the model used.", @@ -4972,6 +5599,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo(replacement="gen_ai.response.model"), aliases=["gen_ai.response.model"], sdks=["python"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[57, 61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "ai.pipeline.name": AttributeMetadata( brief="The name of the AI pipeline.", @@ -4981,6 +5612,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="Autofix Pipeline", deprecation=DeprecationInfo(replacement="gen_ai.pipeline.name"), aliases=["gen_ai.pipeline.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[53, 76, 108, 127]), + ], ), "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.", @@ -4988,6 +5622,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="You are now a clown.", + deprecation=DeprecationInfo(replacement="gen_ai.system_instructions"), + aliases=["gen_ai.system_instructions"], + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "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.", @@ -4997,6 +5637,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=0.5, deprecation=DeprecationInfo(replacement="gen_ai.request.presence_penalty"), aliases=["gen_ai.request.presence_penalty"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108]), + ], ), "ai.prompt_tokens.used": AttributeMetadata( brief="The number of tokens used to process just the prompt.", @@ -5007,6 +5651,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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]), + ChangelogEntry(version="0.1.0", prs=[57, 61]), + ChangelogEntry(version="0.0.0"), + ], ), "ai.raw_prompting": AttributeMetadata( brief="When enabled, the user’s prompt will be sent to the model without any pre-processing.", @@ -5014,6 +5663,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "ai.response_format": AttributeMetadata( brief="For an AI model call, the format of the response", @@ -5021,6 +5675,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="json_object", + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55, 127]), + ], ), "ai.responses": AttributeMetadata( brief="The response messages sent back by the AI model.", @@ -5030,6 +5689,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=["hello", "world"], deprecation=DeprecationInfo(replacement="gen_ai.response.text"), sdks=["python"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[65, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "ai.search_queries": AttributeMetadata( brief="Queries used to search for relevant context or documents.", @@ -5037,6 +5700,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["climate change effects", "renewable energy"], + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "ai.search_results": AttributeMetadata( brief="Results returned from search queries for context.", @@ -5044,6 +5712,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["search_result_1, search_result_2"], + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "ai.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", @@ -5053,6 +5726,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="1234567890", deprecation=DeprecationInfo(replacement="gen_ai.request.seed"), aliases=["gen_ai.request.seed"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108, 127]), + ], ), "ai.streaming": AttributeMetadata( brief="Whether the request was streamed back.", @@ -5063,6 +5739,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo(replacement="gen_ai.response.streaming"), aliases=["gen_ai.response.streaming"], sdks=["python"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[76, 108]), + ChangelogEntry(version="0.0.0"), + ], ), "ai.tags": AttributeMetadata( brief="Tags that describe an AI pipeline step.", @@ -5070,6 +5750,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example='{"executed_function": "add_integers"}', + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55, 127]), + ], ), "ai.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", @@ -5079,6 +5764,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=0.1, deprecation=DeprecationInfo(replacement="gen_ai.request.temperature"), aliases=["gen_ai.request.temperature"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108]), + ], ), "ai.texts": AttributeMetadata( brief="Raw text inputs provided to the model.", @@ -5086,6 +5775,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"), + aliases=["gen_ai.input.messages"], + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "ai.tool_calls": AttributeMetadata( brief="For an AI model call, the tool calls that were made.", @@ -5094,6 +5789,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=["tool_call_1", "tool_call_2"], deprecation=DeprecationInfo(replacement="gen_ai.response.tool_calls"), + changelog=[ + ChangelogEntry(version="0.1.0", prs=[55, 65]), + ], ), "ai.tools": AttributeMetadata( brief="For an AI model call, the functions that are available", @@ -5102,6 +5800,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=["function_1", "function_2"], deprecation=DeprecationInfo(replacement="gen_ai.request.available_tools"), + changelog=[ + ChangelogEntry(version="0.1.0", prs=[55, 65, 127]), + ], ), "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).", @@ -5111,6 +5812,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=35, deprecation=DeprecationInfo(replacement="gen_ai.request.top_k"), aliases=["gen_ai.request.top_k"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108]), + ], ), "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).", @@ -5120,6 +5825,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=0.7, deprecation=DeprecationInfo(replacement="gen_ai.request.top_p"), aliases=["gen_ai.request.top_p"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[55, 57, 61, 108]), + ], ), "ai.total_cost": AttributeMetadata( brief="The total cost for the tokens used.", @@ -5127,6 +5836,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=12.34, + deprecation=DeprecationInfo(replacement="gen_ai.cost.total_tokens"), + aliases=["gen_ai.cost.total_tokens"], + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[53]), + ], ), "ai.total_tokens.used": AttributeMetadata( brief="The total number of tokens used to process the prompt.", @@ -5137,6 +5853,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo(replacement="gen_ai.usage.total_tokens"), aliases=["gen_ai.usage.total_tokens"], sdks=["python"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[57, 61, 108]), + ChangelogEntry(version="0.0.0"), + ], ), "ai.warnings": AttributeMetadata( brief="Warning messages generated during model execution.", @@ -5144,6 +5865,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["Token limit exceeded"], + deprecation=DeprecationInfo(), + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.1.0", prs=[55]), + ], ), "app_start_type": AttributeMetadata( brief="Mobile app start variant. Either cold or warm.", @@ -5151,6 +5877,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="cold", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "blocked_main_thread": AttributeMetadata( brief="Whether the main thread was blocked by the span.", @@ -5158,6 +5888,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "browser.name": AttributeMetadata( brief="The name of the browser.", @@ -5166,6 +5899,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="Chrome", aliases=["sentry.browser.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127, 139]), + ChangelogEntry(version="0.0.0"), + ], ), "browser.report.type": AttributeMetadata( brief="A browser report sent via reporting API..", @@ -5173,6 +5910,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="network-error", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[68, 127]), + ], ), "browser.script.invoker": AttributeMetadata( brief="How a script was called in the browser.", @@ -5181,6 +5921,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="Window.requestAnimationFrame", sdks=["browser"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "browser.script.invoker_type": AttributeMetadata( brief="Browser script entry point type.", @@ -5189,6 +5933,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="event-listener", sdks=["browser"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "browser.script.source_char_position": AttributeMetadata( brief="A number representing the script character position of the script.", @@ -5197,6 +5945,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=678, sdks=["browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "browser.version": AttributeMetadata( brief="The version of the browser.", @@ -5205,6 +5957,190 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="120.0.6099.130", aliases=["sentry.browser.version"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[59, 127, 139]), + ], + ), + "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), + is_in_otel=False, + has_dynamic_suffix=True, + example="body > div#app", + aliases=["cls.source."], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[234]), + ], + ), + "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), + 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", + ), + ], + ), + "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), + is_in_otel=False, + example=547.6951, + aliases=["fcp"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[235]), + ], + ), + "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), + is_in_otel=False, + example=477.1926, + aliases=["fp"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[235]), + ], + ), + "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), + 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", + ), + ], + ), + "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), + is_in_otel=False, + example="body > div#app > div#container > div", + aliases=["lcp.element"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ], + ), + "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), + is_in_otel=False, + example="#gero", + aliases=["lcp.id"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ], + ), + "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), + is_in_otel=False, + example=1402, + aliases=["lcp.loadTime"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ], + ), + "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), + is_in_otel=False, + example=1685, + aliases=["lcp.renderTime"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ], + ), + "browser.web_vital.lcp.size": AttributeMetadata( + brief="The size of the largest contentful paint element", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=1024, + aliases=["lcp.size"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ], + ), + "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), + is_in_otel=False, + example="https://example.com/static/img.png", + aliases=["lcp.url"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ], + ), + "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), + 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", + ), + ], + ), + "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), + is_in_otel=False, + example=1554.5814, + aliases=["ttfb.requestTime"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[235]), + ], + ), + "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), + is_in_otel=False, + example=194.3322, + aliases=["ttfb"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[235]), + ], ), "cache.hit": AttributeMetadata( brief="If the cache was hit during this span.", @@ -5213,6 +6149,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=True, sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "cache.item_size": AttributeMetadata( brief="The size of the requested item in the cache. In bytes.", @@ -5220,6 +6159,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=58, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "cache.key": AttributeMetadata( brief="The key of the cache accessed.", @@ -5228,6 +6171,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=["my-cache-key", "my-other-cache-key"], sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "cache.operation": AttributeMetadata( brief="The operation being performed on the cache.", @@ -5236,6 +6182,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="get", sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "cache.ttl": AttributeMetadata( brief="The ttl of the cache in seconds", @@ -5244,6 +6194,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=120, sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "channel": AttributeMetadata( brief="The channel name that is being used.", @@ -5252,6 +6206,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="mail", sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "client.address": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", @@ -5260,6 +6218,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="example.com", aliases=["http.client_ip"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[106, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "client.port": AttributeMetadata( brief="Client port number.", @@ -5267,6 +6229,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=5432, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "cloudflare.d1.duration": AttributeMetadata( brief="The duration of a Cloudflare D1 operation.", @@ -5275,6 +6241,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=543, sdks=["javascript-cloudflare"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "cloudflare.d1.rows_read": AttributeMetadata( brief="The number of rows read in a Cloudflare D1 operation.", @@ -5283,6 +6253,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=12, sdks=["javascript-cloudflare"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "cloudflare.d1.rows_written": AttributeMetadata( brief="The number of rows written in a Cloudflare D1 operation.", @@ -5291,6 +6265,49 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=12, sdks=["javascript-cloudflare"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], + ), + "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), + 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, + ), + aliases=["browser.web_vital.cls.source."], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[234]), + ], + ), + "cls": AttributeMetadata( + brief="The value of the recorded Cumulative Layout Shift (CLS) web vital", + type=AttributeType.DOUBLE, + 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, + ), + 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", + ), + ], ), "code.file.path": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", @@ -5299,6 +6316,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="/app/myapplication/http/handler/server.py", aliases=["code.filepath"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "code.filepath": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", @@ -5308,6 +6328,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="/app/myapplication/http/handler/server.py", deprecation=DeprecationInfo(replacement="code.file.path"), aliases=["code.file.path"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "code.function": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", @@ -5317,6 +6341,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="server_request", deprecation=DeprecationInfo(replacement="code.function.name"), aliases=["code.function.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 74]), + ChangelogEntry(version="0.0.0"), + ], ), "code.function.name": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", @@ -5325,6 +6353,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="server_request", aliases=["code.function"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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", @@ -5333,6 +6365,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=42, aliases=["code.lineno"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "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", @@ -5342,6 +6378,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=42, deprecation=DeprecationInfo(replacement="code.line.number"), aliases=["code.line.number"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[61, 108]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -5353,6 +6394,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="code.function.name", reason="code.function.name should include the namespace.", ), + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 74]), + ChangelogEntry(version="0.0.0"), + ], ), "culture.calendar": AttributeMetadata( brief="The calendar system used by the culture.", @@ -5360,6 +6405,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GregorianCalendar", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[243]), + ], ), "culture.display_name": AttributeMetadata( brief="Human readable name of the culture.", @@ -5367,6 +6415,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="English (United States)", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[243]), + ], ), "culture.is_24_hour_format": AttributeMetadata( brief="Whether the culture uses 24-hour time format.", @@ -5374,6 +6425,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=True, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[243]), + ], ), "culture.locale": AttributeMetadata( brief="The locale identifier following RFC 4646.", @@ -5381,6 +6435,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="en-US", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[243]), + ], ), "culture.timezone": AttributeMetadata( brief="The timezone of the culture, as a geographic timezone identifier.", @@ -5388,6 +6445,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Europe/Vienna", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[243]), + ], ), "db.collection.name": AttributeMetadata( brief="The name of a collection (table, container) within the database.", @@ -5395,13 +6455,22 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="users", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[106, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "db.driver.name": AttributeMetadata( - brief="The name of the driver used for database connections.", + brief="The name of the driver used for the database connection.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="psycopg2", + changelog=[ + ChangelogEntry( + version="next", prs=[297], description="Added db.driver.name attribute" + ), + ], ), "db.name": AttributeMetadata( brief="The name of the database being accessed.", @@ -5411,6 +6480,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="customers", deprecation=DeprecationInfo(replacement="db.namespace"), aliases=["db.namespace"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "db.namespace": AttributeMetadata( brief="The name of the database being accessed.", @@ -5419,6 +6492,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="customers", aliases=["db.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "db.operation": AttributeMetadata( brief="The name of the operation being executed.", @@ -5430,6 +6507,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="db.operation.name", status=DeprecationStatus.NORMALIZE ), aliases=["db.operation.name"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[199]), + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "db.operation.name": AttributeMetadata( brief="The name of the operation being executed.", @@ -5438,6 +6520,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="SELECT", aliases=["db.operation"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -5446,6 +6532,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, has_dynamic_suffix=True, example="db.query.parameter.foo='123'", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[103, 127]), + ], ), "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.", @@ -5453,6 +6542,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT users;", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[208]), + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -5461,6 +6555,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="SELECT * FROM users WHERE id = $1", aliases=["db.statement"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[208]), + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "db.redis.connection": AttributeMetadata( brief="The redis connection name.", @@ -5469,6 +6568,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="my-redis-instance", sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "db.redis.parameters": AttributeMetadata( brief="The array of command parameters given to a redis command.", @@ -5477,6 +6580,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=["test", "*"], sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "db.sql.bindings": AttributeMetadata( brief="The array of query bindings.", @@ -5489,6 +6595,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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=[ + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "db.statement": AttributeMetadata( brief="The database statement being executed.", @@ -5500,6 +6610,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="db.query.text", status=DeprecationStatus.NORMALIZE ), aliases=["db.query.text"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[199]), + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -5511,6 +6626,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="db.system.name", status=DeprecationStatus.BACKFILL ), aliases=["db.system.name"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[199, 224]), + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -5519,6 +6639,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="postgresql", aliases=["db.system"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "db.user": AttributeMetadata( brief="The database user.", @@ -5526,6 +6650,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="fancy_user", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "device.brand": AttributeMetadata( brief="The brand of the device.", @@ -5533,6 +6660,25 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Apple", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[116, 127]), + ], + ), + "device.cpu.logical_core_count": AttributeMetadata( + brief="The number of logical CPU cores available.", + type=AttributeType.INTEGER, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=14, + aliases=["hardwareConcurrency"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry( + version="next", + prs=[281], + description="Added attribute device.cpu.logical_core_count to be used instead of hardwareConcurrency", + ), + ], ), "device.family": AttributeMetadata( brief="The family of the device.", @@ -5540,6 +6686,25 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="iPhone", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[116, 127]), + ], + ), + "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), + 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", + ), + ], ), "device.model": AttributeMetadata( brief="The model of the device.", @@ -5547,6 +6712,30 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="iPhone 15 Pro Max", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[116, 127]), + ], + ), + "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), + 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, + ), + 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", + ), + ], ), "environment": AttributeMetadata( brief="The sentry environment.", @@ -5556,6 +6745,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="production", deprecation=DeprecationInfo(replacement="sentry.environment"), aliases=["sentry.environment"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "error.type": AttributeMetadata( brief="Describes a class of error the operation ended with.", @@ -5563,6 +6756,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="timeout", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "event.id": AttributeMetadata( brief="The unique identifier for this event (log record)", @@ -5570,6 +6767,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1234567890, + changelog=[ + ChangelogEntry(version="0.1.0", prs=[101]), + ], ), "event.name": AttributeMetadata( brief="The name that uniquely identifies this event (log record)", @@ -5577,6 +6777,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Process Payload", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[101, 127]), + ], ), "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.", @@ -5584,6 +6787,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "exception.message": AttributeMetadata( brief="The error message.", @@ -5591,6 +6797,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ENOENT: no such file or directory", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -5598,6 +6808,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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)', + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -5605,6 +6819,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="OSError", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "faas.coldstart": AttributeMetadata( brief="A boolean that is true if the serverless function is executed for the first time (aka cold-start).", @@ -5612,6 +6830,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "faas.cron": AttributeMetadata( brief="A string containing the schedule period as Cron Expression.", @@ -5619,6 +6840,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="0/5 * * * ? *", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "faas.time": AttributeMetadata( brief="A string containing the function invocation time in the ISO 8601 format expressed in UTC.", @@ -5626,6 +6851,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="2020-01-23T13:47:06Z", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "faas.trigger": AttributeMetadata( brief="Type of the trigger which caused this function invocation.", @@ -5633,6 +6862,27 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="timer", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], + ), + "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), + 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, + ), + aliases=["browser.web_vital.fcp.value"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[235]), + ], ), "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.", @@ -5641,6 +6891,26 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, has_dynamic_suffix=True, example="flag.evaluation.is_new_ui=true", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[103]), + ], + ), + "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), + 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, + ), + aliases=["browser.web_vital.fp.value"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[235]), + ], ), "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/).", @@ -5648,6 +6918,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=5, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "frames.frozen": AttributeMetadata( brief="The number of frozen frames rendered during the lifetime of the span.", @@ -5655,6 +6929,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=3, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "frames.slow": AttributeMetadata( brief="The number of slow frames rendered during the lifetime of the span.", @@ -5662,6 +6940,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "frames.total": AttributeMetadata( brief="The number of total frames rendered during the lifetime of the span.", @@ -5669,6 +6951,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=60, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "fs_error": AttributeMetadata( brief="The error message of a file system error.", @@ -5681,6 +6967,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better.", ), sdks=["javascript-node"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "gen_ai.agent.name": AttributeMetadata( brief="The name of the agent being used.", @@ -5688,6 +6978,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ResearchAssistant", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[62, 127]), + ], ), "gen_ai.conversation.id": AttributeMetadata( brief="The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.", @@ -5695,6 +6988,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="conv_5j66UpCpwteGg4YSxUnt7lPY", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[250]), + ], ), "gen_ai.cost.input_tokens": AttributeMetadata( brief="The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).", @@ -5702,6 +6998,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=123.45, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[112]), + ], ), "gen_ai.cost.output_tokens": AttributeMetadata( brief="The cost of tokens used for creating the AI output in USD (without reasoning tokens).", @@ -5709,6 +7009,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=123.45, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[112]), + ], ), "gen_ai.cost.total_tokens": AttributeMetadata( brief="The total cost for the tokens used.", @@ -5716,6 +7020,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=12.34, + aliases=["ai.total_cost"], + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[126]), + ], ), "gen_ai.embeddings.input": AttributeMetadata( brief="The input to the embeddings model.", @@ -5723,6 +7033,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="What's the weather in Paris?", + changelog=[ + ChangelogEntry(version="0.3.1", prs=[195]), + ], ), "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:"..."}`.', @@ -5730,6 +7043,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"}]}]', + aliases=["ai.texts"], + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.4.0", prs=[221]), + ], ), "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.", @@ -5737,6 +7055,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="chat", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[225]), + ChangelogEntry(version="0.1.0", prs=[62, 127]), + ], ), "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", @@ -5744,6 +7066,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="tool", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[257]), + ChangelogEntry(version="0.1.0", prs=[113, 127]), + ], ), "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.", @@ -5751,6 +7077,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"}]', + changelog=[ + ChangelogEntry(version="0.4.0", prs=[221]), + ], ), "gen_ai.pipeline.name": AttributeMetadata( brief="Name of the AI pipeline or chain being executed.", @@ -5759,6 +7088,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="Autofix Pipeline", aliases=["ai.pipeline.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[76, 127]), + ], ), "gen_ai.prompt": AttributeMetadata( brief="The input messages sent to the model", @@ -5769,6 +7101,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo( reason="Deprecated from OTEL, use gen_ai.input.messages with the new format instead." ), + changelog=[ + ChangelogEntry(version="0.1.0", prs=[74, 108, 119]), + ChangelogEntry(version="0.0.0"), + ], ), "gen_ai.provider.name": AttributeMetadata( brief="The Generative AI provider as identified by the client or server instrumentation.", @@ -5777,6 +7113,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="openai", aliases=["ai.model.provider", "gen_ai.system"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[253]), + ], ), "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.", @@ -5785,6 +7124,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"), + changelog=[ + ChangelogEntry(version="0.4.0", prs=[221]), + ChangelogEntry(version="0.1.0", prs=[63, 127]), + ], ), "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.", @@ -5793,6 +7136,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=0.5, aliases=["ai.frequency_penalty"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[57]), + ], ), "gen_ai.request.max_tokens": AttributeMetadata( brief="The maximum number of tokens to generate in the response.", @@ -5800,6 +7147,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=2048, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[62]), + ], ), "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:"..."}`.', @@ -5809,6 +7160,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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]), + ChangelogEntry(version="0.1.0", prs=[63, 74, 108, 119, 122]), + ], ), "gen_ai.request.model": AttributeMetadata( brief="The model identifier being used for the request.", @@ -5816,6 +7171,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="gpt-4-turbo-preview", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[62, 127]), + ], ), "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.", @@ -5824,6 +7182,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=0.5, aliases=["ai.presence_penalty"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[57]), + ], ), "gen_ai.request.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", @@ -5832,6 +7194,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="1234567890", aliases=["ai.seed"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[57, 127]), + ], ), "gen_ai.request.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", @@ -5840,6 +7205,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=0.1, aliases=["ai.temperature"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[57]), + ], ), "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).", @@ -5848,6 +7217,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=35, aliases=["ai.top_k"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[57]), + ], ), "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).", @@ -5856,6 +7229,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=0.7, aliases=["ai.top_p"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[57]), + ], ), "gen_ai.response.finish_reasons": AttributeMetadata( brief="The reason why the model stopped generating.", @@ -5864,6 +7241,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="COMPLETE", aliases=["ai.finish_reason"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[57, 127]), + ], ), "gen_ai.response.id": AttributeMetadata( brief="Unique identifier for the completion.", @@ -5872,6 +7252,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="gen_123abc", aliases=["ai.generation_id"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[57, 127]), + ], ), "gen_ai.response.model": AttributeMetadata( brief="The vendor-specific ID of the model used.", @@ -5880,6 +7263,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="gpt-4", aliases=["ai.model_id"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "gen_ai.response.streaming": AttributeMetadata( brief="Whether or not the AI model call's response was streamed back asynchronously", @@ -5888,6 +7275,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=True, aliases=["ai.streaming"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[76]), + ], ), "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.", @@ -5896,6 +7286,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"), + changelog=[ + ChangelogEntry(version="0.4.0", prs=[221]), + ChangelogEntry(version="0.1.0", prs=[63, 74]), + ], ), "gen_ai.response.time_to_first_token": AttributeMetadata( brief="Time in seconds when the first response content chunk arrived in streaming responses.", @@ -5903,6 +7297,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.6853435, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[227]), + ], ), "gen_ai.response.tokens_per_second": AttributeMetadata( brief="The total output tokens per seconds throughput", @@ -5910,6 +7307,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=12345.67, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[66]), + ], ), "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.", @@ -5918,6 +7319,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, 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]), + ], ), "gen_ai.system": AttributeMetadata( brief="The provider of the model.", @@ -5927,6 +7332,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="openai", 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]), + ], ), "gen_ai.system.message": AttributeMetadata( brief="The system instructions passed to the model.", @@ -5935,6 +7344,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="You are a helpful assistant", deprecation=DeprecationInfo(replacement="gen_ai.system_instructions"), + changelog=[ + ChangelogEntry(version="0.4.0", prs=[221]), + ChangelogEntry(version="0.1.0", prs=[62]), + ], ), "gen_ai.system_instructions": AttributeMetadata( brief="The system instructions passed to the model.", @@ -5942,6 +7355,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="You are a helpful assistant", + aliases=["ai.preamble"], + changelog=[ + ChangelogEntry(version="next", prs=[264]), + ChangelogEntry(version="0.4.0", prs=[221]), + ], ), "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.", @@ -5949,6 +7367,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example='{"location": "Paris"}', + aliases=["gen_ai.tool.input"], + changelog=[ + ChangelogEntry(version="next", prs=[265]), + ChangelogEntry(version="0.4.0", prs=[221]), + ], ), "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.", @@ -5956,6 +7379,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="rainy, 57°F", + aliases=["gen_ai.tool.output", "gen_ai.tool.message"], + changelog=[ + ChangelogEntry(version="next", prs=[265]), + ChangelogEntry(version="0.4.0", prs=[221]), + ], ), "gen_ai.tool.definitions": AttributeMetadata( brief="The list of source system tool definitions available to the GenAI agent or model.", @@ -5963,6 +7391,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"]}}]', + changelog=[ + ChangelogEntry(version="0.4.0", prs=[221]), + ], ), "gen_ai.tool.description": AttributeMetadata( brief="The description of the tool being used.", @@ -5970,6 +7401,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Searches the web for current information about a topic", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[62, 127]), + ], ), "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.", @@ -5977,6 +7411,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example='{"location": "Paris"}', + deprecation=DeprecationInfo(replacement="gen_ai.tool.call.arguments"), + aliases=["gen_ai.tool.call.arguments"], + changelog=[ + ChangelogEntry(version="next", prs=[265]), + ChangelogEntry(version="0.1.0", prs=[63, 74]), + ], ), "gen_ai.tool.message": AttributeMetadata( brief="The response from a tool or function call passed to the model.", @@ -5984,6 +7424,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"], + changelog=[ + ChangelogEntry(version="next", prs=[265]), + ChangelogEntry(version="0.1.0", prs=[62]), + ], ), "gen_ai.tool.name": AttributeMetadata( brief="Name of the tool utilized by the agent.", @@ -5992,6 +7438,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="Flights", aliases=["ai.function_call"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[57, 127]), + ], ), "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.", @@ -5999,6 +7448,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"], + changelog=[ + ChangelogEntry(version="next", prs=[265]), + ChangelogEntry(version="0.1.0", prs=[63, 74]), + ], ), "gen_ai.tool.type": AttributeMetadata( brief="The type of tool being used.", @@ -6006,6 +7461,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="function", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[62, 127]), + ], ), "gen_ai.usage.completion_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI response (completion).", @@ -6015,6 +7473,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=10, 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]), + ChangelogEntry(version="0.0.0"), + ], ), "gen_ai.usage.input_tokens": AttributeMetadata( brief="The number of tokens used to process the AI input (prompt) including cached input tokens.", @@ -6023,6 +7486,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=10, aliases=["ai.prompt_tokens.used", "gen_ai.usage.prompt_tokens"], + changelog=[ + ChangelogEntry(version="next", prs=[261]), + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[112]), + ChangelogEntry(version="0.0.0"), + ], ), "gen_ai.usage.input_tokens.cache_write": AttributeMetadata( brief="The number of tokens written to the cache when processing the AI input (prompt).", @@ -6030,6 +7499,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=100, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[217, 228]), + ], ), "gen_ai.usage.input_tokens.cached": AttributeMetadata( brief="The number of cached tokens used to process the AI input (prompt).", @@ -6037,6 +7509,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=50, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[62, 112]), + ], ), "gen_ai.usage.output_tokens": AttributeMetadata( brief="The number of tokens used for creating the AI output (including reasoning tokens).", @@ -6045,6 +7521,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=10, aliases=["ai.completion_tokens.used", "gen_ai.usage.completion_tokens"], + changelog=[ + ChangelogEntry(version="next", prs=[261]), + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[112]), + ChangelogEntry(version="0.0.0"), + ], ), "gen_ai.usage.output_tokens.reasoning": AttributeMetadata( brief="The number of tokens used for reasoning to create the AI output.", @@ -6052,6 +7534,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=75, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[62, 112]), + ], ), "gen_ai.usage.prompt_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI input (prompt).", @@ -6061,6 +7547,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=20, 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]), + ChangelogEntry(version="0.0.0"), + ], ), "gen_ai.usage.total_tokens": AttributeMetadata( brief="The total number of tokens used to process the prompt. (input tokens plus output todkens)", @@ -6069,6 +7560,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=20, aliases=["ai.total_tokens.used"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[57]), + ], ), "graphql.operation.name": AttributeMetadata( brief="The name of the operation being executed.", @@ -6076,6 +7571,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="findBookById", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "graphql.operation.type": AttributeMetadata( brief="The type of the operation being executed.", @@ -6083,6 +7582,31 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="query", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], + ), + "hardwareConcurrency": AttributeMetadata( + brief="The number of logical CPU cores available.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="14", + deprecation=DeprecationInfo( + replacement="device.cpu.logical_core_count", + reason="Old namespace-less attribute, to be replaced with device.cpu.logical_core_count for span-first future", + status=DeprecationStatus.BACKFILL, + ), + aliases=["device.cpu.logical_core_count"], + sdks=["javascript-browser"], + changelog=[ + 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.", @@ -6092,6 +7616,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="example.com", deprecation=DeprecationInfo(replacement="client.address"), aliases=["client.address"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 106, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "http.decoded_response_content_length": AttributeMetadata( brief="The decoded body size of the response (in bytes).", @@ -6100,6 +7628,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=456, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "http.flavor": AttributeMetadata( brief="The actual version of the protocol used for network communication.", @@ -6109,6 +7641,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="1.1", 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"), + ], ), "http.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", @@ -6116,6 +7652,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="#details", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "http.host": AttributeMetadata( brief="The domain name.", @@ -6133,6 +7672,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.server_name", "net.host.name", ], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "http.method": AttributeMetadata( brief="The HTTP method used.", @@ -6142,6 +7685,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="GET", deprecation=DeprecationInfo(replacement="http.request.method"), aliases=["http.request.method"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "http.query": AttributeMetadata( brief="The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.", @@ -6152,6 +7699,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), is_in_otel=False, example="?foo=bar&bar=baz", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6160,6 +7710,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.111, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6168,6 +7723,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.15, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6176,6 +7736,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.201, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6184,6 +7749,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.322, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "http.request.fetch_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", @@ -6192,6 +7762,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.389, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "http.request.header.": AttributeMetadata( brief="HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", @@ -6200,6 +7775,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, has_dynamic_suffix=True, example="http.request.header.custom-header=['foo', 'bar']", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[201, 204]), + ChangelogEntry(version="0.1.0", prs=[103]), + ], ), "http.request.method": AttributeMetadata( brief="The HTTP method used.", @@ -6208,6 +7787,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="GET", aliases=["method", "http.method"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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", @@ -6216,6 +7799,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829558.502, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[130, 134]), + ], ), "http.request.redirect_start": AttributeMetadata( brief="The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", @@ -6224,6 +7811,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.495, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6232,6 +7824,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.51, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "http.request.resend_count": AttributeMetadata( brief="The ordinal number of request resending attempt (for any reason, including redirects).", @@ -6239,6 +7836,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=2, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6247,6 +7848,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.89, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6255,6 +7861,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.7, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6263,6 +7874,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829555.73, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[134]), + ChangelogEntry(version="0.0.0"), + ], ), "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", @@ -6271,6 +7887,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1.032, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[131]), + ], ), "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.", @@ -6279,6 +7899,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732829553.68, sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[130, 134]), + ], ), "http.response.body.size": AttributeMetadata( brief="The encoded body size of the response (in bytes).", @@ -6287,6 +7911,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=123, 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]), + ChangelogEntry(version="0.0.0"), + ], ), "http.response.header.": AttributeMetadata( brief="HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", @@ -6295,6 +7924,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, has_dynamic_suffix=True, example="http.response.header.custom-header=['foo', 'bar']", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[201, 204]), + ChangelogEntry(version="0.1.0", prs=[103]), + ], ), "http.response.header.content-length": AttributeMetadata( brief="The size of the message body sent to the recipient (in bytes)", @@ -6303,6 +7936,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="http.response.header.custom-header=['foo', 'bar']", aliases=["http.response_content_length", "http.response.body.size"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "http.response.size": AttributeMetadata( brief="The transfer size of the response (in bytes).", @@ -6311,6 +7948,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=456, aliases=["http.response_transfer_size"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "http.response.status_code": AttributeMetadata( brief="The status code of the HTTP response.", @@ -6319,6 +7960,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=404, aliases=["http.status_code"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "http.response_content_length": AttributeMetadata( brief="The encoded body size of the response (in bytes).", @@ -6330,6 +7975,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="http.response.body.size", status=DeprecationStatus.BACKFILL ), 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]), + ChangelogEntry(version="0.0.0"), + ], ), "http.response_transfer_size": AttributeMetadata( brief="The transfer size of the response (in bytes).", @@ -6341,6 +7991,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="http.response.size", status=DeprecationStatus.BACKFILL ), aliases=["http.response.size"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "http.route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework.", @@ -6349,6 +8004,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="/users/:id", aliases=["url.template"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "http.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", @@ -6358,6 +8017,21 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="https", deprecation=DeprecationInfo(replacement="url.scheme"), aliases=["url.scheme"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], + ), + "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), + is_in_otel=False, + example=50, + sdks=["ruby"], + changelog=[ + ChangelogEntry(version="next", prs=[267]), + ], ), "http.server_name": AttributeMetadata( brief="The server domain name", @@ -6367,6 +8041,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="example.com", 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"), + ], ), "http.status_code": AttributeMetadata( brief="The status code of the HTTP response.", @@ -6376,6 +8054,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=404, deprecation=DeprecationInfo(replacement="http.response.status_code"), aliases=["http.response.status_code"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "http.target": AttributeMetadata( brief="The pathname and query string of the URL.", @@ -6387,6 +8070,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="url.path", reason="This attribute is being deprecated in favor of url.path and url.query", ), + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "http.url": AttributeMetadata( brief="The URL of the resource that was fetched.", @@ -6396,6 +8083,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="https://example.com/test?foo=bar#buzz", deprecation=DeprecationInfo(replacement="url.full"), aliases=["url.full", "url"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 108]), + ChangelogEntry(version="0.0.0"), + ], ), "http.user_agent": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", @@ -6405,6 +8096,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"), aliases=["user_agent.original"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "id": AttributeMetadata( brief="A unique identifier for the span.", @@ -6413,6 +8108,30 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], + ), + "inp": AttributeMetadata( + brief="The value of the recorded Interaction to Next Paint (INP) web vital", + type=AttributeType.DOUBLE, + 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, + ), + 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", + ), + ], ), "jvm.gc.action": AttributeMetadata( brief="Name of the garbage collector action.", @@ -6420,6 +8139,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="end of minor GC", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "jvm.gc.name": AttributeMetadata( brief="Name of the garbage collector.", @@ -6427,6 +8150,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Young Generation", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "jvm.memory.pool.name": AttributeMetadata( brief="Name of the memory pool.", @@ -6434,6 +8161,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Old Gen", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "jvm.memory.type": AttributeMetadata( brief="Name of the memory pool.", @@ -6441,6 +8172,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Old Gen", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "jvm.thread.daemon": AttributeMetadata( brief="Whether the thread is daemon or not.", @@ -6448,6 +8183,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "jvm.thread.state": AttributeMetadata( brief="State of the thread.", @@ -6455,6 +8193,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="blocked", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "lcp.element": AttributeMetadata( brief="The dom element responsible for the largest contentful paint.", @@ -6462,6 +8204,17 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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, + ), + aliases=["browser.web_vital.lcp.element"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint.", @@ -6469,6 +8222,51 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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, + ), + aliases=["browser.web_vital.lcp.id"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], + ), + "lcp.loadTime": AttributeMetadata( + brief="The time it took for the LCP element to be loaded", + type=AttributeType.INTEGER, + 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, + ), + aliases=["browser.web_vital.lcp.load_time"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ], + ), + "lcp.renderTime": AttributeMetadata( + brief="The time it took for the LCP element to be rendered", + type=AttributeType.INTEGER, + 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, + ), + aliases=["browser.web_vital.lcp.render_time"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ], ), "lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element.", @@ -6476,6 +8274,17 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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, + ), + aliases=["browser.web_vital.lcp.size"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint.", @@ -6483,6 +8292,38 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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, + ), + aliases=["browser.web_vital.lcp.url"], + changelog=[ + ChangelogEntry(version="next", prs=[233]), + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], + ), + "lcp": AttributeMetadata( + brief="The value of the recorded Largest Contentful Paint (LCP) web vital", + type=AttributeType.DOUBLE, + 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, + ), + 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", + ), + ], ), "logger.name": AttributeMetadata( brief="The name of the logger that generated this event.", @@ -6490,6 +8331,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="myLogger", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "mcp.cancelled.reason": AttributeMetadata( brief="Reason for the cancellation of an MCP operation.", @@ -6500,6 +8345,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), is_in_otel=False, example="User cancelled the request", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.cancelled.request_id": AttributeMetadata( brief="Request ID of the cancelled MCP operation.", @@ -6507,6 +8355,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.client.name": AttributeMetadata( brief="Name of the MCP client application.", @@ -6514,6 +8365,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="claude-desktop", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.client.title": AttributeMetadata( brief="Display title of the MCP client application.", @@ -6524,6 +8378,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), is_in_otel=False, example="Claude Desktop", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.client.version": AttributeMetadata( brief="Version of the MCP client application.", @@ -6531,6 +8388,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0.0", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.lifecycle.phase": AttributeMetadata( brief="Lifecycle phase indicator for MCP operations.", @@ -6538,6 +8398,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="initialization_complete", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.logging.data_type": AttributeMetadata( brief="Data type of the logged message content.", @@ -6545,6 +8408,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="string", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.logging.level": AttributeMetadata( brief="Log level for MCP logging operations.", @@ -6552,6 +8418,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="info", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.logging.logger": AttributeMetadata( brief="Logger name for MCP logging operations.", @@ -6562,6 +8431,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), is_in_otel=False, example="mcp_server", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.logging.message": AttributeMetadata( brief="Log message content from MCP logging operations.", @@ -6569,6 +8441,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE, reason="Log messages can contain user data"), is_in_otel=False, example="Tool execution completed successfully", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.method.name": AttributeMetadata( brief="The name of the MCP request or notification method being called.", @@ -6576,6 +8451,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="tools/call", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.progress.current": AttributeMetadata( brief="Current progress value of an MCP operation.", @@ -6583,6 +8461,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=50, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.progress.message": AttributeMetadata( brief="Progress message describing the current state of an MCP operation.", @@ -6593,6 +8475,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), is_in_otel=False, example="Processing 50 of 100 items", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.progress.percentage": AttributeMetadata( brief="Calculated progress percentage of an MCP operation. Computed from current/total * 100.", @@ -6600,6 +8485,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=50, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.progress.token": AttributeMetadata( brief="Token for tracking progress of an MCP operation.", @@ -6607,6 +8496,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="progress-token-123", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.progress.total": AttributeMetadata( brief="Total progress target value of an MCP operation.", @@ -6614,6 +8506,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=100, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.prompt.name": AttributeMetadata( brief="Name of the MCP prompt template being used.", @@ -6624,6 +8520,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), is_in_otel=False, example="summarize", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.prompt.result.description": AttributeMetadata( brief="Description of the prompt result.", @@ -6631,6 +8530,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="A summary of the requested information", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.prompt.result.message_content": AttributeMetadata( brief="Content of the message in the prompt result. Used for single message results only.", @@ -6638,6 +8540,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="Please provide a summary of the document", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.prompt.result.message_count": AttributeMetadata( brief="Number of messages in the prompt result.", @@ -6645,6 +8550,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=3, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.prompt.result.message_role": AttributeMetadata( brief="Role of the message in the prompt result. Used for single message results only.", @@ -6652,6 +8561,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="user", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.protocol.ready": AttributeMetadata( brief="Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", @@ -6659,6 +8571,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.protocol.version": AttributeMetadata( brief="MCP protocol version used in the session.", @@ -6666,6 +8582,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="2024-11-05", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "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.", @@ -6674,6 +8593,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, has_dynamic_suffix=True, example="mcp.request.argument.query='weather in Paris'", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[176]), + ], ), "mcp.request.argument.name": AttributeMetadata( brief="Name argument from prompts/get MCP request.", @@ -6681,6 +8603,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE, reason="Prompt names can contain user input"), is_in_otel=False, example="summarize", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.request.argument.uri": AttributeMetadata( brief="URI argument from resources/read MCP request.", @@ -6688,6 +8613,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain user file paths"), is_in_otel=False, example="file:///path/to/resource", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.request.id": AttributeMetadata( brief="JSON-RPC request identifier for the MCP request. Unique within the MCP session.", @@ -6695,6 +8623,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.resource.protocol": AttributeMetadata( brief="Protocol of the resource URI being accessed, extracted from the URI.", @@ -6702,6 +8633,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="file", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.resource.uri": AttributeMetadata( brief="The resource URI being accessed in an MCP operation.", @@ -6709,6 +8643,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain sensitive file paths"), is_in_otel=False, example="file:///path/to/file.txt", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.server.name": AttributeMetadata( brief="Name of the MCP server application.", @@ -6716,6 +8653,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sentry-mcp-server", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.server.title": AttributeMetadata( brief="Display title of the MCP server application.", @@ -6726,6 +8666,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), is_in_otel=False, example="Sentry MCP Server", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.server.version": AttributeMetadata( brief="Version of the MCP server application.", @@ -6733,6 +8676,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="0.1.0", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.session.id": AttributeMetadata( brief="Identifier for the MCP session.", @@ -6740,6 +8686,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="550e8400-e29b-41d4-a716-446655440000", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.tool.name": AttributeMetadata( brief="Name of the MCP tool being called.", @@ -6747,6 +8696,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="calculator", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.tool.result.content": AttributeMetadata( brief="The content of the tool result.", @@ -6754,6 +8706,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE, reason="Tool results can contain user data"), is_in_otel=False, example='{"output": "rainy", "toolCallId": "1"}', + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ChangelogEntry(version="0.2.0", prs=[164]), + ], ), "mcp.tool.result.content_count": AttributeMetadata( brief="Number of content items in the tool result.", @@ -6761,6 +8717,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.tool.result.is_error": AttributeMetadata( brief="Whether a tool execution resulted in an error.", @@ -6768,6 +8728,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=False, + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "mcp.transport": AttributeMetadata( brief="Transport method used for MCP communication.", @@ -6775,6 +8738,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="stdio", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[171]), + ], ), "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.", @@ -6784,6 +8750,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): has_dynamic_suffix=True, example="mdc.some_key='some_value'", sdks=["java", "java.logback", "java.jul", "java.log4j2"], + changelog=[ + ChangelogEntry(version="0.3.0", prs=[176]), + ], ), "messaging.destination.connection": AttributeMetadata( brief="The message destination connection.", @@ -6792,6 +8761,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="BestTopic", sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "messaging.destination.name": AttributeMetadata( brief="The message destination name.", @@ -6800,6 +8773,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="BestTopic", sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "messaging.message.body.size": AttributeMetadata( brief="The size of the message body in bytes.", @@ -6808,6 +8785,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=839, sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "messaging.message.envelope.size": AttributeMetadata( brief="The size of the message body and metadata in bytes.", @@ -6816,6 +8797,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=1045, sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "messaging.message.id": AttributeMetadata( brief="A value used by the messaging system as an identifier for the message, represented as a string.", @@ -6824,6 +8809,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "messaging.message.receive.latency": AttributeMetadata( brief="The latency between when the message was published and received.", @@ -6832,6 +8821,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=1732847252, sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "messaging.message.retry.count": AttributeMetadata( brief="The amount of attempts to send the message.", @@ -6840,6 +8833,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example=2, sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "messaging.operation.type": AttributeMetadata( brief="A string identifying the type of the messaging operation", @@ -6847,6 +8844,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="create", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[51, 127]), + ], ), "messaging.system": AttributeMetadata( brief="The messaging system as identified by the client instrumentation.", @@ -6855,6 +8855,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="activemq", sdks=["php-laravel"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "method": AttributeMetadata( brief="The HTTP method used.", @@ -6865,6 +8869,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo(replacement="http.request.method"), aliases=["http.request.method"], sdks=["javascript-browser", "javascript-node"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "navigation.type": AttributeMetadata( brief="The type of navigation done by a client-side router.", @@ -6872,6 +8880,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="router.push", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -6879,6 +8891,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=100, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[68]), + ], ), "nel.phase": AttributeMetadata( brief='If request failed, the phase of its network error. If request succeeded, "application".', @@ -6886,6 +8902,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="application", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[68, 127]), + ], ), "nel.referrer": AttributeMetadata( brief="request's referrer, as determined by the referrer policy associated with its client.", @@ -6893,6 +8912,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com/foo?bar=baz", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[68, 127]), + ], ), "nel.sampling_function": AttributeMetadata( brief="The sampling function used to determine if the request should be sampled.", @@ -6900,6 +8922,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=0.5, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[68]), + ], ), "nel.type": AttributeMetadata( brief='If request failed, the type of its network error. If request succeeded, "ok".', @@ -6907,6 +8933,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="dns.unreachable", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[68, 127]), + ], ), "net.host.ip": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", @@ -6916,6 +8945,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="192.168.0.1", 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"), + ], ), "net.host.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", @@ -6925,6 +8958,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="example.com", 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"), + ], ), "net.host.port": AttributeMetadata( brief="Server port number.", @@ -6934,6 +8971,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=1337, deprecation=DeprecationInfo(replacement="server.port"), aliases=["server.port"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "net.peer.ip": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", @@ -6943,6 +8985,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="192.168.0.1", 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"), + ], ), "net.peer.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", @@ -6954,6 +9000,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="server.address", reason="Deprecated, use server.address on client spans and client.address on server spans.", ), + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "net.peer.port": AttributeMetadata( brief="Peer port number.", @@ -6965,6 +9015,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="server.port", reason="Deprecated, use server.port on client spans and client.port on server spans.", ), + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "net.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", @@ -6974,6 +9029,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="http", deprecation=DeprecationInfo(replacement="network.protocol.name"), aliases=["network.protocol.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "net.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", @@ -6983,6 +9042,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="1.1", 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"), + ], ), "net.sock.family": AttributeMetadata( brief="OSI transport and network layer", @@ -6994,6 +9057,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="network.transport", reason="Deprecated, use network.transport and network.type.", ), + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "net.sock.host.addr": AttributeMetadata( brief="Local address of the network connection mapping to Unix domain socket name.", @@ -7003,6 +9070,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="/var/my.sock", 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"), + ], ), "net.sock.host.port": AttributeMetadata( brief="Local port number of the network connection.", @@ -7012,6 +9083,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example=8080, deprecation=DeprecationInfo(replacement="network.local.port"), aliases=["network.local.port"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "net.sock.peer.addr": AttributeMetadata( brief="Peer address of the network connection - IP address", @@ -7021,6 +9097,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="192.168.0.1", 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"), + ], ), "net.sock.peer.name": AttributeMetadata( brief="Peer address of the network connection - Unix domain socket name", @@ -7031,6 +9111,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo( reason="Deprecated from OTEL, no replacement at this time" ), + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 119, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "net.sock.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", @@ -7039,6 +9123,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=8080, deprecation=DeprecationInfo(replacement="network.peer.port"), + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], ), "net.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", @@ -7048,6 +9137,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="tcp", deprecation=DeprecationInfo(replacement="network.transport"), aliases=["network.transport"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "network.local.address": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", @@ -7056,6 +9149,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="10.1.2.80", aliases=["net.host.ip", "net.sock.host.addr"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "network.local.port": AttributeMetadata( brief="Local port number of the network connection.", @@ -7064,6 +9161,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=65400, aliases=["net.sock.host.port"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "network.peer.address": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", @@ -7072,6 +9173,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="10.1.2.80", aliases=["net.peer.ip", "net.sock.peer.addr"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[108, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "network.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", @@ -7079,6 +9184,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=65400, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "network.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", @@ -7087,6 +9196,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="http", aliases=["net.protocol.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "network.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", @@ -7095,6 +9208,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="1.1", aliases=["http.flavor", "net.protocol.version"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "network.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", @@ -7103,6 +9220,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="tcp", aliases=["net.transport"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "network.type": AttributeMetadata( brief="OSI network layer or non-OSI equivalent.", @@ -7110,6 +9231,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ipv4", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "os.build_id": AttributeMetadata( brief="The build ID of the operating system.", @@ -7117,6 +9242,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1234567890", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -7124,6 +9253,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Ubuntu 18.04.1 LTS", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "os.name": AttributeMetadata( brief="Human readable operating system name.", @@ -7131,6 +9264,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Ubuntu", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "os.type": AttributeMetadata( brief="The operating system type.", @@ -7138,6 +9275,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="linux", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "os.version": AttributeMetadata( brief="The version of the operating system.", @@ -7145,6 +9286,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="18.04.2", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "otel.scope.name": AttributeMetadata( brief="The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", @@ -7152,6 +9297,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="io.opentelemetry.contrib.mongodb", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "otel.scope.version": AttributeMetadata( brief="The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", @@ -7159,6 +9308,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="2.4.5", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "otel.status_code": AttributeMetadata( brief="Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", @@ -7166,6 +9319,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="OK", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "otel.status_description": AttributeMetadata( brief="Description of the Status if it has a value, otherwise not set.", @@ -7173,6 +9330,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="resource not found", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "params.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", @@ -7182,6 +9343,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): has_dynamic_suffix=True, example="params.id='123'", aliases=["url.path.parameter."], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[103]), + ], ), "previous_route": AttributeMetadata( brief="Also used by mobile SDKs to indicate the previous route in the application.", @@ -7190,6 +9354,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="HomeScreen", sdks=["javascript-reactnative"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[74]), + ChangelogEntry(version="0.0.0"), + ], ), "process.executable.name": AttributeMetadata( brief="The name of the executable that started the process.", @@ -7197,6 +9365,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="getsentry", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "process.pid": AttributeMetadata( brief="The process ID of the running process.", @@ -7204,6 +9376,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=12345, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -7211,6 +9387,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Eclipse OpenJ9 VM openj9-0.21.0", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "process.runtime.name": AttributeMetadata( brief="The name of the runtime. Equivalent to `name` in the Sentry runtime context.", @@ -7218,6 +9398,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="node", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -7225,6 +9409,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="18.04.2", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "query.": AttributeMetadata( brief="An item in a query string. Usually added by client-side routing frameworks like vue-router.", @@ -7237,6 +9425,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): replacement="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]), + ], ), "release": AttributeMetadata( brief="The sentry release.", @@ -7246,6 +9437,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="production", deprecation=DeprecationInfo(replacement="sentry.release"), aliases=["sentry.release"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "remix.action_form_data.": AttributeMetadata( brief="Remix form data, being the form data key, the value being the form data value.", @@ -7255,6 +9450,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): has_dynamic_suffix=True, example="http.response.header.text='test'", sdks=["javascript-remix"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[103]), + ], ), "replay_id": AttributeMetadata( brief="The id of the sentry replay.", @@ -7264,6 +9462,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="123e4567e89b12d3a456426614174000", deprecation=DeprecationInfo(replacement="sentry.replay_id"), aliases=["sentry.replay_id"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61]), + ChangelogEntry(version="0.0.0"), + ], + ), + "resource.deployment.environment": AttributeMetadata( + brief="The software deployment environment name.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.FALSE), + is_in_otel=True, + example="production", + deprecation=DeprecationInfo( + replacement="sentry.environment", status=DeprecationStatus.BACKFILL + ), + changelog=[ + ChangelogEntry(version="next", prs=[266]), + ], ), "resource.deployment.environment.name": AttributeMetadata( brief="The software deployment environment name.", @@ -7274,6 +9489,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo( replacement="sentry.environment", status=DeprecationStatus.BACKFILL ), + changelog=[ + ChangelogEntry(version="0.3.1", prs=[196]), + ], ), "resource.render_blocking_status": AttributeMetadata( brief="The render blocking status of the resource.", @@ -7282,6 +9500,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="non-blocking", sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -7292,6 +9514,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): deprecation=DeprecationInfo(replacement="http.route"), aliases=["http.route"], sdks=["php-laravel", "javascript-reactnative"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 74]), + ChangelogEntry(version="0.0.0"), + ], ), "rpc.grpc.status_code": AttributeMetadata( brief="The numeric status code of the gRPC request.", @@ -7299,6 +9525,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=2, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "rpc.service": AttributeMetadata( brief="The full (logical) name of the service being called, including its package name, if applicable.", @@ -7306,6 +9536,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="myService.BestService", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -7313,6 +9547,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[212]), + ], ), "sentry.browser.name": AttributeMetadata( brief="The name of the browser.", @@ -7322,6 +9559,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="Chrome", deprecation=DeprecationInfo(replacement="browser.name"), aliases=["browser.name"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[139]), + ], ), "sentry.browser.version": AttributeMetadata( brief="The version of the browser.", @@ -7331,6 +9571,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="120.0.6099.130", deprecation=DeprecationInfo(replacement="browser.version"), aliases=["browser.version"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[139]), + ], ), "sentry.cancellation_reason": AttributeMetadata( brief="The reason why a span ended early.", @@ -7338,6 +9581,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="document.hidden", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "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'.", @@ -7345,6 +9591,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="db", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[218]), + ], ), "sentry.client_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in the SDK.", @@ -7352,6 +9601,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, + changelog=[ + ChangelogEntry(version="0.1.0", prs=[102]), + ], ), "sentry.description": AttributeMetadata( brief="The human-readable description of a span.", @@ -7359,6 +9611,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="index view query", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[135]), + ], ), "sentry.dist": AttributeMetadata( brief="The sentry dist.", @@ -7366,6 +9621,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -7373,6 +9631,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="example.com", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[212]), + ], ), "sentry.dsc.environment": AttributeMetadata( brief="The environment from the dynamic sampling context.", @@ -7380,6 +9641,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="prod", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[185]), + ], ), "sentry.dsc.public_key": AttributeMetadata( brief="The public key from the dynamic sampling context.", @@ -7387,6 +9651,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="c51734c603c4430eb57cb0a5728a479d", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[185]), + ], ), "sentry.dsc.release": AttributeMetadata( brief="The release identifier from the dynamic sampling context.", @@ -7394,6 +9661,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="frontend@e8211be71b214afab5b85de4b4c54be3714952bb", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[185]), + ], ), "sentry.dsc.sample_rate": AttributeMetadata( brief="The sample rate from the dynamic sampling context.", @@ -7401,6 +9671,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[185]), + ], ), "sentry.dsc.sampled": AttributeMetadata( brief="Whether the event was sampled according to the dynamic sampling context.", @@ -7408,6 +9681,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, + changelog=[ + ChangelogEntry(version="0.3.0", prs=[185]), + ], ), "sentry.dsc.trace_id": AttributeMetadata( brief="The trace ID from the dynamic sampling context.", @@ -7415,6 +9691,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="047372980460430cbc78d9779df33a46", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[185]), + ], ), "sentry.dsc.transaction": AttributeMetadata( brief="The transaction name from the dynamic sampling context.", @@ -7422,6 +9701,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="/issues/errors-outages/", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[185]), + ], ), "sentry.environment": AttributeMetadata( brief="The sentry environment.", @@ -7430,6 +9712,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="production", aliases=["environment"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.exclusive_time": AttributeMetadata( brief="The exclusive time duration of the span in milliseconds.", @@ -7437,6 +9722,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1234, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.3.0", prs=[160]), + ChangelogEntry(version="0.0.0"), + ], ), "sentry.graphql.operation": AttributeMetadata( brief="Indicates the type of graphql operation, emitted by the Javascript SDK.", @@ -7444,12 +9734,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="getUserById", + changelog=[ + ChangelogEntry(version="0.3.1", prs=[190]), + ], ), "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), is_in_otel=False, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[212]), + ], ), "sentry.http.prefetch": AttributeMetadata( brief="If an http request was a prefetch request.", @@ -7457,6 +9753,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.idle_span_finish_reason": AttributeMetadata( brief="The reason why an idle span ended early.", @@ -7464,6 +9763,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="idleTimeout", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.is_remote": AttributeMetadata( brief="Indicates whether a span's parent is remote.", @@ -7471,6 +9773,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, + changelog=[ + ChangelogEntry(version="0.3.1", prs=[190]), + ], ), "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.", @@ -7478,6 +9783,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="server", + changelog=[ + ChangelogEntry(version="0.3.1", prs=[190]), + ], ), "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)", @@ -7485,6 +9793,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="sentry.message.parameter.0='123'", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[116]), + ], ), "sentry.message.template": AttributeMetadata( brief="The parameterized template string.", @@ -7492,6 +9803,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Hello, {name}!", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[116]), + ], ), "sentry.module.": AttributeMetadata( brief="A module that was loaded in the process. The key is the name of the module.", @@ -7500,6 +9814,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, has_dynamic_suffix=True, example="sentry.module.brianium/paratest='v7.7.0'", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[103]), + ], ), "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.", @@ -7508,6 +9825,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="/posts/[id]/layout", sdks=["javascript"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[54, 106]), + ], ), "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.", @@ -7516,6 +9836,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="generateMetadata", sdks=["javascript"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[54, 106]), + ], ), "sentry.normalized_db_query": AttributeMetadata( brief="The normalized version of `db.query.text`.", @@ -7523,12 +9846,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", + changelog=[ + ChangelogEntry(version="0.3.1", prs=[194]), + ], ), "sentry.normalized_db_query.hash": AttributeMetadata( brief="The hash of `sentry.normalized_db_query`.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[200]), + ], ), "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).", @@ -7536,6 +9865,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[212]), + ], ), "sentry.observed_timestamp_nanos": AttributeMetadata( brief="The timestamp at which an envelope was received by Relay, in nanoseconds.", @@ -7543,6 +9875,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1544712660300000000", + changelog=[ + ChangelogEntry(version="0.3.0", prs=[174]), + ChangelogEntry(version="0.2.0", prs=[137]), + ], ), "sentry.op": AttributeMetadata( brief="The operation of a span.", @@ -7550,6 +9886,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="http.client", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.origin": AttributeMetadata( brief="The origin of the instrumentation (e.g. span, log, etc.)", @@ -7557,6 +9896,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="auto.http.otel.fastify", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[68]), + ChangelogEntry(version="0.0.0"), + ], ), "sentry.platform": AttributeMetadata( brief="The sdk platform that generated the event.", @@ -7564,6 +9907,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="php", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.profiler_id": AttributeMetadata( brief="The id of the currently running profiler (continuous profiling)", @@ -7571,6 +9917,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="18779b64dd35d1a538e7ce2dd2d3fad3", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[242]), + ], ), "sentry.release": AttributeMetadata( brief="The sentry release.", @@ -7579,6 +9928,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="7.0.0", aliases=["service.version", "release"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.replay_id": AttributeMetadata( brief="The id of the sentry replay.", @@ -7587,6 +9939,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["replay_id"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.replay_is_buffering": AttributeMetadata( brief="A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", @@ -7594,6 +9949,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, + changelog=[ + ChangelogEntry(version="0.3.0", prs=[185]), + ], ), "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.", @@ -7606,6 +9964,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "BrowserApiErrors", "Breadcrumbs", ], + changelog=[ + ChangelogEntry(version="0.0.0", prs=[42]), + ], ), "sentry.sdk.name": AttributeMetadata( brief="The sentry sdk name.", @@ -7613,6 +9974,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="@sentry/react", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.sdk.version": AttributeMetadata( brief="The sentry sdk version.", @@ -7620,6 +9984,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="7.0.0", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "sentry.segment.id": AttributeMetadata( brief="The segment ID of a span", @@ -7628,6 +9995,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="051581bf3cb55c13", aliases=["sentry.segment_id"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[107, 124]), + ], ), "sentry.segment.name": AttributeMetadata( brief="The segment name of a span", @@ -7635,6 +10005,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GET /user", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[104]), + ], ), "sentry.segment_id": AttributeMetadata( brief="The segment ID of a span", @@ -7644,6 +10017,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="051581bf3cb55c13", deprecation=DeprecationInfo(replacement="sentry.segment.id"), aliases=["sentry.segment.id"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[124]), + ], ), "sentry.server_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in Relay.", @@ -7651,13 +10027,35 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, + changelog=[ + ChangelogEntry(version="0.1.0", prs=[102]), + ], + ), + "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), + 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, + ), + changelog=[ + ChangelogEntry(version="next"), + ], ), "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'`.", + 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), is_in_otel=False, example="route", + changelog=[ + ChangelogEntry(version="0.4.0", prs=[214]), + ChangelogEntry(version="0.0.0"), + ], ), "sentry.status.message": AttributeMetadata( brief="The from OTLP extracted status message.", @@ -7665,6 +10063,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="foobar", + changelog=[ + ChangelogEntry(version="0.3.1", prs=[190]), + ], ), "sentry.status_code": AttributeMetadata( brief="The HTTP status code used in Sentry Insights. Typically set by Sentry during ingestion, rather than by clients.", @@ -7672,6 +10073,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=200, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[223, 228]), + ], + ), + "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), + is_in_otel=False, + example=0, + changelog=[ + ChangelogEntry(version="next", prs=[262]), + ], ), "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.", @@ -7679,6 +10093,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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="0.1.0", prs=[116]), + ], ), "sentry.transaction": AttributeMetadata( brief="The sentry transaction (segment name).", @@ -7687,6 +10110,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="GET /", aliases=["transaction"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "server.address": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", @@ -7695,6 +10121,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="example.com", aliases=["http.server_name", "net.host.name", "http.host"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[108, 127]), + ChangelogEntry(version="0.0.0"), + ], ), "server.port": AttributeMetadata( brief="Server port number.", @@ -7703,6 +10133,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example=1337, aliases=["net.host.port"], + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "service.name": AttributeMetadata( brief="Logical name of the service.", @@ -7710,6 +10144,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="omegastar", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "service.version": AttributeMetadata( brief="The version string of the service API or implementation. The format is not defined by these conventions.", @@ -7718,6 +10156,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="5.0.0", aliases=["sentry.release"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "thread.id": AttributeMetadata( brief="Current “managed” thread ID.", @@ -7725,6 +10167,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=56, + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "thread.name": AttributeMetadata( brief="Current thread name.", @@ -7732,6 +10177,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="main", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "timber.tag": AttributeMetadata( brief="The log tag provided by the timber logging framework.", @@ -7740,6 +10189,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="MyTag", sdks=["sentry.java.android"], + changelog=[ + ChangelogEntry(version="0.3.0", prs=[183]), + ], ), "transaction": AttributeMetadata( brief="The sentry transaction (segment name).", @@ -7749,6 +10201,44 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): example="GET /", deprecation=DeprecationInfo(replacement="sentry.transaction"), aliases=["sentry.transaction"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[61, 127]), + ChangelogEntry(version="0.0.0"), + ], + ), + "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), + 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, + ), + aliases=["browser.web_vital.ttfb.request_time"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[235]), + ], + ), + "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), + 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, + ), + aliases=["browser.web_vital.ttfb.value"], + sdks=["javascript-browser"], + changelog=[ + ChangelogEntry(version="next", prs=[235]), + ], ), "type": AttributeMetadata( brief="More granular type of the operation happening.", @@ -7757,6 +10247,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=False, example="fetch", sdks=["javascript-browser", "javascript-node"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "ui.component_name": AttributeMetadata( brief="The name of the associated component.", @@ -7764,6 +10257,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="HomeButton", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "ui.contributes_to_ttfd": AttributeMetadata( brief="Whether the span execution contributed to the TTFD (time to fully drawn) metric.", @@ -7771,6 +10268,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "ui.contributes_to_ttid": AttributeMetadata( brief="Whether the span execution contributed to the TTID (time to initial display) metric.", @@ -7778,6 +10278,138 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, + changelog=[ + ChangelogEntry(version="0.0.0"), + ], + ), + "ui.element.height": AttributeMetadata( + brief="The height of the UI element (for Html in pixels)", + type=AttributeType.INTEGER, + 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", + ), + ], + ), + "ui.element.id": AttributeMetadata( + brief="The id of the UI element", + type=AttributeType.STRING, + 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" + ), + ], + ), + "ui.element.identifier": AttributeMetadata( + brief="The identifier used to measure the UI element timing", + type=AttributeType.STRING, + 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", + ), + ], + ), + "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), + is_in_otel=False, + example=998.2234, + sdks=["javascript-browser"], + changelog=[ + 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), + is_in_otel=False, + example="image-paint", + sdks=["javascript-browser"], + changelog=[ + 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), + is_in_otel=False, + example=1023.1124, + sdks=["javascript-browser"], + changelog=[ + 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), + is_in_otel=False, + example="img", + sdks=["javascript-browser"], + changelog=[ + 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), + 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" + ), + ], + ), + "ui.element.width": AttributeMetadata( + brief="The width of the UI element (for HTML in pixels)", + type=AttributeType.INTEGER, + 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", + ), + ], ), "url.domain": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", @@ -7785,6 +10417,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "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.", @@ -7792,6 +10428,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="details", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "url.full": AttributeMetadata( brief="The URL of the resource that was fetched.", @@ -7800,6 +10439,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="https://example.com/test?foo=bar#buzz", aliases=["http.url", "url"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[108]), + ChangelogEntry(version="0.0.0"), + ], ), "url.path": AttributeMetadata( brief="The URI path component.", @@ -7807,6 +10450,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/foo", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "url.path.parameter.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", @@ -7816,6 +10462,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): has_dynamic_suffix=True, example="url.path.parameter.id='123'", aliases=["params."], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[103]), + ], ), "url.port": AttributeMetadata( brief="Server port number.", @@ -7823,6 +10472,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example=1337, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.0.0"), + ], ), "url.query": AttributeMetadata( brief="The query string present in the URL. Note that this does not contain the leading ? character, while the `http.query` attribute does.", @@ -7833,6 +10486,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ), is_in_otel=True, example="foo=bar&bar=baz", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "url.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", @@ -7841,6 +10497,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="https", aliases=["http.scheme"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "url.template": AttributeMetadata( brief="The low-cardinality template of an absolute path reference.", @@ -7849,6 +10509,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, example="/users/:id", aliases=["http.route"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "url": AttributeMetadata( brief="The URL of the resource that was fetched.", @@ -7859,6 +10523,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"), + ], ), "user.email": AttributeMetadata( brief="User email address.", @@ -7866,6 +10534,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="test@example.com", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.full_name": AttributeMetadata( brief="User's full name.", @@ -7873,6 +10544,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="John Smith", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.geo.city": AttributeMetadata( brief="Human readable city name.", @@ -7880,6 +10554,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Toronto", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.geo.country_code": AttributeMetadata( brief="Two-letter country code (ISO 3166-1 alpha-2).", @@ -7887,6 +10564,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="CA", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.geo.region": AttributeMetadata( brief="Human readable region name or code.", @@ -7894,6 +10574,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Canada", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.geo.subdivision": AttributeMetadata( brief="Human readable subdivision name.", @@ -7901,6 +10584,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Ontario", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.hash": AttributeMetadata( brief="Unique user hash to correlate information for a user in anonymized form.", @@ -7908,6 +10594,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.id": AttributeMetadata( brief="Unique identifier of the user.", @@ -7915,6 +10604,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="S-1-5-21-202424912787-2692429404-2351956786-1000", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.ip_address": AttributeMetadata( brief="The IP address of the user.", @@ -7922,6 +10614,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="192.168.1.1", + changelog=[ + ChangelogEntry(version="0.1.0", prs=[75]), + ], ), "user.name": AttributeMetadata( brief="Short name or login/username of the user.", @@ -7929,6 +10624,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="j.smith", + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user.roles": AttributeMetadata( brief="Array of user roles at the time of the event.", @@ -7936,6 +10634,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example=["admin", "editor"], + changelog=[ + ChangelogEntry(version="0.0.0"), + ], ), "user_agent.original": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", @@ -7944,6 +10645,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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"], + changelog=[ + ChangelogEntry(version="0.1.0", prs=[127]), + ChangelogEntry(version="0.0.0"), + ], ), "vercel.branch": AttributeMetadata( brief="Git branch name for Vercel project", @@ -7951,6 +10656,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="main", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.build_id": AttributeMetadata( brief="Identifier for the Vercel build (only present on build logs)", @@ -7958,6 +10666,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="bld_cotnkcr76", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.deployment_id": AttributeMetadata( brief="Identifier for the Vercel deployment", @@ -7965,6 +10676,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="dpl_233NRGRjVZX1caZrXWtz5g1TAksD", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.destination": AttributeMetadata( brief="Origin of the external content in Vercel (only on external logs)", @@ -7972,6 +10686,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://vitals.vercel-insights.com/v1", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.edge_type": AttributeMetadata( brief="Type of edge runtime in Vercel", @@ -7979,6 +10696,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="edge-function", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.entrypoint": AttributeMetadata( brief="Entrypoint for the request in Vercel", @@ -7986,6 +10706,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="api/index.js", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.execution_region": AttributeMetadata( brief="Region where the request is executed", @@ -7993,6 +10716,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.id": AttributeMetadata( brief="Unique identifier for the log entry in Vercel", @@ -8000,6 +10726,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1573817187330377061717300000", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.ja3_digest": AttributeMetadata( brief="JA3 fingerprint digest of Vercel request", @@ -8007,6 +10736,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): 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=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.ja4_digest": AttributeMetadata( brief="JA4 fingerprint digest", @@ -8014,6 +10746,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="t13d1516h2_8daaf6152771_02713d6af862", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.log_type": AttributeMetadata( brief="Vercel log output type", @@ -8021,6 +10756,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="stdout", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.project_id": AttributeMetadata( brief="Identifier for the Vercel project", @@ -8028,6 +10766,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="gdufoJxB6b9b1fEqr1jUtFkyavUU", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.project_name": AttributeMetadata( brief="Name of the Vercel project", @@ -8035,6 +10776,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="my-app", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.cache_id": AttributeMetadata( brief="Original request ID when request is served from cache", @@ -8042,6 +10786,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="pdx1::v8g4b-1744143786684-93dafbc0f70d", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.client_ip": AttributeMetadata( brief="Client IP address", @@ -8049,6 +10796,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="120.75.16.101", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.host": AttributeMetadata( brief="Hostname of the request", @@ -8056,6 +10806,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="test.vercel.app", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.lambda_region": AttributeMetadata( brief="Region where lambda function executed", @@ -8063,6 +10816,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.method": AttributeMetadata( brief="HTTP method of the request", @@ -8070,6 +10826,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="GET", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.path": AttributeMetadata( brief="Request path with query parameters", @@ -8077,6 +10836,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="/dynamic/some-value.json?route=some-value", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.path_type": AttributeMetadata( brief="How the request was served based on its path and project configuration", @@ -8084,6 +10846,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="func", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.path_type_variant": AttributeMetadata( brief="Variant of the path type", @@ -8091,6 +10856,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="api", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.referer": AttributeMetadata( brief="Referer of the request", @@ -8098,6 +10866,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="*.vercel.app", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.region": AttributeMetadata( brief="Region where the request is processed", @@ -8105,6 +10876,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.response_byte_size": AttributeMetadata( brief="Size of the response in bytes", @@ -8112,6 +10886,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1024, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.scheme": AttributeMetadata( brief="Protocol of the request", @@ -8119,6 +10897,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="https", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.status_code": AttributeMetadata( brief="HTTP status code of the proxy request", @@ -8126,6 +10907,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=200, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.timestamp": AttributeMetadata( brief="Unix timestamp when the proxy request was made", @@ -8133,6 +10918,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=1573817250172, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.user_agent": AttributeMetadata( brief="User agent strings of the request", @@ -8140,6 +10929,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["Mozilla/5.0..."], + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.vercel_cache": AttributeMetadata( brief="Cache status sent to the browser", @@ -8147,6 +10939,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="REVALIDATED", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.vercel_id": AttributeMetadata( brief="Vercel-specific identifier", @@ -8154,6 +10949,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1::abc123", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.waf_action": AttributeMetadata( brief="Action taken by firewall rules", @@ -8161,6 +10959,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="deny", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.proxy.waf_rule_id": AttributeMetadata( brief="ID of the firewall rule that matched", @@ -8168,6 +10969,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="rule_gAHz8jtSB1Gy", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.request_id": AttributeMetadata( brief="Identifier of the Vercel request", @@ -8175,6 +10979,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="643af4e3-975a-4cc7-9e7a-1eda11539d90", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.source": AttributeMetadata( brief="Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", @@ -8182,6 +10989,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="build", + changelog=[ + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), "vercel.status_code": AttributeMetadata( brief="HTTP status code of the request (-1 means no response returned and the lambda crashed)", @@ -8189,6 +10999,10 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=200, + changelog=[ + ChangelogEntry(version="0.4.0", prs=[228]), + ChangelogEntry(version="0.2.0", prs=[163]), + ], ), } @@ -8241,6 +11055,20 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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], @@ -8252,6 +11080,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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, @@ -8281,8 +11111,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.system.name": str, "db.user": str, "device.brand": str, + "device.cpu.logical_core_count": int, "device.family": str, + "device.memory.estimated_capacity": int, "device.model": str, + "deviceMemory": str, "environment": str, "error.type": str, "event.id": int, @@ -8295,7 +11128,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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, @@ -8354,6 +11189,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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, @@ -8386,12 +11222,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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, @@ -8400,8 +11238,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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, @@ -8501,6 +11342,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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, @@ -8553,9 +11395,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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, @@ -8566,10 +11410,21 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "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,