From 3b20cf3ef4baff86425a16be20d40e2b90e02da8 Mon Sep 17 00:00:00 2001 From: Ogi <86684834+obostjancic@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:20:57 +0100 Subject: [PATCH 1/7] feat(gen_ai): add new Gen AI attributes --- generated/attributes/all.md | 18 +- generated/attributes/gen_ai.md | 167 +- .../sentry-conventions/src/attributes.ts | 3216 +++++++-------- .../gen_ai/gen_ai__input__messages.json | 11 + .../gen_ai/gen_ai__output__messages.json | 11 + .../gen_ai__request__available_tools.json | 6 +- .../gen_ai/gen_ai__request__messages.json | 6 +- .../gen_ai/gen_ai__response__text.json | 6 +- .../gen_ai/gen_ai__response__tool_calls.json | 6 +- .../gen_ai/gen_ai__system__message.json | 6 +- .../gen_ai/gen_ai__system_instructions.json | 11 + .../gen_ai/gen_ai__tool__call__arguments.json | 11 + .../gen_ai/gen_ai__tool__call__result.json | 11 + .../gen_ai/gen_ai__tool__definitions.json | 11 + python/src/sentry_conventions/attributes.py | 3450 ++++++++++------- shared/deprecated_attributes.json | 74 + 16 files changed, 3912 insertions(+), 3109 deletions(-) create mode 100644 model/attributes/gen_ai/gen_ai__input__messages.json create mode 100644 model/attributes/gen_ai/gen_ai__output__messages.json create mode 100644 model/attributes/gen_ai/gen_ai__system_instructions.json create mode 100644 model/attributes/gen_ai/gen_ai__tool__call__arguments.json create mode 100644 model/attributes/gen_ai/gen_ai__tool__call__result.json create mode 100644 model/attributes/gen_ai/gen_ai__tool__definitions.json diff --git a/generated/attributes/all.md b/generated/attributes/all.md index c8721a56..9fe5ec19 100644 --- a/generated/attributes/all.md +++ b/generated/attributes/all.md @@ -4,7 +4,7 @@ This page lists all available attributes across all categories. -Total attributes: 415 +Total attributes: 421 ## Stable Attributes @@ -81,13 +81,13 @@ Total attributes: 415 | [`gen_ai.cost.output_tokens`](./gen_ai.md#gen_aicostoutput_tokens) | The cost of tokens used for creating the AI output in USD (without reasoning tokens). | | [`gen_ai.cost.total_tokens`](./gen_ai.md#gen_aicosttotal_tokens) | The total cost for the tokens used. | | [`gen_ai.embeddings.input`](./gen_ai.md#gen_aiembeddingsinput) | The input to the embeddings model. | +| [`gen_ai.input.messages`](./gen_ai.md#gen_aiinputmessages) | 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:"..."}`. | | [`gen_ai.operation.name`](./gen_ai.md#gen_aioperationname) | The name of the operation being performed. | | [`gen_ai.operation.type`](./gen_ai.md#gen_aioperationtype) | The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier. | +| [`gen_ai.output.messages`](./gen_ai.md#gen_aioutputmessages) | 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. | | [`gen_ai.pipeline.name`](./gen_ai.md#gen_aipipelinename) | Name of the AI pipeline or chain being executed. | -| [`gen_ai.request.available_tools`](./gen_ai.md#gen_airequestavailable_tools) | The available tools for the model. It has to be a stringified version of an array of objects. | | [`gen_ai.request.frequency_penalty`](./gen_ai.md#gen_airequestfrequency_penalty) | Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation. | | [`gen_ai.request.max_tokens`](./gen_ai.md#gen_airequestmax_tokens) | The maximum number of tokens to generate in the response. | -| [`gen_ai.request.messages`](./gen_ai.md#gen_airequestmessages) | 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:"..."}`. | | [`gen_ai.request.model`](./gen_ai.md#gen_airequestmodel) | The model identifier being used for the request. | | [`gen_ai.request.presence_penalty`](./gen_ai.md#gen_airequestpresence_penalty) | Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies. | | [`gen_ai.request.seed`](./gen_ai.md#gen_airequestseed) | The seed, ideally models given the same seed and same other parameters will produce the exact same output. | @@ -98,11 +98,12 @@ Total attributes: 415 | [`gen_ai.response.id`](./gen_ai.md#gen_airesponseid) | Unique identifier for the completion. | | [`gen_ai.response.model`](./gen_ai.md#gen_airesponsemodel) | The vendor-specific ID of the model used. | | [`gen_ai.response.streaming`](./gen_ai.md#gen_airesponsestreaming) | Whether or not the AI model call's response was streamed back asynchronously | -| [`gen_ai.response.text`](./gen_ai.md#gen_airesponsetext) | The model's response text messages. It has to be a stringified version of an array of response text messages. | | [`gen_ai.response.tokens_per_second`](./gen_ai.md#gen_airesponsetokens_per_second) | The total output tokens per seconds throughput | -| [`gen_ai.response.tool_calls`](./gen_ai.md#gen_airesponsetool_calls) | The tool calls in the model's response. It has to be a stringified version of an array of objects. | | [`gen_ai.system`](./gen_ai.md#gen_aisystem) | The provider of the model. | -| [`gen_ai.system.message`](./gen_ai.md#gen_aisystemmessage) | The system instructions passed to the model. | +| [`gen_ai.system_instructions`](./gen_ai.md#gen_aisystem_instructions) | The system instructions passed to the model. | +| [`gen_ai.tool.call.arguments`](./gen_ai.md#gen_aitoolcallarguments) | The arguments of the tool call. It has to be a stringified version of the arguments to the tool. | +| [`gen_ai.tool.call.result`](./gen_ai.md#gen_aitoolcallresult) | The result of the tool call. It has to be a stringified version of the result of the tool. | +| [`gen_ai.tool.definitions`](./gen_ai.md#gen_aitooldefinitions) | The list of source system tool definitions available to the GenAI agent or model. | | [`gen_ai.tool.description`](./gen_ai.md#gen_aitooldescription) | The description of the tool being used. | | [`gen_ai.tool.input`](./gen_ai.md#gen_aitoolinput) | The input of the tool being used. It has to be a stringified version of the input to the tool. | | [`gen_ai.tool.message`](./gen_ai.md#gen_aitoolmessage) | The response from a tool or function call passed to the model. | @@ -389,6 +390,11 @@ Total attributes: 415 | [`environment`](./general.md#environment) | [`sentry.environment`](./sentry.md#sentryenvironment) | | [`fs_error`](./general.md#fs_error) | [`error.type`](./error.md#errortype) | | [`gen_ai.prompt`](./gen_ai.md#gen_aiprompt) | No replacement | +| [`gen_ai.request.available_tools`](./gen_ai.md#gen_airequestavailable_tools) | [`gen_ai.tool.definitions`](./gen_ai.md#gen_aitooldefinitions) | +| [`gen_ai.request.messages`](./gen_ai.md#gen_airequestmessages) | [`gen_ai.input.messages`](./gen_ai.md#gen_aiinputmessages) | +| [`gen_ai.response.text`](./gen_ai.md#gen_airesponsetext) | [`gen_ai.output.messages`](./gen_ai.md#gen_aioutputmessages) | +| [`gen_ai.response.tool_calls`](./gen_ai.md#gen_airesponsetool_calls) | [`gen_ai.output.messages`](./gen_ai.md#gen_aioutputmessages) | +| [`gen_ai.system.message`](./gen_ai.md#gen_aisystemmessage) | [`gen_ai.system_instructions`](./gen_ai.md#gen_aisystem_instructions) | | [`gen_ai.usage.completion_tokens`](./gen_ai.md#gen_aiusagecompletion_tokens) | [`gen_ai.usage.output_tokens`](./gen_ai.md#gen_aiusageoutput_tokens) | | [`gen_ai.usage.prompt_tokens`](./gen_ai.md#gen_aiusageprompt_tokens) | [`gen_ai.usage.input_tokens`](./gen_ai.md#gen_aiusageinput_tokens) | | [`http.client_ip`](./http.md#httpclient_ip) | [`client.address`](./client.md#clientaddress) | diff --git a/generated/attributes/gen_ai.md b/generated/attributes/gen_ai.md index 07713dfd..fcef99b0 100644 --- a/generated/attributes/gen_ai.md +++ b/generated/attributes/gen_ai.md @@ -10,13 +10,13 @@ - [gen_ai.cost.output_tokens](#gen_aicostoutput_tokens) - [gen_ai.cost.total_tokens](#gen_aicosttotal_tokens) - [gen_ai.embeddings.input](#gen_aiembeddingsinput) + - [gen_ai.input.messages](#gen_aiinputmessages) - [gen_ai.operation.name](#gen_aioperationname) - [gen_ai.operation.type](#gen_aioperationtype) + - [gen_ai.output.messages](#gen_aioutputmessages) - [gen_ai.pipeline.name](#gen_aipipelinename) - - [gen_ai.request.available_tools](#gen_airequestavailable_tools) - [gen_ai.request.frequency_penalty](#gen_airequestfrequency_penalty) - [gen_ai.request.max_tokens](#gen_airequestmax_tokens) - - [gen_ai.request.messages](#gen_airequestmessages) - [gen_ai.request.model](#gen_airequestmodel) - [gen_ai.request.presence_penalty](#gen_airequestpresence_penalty) - [gen_ai.request.seed](#gen_airequestseed) @@ -27,11 +27,12 @@ - [gen_ai.response.id](#gen_airesponseid) - [gen_ai.response.model](#gen_airesponsemodel) - [gen_ai.response.streaming](#gen_airesponsestreaming) - - [gen_ai.response.text](#gen_airesponsetext) - [gen_ai.response.tokens_per_second](#gen_airesponsetokens_per_second) - - [gen_ai.response.tool_calls](#gen_airesponsetool_calls) - [gen_ai.system](#gen_aisystem) - - [gen_ai.system.message](#gen_aisystemmessage) + - [gen_ai.system_instructions](#gen_aisystem_instructions) + - [gen_ai.tool.call.arguments](#gen_aitoolcallarguments) + - [gen_ai.tool.call.result](#gen_aitoolcallresult) + - [gen_ai.tool.definitions](#gen_aitooldefinitions) - [gen_ai.tool.description](#gen_aitooldescription) - [gen_ai.tool.input](#gen_aitoolinput) - [gen_ai.tool.message](#gen_aitoolmessage) @@ -47,6 +48,11 @@ - [gen_ai.user.message](#gen_aiusermessage) - [Deprecated Attributes](#deprecated-attributes) - [gen_ai.prompt](#gen_aiprompt) + - [gen_ai.request.available_tools](#gen_airequestavailable_tools) + - [gen_ai.request.messages](#gen_airequestmessages) + - [gen_ai.response.text](#gen_airesponsetext) + - [gen_ai.response.tool_calls](#gen_airesponsetool_calls) + - [gen_ai.system.message](#gen_aisystemmessage) - [gen_ai.usage.completion_tokens](#gen_aiusagecompletion_tokens) - [gen_ai.usage.prompt_tokens](#gen_aiusageprompt_tokens) @@ -129,6 +135,17 @@ The input to the embeddings model. | Exists in OpenTelemetry | No | | Example | `What's the weather in Paris?` | +### gen_ai.input.messages + +The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]` | + ### gen_ai.operation.name The name of the operation being performed. @@ -151,28 +168,28 @@ The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff' | Exists in OpenTelemetry | No | | Example | `tool` | -### gen_ai.pipeline.name +### gen_ai.output.messages -Name of the AI pipeline or chain being executed. +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. | Property | Value | | --- | --- | | Type | `string` | | Has PII | maybe | | Exists in OpenTelemetry | No | -| Example | `Autofix Pipeline` | -| Aliases | `ai.pipeline.name` | +| Example | `[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]` | -### gen_ai.request.available_tools +### gen_ai.pipeline.name -The available tools for the model. It has to be a stringified version of an array of objects. +Name of the AI pipeline or chain being executed. | Property | Value | | --- | --- | | Type | `string` | | Has PII | maybe | | Exists in OpenTelemetry | No | -| Example | `[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]` | +| Example | `Autofix Pipeline` | +| Aliases | `ai.pipeline.name` | ### gen_ai.request.frequency_penalty @@ -197,18 +214,6 @@ The maximum number of tokens to generate in the response. | Exists in OpenTelemetry | Yes | | Example | `2048` | -### gen_ai.request.messages - -The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. - -| Property | Value | -| --- | --- | -| Type | `string` | -| Has PII | maybe | -| Exists in OpenTelemetry | No | -| 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"}}]` | -| Aliases | `ai.input_messages` | - ### gen_ai.request.model The model identifier being used for the request. @@ -328,61 +333,72 @@ Whether or not the AI model call's response was streamed back asynchronously | Example | `true` | | Aliases | `ai.streaming` | -### gen_ai.response.text +### gen_ai.response.tokens_per_second -The model's response text messages. It has to be a stringified version of an array of response text messages. +The total output tokens per seconds throughput + +| Property | Value | +| --- | --- | +| Type | `double` | +| Has PII | false | +| Exists in OpenTelemetry | No | +| Example | `12345.67` | + +### gen_ai.system + +The provider of the model. | Property | Value | | --- | --- | | Type | `string` | | Has PII | maybe | -| Exists in OpenTelemetry | No | -| 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"]` | +| Exists in OpenTelemetry | Yes | +| Example | `openai` | +| Aliases | `ai.model.provider` | -### gen_ai.response.tokens_per_second +### gen_ai.system_instructions -The total output tokens per seconds throughput +The system instructions passed to the model. | Property | Value | | --- | --- | -| Type | `double` | -| Has PII | false | +| Type | `string` | +| Has PII | maybe | | Exists in OpenTelemetry | No | -| Example | `12345.67` | +| Example | `You are a helpful assistant` | -### gen_ai.response.tool_calls +### gen_ai.tool.call.arguments -The tool calls in the model's response. It has to be a stringified version of an array of objects. +The arguments of the tool call. It has to be a stringified version of the arguments to the tool. | Property | Value | | --- | --- | | Type | `string` | | Has PII | maybe | | Exists in OpenTelemetry | No | -| Example | `[{"name": "get_weather", "arguments": {"location": "Paris"}}]` | +| Example | `{"location": "Paris"}` | -### gen_ai.system +### gen_ai.tool.call.result -The provider of the model. +The result of the tool call. It has to be a stringified version of the result of the tool. | Property | Value | | --- | --- | | Type | `string` | | Has PII | maybe | -| Exists in OpenTelemetry | Yes | -| Example | `openai` | -| Aliases | `ai.model.provider` | +| Exists in OpenTelemetry | No | +| Example | `rainy, 57°F` | -### gen_ai.system.message +### gen_ai.tool.definitions -The system instructions passed to the model. +The list of source system tool definitions available to the GenAI agent or model. | Property | Value | | --- | --- | | Type | `string` | -| Has PII | true | +| Has PII | maybe | | Exists in OpenTelemetry | No | -| Example | `You are a helpful assistant` | +| 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"]}}]` | ### gen_ai.tool.description @@ -548,6 +564,67 @@ The input messages sent to the model | Deprecated | Yes, no replacement at this time | | Deprecation Reason | Deprecated from OTEL, use gen_ai.input.messages with the new format instead. | +### gen_ai.request.available_tools + +The available tools for the model. It has to be a stringified version of an array of objects. + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]` | +| Deprecated | Yes, use `gen_ai.tool.definitions` instead | + +### gen_ai.request.messages + +The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| 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"}}]` | +| Deprecated | Yes, use `gen_ai.input.messages` instead | +| Aliases | `ai.input_messages` | + +### gen_ai.response.text + +The model's response text messages. It has to be a stringified version of an array of response text messages. + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| 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"]` | +| Deprecated | Yes, use `gen_ai.output.messages` instead | + +### gen_ai.response.tool_calls + +The tool calls in the model's response. It has to be a stringified version of an array of objects. + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | maybe | +| Exists in OpenTelemetry | No | +| Example | `[{"name": "get_weather", "arguments": {"location": "Paris"}}]` | +| Deprecated | Yes, use `gen_ai.output.messages` instead | + +### gen_ai.system.message + +The system instructions passed to the model. + +| Property | Value | +| --- | --- | +| Type | `string` | +| Has PII | true | +| Exists in OpenTelemetry | No | +| Example | `You are a helpful assistant` | +| Deprecated | Yes, use `gen_ai.system_instructions` instead | + ### gen_ai.usage.completion_tokens The number of tokens used in the GenAI response (completion). diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index d3ccaf41..4a98056c 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -2145,6 +2145,26 @@ export const GEN_AI_EMBEDDINGS_INPUT = 'gen_ai.embeddings.input'; */ export type GEN_AI_EMBEDDINGS_INPUT_TYPE = string; +// Path: model/attributes/gen_ai/gen_ai__input__messages.json + +/** + * 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:"..."}`. `gen_ai.input.messages` + * + * Attribute Value Type: `string` {@link GEN_AI_INPUT_MESSAGES_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" + */ +export const GEN_AI_INPUT_MESSAGES = 'gen_ai.input.messages'; + +/** + * Type for {@link GEN_AI_INPUT_MESSAGES} gen_ai.input.messages + */ +export type GEN_AI_INPUT_MESSAGES_TYPE = string; + // Path: model/attributes/gen_ai/gen_ai__operation__name.json /** @@ -2185,6 +2205,26 @@ export const GEN_AI_OPERATION_TYPE = 'gen_ai.operation.type'; */ export type GEN_AI_OPERATION_TYPE_TYPE = string; +// Path: model/attributes/gen_ai/gen_ai__output__messages.json + +/** + * 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. `gen_ai.output.messages` + * + * Attribute Value Type: `string` {@link GEN_AI_OUTPUT_MESSAGES_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]" + */ +export const GEN_AI_OUTPUT_MESSAGES = 'gen_ai.output.messages'; + +/** + * Type for {@link GEN_AI_OUTPUT_MESSAGES} gen_ai.output.messages + */ +export type GEN_AI_OUTPUT_MESSAGES_TYPE = string; + // Path: model/attributes/gen_ai/gen_ai__pipeline__name.json /** @@ -2239,6 +2279,7 @@ export type GEN_AI_PROMPT_TYPE = string; * * Attribute defined in OTEL: No * + * @deprecated Use {@link GEN_AI_TOOL_DEFINITIONS} (gen_ai.tool.definitions) instead * @example "[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]" */ export const GEN_AI_REQUEST_AVAILABLE_TOOLS = 'gen_ai.request.available_tools'; @@ -2303,6 +2344,7 @@ export type GEN_AI_REQUEST_MAX_TOKENS_TYPE = number; * * Aliases: {@link AI_INPUT_MESSAGES} `ai.input_messages` * + * @deprecated Use {@link GEN_AI_INPUT_MESSAGES} (gen_ai.input.messages) instead * @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\"}}]" */ export const GEN_AI_REQUEST_MESSAGES = 'gen_ai.request.messages'; @@ -2541,6 +2583,7 @@ export type GEN_AI_RESPONSE_STREAMING_TYPE = boolean; * * Attribute defined in OTEL: No * + * @deprecated Use {@link GEN_AI_OUTPUT_MESSAGES} (gen_ai.output.messages) instead * @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\"]" */ export const GEN_AI_RESPONSE_TEXT = 'gen_ai.response.text'; @@ -2581,6 +2624,7 @@ export type GEN_AI_RESPONSE_TOKENS_PER_SECOND_TYPE = number; * * Attribute defined in OTEL: No * + * @deprecated Use {@link GEN_AI_OUTPUT_MESSAGES} (gen_ai.output.messages) instead * @example "[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]" */ export const GEN_AI_RESPONSE_TOOL_CALLS = 'gen_ai.response.tool_calls'; @@ -2612,6 +2656,26 @@ export const GEN_AI_SYSTEM = 'gen_ai.system'; */ export type GEN_AI_SYSTEM_TYPE = string; +// Path: model/attributes/gen_ai/gen_ai__system_instructions.json + +/** + * The system instructions passed to the model. `gen_ai.system_instructions` + * + * Attribute Value Type: `string` {@link GEN_AI_SYSTEM_INSTRUCTIONS_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "You are a helpful assistant" + */ +export const GEN_AI_SYSTEM_INSTRUCTIONS = 'gen_ai.system_instructions'; + +/** + * Type for {@link GEN_AI_SYSTEM_INSTRUCTIONS} gen_ai.system_instructions + */ +export type GEN_AI_SYSTEM_INSTRUCTIONS_TYPE = string; + // Path: model/attributes/gen_ai/gen_ai__system__message.json /** @@ -2623,6 +2687,7 @@ export type GEN_AI_SYSTEM_TYPE = string; * * Attribute defined in OTEL: No * + * @deprecated Use {@link GEN_AI_SYSTEM_INSTRUCTIONS} (gen_ai.system_instructions) instead * @example "You are a helpful assistant" */ export const GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message'; @@ -2632,6 +2697,66 @@ export const GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message'; */ export type GEN_AI_SYSTEM_MESSAGE_TYPE = string; +// Path: model/attributes/gen_ai/gen_ai__tool__call__arguments.json + +/** + * The arguments of the tool call. It has to be a stringified version of the arguments to the tool. `gen_ai.tool.call.arguments` + * + * Attribute Value Type: `string` {@link GEN_AI_TOOL_CALL_ARGUMENTS_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "{\"location\": \"Paris\"}" + */ +export const GEN_AI_TOOL_CALL_ARGUMENTS = 'gen_ai.tool.call.arguments'; + +/** + * Type for {@link GEN_AI_TOOL_CALL_ARGUMENTS} gen_ai.tool.call.arguments + */ +export type GEN_AI_TOOL_CALL_ARGUMENTS_TYPE = string; + +// Path: model/attributes/gen_ai/gen_ai__tool__call__result.json + +/** + * The result of the tool call. It has to be a stringified version of the result of the tool. `gen_ai.tool.call.result` + * + * Attribute Value Type: `string` {@link GEN_AI_TOOL_CALL_RESULT_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "rainy, 57°F" + */ +export const GEN_AI_TOOL_CALL_RESULT = 'gen_ai.tool.call.result'; + +/** + * Type for {@link GEN_AI_TOOL_CALL_RESULT} gen_ai.tool.call.result + */ +export type GEN_AI_TOOL_CALL_RESULT_TYPE = string; + +// Path: model/attributes/gen_ai/gen_ai__tool__definitions.json + +/** + * The list of source system tool definitions available to the GenAI agent or model. `gen_ai.tool.definitions` + * + * Attribute Value Type: `string` {@link GEN_AI_TOOL_DEFINITIONS_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @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\"]}}]" + */ +export const GEN_AI_TOOL_DEFINITIONS = 'gen_ai.tool.definitions'; + +/** + * Type for {@link GEN_AI_TOOL_DEFINITIONS} gen_ai.tool.definitions + */ +export type GEN_AI_TOOL_DEFINITIONS_TYPE = string; + // Path: model/attributes/gen_ai/gen_ai__tool__description.json /** @@ -8615,7 +8740,8 @@ export const VERCEL_STATUS_CODE = 'vercel.status_code'; */ export type VERCEL_STATUS_CODE_TYPE = number; -export type AttributeType = + +export type AttributeType = | 'string' | 'boolean' | 'integer' @@ -8625,7 +8751,10 @@ export type AttributeType = | 'integer[]' | 'double[]'; -export type IsPii = 'true' | 'false' | 'maybe'; +export type IsPii = + | 'true' + | 'false' + | 'maybe'; export interface PiiInfo { /** Whether the attribute contains PII */ @@ -8765,8 +8894,10 @@ export const ATTRIBUTE_TYPE: Record = { [GEN_AI_COST_OUTPUT_TOKENS]: 'double', [GEN_AI_COST_TOTAL_TOKENS]: 'double', [GEN_AI_EMBEDDINGS_INPUT]: 'string', + [GEN_AI_INPUT_MESSAGES]: 'string', [GEN_AI_OPERATION_NAME]: 'string', [GEN_AI_OPERATION_TYPE]: 'string', + [GEN_AI_OUTPUT_MESSAGES]: 'string', [GEN_AI_PIPELINE_NAME]: 'string', [GEN_AI_PROMPT]: 'string', [GEN_AI_REQUEST_AVAILABLE_TOOLS]: 'string', @@ -8787,7 +8918,11 @@ export const ATTRIBUTE_TYPE: Record = { [GEN_AI_RESPONSE_TOKENS_PER_SECOND]: 'double', [GEN_AI_RESPONSE_TOOL_CALLS]: 'string', [GEN_AI_SYSTEM]: 'string', + [GEN_AI_SYSTEM_INSTRUCTIONS]: 'string', [GEN_AI_SYSTEM_MESSAGE]: 'string', + [GEN_AI_TOOL_CALL_ARGUMENTS]: 'string', + [GEN_AI_TOOL_CALL_RESULT]: 'string', + [GEN_AI_TOOL_DEFINITIONS]: 'string', [GEN_AI_TOOL_DESCRIPTION]: 'string', [GEN_AI_TOOL_INPUT]: 'string', [GEN_AI_TOOL_MESSAGE]: 'string', @@ -9080,1033 +9215,608 @@ export const ATTRIBUTE_TYPE: Record = { [VERCEL_STATUS_CODE]: 'integer', }; -export type AttributeName = - | typeof AI_CITATIONS - | typeof AI_COMPLETION_TOKENS_USED - | typeof AI_DOCUMENTS - | typeof AI_FINISH_REASON - | typeof AI_FREQUENCY_PENALTY - | typeof AI_FUNCTION_CALL - | typeof AI_GENERATION_ID - | typeof AI_INPUT_MESSAGES - | typeof AI_IS_SEARCH_REQUIRED - | typeof AI_METADATA - | typeof AI_MODEL_ID - | typeof AI_MODEL_PROVIDER - | typeof AI_PIPELINE_NAME - | typeof AI_PREAMBLE - | typeof AI_PRESENCE_PENALTY - | typeof AI_PROMPT_TOKENS_USED - | typeof AI_RAW_PROMPTING - | typeof AI_RESPONSES - | typeof AI_RESPONSE_FORMAT - | typeof AI_SEARCH_QUERIES - | typeof AI_SEARCH_RESULTS - | typeof AI_SEED - | typeof AI_STREAMING - | typeof AI_TAGS - | typeof AI_TEMPERATURE - | typeof AI_TEXTS - | typeof AI_TOOLS - | typeof AI_TOOL_CALLS - | typeof AI_TOP_K - | typeof AI_TOP_P - | typeof AI_TOTAL_COST - | typeof AI_TOTAL_TOKENS_USED - | typeof AI_WARNINGS - | typeof APP_START_TYPE - | typeof BLOCKED_MAIN_THREAD - | typeof BROWSER_NAME - | typeof BROWSER_REPORT_TYPE - | typeof BROWSER_SCRIPT_INVOKER - | typeof BROWSER_SCRIPT_INVOKER_TYPE - | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION - | typeof BROWSER_VERSION - | typeof CACHE_HIT - | typeof CACHE_ITEM_SIZE - | typeof CACHE_KEY - | typeof CACHE_OPERATION - | typeof CACHE_TTL - | typeof CHANNEL - | typeof CLIENT_ADDRESS - | typeof CLIENT_PORT - | typeof CLOUDFLARE_D1_DURATION - | typeof CLOUDFLARE_D1_ROWS_READ - | typeof CLOUDFLARE_D1_ROWS_WRITTEN - | typeof CODE_FILEPATH - | typeof CODE_FILE_PATH - | typeof CODE_FUNCTION - | typeof CODE_FUNCTION_NAME - | typeof CODE_LINENO - | typeof CODE_LINE_NUMBER - | typeof CODE_NAMESPACE - | typeof DB_COLLECTION_NAME - | typeof DB_NAME - | typeof DB_NAMESPACE - | typeof DB_OPERATION - | typeof DB_OPERATION_NAME - | typeof DB_QUERY_PARAMETER_KEY - | typeof DB_QUERY_SUMMARY - | typeof DB_QUERY_TEXT - | typeof DB_REDIS_CONNECTION - | typeof DB_REDIS_PARAMETERS - | typeof DB_SQL_BINDINGS - | typeof DB_STATEMENT - | typeof DB_SYSTEM - | typeof DB_SYSTEM_NAME - | typeof DB_USER - | typeof DEVICE_BRAND - | typeof DEVICE_FAMILY - | typeof DEVICE_MODEL - | typeof ENVIRONMENT - | typeof ERROR_TYPE - | typeof EVENT_ID - | typeof EVENT_NAME - | typeof EXCEPTION_ESCAPED - | typeof EXCEPTION_MESSAGE - | typeof EXCEPTION_STACKTRACE - | typeof EXCEPTION_TYPE - | typeof FAAS_COLDSTART - | typeof FAAS_CRON - | typeof FAAS_TIME - | typeof FAAS_TRIGGER - | typeof FLAG_EVALUATION_KEY - | typeof FRAMES_DELAY - | typeof FRAMES_FROZEN - | typeof FRAMES_SLOW - | typeof FRAMES_TOTAL - | typeof FS_ERROR - | typeof GEN_AI_AGENT_NAME - | typeof GEN_AI_ASSISTANT_MESSAGE - | typeof GEN_AI_CHOICE - | typeof GEN_AI_COST_INPUT_TOKENS - | typeof GEN_AI_COST_OUTPUT_TOKENS - | typeof GEN_AI_COST_TOTAL_TOKENS - | typeof GEN_AI_EMBEDDINGS_INPUT - | typeof GEN_AI_OPERATION_NAME - | typeof GEN_AI_OPERATION_TYPE - | typeof GEN_AI_PIPELINE_NAME - | typeof GEN_AI_PROMPT - | typeof GEN_AI_REQUEST_AVAILABLE_TOOLS - | typeof GEN_AI_REQUEST_FREQUENCY_PENALTY - | typeof GEN_AI_REQUEST_MAX_TOKENS - | typeof GEN_AI_REQUEST_MESSAGES - | typeof GEN_AI_REQUEST_MODEL - | typeof GEN_AI_REQUEST_PRESENCE_PENALTY - | typeof GEN_AI_REQUEST_SEED - | typeof GEN_AI_REQUEST_TEMPERATURE - | typeof GEN_AI_REQUEST_TOP_K - | typeof GEN_AI_REQUEST_TOP_P - | typeof GEN_AI_RESPONSE_FINISH_REASONS - | typeof GEN_AI_RESPONSE_ID - | typeof GEN_AI_RESPONSE_MODEL - | typeof GEN_AI_RESPONSE_STREAMING - | typeof GEN_AI_RESPONSE_TEXT - | typeof GEN_AI_RESPONSE_TOKENS_PER_SECOND - | typeof GEN_AI_RESPONSE_TOOL_CALLS - | typeof GEN_AI_SYSTEM - | typeof GEN_AI_SYSTEM_MESSAGE - | typeof GEN_AI_TOOL_DESCRIPTION - | typeof GEN_AI_TOOL_INPUT - | typeof GEN_AI_TOOL_MESSAGE - | typeof GEN_AI_TOOL_NAME - | typeof GEN_AI_TOOL_OUTPUT - | typeof GEN_AI_TOOL_TYPE - | typeof GEN_AI_USAGE_COMPLETION_TOKENS - | typeof GEN_AI_USAGE_INPUT_TOKENS - | typeof GEN_AI_USAGE_INPUT_TOKENS_CACHED - | typeof GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE - | typeof GEN_AI_USAGE_OUTPUT_TOKENS - | typeof GEN_AI_USAGE_OUTPUT_TOKENS_REASONING - | typeof GEN_AI_USAGE_PROMPT_TOKENS - | typeof GEN_AI_USAGE_TOTAL_TOKENS - | typeof GEN_AI_USER_MESSAGE - | typeof GRAPHQL_OPERATION_NAME - | typeof GRAPHQL_OPERATION_TYPE - | typeof HTTP_CLIENT_IP - | typeof HTTP_DECODED_RESPONSE_CONTENT_LENGTH - | typeof HTTP_FLAVOR - | typeof HTTP_FRAGMENT - | typeof HTTP_HOST - | typeof HTTP_METHOD - | typeof HTTP_QUERY - | typeof HTTP_REQUEST_CONNECTION_END - | typeof HTTP_REQUEST_CONNECT_START - | typeof HTTP_REQUEST_DOMAIN_LOOKUP_END - | typeof HTTP_REQUEST_DOMAIN_LOOKUP_START - | typeof HTTP_REQUEST_FETCH_START - | typeof HTTP_REQUEST_HEADER_KEY - | typeof HTTP_REQUEST_METHOD - | typeof HTTP_REQUEST_REDIRECT_END - | typeof HTTP_REQUEST_REDIRECT_START - | typeof HTTP_REQUEST_REQUEST_START - | typeof HTTP_REQUEST_RESEND_COUNT - | typeof HTTP_REQUEST_RESPONSE_END - | typeof HTTP_REQUEST_RESPONSE_START - | typeof HTTP_REQUEST_SECURE_CONNECTION_START - | typeof HTTP_REQUEST_TIME_TO_FIRST_BYTE - | typeof HTTP_REQUEST_WORKER_START - | typeof HTTP_RESPONSE_BODY_SIZE - | typeof HTTP_RESPONSE_CONTENT_LENGTH - | typeof HTTP_RESPONSE_HEADER_CONTENT_LENGTH - | typeof HTTP_RESPONSE_HEADER_KEY - | typeof HTTP_RESPONSE_SIZE - | typeof HTTP_RESPONSE_STATUS_CODE - | typeof HTTP_RESPONSE_TRANSFER_SIZE - | typeof HTTP_ROUTE - | typeof HTTP_SCHEME - | typeof HTTP_SERVER_NAME - | typeof HTTP_STATUS_CODE - | typeof HTTP_TARGET - | typeof HTTP_URL - | typeof HTTP_USER_AGENT - | typeof ID - | 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_ELEMENT - | typeof LCP_ID - | typeof LCP_SIZE - | typeof LCP_URL - | typeof LOGGER_NAME - | typeof MCP_CANCELLED_REASON - | typeof MCP_CANCELLED_REQUEST_ID - | typeof MCP_CLIENT_NAME - | typeof MCP_CLIENT_TITLE - | typeof MCP_CLIENT_VERSION - | typeof MCP_LIFECYCLE_PHASE - | typeof MCP_LOGGING_DATA_TYPE - | typeof MCP_LOGGING_LEVEL - | typeof MCP_LOGGING_LOGGER - | typeof MCP_LOGGING_MESSAGE - | typeof MCP_METHOD_NAME - | typeof MCP_PROGRESS_CURRENT - | typeof MCP_PROGRESS_MESSAGE - | typeof MCP_PROGRESS_PERCENTAGE - | typeof MCP_PROGRESS_TOKEN - | typeof MCP_PROGRESS_TOTAL - | typeof MCP_PROMPT_NAME - | typeof MCP_PROMPT_RESULT_DESCRIPTION - | typeof MCP_PROMPT_RESULT_MESSAGE_CONTENT - | typeof MCP_PROMPT_RESULT_MESSAGE_COUNT - | typeof MCP_PROMPT_RESULT_MESSAGE_ROLE - | typeof MCP_PROTOCOL_READY - | typeof MCP_PROTOCOL_VERSION - | typeof MCP_REQUEST_ARGUMENT_KEY - | typeof MCP_REQUEST_ARGUMENT_NAME - | typeof MCP_REQUEST_ARGUMENT_URI - | typeof MCP_REQUEST_ID - | typeof MCP_RESOURCE_PROTOCOL - | typeof MCP_RESOURCE_URI - | typeof MCP_SERVER_NAME - | typeof MCP_SERVER_TITLE - | typeof MCP_SERVER_VERSION - | typeof MCP_SESSION_ID - | typeof MCP_TOOL_NAME - | typeof MCP_TOOL_RESULT_CONTENT - | typeof MCP_TOOL_RESULT_CONTENT_COUNT - | typeof MCP_TOOL_RESULT_IS_ERROR - | typeof MCP_TRANSPORT - | typeof MDC_KEY - | typeof MESSAGING_DESTINATION_CONNECTION - | typeof MESSAGING_DESTINATION_NAME - | typeof MESSAGING_MESSAGE_BODY_SIZE - | typeof MESSAGING_MESSAGE_ENVELOPE_SIZE - | typeof MESSAGING_MESSAGE_ID - | typeof MESSAGING_MESSAGE_RECEIVE_LATENCY - | typeof MESSAGING_MESSAGE_RETRY_COUNT - | typeof MESSAGING_OPERATION_TYPE - | typeof MESSAGING_SYSTEM - | typeof METHOD - | typeof NAVIGATION_TYPE - | typeof NEL_ELAPSED_TIME - | typeof NEL_PHASE - | typeof NEL_REFERRER - | typeof NEL_SAMPLING_FUNCTION - | typeof NEL_TYPE - | typeof NETWORK_LOCAL_ADDRESS - | typeof NETWORK_LOCAL_PORT - | typeof NETWORK_PEER_ADDRESS - | typeof NETWORK_PEER_PORT - | typeof NETWORK_PROTOCOL_NAME - | typeof NETWORK_PROTOCOL_VERSION - | typeof NETWORK_TRANSPORT - | typeof NETWORK_TYPE - | typeof NET_HOST_IP - | typeof NET_HOST_NAME - | typeof NET_HOST_PORT - | typeof NET_PEER_IP - | typeof NET_PEER_NAME - | typeof NET_PEER_PORT - | typeof NET_PROTOCOL_NAME - | typeof NET_PROTOCOL_VERSION - | typeof NET_SOCK_FAMILY - | typeof NET_SOCK_HOST_ADDR - | typeof NET_SOCK_HOST_PORT - | typeof NET_SOCK_PEER_ADDR - | typeof NET_SOCK_PEER_NAME - | typeof NET_SOCK_PEER_PORT - | typeof NET_TRANSPORT - | typeof OS_BUILD_ID - | typeof OS_DESCRIPTION - | typeof OS_NAME - | typeof OS_TYPE - | typeof OS_VERSION - | typeof OTEL_SCOPE_NAME - | typeof OTEL_SCOPE_VERSION - | typeof OTEL_STATUS_CODE - | typeof OTEL_STATUS_DESCRIPTION - | typeof PARAMS_KEY - | typeof PREVIOUS_ROUTE - | typeof PROCESS_EXECUTABLE_NAME - | typeof PROCESS_PID - | typeof PROCESS_RUNTIME_DESCRIPTION - | typeof PROCESS_RUNTIME_NAME - | typeof PROCESS_RUNTIME_VERSION - | typeof PROFILE_ID - | typeof QUERY_KEY - | typeof RELEASE - | typeof REMIX_ACTION_FORM_DATA_KEY - | typeof REPLAY_ID - | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME - | typeof RESOURCE_RENDER_BLOCKING_STATUS - | typeof ROUTE - | typeof RPC_GRPC_STATUS_CODE - | typeof RPC_SERVICE - | typeof SENTRY_ACTION - | typeof SENTRY_BROWSER_NAME - | typeof SENTRY_BROWSER_VERSION - | typeof SENTRY_CANCELLATION_REASON - | typeof SENTRY_CATEGORY - | typeof SENTRY_CLIENT_SAMPLE_RATE - | typeof SENTRY_DESCRIPTION - | typeof SENTRY_DIST - | typeof SENTRY_DOMAIN - | typeof SENTRY_DSC_ENVIRONMENT - | typeof SENTRY_DSC_PUBLIC_KEY - | typeof SENTRY_DSC_RELEASE - | typeof SENTRY_DSC_SAMPLED - | typeof SENTRY_DSC_SAMPLE_RATE - | typeof SENTRY_DSC_TRACE_ID - | typeof SENTRY_DSC_TRANSACTION - | typeof SENTRY_ENVIRONMENT - | typeof SENTRY_EXCLUSIVE_TIME - | typeof SENTRY_GRAPHQL_OPERATION - | typeof SENTRY_GROUP - | typeof SENTRY_HTTP_PREFETCH - | typeof SENTRY_IDLE_SPAN_FINISH_REASON - | typeof SENTRY_IS_REMOTE - | typeof SENTRY_KIND - | typeof SENTRY_MESSAGE_PARAMETER_KEY - | typeof SENTRY_MESSAGE_TEMPLATE - | typeof SENTRY_MODULE_KEY - | typeof SENTRY_NEXTJS_SSR_FUNCTION_ROUTE - | typeof SENTRY_NEXTJS_SSR_FUNCTION_TYPE - | typeof SENTRY_NORMALIZED_DB_QUERY - | typeof SENTRY_NORMALIZED_DB_QUERY_HASH - | typeof SENTRY_NORMALIZED_DESCRIPTION - | typeof SENTRY_OBSERVED_TIMESTAMP_NANOS - | typeof SENTRY_OP - | typeof SENTRY_ORIGIN - | typeof SENTRY_PLATFORM - | typeof SENTRY_PROFILE_ID - | typeof SENTRY_RELEASE - | typeof SENTRY_REPLAY_ID - | typeof SENTRY_REPLAY_IS_BUFFERING - | typeof SENTRY_SDK_INTEGRATIONS - | typeof SENTRY_SDK_NAME - | typeof SENTRY_SDK_VERSION - | typeof SENTRY_SEGMENT_ID - | typeof _SENTRY_SEGMENT_ID - | typeof SENTRY_SEGMENT_NAME - | typeof SENTRY_SERVER_SAMPLE_RATE - | typeof SENTRY_SPAN_SOURCE - | typeof SENTRY_STATUS_MESSAGE - | typeof SENTRY_TRACE_PARENT_SPAN_ID - | typeof SENTRY_TRANSACTION - | typeof SERVER_ADDRESS - | typeof SERVER_PORT - | typeof SERVICE_NAME - | typeof SERVICE_VERSION - | typeof THREAD_ID - | typeof THREAD_NAME - | typeof TIMBER_TAG - | typeof TRANSACTION - | typeof TYPE - | typeof UI_COMPONENT_NAME - | typeof UI_CONTRIBUTES_TO_TTFD - | typeof UI_CONTRIBUTES_TO_TTID - | typeof URL - | typeof URL_DOMAIN - | typeof URL_FRAGMENT - | typeof URL_FULL - | typeof URL_PATH - | typeof URL_PATH_PARAMETER_KEY - | typeof URL_PORT - | typeof URL_QUERY - | typeof URL_SCHEME - | typeof URL_TEMPLATE - | typeof USER_AGENT_ORIGINAL - | typeof USER_EMAIL - | typeof USER_FULL_NAME - | typeof USER_GEO_CITY - | typeof USER_GEO_COUNTRY_CODE - | typeof USER_GEO_REGION - | typeof USER_GEO_SUBDIVISION - | typeof USER_HASH - | typeof USER_ID - | typeof USER_IP_ADDRESS - | typeof USER_NAME - | typeof USER_ROLES - | typeof VERCEL_BRANCH - | typeof VERCEL_BUILD_ID - | typeof VERCEL_DEPLOYMENT_ID - | typeof VERCEL_DESTINATION - | typeof VERCEL_EDGE_TYPE - | typeof VERCEL_ENTRYPOINT - | typeof VERCEL_EXECUTION_REGION - | typeof VERCEL_ID - | typeof VERCEL_JA3_DIGEST - | typeof VERCEL_JA4_DIGEST - | typeof VERCEL_LOG_TYPE - | typeof VERCEL_PROJECT_ID - | typeof VERCEL_PROJECT_NAME - | typeof VERCEL_PROXY_CACHE_ID - | typeof VERCEL_PROXY_CLIENT_IP - | typeof VERCEL_PROXY_HOST - | typeof VERCEL_PROXY_LAMBDA_REGION - | typeof VERCEL_PROXY_METHOD - | typeof VERCEL_PROXY_PATH - | typeof VERCEL_PROXY_PATH_TYPE - | typeof VERCEL_PROXY_PATH_TYPE_VARIANT - | typeof VERCEL_PROXY_REFERER - | typeof VERCEL_PROXY_REGION - | typeof VERCEL_PROXY_RESPONSE_BYTE_SIZE - | typeof VERCEL_PROXY_SCHEME - | typeof VERCEL_PROXY_STATUS_CODE - | typeof VERCEL_PROXY_TIMESTAMP - | typeof VERCEL_PROXY_USER_AGENT - | typeof VERCEL_PROXY_VERCEL_CACHE - | typeof VERCEL_PROXY_VERCEL_ID - | typeof VERCEL_PROXY_WAF_ACTION - | typeof VERCEL_PROXY_WAF_RULE_ID - | typeof VERCEL_REQUEST_ID - | typeof VERCEL_SOURCE - | typeof VERCEL_STATUS_CODE; +export type AttributeName = typeof AI_CITATIONS | typeof AI_COMPLETION_TOKENS_USED | typeof AI_DOCUMENTS | typeof AI_FINISH_REASON | typeof AI_FREQUENCY_PENALTY | typeof AI_FUNCTION_CALL | typeof AI_GENERATION_ID | typeof AI_INPUT_MESSAGES | typeof AI_IS_SEARCH_REQUIRED | typeof AI_METADATA | typeof AI_MODEL_ID | typeof AI_MODEL_PROVIDER | typeof AI_PIPELINE_NAME | typeof AI_PREAMBLE | typeof AI_PRESENCE_PENALTY | typeof AI_PROMPT_TOKENS_USED | typeof AI_RAW_PROMPTING | typeof AI_RESPONSES | typeof AI_RESPONSE_FORMAT | typeof AI_SEARCH_QUERIES | typeof AI_SEARCH_RESULTS | typeof AI_SEED | typeof AI_STREAMING | typeof AI_TAGS | typeof AI_TEMPERATURE | typeof AI_TEXTS | typeof AI_TOOLS | typeof AI_TOOL_CALLS | typeof AI_TOP_K | typeof AI_TOP_P | typeof AI_TOTAL_COST | typeof AI_TOTAL_TOKENS_USED | typeof AI_WARNINGS | typeof APP_START_TYPE | typeof BLOCKED_MAIN_THREAD | typeof BROWSER_NAME | typeof BROWSER_REPORT_TYPE | typeof BROWSER_SCRIPT_INVOKER | typeof BROWSER_SCRIPT_INVOKER_TYPE | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION | typeof BROWSER_VERSION | typeof CACHE_HIT | typeof CACHE_ITEM_SIZE | typeof CACHE_KEY | typeof CACHE_OPERATION | typeof CACHE_TTL | typeof CHANNEL | typeof CLIENT_ADDRESS | typeof CLIENT_PORT | typeof CLOUDFLARE_D1_DURATION | typeof CLOUDFLARE_D1_ROWS_READ | typeof CLOUDFLARE_D1_ROWS_WRITTEN | typeof CODE_FILEPATH | typeof CODE_FILE_PATH | typeof CODE_FUNCTION | typeof CODE_FUNCTION_NAME | typeof CODE_LINENO | typeof CODE_LINE_NUMBER | typeof CODE_NAMESPACE | typeof DB_COLLECTION_NAME | typeof DB_NAME | typeof DB_NAMESPACE | typeof DB_OPERATION | typeof DB_OPERATION_NAME | typeof DB_QUERY_PARAMETER_KEY | typeof DB_QUERY_SUMMARY | typeof DB_QUERY_TEXT | typeof DB_REDIS_CONNECTION | typeof DB_REDIS_PARAMETERS | typeof DB_SQL_BINDINGS | typeof DB_STATEMENT | typeof DB_SYSTEM | typeof DB_SYSTEM_NAME | typeof DB_USER | typeof DEVICE_BRAND | typeof DEVICE_FAMILY | typeof DEVICE_MODEL | typeof ENVIRONMENT | typeof ERROR_TYPE | typeof EVENT_ID | typeof EVENT_NAME | typeof EXCEPTION_ESCAPED | typeof EXCEPTION_MESSAGE | typeof EXCEPTION_STACKTRACE | typeof EXCEPTION_TYPE | typeof FAAS_COLDSTART | typeof FAAS_CRON | typeof FAAS_TIME | typeof FAAS_TRIGGER | typeof FLAG_EVALUATION_KEY | typeof FRAMES_DELAY | typeof FRAMES_FROZEN | typeof FRAMES_SLOW | typeof FRAMES_TOTAL | typeof FS_ERROR | typeof GEN_AI_AGENT_NAME | typeof GEN_AI_ASSISTANT_MESSAGE | typeof GEN_AI_CHOICE | typeof GEN_AI_COST_INPUT_TOKENS | typeof GEN_AI_COST_OUTPUT_TOKENS | typeof GEN_AI_COST_TOTAL_TOKENS | typeof GEN_AI_EMBEDDINGS_INPUT | typeof GEN_AI_INPUT_MESSAGES | typeof GEN_AI_OPERATION_NAME | typeof GEN_AI_OPERATION_TYPE | typeof GEN_AI_OUTPUT_MESSAGES | typeof GEN_AI_PIPELINE_NAME | typeof GEN_AI_PROMPT | typeof GEN_AI_REQUEST_AVAILABLE_TOOLS | typeof GEN_AI_REQUEST_FREQUENCY_PENALTY | typeof GEN_AI_REQUEST_MAX_TOKENS | typeof GEN_AI_REQUEST_MESSAGES | typeof GEN_AI_REQUEST_MODEL | typeof GEN_AI_REQUEST_PRESENCE_PENALTY | typeof GEN_AI_REQUEST_SEED | typeof GEN_AI_REQUEST_TEMPERATURE | typeof GEN_AI_REQUEST_TOP_K | typeof GEN_AI_REQUEST_TOP_P | typeof GEN_AI_RESPONSE_FINISH_REASONS | typeof GEN_AI_RESPONSE_ID | typeof GEN_AI_RESPONSE_MODEL | typeof GEN_AI_RESPONSE_STREAMING | typeof GEN_AI_RESPONSE_TEXT | typeof GEN_AI_RESPONSE_TOKENS_PER_SECOND | typeof GEN_AI_RESPONSE_TOOL_CALLS | typeof GEN_AI_SYSTEM | typeof GEN_AI_SYSTEM_INSTRUCTIONS | typeof GEN_AI_SYSTEM_MESSAGE | typeof GEN_AI_TOOL_CALL_ARGUMENTS | typeof GEN_AI_TOOL_CALL_RESULT | typeof GEN_AI_TOOL_DEFINITIONS | typeof GEN_AI_TOOL_DESCRIPTION | typeof GEN_AI_TOOL_INPUT | typeof GEN_AI_TOOL_MESSAGE | typeof GEN_AI_TOOL_NAME | typeof GEN_AI_TOOL_OUTPUT | typeof GEN_AI_TOOL_TYPE | typeof GEN_AI_USAGE_COMPLETION_TOKENS | typeof GEN_AI_USAGE_INPUT_TOKENS | typeof GEN_AI_USAGE_INPUT_TOKENS_CACHED | typeof GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE | typeof GEN_AI_USAGE_OUTPUT_TOKENS | typeof GEN_AI_USAGE_OUTPUT_TOKENS_REASONING | typeof GEN_AI_USAGE_PROMPT_TOKENS | typeof GEN_AI_USAGE_TOTAL_TOKENS | typeof GEN_AI_USER_MESSAGE | typeof GRAPHQL_OPERATION_NAME | typeof GRAPHQL_OPERATION_TYPE | typeof HTTP_CLIENT_IP | typeof HTTP_DECODED_RESPONSE_CONTENT_LENGTH | typeof HTTP_FLAVOR | typeof HTTP_FRAGMENT | typeof HTTP_HOST | typeof HTTP_METHOD | typeof HTTP_QUERY | typeof HTTP_REQUEST_CONNECTION_END | typeof HTTP_REQUEST_CONNECT_START | typeof HTTP_REQUEST_DOMAIN_LOOKUP_END | typeof HTTP_REQUEST_DOMAIN_LOOKUP_START | typeof HTTP_REQUEST_FETCH_START | typeof HTTP_REQUEST_HEADER_KEY | typeof HTTP_REQUEST_METHOD | typeof HTTP_REQUEST_REDIRECT_END | typeof HTTP_REQUEST_REDIRECT_START | typeof HTTP_REQUEST_REQUEST_START | typeof HTTP_REQUEST_RESEND_COUNT | typeof HTTP_REQUEST_RESPONSE_END | typeof HTTP_REQUEST_RESPONSE_START | typeof HTTP_REQUEST_SECURE_CONNECTION_START | typeof HTTP_REQUEST_TIME_TO_FIRST_BYTE | typeof HTTP_REQUEST_WORKER_START | typeof HTTP_RESPONSE_BODY_SIZE | typeof HTTP_RESPONSE_CONTENT_LENGTH | typeof HTTP_RESPONSE_HEADER_CONTENT_LENGTH | typeof HTTP_RESPONSE_HEADER_KEY | typeof HTTP_RESPONSE_SIZE | typeof HTTP_RESPONSE_STATUS_CODE | typeof HTTP_RESPONSE_TRANSFER_SIZE | typeof HTTP_ROUTE | typeof HTTP_SCHEME | typeof HTTP_SERVER_NAME | typeof HTTP_STATUS_CODE | typeof HTTP_TARGET | typeof HTTP_URL | typeof HTTP_USER_AGENT | typeof ID | 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_ELEMENT | typeof LCP_ID | typeof LCP_SIZE | typeof LCP_URL | typeof LOGGER_NAME | typeof MCP_CANCELLED_REASON | typeof MCP_CANCELLED_REQUEST_ID | typeof MCP_CLIENT_NAME | typeof MCP_CLIENT_TITLE | typeof MCP_CLIENT_VERSION | typeof MCP_LIFECYCLE_PHASE | typeof MCP_LOGGING_DATA_TYPE | typeof MCP_LOGGING_LEVEL | typeof MCP_LOGGING_LOGGER | typeof MCP_LOGGING_MESSAGE | typeof MCP_METHOD_NAME | typeof MCP_PROGRESS_CURRENT | typeof MCP_PROGRESS_MESSAGE | typeof MCP_PROGRESS_PERCENTAGE | typeof MCP_PROGRESS_TOKEN | typeof MCP_PROGRESS_TOTAL | typeof MCP_PROMPT_NAME | typeof MCP_PROMPT_RESULT_DESCRIPTION | typeof MCP_PROMPT_RESULT_MESSAGE_CONTENT | typeof MCP_PROMPT_RESULT_MESSAGE_COUNT | typeof MCP_PROMPT_RESULT_MESSAGE_ROLE | typeof MCP_PROTOCOL_READY | typeof MCP_PROTOCOL_VERSION | typeof MCP_REQUEST_ARGUMENT_KEY | typeof MCP_REQUEST_ARGUMENT_NAME | typeof MCP_REQUEST_ARGUMENT_URI | typeof MCP_REQUEST_ID | typeof MCP_RESOURCE_PROTOCOL | typeof MCP_RESOURCE_URI | typeof MCP_SERVER_NAME | typeof MCP_SERVER_TITLE | typeof MCP_SERVER_VERSION | typeof MCP_SESSION_ID | typeof MCP_TOOL_NAME | typeof MCP_TOOL_RESULT_CONTENT | typeof MCP_TOOL_RESULT_CONTENT_COUNT | typeof MCP_TOOL_RESULT_IS_ERROR | typeof MCP_TRANSPORT | typeof MDC_KEY | typeof MESSAGING_DESTINATION_CONNECTION | typeof MESSAGING_DESTINATION_NAME | typeof MESSAGING_MESSAGE_BODY_SIZE | typeof MESSAGING_MESSAGE_ENVELOPE_SIZE | typeof MESSAGING_MESSAGE_ID | typeof MESSAGING_MESSAGE_RECEIVE_LATENCY | typeof MESSAGING_MESSAGE_RETRY_COUNT | typeof MESSAGING_OPERATION_TYPE | typeof MESSAGING_SYSTEM | typeof METHOD | typeof NAVIGATION_TYPE | typeof NEL_ELAPSED_TIME | typeof NEL_PHASE | typeof NEL_REFERRER | typeof NEL_SAMPLING_FUNCTION | typeof NEL_TYPE | typeof NETWORK_LOCAL_ADDRESS | typeof NETWORK_LOCAL_PORT | typeof NETWORK_PEER_ADDRESS | typeof NETWORK_PEER_PORT | typeof NETWORK_PROTOCOL_NAME | typeof NETWORK_PROTOCOL_VERSION | typeof NETWORK_TRANSPORT | typeof NETWORK_TYPE | typeof NET_HOST_IP | typeof NET_HOST_NAME | typeof NET_HOST_PORT | typeof NET_PEER_IP | typeof NET_PEER_NAME | typeof NET_PEER_PORT | typeof NET_PROTOCOL_NAME | typeof NET_PROTOCOL_VERSION | typeof NET_SOCK_FAMILY | typeof NET_SOCK_HOST_ADDR | typeof NET_SOCK_HOST_PORT | typeof NET_SOCK_PEER_ADDR | typeof NET_SOCK_PEER_NAME | typeof NET_SOCK_PEER_PORT | typeof NET_TRANSPORT | typeof OS_BUILD_ID | typeof OS_DESCRIPTION | typeof OS_NAME | typeof OS_TYPE | typeof OS_VERSION | typeof OTEL_SCOPE_NAME | typeof OTEL_SCOPE_VERSION | typeof OTEL_STATUS_CODE | typeof OTEL_STATUS_DESCRIPTION | typeof PARAMS_KEY | typeof PREVIOUS_ROUTE | typeof PROCESS_EXECUTABLE_NAME | typeof PROCESS_PID | typeof PROCESS_RUNTIME_DESCRIPTION | typeof PROCESS_RUNTIME_NAME | typeof PROCESS_RUNTIME_VERSION | typeof PROFILE_ID | typeof QUERY_KEY | typeof RELEASE | typeof REMIX_ACTION_FORM_DATA_KEY | typeof REPLAY_ID | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME | typeof RESOURCE_RENDER_BLOCKING_STATUS | typeof ROUTE | typeof RPC_GRPC_STATUS_CODE | typeof RPC_SERVICE | typeof SENTRY_ACTION | typeof SENTRY_BROWSER_NAME | typeof SENTRY_BROWSER_VERSION | typeof SENTRY_CANCELLATION_REASON | typeof SENTRY_CATEGORY | typeof SENTRY_CLIENT_SAMPLE_RATE | typeof SENTRY_DESCRIPTION | typeof SENTRY_DIST | typeof SENTRY_DOMAIN | typeof SENTRY_DSC_ENVIRONMENT | typeof SENTRY_DSC_PUBLIC_KEY | typeof SENTRY_DSC_RELEASE | typeof SENTRY_DSC_SAMPLED | typeof SENTRY_DSC_SAMPLE_RATE | typeof SENTRY_DSC_TRACE_ID | typeof SENTRY_DSC_TRANSACTION | typeof SENTRY_ENVIRONMENT | typeof SENTRY_EXCLUSIVE_TIME | typeof SENTRY_GRAPHQL_OPERATION | typeof SENTRY_GROUP | typeof SENTRY_HTTP_PREFETCH | typeof SENTRY_IDLE_SPAN_FINISH_REASON | typeof SENTRY_IS_REMOTE | typeof SENTRY_KIND | typeof SENTRY_MESSAGE_PARAMETER_KEY | typeof SENTRY_MESSAGE_TEMPLATE | typeof SENTRY_MODULE_KEY | typeof SENTRY_NEXTJS_SSR_FUNCTION_ROUTE | typeof SENTRY_NEXTJS_SSR_FUNCTION_TYPE | typeof SENTRY_NORMALIZED_DB_QUERY | typeof SENTRY_NORMALIZED_DB_QUERY_HASH | typeof SENTRY_NORMALIZED_DESCRIPTION | typeof SENTRY_OBSERVED_TIMESTAMP_NANOS | typeof SENTRY_OP | typeof SENTRY_ORIGIN | typeof SENTRY_PLATFORM | typeof SENTRY_PROFILE_ID | typeof SENTRY_RELEASE | typeof SENTRY_REPLAY_ID | typeof SENTRY_REPLAY_IS_BUFFERING | typeof SENTRY_SDK_INTEGRATIONS | typeof SENTRY_SDK_NAME | typeof SENTRY_SDK_VERSION | typeof SENTRY_SEGMENT_ID | typeof _SENTRY_SEGMENT_ID | typeof SENTRY_SEGMENT_NAME | typeof SENTRY_SERVER_SAMPLE_RATE | typeof SENTRY_SPAN_SOURCE | typeof SENTRY_STATUS_MESSAGE | typeof SENTRY_TRACE_PARENT_SPAN_ID | typeof SENTRY_TRANSACTION | typeof SERVER_ADDRESS | typeof SERVER_PORT | typeof SERVICE_NAME | typeof SERVICE_VERSION | typeof THREAD_ID | typeof THREAD_NAME | typeof TIMBER_TAG | typeof TRANSACTION | typeof TYPE | typeof UI_COMPONENT_NAME | typeof UI_CONTRIBUTES_TO_TTFD | typeof UI_CONTRIBUTES_TO_TTID | typeof URL | typeof URL_DOMAIN | typeof URL_FRAGMENT | typeof URL_FULL | typeof URL_PATH | typeof URL_PATH_PARAMETER_KEY | typeof URL_PORT | typeof URL_QUERY | typeof URL_SCHEME | typeof URL_TEMPLATE | typeof USER_AGENT_ORIGINAL | typeof USER_EMAIL | typeof USER_FULL_NAME | typeof USER_GEO_CITY | typeof USER_GEO_COUNTRY_CODE | typeof USER_GEO_REGION | typeof USER_GEO_SUBDIVISION | typeof USER_HASH | typeof USER_ID | typeof USER_IP_ADDRESS | typeof USER_NAME | typeof USER_ROLES | typeof VERCEL_BRANCH | typeof VERCEL_BUILD_ID | typeof VERCEL_DEPLOYMENT_ID | typeof VERCEL_DESTINATION | typeof VERCEL_EDGE_TYPE | typeof VERCEL_ENTRYPOINT | typeof VERCEL_EXECUTION_REGION | typeof VERCEL_ID | typeof VERCEL_JA3_DIGEST | typeof VERCEL_JA4_DIGEST | typeof VERCEL_LOG_TYPE | typeof VERCEL_PROJECT_ID | typeof VERCEL_PROJECT_NAME | typeof VERCEL_PROXY_CACHE_ID | typeof VERCEL_PROXY_CLIENT_IP | typeof VERCEL_PROXY_HOST | typeof VERCEL_PROXY_LAMBDA_REGION | typeof VERCEL_PROXY_METHOD | typeof VERCEL_PROXY_PATH | typeof VERCEL_PROXY_PATH_TYPE | typeof VERCEL_PROXY_PATH_TYPE_VARIANT | typeof VERCEL_PROXY_REFERER | typeof VERCEL_PROXY_REGION | typeof VERCEL_PROXY_RESPONSE_BYTE_SIZE | typeof VERCEL_PROXY_SCHEME | typeof VERCEL_PROXY_STATUS_CODE | typeof VERCEL_PROXY_TIMESTAMP | typeof VERCEL_PROXY_USER_AGENT | typeof VERCEL_PROXY_VERCEL_CACHE | typeof VERCEL_PROXY_VERCEL_ID | typeof VERCEL_PROXY_WAF_ACTION | typeof VERCEL_PROXY_WAF_RULE_ID | typeof VERCEL_REQUEST_ID | typeof VERCEL_SOURCE | typeof VERCEL_STATUS_CODE; export const ATTRIBUTE_METADATA: Record = { [AI_CITATIONS]: { - brief: 'References or sources cited by the AI model in its response.', + brief: "References or sources cited by the AI model in its response.", type: 'string[]', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: ['Citation 1', 'Citation 2'], + example: ["Citation 1","Citation 2"], }, [AI_COMPLETION_TOKENS_USED]: { - brief: 'The number of tokens used to respond to the message.', + brief: "The number of tokens used to respond to the message.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 10, deprecation: { - replacement: 'gen_ai.usage.output_tokens', + replacement: "gen_ai.usage.output_tokens" }, aliases: [GEN_AI_USAGE_OUTPUT_TOKENS, GEN_AI_USAGE_COMPLETION_TOKENS], - sdks: ['python'], + sdks: ["python"], }, [AI_DOCUMENTS]: { - brief: 'Documents or content chunks used as context for the AI model.', + brief: "Documents or content chunks used as context for the AI model.", type: 'string[]', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: ['document1.txt', 'document2.pdf'], + example: ["document1.txt","document2.pdf"], }, [AI_FINISH_REASON]: { - brief: 'The reason why the model stopped generating.', + brief: "The reason why the model stopped generating.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'COMPLETE', + example: "COMPLETE", deprecation: { - replacement: 'gen_ai.response.finish_reason', + replacement: "gen_ai.response.finish_reason" }, aliases: [GEN_AI_RESPONSE_FINISH_REASONS], }, [AI_FREQUENCY_PENALTY]: { - 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.', + brief: "Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 0.5, deprecation: { - replacement: 'gen_ai.request.frequency_penalty', + replacement: "gen_ai.request.frequency_penalty" }, aliases: [GEN_AI_REQUEST_FREQUENCY_PENALTY], }, [AI_FUNCTION_CALL]: { - brief: - 'For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls', + brief: "For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: 'function_name', + example: "function_name", deprecation: { - replacement: 'gen_ai.tool.name', + replacement: "gen_ai.tool.name" }, aliases: [GEN_AI_TOOL_NAME], }, [AI_GENERATION_ID]: { - brief: 'Unique identifier for the completion.', + brief: "Unique identifier for the completion.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'gen_123abc', + example: "gen_123abc", deprecation: { - replacement: 'gen_ai.response.id', + replacement: "gen_ai.response.id" }, aliases: [GEN_AI_RESPONSE_ID], }, [AI_INPUT_MESSAGES]: { - brief: 'The input messages sent to the model', + brief: "The input messages sent to the model", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '[{"role": "user", "message": "hello"}]', + example: "[{\"role\": \"user\", \"message\": \"hello\"}]", deprecation: { - replacement: 'gen_ai.request.messages', + replacement: "gen_ai.request.messages" }, aliases: [GEN_AI_REQUEST_MESSAGES], - sdks: ['python'], + sdks: ["python"], }, [AI_IS_SEARCH_REQUIRED]: { - brief: 'Boolean indicating if the model needs to perform a search.', + brief: "Boolean indicating if the model needs to perform a search.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: false, }, [AI_METADATA]: { - brief: 'Extra metadata passed to an AI pipeline step.', + brief: "Extra metadata passed to an AI pipeline step.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '{"user_id": 123, "session_id": "abc123"}', + example: "{\"user_id\": 123, \"session_id\": \"abc123\"}", }, [AI_MODEL_ID]: { - brief: 'The vendor-specific ID of the model used.', + brief: "The vendor-specific ID of the model used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'gpt-4', + example: "gpt-4", deprecation: { - replacement: 'gen_ai.response.model', + replacement: "gen_ai.response.model" }, aliases: [GEN_AI_RESPONSE_MODEL], - sdks: ['python'], + sdks: ["python"], }, [AI_MODEL_PROVIDER]: { - brief: 'The provider of the model.', + brief: "The provider of the model.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'openai', + example: "openai", deprecation: { - replacement: 'gen_ai.system', + replacement: "gen_ai.system" }, aliases: [GEN_AI_SYSTEM], }, [AI_PIPELINE_NAME]: { - brief: 'The name of the AI pipeline.', + brief: "The name of the AI pipeline.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Autofix Pipeline', + example: "Autofix Pipeline", deprecation: { - replacement: 'gen_ai.pipeline.name', + replacement: "gen_ai.pipeline.name" }, aliases: [GEN_AI_PIPELINE_NAME], }, [AI_PREAMBLE]: { - 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.", + brief: "For an AI model call, the preamble parameter. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: 'You are now a clown.', + example: "You are now a clown.", }, [AI_PRESENCE_PENALTY]: { - 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.', + brief: "Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 0.5, deprecation: { - replacement: 'gen_ai.request.presence_penalty', + replacement: "gen_ai.request.presence_penalty" }, aliases: [GEN_AI_REQUEST_PRESENCE_PENALTY], }, [AI_PROMPT_TOKENS_USED]: { - brief: 'The number of tokens used to process just the prompt.', + brief: "The number of tokens used to process just the prompt.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 20, deprecation: { - replacement: 'gen_ai.usage.input_tokens', + replacement: "gen_ai.usage.input_tokens" }, aliases: [GEN_AI_USAGE_PROMPT_TOKENS, GEN_AI_USAGE_INPUT_TOKENS], - sdks: ['python'], + sdks: ["python"], }, [AI_RAW_PROMPTING]: { - brief: 'When enabled, the user’s prompt will be sent to the model without any pre-processing.', + brief: "When enabled, the user’s prompt will be sent to the model without any pre-processing.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, }, [AI_RESPONSES]: { - brief: 'The response messages sent back by the AI model.', + brief: "The response messages sent back by the AI model.", type: 'string[]', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: ['hello', 'world'], + example: ["hello","world"], deprecation: { - replacement: 'gen_ai.response.text', + replacement: "gen_ai.response.text" }, - sdks: ['python'], + sdks: ["python"], }, [AI_RESPONSE_FORMAT]: { - brief: 'For an AI model call, the format of the response', + brief: "For an AI model call, the format of the response", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'json_object', + example: "json_object", }, [AI_SEARCH_QUERIES]: { - brief: 'Queries used to search for relevant context or documents.', + brief: "Queries used to search for relevant context or documents.", type: 'string[]', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: ['climate change effects', 'renewable energy'], + example: ["climate change effects","renewable energy"], }, [AI_SEARCH_RESULTS]: { - brief: 'Results returned from search queries for context.', + brief: "Results returned from search queries for context.", type: 'string[]', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: ['search_result_1, search_result_2'], + example: ["search_result_1, search_result_2"], }, [AI_SEED]: { - brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', + brief: "The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '1234567890', + example: "1234567890", deprecation: { - replacement: 'gen_ai.request.seed', + replacement: "gen_ai.request.seed" }, aliases: [GEN_AI_REQUEST_SEED], }, [AI_STREAMING]: { - brief: 'Whether the request was streamed back.', + brief: "Whether the request was streamed back.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, deprecation: { - replacement: 'gen_ai.response.streaming', + replacement: "gen_ai.response.streaming" }, aliases: [GEN_AI_RESPONSE_STREAMING], - sdks: ['python'], + sdks: ["python"], }, [AI_TAGS]: { - brief: 'Tags that describe an AI pipeline step.', + brief: "Tags that describe an AI pipeline step.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '{"executed_function": "add_integers"}', + example: "{\"executed_function\": \"add_integers\"}", }, [AI_TEMPERATURE]: { - brief: - 'For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.', + brief: "For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 0.1, deprecation: { - replacement: 'gen_ai.request.temperature', + replacement: "gen_ai.request.temperature" }, aliases: [GEN_AI_REQUEST_TEMPERATURE], }, [AI_TEXTS]: { - brief: 'Raw text inputs provided to the model.', + brief: "Raw text inputs provided to the model.", type: 'string[]', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: ['Hello, how are you?', 'What is the capital of France?'], + example: ["Hello, how are you?","What is the capital of France?"], }, [AI_TOOLS]: { - brief: 'For an AI model call, the functions that are available', + brief: "For an AI model call, the functions that are available", type: 'string[]', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: ['function_1', 'function_2'], + example: ["function_1","function_2"], deprecation: { - replacement: 'gen_ai.request.available_tools', + replacement: "gen_ai.request.available_tools" }, }, [AI_TOOL_CALLS]: { - brief: 'For an AI model call, the tool calls that were made.', + brief: "For an AI model call, the tool calls that were made.", type: 'string[]', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: ['tool_call_1', 'tool_call_2'], + example: ["tool_call_1","tool_call_2"], deprecation: { - replacement: 'gen_ai.response.tool_calls', + replacement: "gen_ai.response.tool_calls" }, }, [AI_TOP_K]: { - 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).', + brief: "Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 35, deprecation: { - replacement: 'gen_ai.request.top_k', + replacement: "gen_ai.request.top_k" }, aliases: [GEN_AI_REQUEST_TOP_K], }, [AI_TOP_P]: { - 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).', + brief: "Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 0.7, deprecation: { - replacement: 'gen_ai.request.top_p', + replacement: "gen_ai.request.top_p" }, aliases: [GEN_AI_REQUEST_TOP_P], }, [AI_TOTAL_COST]: { - brief: 'The total cost for the tokens used.', + brief: "The total cost for the tokens used.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 12.34, }, [AI_TOTAL_TOKENS_USED]: { - brief: 'The total number of tokens used to process the prompt.', + brief: "The total number of tokens used to process the prompt.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 30, deprecation: { - replacement: 'gen_ai.usage.total_tokens', + replacement: "gen_ai.usage.total_tokens" }, aliases: [GEN_AI_USAGE_TOTAL_TOKENS], - sdks: ['python'], + sdks: ["python"], }, [AI_WARNINGS]: { - brief: 'Warning messages generated during model execution.', + brief: "Warning messages generated during model execution.", type: 'string[]', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: ['Token limit exceeded'], + example: ["Token limit exceeded"], }, [APP_START_TYPE]: { - brief: 'Mobile app start variant. Either cold or warm.', + brief: "Mobile app start variant. Either cold or warm.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'cold', + example: "cold", }, [BLOCKED_MAIN_THREAD]: { - brief: 'Whether the main thread was blocked by the span.', + brief: "Whether the main thread was blocked by the span.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, }, [BROWSER_NAME]: { - brief: 'The name of the browser.', + brief: "The name of the browser.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Chrome', + example: "Chrome", aliases: [SENTRY_BROWSER_NAME], }, [BROWSER_REPORT_TYPE]: { - brief: 'A browser report sent via reporting API..', + brief: "A browser report sent via reporting API..", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'network-error', + example: "network-error", }, [BROWSER_SCRIPT_INVOKER]: { - brief: 'How a script was called in the browser.', + brief: "How a script was called in the browser.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Window.requestAnimationFrame', - sdks: ['browser'], + example: "Window.requestAnimationFrame", + sdks: ["browser"], }, [BROWSER_SCRIPT_INVOKER_TYPE]: { - brief: 'Browser script entry point type.', + brief: "Browser script entry point type.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'event-listener', - sdks: ['browser'], + example: "event-listener", + sdks: ["browser"], }, [BROWSER_SCRIPT_SOURCE_CHAR_POSITION]: { - brief: 'A number representing the script character position of the script.', + brief: "A number representing the script character position of the script.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 678, - sdks: ['browser'], + sdks: ["browser"], }, [BROWSER_VERSION]: { - brief: 'The version of the browser.', + brief: "The version of the browser.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '120.0.6099.130', + example: "120.0.6099.130", aliases: [SENTRY_BROWSER_VERSION], }, [CACHE_HIT]: { - brief: 'If the cache was hit during this span.', + brief: "If the cache was hit during this span.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, - sdks: ['php-laravel'], + sdks: ["php-laravel"], }, [CACHE_ITEM_SIZE]: { - brief: 'The size of the requested item in the cache. In bytes.', + brief: "The size of the requested item in the cache. In bytes.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 58, }, [CACHE_KEY]: { - brief: 'The key of the cache accessed.', + brief: "The key of the cache accessed.", type: 'string[]', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: ['my-cache-key', 'my-other-cache-key'], - sdks: ['php-laravel'], + example: ["my-cache-key","my-other-cache-key"], + sdks: ["php-laravel"], }, [CACHE_OPERATION]: { - brief: 'The operation being performed on the cache.', + brief: "The operation being performed on the cache.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'get', - sdks: ['php-laravel'], + example: "get", + sdks: ["php-laravel"], }, [CACHE_TTL]: { - brief: 'The ttl of the cache in seconds', + brief: "The ttl of the cache in seconds", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 120, - sdks: ['php-laravel'], + sdks: ["php-laravel"], }, [CHANNEL]: { - brief: 'The channel name that is being used.', + brief: "The channel name that is being used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'mail', - sdks: ['php-laravel'], + example: "mail", + sdks: ["php-laravel"], }, [CLIENT_ADDRESS]: { - brief: - 'Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + brief: "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: 'example.com', + example: "example.com", aliases: [HTTP_CLIENT_IP], }, [CLIENT_PORT]: { - brief: 'Client port number.', + brief: "Client port number.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 5432, }, [CLOUDFLARE_D1_DURATION]: { - brief: 'The duration of a Cloudflare D1 operation.', + brief: "The duration of a Cloudflare D1 operation.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 543, - sdks: ['javascript-cloudflare'], + sdks: ["javascript-cloudflare"], }, [CLOUDFLARE_D1_ROWS_READ]: { - brief: 'The number of rows read in a Cloudflare D1 operation.', + brief: "The number of rows read in a Cloudflare D1 operation.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 12, - sdks: ['javascript-cloudflare'], + sdks: ["javascript-cloudflare"], }, [CLOUDFLARE_D1_ROWS_WRITTEN]: { - brief: 'The number of rows written in a Cloudflare D1 operation.', + brief: "The number of rows written in a Cloudflare D1 operation.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 12, - sdks: ['javascript-cloudflare'], + sdks: ["javascript-cloudflare"], }, [CODE_FILEPATH]: { - brief: - 'The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).', + brief: "The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '/app/myapplication/http/handler/server.py', + example: "/app/myapplication/http/handler/server.py", deprecation: { - replacement: 'code.file.path', + replacement: "code.file.path" }, aliases: [CODE_FILE_PATH], }, [CODE_FILE_PATH]: { - brief: - 'The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).', + brief: "The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '/app/myapplication/http/handler/server.py', + example: "/app/myapplication/http/handler/server.py", aliases: [CODE_FILEPATH], }, [CODE_FUNCTION]: { brief: "The method or function name, or equivalent (usually rightmost part of the code unit's name).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'server_request', + example: "server_request", deprecation: { - replacement: 'code.function.name', + replacement: "code.function.name" }, aliases: [CODE_FUNCTION_NAME], }, @@ -10114,690 +9824,691 @@ export const ATTRIBUTE_METADATA: Record = { brief: "The method or function name, or equivalent (usually rightmost part of the code unit's name).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'server_request', + example: "server_request", aliases: [CODE_FUNCTION], }, [CODE_LINENO]: { - brief: - 'The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function', + brief: "The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 42, deprecation: { - replacement: 'code.line.number', + replacement: "code.line.number" }, aliases: [CODE_LINE_NUMBER], }, [CODE_LINE_NUMBER]: { - brief: - 'The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function', + brief: "The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 42, aliases: [CODE_LINENO], }, [CODE_NAMESPACE]: { - 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.", + brief: "The 'namespace' within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'http.handler', + example: "http.handler", deprecation: { - replacement: 'code.function.name', - reason: 'code.function.name should include the namespace.', + replacement: "code.function.name", + reason: "code.function.name should include the namespace." }, }, [DB_COLLECTION_NAME]: { - brief: 'The name of a collection (table, container) within the database.', + brief: "The name of a collection (table, container) within the database.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'users', + example: "users", }, [DB_NAME]: { - brief: 'The name of the database being accessed.', + brief: "The name of the database being accessed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'customers', + example: "customers", deprecation: { - replacement: 'db.namespace', + replacement: "db.namespace" }, aliases: [DB_NAMESPACE], }, [DB_NAMESPACE]: { - brief: 'The name of the database being accessed.', + brief: "The name of the database being accessed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'customers', + example: "customers", aliases: [DB_NAME], }, [DB_OPERATION]: { - brief: 'The name of the operation being executed.', + brief: "The name of the operation being executed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'SELECT', + example: "SELECT", deprecation: { - replacement: 'db.operation.name', + replacement: "db.operation.name" }, aliases: [DB_OPERATION_NAME], }, [DB_OPERATION_NAME]: { - brief: 'The name of the operation being executed.', + brief: "The name of the operation being executed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'SELECT', + example: "SELECT", aliases: [DB_OPERATION], }, [DB_QUERY_PARAMETER_KEY]: { - 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.', + brief: "A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, hasDynamicSuffix: true, example: "db.query.parameter.foo='123'", }, [DB_QUERY_SUMMARY]: { - brief: - 'A database query being executed. Should be paramaterized. The full version of the query is in `db.query.text`.', + brief: "A database query being executed. Should be paramaterized. The full version of the query is in `db.query.text`.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'SELECT * FROM users', + example: "SELECT * FROM users", }, [DB_QUERY_TEXT]: { - brief: - 'The database query being executed. Should be the full query, not a parameterized version. The parameterized version is in `db.query.summary`.', + brief: "The database query being executed. Should be the full query, not a parameterized version. The parameterized version is in `db.query.summary`.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'SELECT * FROM users', + example: "SELECT * FROM users", aliases: [DB_STATEMENT], }, [DB_REDIS_CONNECTION]: { - brief: 'The redis connection name.', + brief: "The redis connection name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'my-redis-instance', - sdks: ['php-laravel'], + example: "my-redis-instance", + sdks: ["php-laravel"], }, [DB_REDIS_PARAMETERS]: { - brief: 'The array of command parameters given to a redis command.', + brief: "The array of command parameters given to a redis command.", type: 'string[]', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: ['test', '*'], - sdks: ['php-laravel'], + example: ["test","*"], + sdks: ["php-laravel"], }, [DB_SQL_BINDINGS]: { - brief: 'The array of query bindings.', + brief: "The array of query bindings.", type: 'string[]', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: ['1', 'foo'], + example: ["1","foo"], deprecation: { - replacement: 'db.query.parameter.', - reason: - 'Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter..', + replacement: "db.query.parameter.", + reason: "Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.." }, - sdks: ['php-laravel'], + sdks: ["php-laravel"], }, [DB_STATEMENT]: { - brief: 'The database statement being executed.', + brief: "The database statement being executed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'SELECT * FROM users', + example: "SELECT * FROM users", deprecation: { - replacement: 'db.query.text', + replacement: "db.query.text" }, aliases: [DB_QUERY_TEXT], }, [DB_SYSTEM]: { - 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.', + brief: "An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'postgresql', + example: "postgresql", deprecation: { - replacement: 'db.system.name', + replacement: "db.system.name" }, aliases: [DB_SYSTEM_NAME], }, [DB_SYSTEM_NAME]: { - 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.', + brief: "An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'postgresql', + example: "postgresql", aliases: [DB_SYSTEM], }, [DB_USER]: { - brief: 'The database user.', + brief: "The database user.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: 'fancy_user', + example: "fancy_user", }, [DEVICE_BRAND]: { - brief: 'The brand of the device.', + brief: "The brand of the device.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Apple', + example: "Apple", }, [DEVICE_FAMILY]: { - brief: 'The family of the device.', + brief: "The family of the device.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'iPhone', + example: "iPhone", }, [DEVICE_MODEL]: { - brief: 'The model of the device.', + brief: "The model of the device.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'iPhone 15 Pro Max', + example: "iPhone 15 Pro Max", }, [ENVIRONMENT]: { - brief: 'The sentry environment.', + brief: "The sentry environment.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'production', + example: "production", deprecation: { - replacement: 'sentry.environment', + replacement: "sentry.environment" }, aliases: [SENTRY_ENVIRONMENT], }, [ERROR_TYPE]: { - brief: 'Describes a class of error the operation ended with.', + brief: "Describes a class of error the operation ended with.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'timeout', + example: "timeout", }, [EVENT_ID]: { - brief: 'The unique identifier for this event (log record)', + brief: "The unique identifier for this event (log record)", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1234567890, }, [EVENT_NAME]: { - brief: 'The name that uniquely identifies this event (log record)', + brief: "The name that uniquely identifies this event (log record)", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Process Payload', + example: "Process Payload", }, [EXCEPTION_ESCAPED]: { - 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.', + brief: "SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: true, }, [EXCEPTION_MESSAGE]: { - brief: 'The error message.', + brief: "The error message.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'ENOENT: no such file or directory', + example: "ENOENT: no such file or directory", }, [EXCEPTION_STACKTRACE]: { - 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.', + brief: "A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, 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)', + 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)", }, [EXCEPTION_TYPE]: { - 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.', + brief: "The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'OSError', + example: "OSError", }, [FAAS_COLDSTART]: { - brief: 'A boolean that is true if the serverless function is executed for the first time (aka cold-start).', + brief: "A boolean that is true if the serverless function is executed for the first time (aka cold-start).", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: true, }, [FAAS_CRON]: { - brief: 'A string containing the schedule period as Cron Expression.', + brief: "A string containing the schedule period as Cron Expression.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '0/5 * * * ? *', + example: "0/5 * * * ? *", }, [FAAS_TIME]: { - brief: 'A string containing the function invocation time in the ISO 8601 format expressed in UTC.', + brief: "A string containing the function invocation time in the ISO 8601 format expressed in UTC.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '2020-01-23T13:47:06Z', + example: "2020-01-23T13:47:06Z", }, [FAAS_TRIGGER]: { - brief: 'Type of the trigger which caused this function invocation.', + brief: "Type of the trigger which caused this function invocation.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'timer', + example: "timer", }, [FLAG_EVALUATION_KEY]: { - 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.', + brief: "An instance of a feature flag evaluation. The value of this attribute is the boolean representing the evaluation result. The suffix is the name of the feature flag.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, hasDynamicSuffix: true, - example: 'flag.evaluation.is_new_ui=true', + example: "flag.evaluation.is_new_ui=true", }, [FRAMES_DELAY]: { - 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/).', + brief: "The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 5, }, [FRAMES_FROZEN]: { - brief: 'The number of frozen frames rendered during the lifetime of the span.', + brief: "The number of frozen frames rendered during the lifetime of the span.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 3, }, [FRAMES_SLOW]: { - brief: 'The number of slow frames rendered during the lifetime of the span.', + brief: "The number of slow frames rendered during the lifetime of the span.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1, }, [FRAMES_TOTAL]: { - brief: 'The number of total frames rendered during the lifetime of the span.', + brief: "The number of total frames rendered during the lifetime of the span.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 60, }, [FS_ERROR]: { - brief: 'The error message of a file system error.', + brief: "The error message of a file system error.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'ENOENT: no such file or directory', + example: "ENOENT: no such file or directory", deprecation: { - replacement: 'error.type', - reason: 'This attribute is not part of the OpenTelemetry specification and error.type fits much better.', + replacement: "error.type", + reason: "This attribute is not part of the OpenTelemetry specification and error.type fits much better." }, - sdks: ['javascript-node'], + sdks: ["javascript-node"], }, [GEN_AI_AGENT_NAME]: { - brief: 'The name of the agent being used.', + brief: "The name of the agent being used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'ResearchAssistant', + example: "ResearchAssistant", }, [GEN_AI_ASSISTANT_MESSAGE]: { - brief: 'The assistant message passed to the model.', + brief: "The assistant message passed to the model.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: 'get_weather tool call', + example: "get_weather tool call", }, [GEN_AI_CHOICE]: { brief: "The model's response message.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: 'The weather in Paris is rainy and overcast, with temperatures around 57°F', + example: "The weather in Paris is rainy and overcast, with temperatures around 57°F", }, [GEN_AI_COST_INPUT_TOKENS]: { - brief: 'The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).', + brief: "The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 123.45, }, [GEN_AI_COST_OUTPUT_TOKENS]: { - brief: 'The cost of tokens used for creating the AI output in USD (without reasoning tokens).', + brief: "The cost of tokens used for creating the AI output in USD (without reasoning tokens).", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 123.45, }, [GEN_AI_COST_TOTAL_TOKENS]: { - brief: 'The total cost for the tokens used.', + brief: "The total cost for the tokens used.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 12.34, }, [GEN_AI_EMBEDDINGS_INPUT]: { - brief: 'The input to the embeddings model.', + brief: "The input to the embeddings model.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, example: "What's the weather in Paris?", }, + [GEN_AI_INPUT_MESSAGES]: { + brief: "The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + type: 'string', + pii: { + isPii: 'maybe' + }, + isInOtel: false, + example: "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]", + }, [GEN_AI_OPERATION_NAME]: { - brief: 'The name of the operation being performed.', + brief: "The name of the operation being performed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'chat', + example: "chat", }, [GEN_AI_OPERATION_TYPE]: { - brief: - "The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier.", + brief: "The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'tool', + example: "tool", + }, + [GEN_AI_OUTPUT_MESSAGES]: { + brief: "The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", + type: 'string', + pii: { + isPii: 'maybe' + }, + isInOtel: false, + example: "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]", }, [GEN_AI_PIPELINE_NAME]: { - brief: 'Name of the AI pipeline or chain being executed.', + brief: "Name of the AI pipeline or chain being executed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Autofix Pipeline', + example: "Autofix Pipeline", aliases: [AI_PIPELINE_NAME], }, [GEN_AI_PROMPT]: { - brief: 'The input messages sent to the model', + brief: "The input messages sent to the model", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '[{"role": "user", "message": "hello"}]', + example: "[{\"role\": \"user\", \"message\": \"hello\"}]", deprecation: { - reason: 'Deprecated from OTEL, use gen_ai.input.messages with the new format instead.', + reason: "Deprecated from OTEL, use gen_ai.input.messages with the new format instead." }, }, [GEN_AI_REQUEST_AVAILABLE_TOOLS]: { - brief: 'The available tools for the model. It has to be a stringified version of an array of objects.', + brief: "The available tools for the model. It has to be a stringified version of an array of objects.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: - '[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]', + example: "[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]", + deprecation: { + replacement: "gen_ai.tool.definitions" + }, }, [GEN_AI_REQUEST_FREQUENCY_PENALTY]: { - 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.', + brief: "Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 0.5, aliases: [AI_FREQUENCY_PENALTY], }, [GEN_AI_REQUEST_MAX_TOKENS]: { - brief: 'The maximum number of tokens to generate in the response.', + brief: "The maximum number of tokens to generate in the response.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 2048, }, [GEN_AI_REQUEST_MESSAGES]: { - brief: - 'The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', + brief: "The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: - '[{"role": "system", "content": "Generate a random number."}, {"role": "user", "content": [{"text": "Generate a random number between 0 and 10.", "type": "text"}]}, {"role": "tool", "content": {"toolCallId": "1", "toolName": "Weather", "output": "rainy"}}]', + 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: { + replacement: "gen_ai.input.messages" + }, aliases: [AI_INPUT_MESSAGES], }, [GEN_AI_REQUEST_MODEL]: { - brief: 'The model identifier being used for the request.', + brief: "The model identifier being used for the request.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'gpt-4-turbo-preview', + example: "gpt-4-turbo-preview", }, [GEN_AI_REQUEST_PRESENCE_PENALTY]: { - 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.', + brief: "Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 0.5, aliases: [AI_PRESENCE_PENALTY], }, [GEN_AI_REQUEST_SEED]: { - brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', + brief: "The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '1234567890', + example: "1234567890", aliases: [AI_SEED], }, [GEN_AI_REQUEST_TEMPERATURE]: { - brief: - 'For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.', + brief: "For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 0.1, aliases: [AI_TEMPERATURE], }, [GEN_AI_REQUEST_TOP_K]: { - 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).', + brief: "Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 35, aliases: [AI_TOP_K], }, [GEN_AI_REQUEST_TOP_P]: { - 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).', + brief: "Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 0.7, aliases: [AI_TOP_P], }, [GEN_AI_RESPONSE_FINISH_REASONS]: { - brief: 'The reason why the model stopped generating.', + brief: "The reason why the model stopped generating.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'COMPLETE', + example: "COMPLETE", aliases: [AI_FINISH_REASON], }, [GEN_AI_RESPONSE_ID]: { - brief: 'Unique identifier for the completion.', + brief: "Unique identifier for the completion.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'gen_123abc', + example: "gen_123abc", aliases: [AI_GENERATION_ID], }, [GEN_AI_RESPONSE_MODEL]: { - brief: 'The vendor-specific ID of the model used.', + brief: "The vendor-specific ID of the model used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'gpt-4', + example: "gpt-4", aliases: [AI_MODEL_ID], }, [GEN_AI_RESPONSE_STREAMING]: { brief: "Whether or not the AI model call's response was streamed back asynchronously", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, aliases: [AI_STREAMING], }, [GEN_AI_RESPONSE_TEXT]: { - brief: - "The model's response text messages. It has to be a stringified version of an array of response text messages.", + brief: "The model's response text messages. It has to be a stringified version of an array of response text messages.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: 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"]', + 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: { + replacement: "gen_ai.output.messages" + }, }, [GEN_AI_RESPONSE_TOKENS_PER_SECOND]: { - brief: 'The total output tokens per seconds throughput', + brief: "The total output tokens per seconds throughput", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 12345.67, @@ -10806,1614 +10517,1631 @@ export const ATTRIBUTE_METADATA: Record = { brief: "The tool calls in the model's response. It has to be a stringified version of an array of objects.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '[{"name": "get_weather", "arguments": {"location": "Paris"}}]', + example: "[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", + deprecation: { + replacement: "gen_ai.output.messages" + }, }, [GEN_AI_SYSTEM]: { - brief: 'The provider of the model.', + brief: "The provider of the model.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'openai', + example: "openai", aliases: [AI_MODEL_PROVIDER], }, + [GEN_AI_SYSTEM_INSTRUCTIONS]: { + brief: "The system instructions passed to the model.", + type: 'string', + pii: { + isPii: 'maybe' + }, + isInOtel: false, + example: "You are a helpful assistant", + }, [GEN_AI_SYSTEM_MESSAGE]: { - brief: 'The system instructions passed to the model.', + brief: "The system instructions passed to the model.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: 'You are a helpful assistant', + example: "You are a helpful assistant", + deprecation: { + replacement: "gen_ai.system_instructions" + }, + }, + [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.", + type: 'string', + pii: { + isPii: 'maybe' + }, + isInOtel: false, + example: "{\"location\": \"Paris\"}", + }, + [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.", + type: 'string', + pii: { + isPii: 'maybe' + }, + isInOtel: false, + example: "rainy, 57°F", + }, + [GEN_AI_TOOL_DEFINITIONS]: { + brief: "The list of source system tool definitions available to the GenAI agent or model.", + type: 'string', + pii: { + isPii: 'maybe' + }, + isInOtel: false, + 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\"]}}]", }, [GEN_AI_TOOL_DESCRIPTION]: { - brief: 'The description of the tool being used.', + brief: "The description of the tool being used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'Searches the web for current information about a topic', + example: "Searches the web for current information about a topic", }, [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.', + brief: "The input of the tool being used. It has to be a stringified version of the input to the tool.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '{"location": "Paris"}', + example: "{\"location\": \"Paris\"}", }, [GEN_AI_TOOL_MESSAGE]: { - brief: 'The response from a tool or function call passed to the model.', + brief: "The response from a tool or function call passed to the model.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: 'rainy, 57°F', + example: "rainy, 57°F", }, [GEN_AI_TOOL_NAME]: { - brief: 'Name of the tool utilized by the agent.', + brief: "Name of the tool utilized by the agent.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'Flights', + example: "Flights", aliases: [AI_FUNCTION_CALL], }, [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.', + brief: "The output of the tool being used. It has to be a stringified version of the output of the tool.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'rainy, 57°F', + example: "rainy, 57°F", }, [GEN_AI_TOOL_TYPE]: { - brief: 'The type of tool being used.', + brief: "The type of tool being used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'function', + example: "function", }, [GEN_AI_USAGE_COMPLETION_TOKENS]: { - brief: 'The number of tokens used in the GenAI response (completion).', + brief: "The number of tokens used in the GenAI response (completion).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 10, deprecation: { - replacement: 'gen_ai.usage.output_tokens', + replacement: "gen_ai.usage.output_tokens" }, aliases: [AI_COMPLETION_TOKENS_USED, GEN_AI_USAGE_OUTPUT_TOKENS], }, [GEN_AI_USAGE_INPUT_TOKENS]: { - brief: 'The number of tokens used to process the AI input (prompt) without cached input tokens.', + brief: "The number of tokens used to process the AI input (prompt) without cached input tokens.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 10, aliases: [AI_PROMPT_TOKENS_USED, GEN_AI_USAGE_PROMPT_TOKENS], }, [GEN_AI_USAGE_INPUT_TOKENS_CACHED]: { - brief: 'The number of cached tokens used to process the AI input (prompt).', + brief: "The number of cached tokens used to process the AI input (prompt).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 50, }, [GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE]: { - brief: 'The number of tokens written to the cache when processing the AI input (prompt).', + brief: "The number of tokens written to the cache when processing the AI input (prompt).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 100, }, [GEN_AI_USAGE_OUTPUT_TOKENS]: { - brief: 'The number of tokens used for creating the AI output (without reasoning tokens).', + brief: "The number of tokens used for creating the AI output (without reasoning tokens).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 10, aliases: [AI_COMPLETION_TOKENS_USED, GEN_AI_USAGE_COMPLETION_TOKENS], }, [GEN_AI_USAGE_OUTPUT_TOKENS_REASONING]: { - brief: 'The number of tokens used for reasoning to create the AI output.', + brief: "The number of tokens used for reasoning to create the AI output.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 75, }, [GEN_AI_USAGE_PROMPT_TOKENS]: { - brief: 'The number of tokens used in the GenAI input (prompt).', + brief: "The number of tokens used in the GenAI input (prompt).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 20, deprecation: { - replacement: 'gen_ai.usage.input_tokens', + replacement: "gen_ai.usage.input_tokens" }, aliases: [AI_PROMPT_TOKENS_USED, GEN_AI_USAGE_INPUT_TOKENS], }, [GEN_AI_USAGE_TOTAL_TOKENS]: { - brief: 'The total number of tokens used to process the prompt. (input tokens plus output todkens)', + brief: "The total number of tokens used to process the prompt. (input tokens plus output todkens)", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 20, aliases: [AI_TOTAL_TOKENS_USED], }, [GEN_AI_USER_MESSAGE]: { - brief: 'The user message passed to the model.', + brief: "The user message passed to the model.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, example: "What's the weather in Paris?", }, [GRAPHQL_OPERATION_NAME]: { - brief: 'The name of the operation being executed.', + brief: "The name of the operation being executed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'findBookById', + example: "findBookById", }, [GRAPHQL_OPERATION_TYPE]: { - brief: 'The type of the operation being executed.', + brief: "The type of the operation being executed.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'query', + example: "query", }, [HTTP_CLIENT_IP]: { - brief: - 'Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + brief: "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: 'example.com', + example: "example.com", deprecation: { - replacement: 'client.address', + replacement: "client.address" }, aliases: [CLIENT_ADDRESS], }, [HTTP_DECODED_RESPONSE_CONTENT_LENGTH]: { - brief: 'The decoded body size of the response (in bytes).', + brief: "The decoded body size of the response (in bytes).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 456, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_FLAVOR]: { - brief: 'The actual version of the protocol used for network communication.', + brief: "The actual version of the protocol used for network communication.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '1.1', + example: "1.1", deprecation: { - replacement: 'network.protocol.version', + replacement: "network.protocol.version" }, aliases: [NETWORK_PROTOCOL_VERSION, NET_PROTOCOL_VERSION], }, [HTTP_FRAGMENT]: { - brief: - 'The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.', + brief: "The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '#details', + example: "#details", }, [HTTP_HOST]: { - brief: 'The domain name.', + brief: "The domain name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'example.com', + example: "example.com", deprecation: { - replacement: 'server.address', - reason: 'Deprecated, use one of `server.address` or `client.address`, depending on the usage', + replacement: "server.address", + 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], }, [HTTP_METHOD]: { - brief: 'The HTTP method used.', + brief: "The HTTP method used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'GET', + example: "GET", deprecation: { - replacement: 'http.request.method', + replacement: "http.request.method" }, aliases: [HTTP_REQUEST_METHOD], }, [HTTP_QUERY]: { - brief: - 'The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.', + brief: "The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.", type: 'string', pii: { isPii: 'maybe', - reason: - 'Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.', + reason: "Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." }, isInOtel: false, - example: '?foo=bar&bar=baz', + example: "?foo=bar&bar=baz", }, [HTTP_REQUEST_CONNECTION_END]: { - 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.', + brief: "The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.15, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_CONNECT_START]: { - brief: - 'The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.', + brief: "The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.111, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_DOMAIN_LOOKUP_END]: { - brief: - 'The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.', + brief: "The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.201, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_DOMAIN_LOOKUP_START]: { - brief: - 'The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.', + brief: "The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.322, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_FETCH_START]: { - brief: 'The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.', + brief: "The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.389, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_HEADER_KEY]: { - brief: - 'HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.', + brief: "HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type: 'string[]', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, hasDynamicSuffix: true, example: "http.request.header.custom-header=['foo', 'bar']", }, [HTTP_REQUEST_METHOD]: { - brief: 'The HTTP method used.', + brief: "The HTTP method used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'GET', + example: "GET", aliases: [METHOD, HTTP_METHOD], }, [HTTP_REQUEST_REDIRECT_END]: { - brief: - 'The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect', + brief: "The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829558.502, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_REDIRECT_START]: { - brief: 'The UNIX timestamp representing the start time of the fetch which that initiates the redirect.', + brief: "The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.495, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_REQUEST_START]: { - 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.', + brief: "The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.51, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_RESEND_COUNT]: { - brief: 'The ordinal number of request resending attempt (for any reason, including redirects).', + brief: "The ordinal number of request resending attempt (for any reason, including redirects).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 2, }, [HTTP_REQUEST_RESPONSE_END]: { - 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.', + brief: "The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.89, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_RESPONSE_START]: { - 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.', + brief: "The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.7, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_SECURE_CONNECTION_START]: { - 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.', + brief: "The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829555.73, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_TIME_TO_FIRST_BYTE]: { - 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", + brief: "The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1.032, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_REQUEST_WORKER_START]: { - 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.', + brief: "The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732829553.68, - sdks: ['javascript-browser'], + sdks: ["javascript-browser"], }, [HTTP_RESPONSE_BODY_SIZE]: { - brief: 'The encoded body size of the response (in bytes).', + brief: "The encoded body size of the response (in bytes).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 123, aliases: [HTTP_RESPONSE_CONTENT_LENGTH, HTTP_RESPONSE_HEADER_CONTENT_LENGTH], }, [HTTP_RESPONSE_CONTENT_LENGTH]: { - brief: 'The encoded body size of the response (in bytes).', + brief: "The encoded body size of the response (in bytes).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 123, deprecation: { - replacement: 'http.response.body.size', + replacement: "http.response.body.size" }, aliases: [HTTP_RESPONSE_BODY_SIZE, HTTP_RESPONSE_HEADER_CONTENT_LENGTH], }, [HTTP_RESPONSE_HEADER_CONTENT_LENGTH]: { - brief: 'The size of the message body sent to the recipient (in bytes)', + brief: "The size of the message body sent to the recipient (in bytes)", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, example: "http.response.header.custom-header=['foo', 'bar']", aliases: [HTTP_RESPONSE_CONTENT_LENGTH, HTTP_RESPONSE_BODY_SIZE], }, [HTTP_RESPONSE_HEADER_KEY]: { - brief: - 'HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.', + brief: "HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type: 'string[]', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, hasDynamicSuffix: true, example: "http.response.header.custom-header=['foo', 'bar']", }, [HTTP_RESPONSE_SIZE]: { - brief: 'The transfer size of the response (in bytes).', + brief: "The transfer size of the response (in bytes).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 456, aliases: [HTTP_RESPONSE_TRANSFER_SIZE], }, [HTTP_RESPONSE_STATUS_CODE]: { - brief: 'The status code of the HTTP response.', + brief: "The status code of the HTTP response.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 404, aliases: [HTTP_STATUS_CODE], }, [HTTP_RESPONSE_TRANSFER_SIZE]: { - brief: 'The transfer size of the response (in bytes).', + brief: "The transfer size of the response (in bytes).", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 456, deprecation: { - replacement: 'http.response.size', + replacement: "http.response.size" }, aliases: [HTTP_RESPONSE_SIZE], }, [HTTP_ROUTE]: { - brief: 'The matched route, that is, the path template in the format used by the respective server framework.', + brief: "The matched route, that is, the path template in the format used by the respective server framework.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '/users/:id', + example: "/users/:id", aliases: [URL_TEMPLATE], }, [HTTP_SCHEME]: { - brief: 'The URI scheme component identifying the used protocol.', + brief: "The URI scheme component identifying the used protocol.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'https', + example: "https", deprecation: { - replacement: 'url.scheme', + replacement: "url.scheme" }, aliases: [URL_SCHEME], }, [HTTP_SERVER_NAME]: { - brief: 'The server domain name', + brief: "The server domain name", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'example.com', + example: "example.com", deprecation: { - replacement: 'server.address', + replacement: "server.address" }, aliases: [SERVER_ADDRESS, NET_HOST_NAME, HTTP_HOST], }, [HTTP_STATUS_CODE]: { - brief: 'The status code of the HTTP response.', + brief: "The status code of the HTTP response.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 404, deprecation: { - replacement: 'http.response.status_code', + replacement: "http.response.status_code" }, aliases: [HTTP_RESPONSE_STATUS_CODE], }, [HTTP_TARGET]: { - brief: 'The pathname and query string of the URL.', + brief: "The pathname and query string of the URL.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '/test?foo=bar#buzz', + example: "/test?foo=bar#buzz", deprecation: { - replacement: 'url.path', - reason: 'This attribute is being deprecated in favor of url.path and url.query', + replacement: "url.path", + reason: "This attribute is being deprecated in favor of url.path and url.query" }, }, [HTTP_URL]: { - brief: 'The URL of the resource that was fetched.', + brief: "The URL of the resource that was fetched.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'https://example.com/test?foo=bar#buzz', + example: "https://example.com/test?foo=bar#buzz", deprecation: { - replacement: 'url.full', + replacement: "url.full" }, aliases: [URL_FULL, URL], }, [HTTP_USER_AGENT]: { - brief: 'Value of the HTTP User-Agent header sent by the client.', + brief: "Value of the HTTP User-Agent header sent by the client.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: 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', + 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: { - replacement: 'user_agent.original', + replacement: "user_agent.original" }, aliases: [USER_AGENT_ORIGINAL], }, [ID]: { - brief: 'A unique identifier for the span.', + brief: "A unique identifier for the span.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'f47ac10b58cc4372a5670e02b2c3d479', - sdks: ['php-laravel'], + example: "f47ac10b58cc4372a5670e02b2c3d479", + sdks: ["php-laravel"], }, [JVM_GC_ACTION]: { - brief: 'Name of the garbage collector action.', + brief: "Name of the garbage collector action.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'end of minor GC', + example: "end of minor GC", }, [JVM_GC_NAME]: { - brief: 'Name of the garbage collector.', + brief: "Name of the garbage collector.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'G1 Young Generation', + example: "G1 Young Generation", }, [JVM_MEMORY_POOL_NAME]: { - brief: 'Name of the memory pool.', + brief: "Name of the memory pool.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'G1 Old Gen', + example: "G1 Old Gen", }, [JVM_MEMORY_TYPE]: { - brief: 'Name of the memory pool.', + brief: "Name of the memory pool.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'G1 Old Gen', + example: "G1 Old Gen", }, [JVM_THREAD_DAEMON]: { - brief: 'Whether the thread is daemon or not.', + brief: "Whether the thread is daemon or not.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: true, }, [JVM_THREAD_STATE]: { - brief: 'State of the thread.', + brief: "State of the thread.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'blocked', + example: "blocked", }, [LCP_ELEMENT]: { - brief: 'The dom element responsible for the largest contentful paint.', + brief: "The dom element responsible for the largest contentful paint.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'img', + example: "img", }, [LCP_ID]: { - brief: 'The id of the dom element responsible for the largest contentful paint.', + brief: "The id of the dom element responsible for the largest contentful paint.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '#hero', + example: "#hero", }, [LCP_SIZE]: { - brief: 'The size of the largest contentful paint element.', + brief: "The size of the largest contentful paint element.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1234, }, [LCP_URL]: { - brief: 'The url of the dom element responsible for the largest contentful paint.', + brief: "The url of the dom element responsible for the largest contentful paint.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'https://example.com', + example: "https://example.com", }, [LOGGER_NAME]: { - brief: 'The name of the logger that generated this event.', + brief: "The name of the logger that generated this event.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'myLogger', + example: "myLogger", }, [MCP_CANCELLED_REASON]: { - brief: 'Reason for the cancellation of an MCP operation.', + brief: "Reason for the cancellation of an MCP operation.", type: 'string', pii: { isPii: 'maybe', - reason: 'Cancellation reasons may contain user-specific or sensitive information', + reason: "Cancellation reasons may contain user-specific or sensitive information" }, isInOtel: false, - example: 'User cancelled the request', + example: "User cancelled the request", }, [MCP_CANCELLED_REQUEST_ID]: { - brief: 'Request ID of the cancelled MCP operation.', + brief: "Request ID of the cancelled MCP operation.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '123', + example: "123", }, [MCP_CLIENT_NAME]: { - brief: 'Name of the MCP client application.', + brief: "Name of the MCP client application.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'claude-desktop', + example: "claude-desktop", }, [MCP_CLIENT_TITLE]: { - brief: 'Display title of the MCP client application.', + brief: "Display title of the MCP client application.", type: 'string', pii: { isPii: 'maybe', - reason: 'Client titles may reveal user-specific application configurations or custom setups', + reason: "Client titles may reveal user-specific application configurations or custom setups" }, isInOtel: false, - example: 'Claude Desktop', + example: "Claude Desktop", }, [MCP_CLIENT_VERSION]: { - brief: 'Version of the MCP client application.', + brief: "Version of the MCP client application.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '1.0.0', + example: "1.0.0", }, [MCP_LIFECYCLE_PHASE]: { - brief: 'Lifecycle phase indicator for MCP operations.', + brief: "Lifecycle phase indicator for MCP operations.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'initialization_complete', + example: "initialization_complete", }, [MCP_LOGGING_DATA_TYPE]: { - brief: 'Data type of the logged message content.', + brief: "Data type of the logged message content.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'string', + example: "string", }, [MCP_LOGGING_LEVEL]: { - brief: 'Log level for MCP logging operations.', + brief: "Log level for MCP logging operations.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'info', + example: "info", }, [MCP_LOGGING_LOGGER]: { - brief: 'Logger name for MCP logging operations.', + brief: "Logger name for MCP logging operations.", type: 'string', pii: { isPii: 'maybe', - reason: 'Logger names may be user-defined and could contain sensitive information', + reason: "Logger names may be user-defined and could contain sensitive information" }, isInOtel: false, - example: 'mcp_server', + example: "mcp_server", }, [MCP_LOGGING_MESSAGE]: { - brief: 'Log message content from MCP logging operations.', + brief: "Log message content from MCP logging operations.", type: 'string', pii: { isPii: 'true', - reason: 'Log messages can contain user data', + reason: "Log messages can contain user data" }, isInOtel: false, - example: 'Tool execution completed successfully', + example: "Tool execution completed successfully", }, [MCP_METHOD_NAME]: { - brief: 'The name of the MCP request or notification method being called.', + brief: "The name of the MCP request or notification method being called.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'tools/call', + example: "tools/call", }, [MCP_PROGRESS_CURRENT]: { - brief: 'Current progress value of an MCP operation.', + brief: "Current progress value of an MCP operation.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 50, }, [MCP_PROGRESS_MESSAGE]: { - brief: 'Progress message describing the current state of an MCP operation.', + brief: "Progress message describing the current state of an MCP operation.", type: 'string', pii: { isPii: 'maybe', - reason: 'Progress messages may contain user-specific or sensitive information', + reason: "Progress messages may contain user-specific or sensitive information" }, isInOtel: false, - example: 'Processing 50 of 100 items', + example: "Processing 50 of 100 items", }, [MCP_PROGRESS_PERCENTAGE]: { - brief: 'Calculated progress percentage of an MCP operation. Computed from current/total * 100.', + brief: "Calculated progress percentage of an MCP operation. Computed from current/total * 100.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 50, }, [MCP_PROGRESS_TOKEN]: { - brief: 'Token for tracking progress of an MCP operation.', + brief: "Token for tracking progress of an MCP operation.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'progress-token-123', + example: "progress-token-123", }, [MCP_PROGRESS_TOTAL]: { - brief: 'Total progress target value of an MCP operation.', + brief: "Total progress target value of an MCP operation.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 100, }, [MCP_PROMPT_NAME]: { - brief: 'Name of the MCP prompt template being used.', + brief: "Name of the MCP prompt template being used.", type: 'string', pii: { isPii: 'maybe', - reason: 'Prompt names may reveal user behavior patterns or sensitive operations', + reason: "Prompt names may reveal user behavior patterns or sensitive operations" }, isInOtel: false, - example: 'summarize', + example: "summarize", }, [MCP_PROMPT_RESULT_DESCRIPTION]: { - brief: 'Description of the prompt result.', + brief: "Description of the prompt result.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: 'A summary of the requested information', + example: "A summary of the requested information", }, [MCP_PROMPT_RESULT_MESSAGE_CONTENT]: { - brief: 'Content of the message in the prompt result. Used for single message results only.', + brief: "Content of the message in the prompt result. Used for single message results only.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: 'Please provide a summary of the document', + example: "Please provide a summary of the document", }, [MCP_PROMPT_RESULT_MESSAGE_COUNT]: { - brief: 'Number of messages in the prompt result.', + brief: "Number of messages in the prompt result.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 3, }, [MCP_PROMPT_RESULT_MESSAGE_ROLE]: { - brief: 'Role of the message in the prompt result. Used for single message results only.', + brief: "Role of the message in the prompt result. Used for single message results only.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'user', + example: "user", }, [MCP_PROTOCOL_READY]: { - brief: 'Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.', + brief: "Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1, }, [MCP_PROTOCOL_VERSION]: { - brief: 'MCP protocol version used in the session.', + brief: "MCP protocol version used in the session.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '2024-11-05', + example: "2024-11-05", }, [MCP_REQUEST_ARGUMENT_KEY]: { - 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.', + brief: "MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value.", type: 'string', pii: { isPii: 'true', - reason: 'Arguments contain user input', + reason: "Arguments contain user input" }, isInOtel: false, hasDynamicSuffix: true, example: "mcp.request.argument.query='weather in Paris'", }, [MCP_REQUEST_ARGUMENT_NAME]: { - brief: 'Name argument from prompts/get MCP request.', + brief: "Name argument from prompts/get MCP request.", type: 'string', pii: { isPii: 'true', - reason: 'Prompt names can contain user input', + reason: "Prompt names can contain user input" }, isInOtel: false, - example: 'summarize', + example: "summarize", }, [MCP_REQUEST_ARGUMENT_URI]: { - brief: 'URI argument from resources/read MCP request.', + brief: "URI argument from resources/read MCP request.", type: 'string', pii: { isPii: 'true', - reason: 'URIs can contain user file paths', + reason: "URIs can contain user file paths" }, isInOtel: false, - example: 'file:///path/to/resource', + example: "file:///path/to/resource", }, [MCP_REQUEST_ID]: { - brief: 'JSON-RPC request identifier for the MCP request. Unique within the MCP session.', + brief: "JSON-RPC request identifier for the MCP request. Unique within the MCP session.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '1', + example: "1", }, [MCP_RESOURCE_PROTOCOL]: { - brief: 'Protocol of the resource URI being accessed, extracted from the URI.', + brief: "Protocol of the resource URI being accessed, extracted from the URI.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'file', + example: "file", }, [MCP_RESOURCE_URI]: { - brief: 'The resource URI being accessed in an MCP operation.', + brief: "The resource URI being accessed in an MCP operation.", type: 'string', pii: { isPii: 'true', - reason: 'URIs can contain sensitive file paths', + reason: "URIs can contain sensitive file paths" }, isInOtel: false, - example: 'file:///path/to/file.txt', + example: "file:///path/to/file.txt", }, [MCP_SERVER_NAME]: { - brief: 'Name of the MCP server application.', + brief: "Name of the MCP server application.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'sentry-mcp-server', + example: "sentry-mcp-server", }, [MCP_SERVER_TITLE]: { - brief: 'Display title of the MCP server application.', + brief: "Display title of the MCP server application.", type: 'string', pii: { isPii: 'maybe', - reason: 'Server titles may reveal user-specific application configurations or custom setups', + reason: "Server titles may reveal user-specific application configurations or custom setups" }, isInOtel: false, - example: 'Sentry MCP Server', + example: "Sentry MCP Server", }, [MCP_SERVER_VERSION]: { - brief: 'Version of the MCP server application.', + brief: "Version of the MCP server application.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '0.1.0', + example: "0.1.0", }, [MCP_SESSION_ID]: { - brief: 'Identifier for the MCP session.', + brief: "Identifier for the MCP session.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '550e8400-e29b-41d4-a716-446655440000', + example: "550e8400-e29b-41d4-a716-446655440000", }, [MCP_TOOL_NAME]: { - brief: 'Name of the MCP tool being called.', + brief: "Name of the MCP tool being called.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'calculator', + example: "calculator", }, [MCP_TOOL_RESULT_CONTENT]: { - brief: 'The content of the tool result.', + brief: "The content of the tool result.", type: 'string', pii: { isPii: 'true', - reason: 'Tool results can contain user data', + reason: "Tool results can contain user data" }, isInOtel: false, - example: '{"output": "rainy", "toolCallId": "1"}', + example: "{\"output\": \"rainy\", \"toolCallId\": \"1\"}", }, [MCP_TOOL_RESULT_CONTENT_COUNT]: { - brief: 'Number of content items in the tool result.', + brief: "Number of content items in the tool result.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1, }, [MCP_TOOL_RESULT_IS_ERROR]: { - brief: 'Whether a tool execution resulted in an error.', + brief: "Whether a tool execution resulted in an error.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: false, }, [MCP_TRANSPORT]: { - brief: 'Transport method used for MCP communication.', + brief: "Transport method used for MCP communication.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'stdio', + example: "stdio", }, [MDC_KEY]: { - 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.", + brief: "Attributes from the Mapped Diagnostic Context (MDC) present at the moment the log record was created. The MDC is supported by all the most popular logging solutions in the Java ecosystem, and it's usually implemented as a thread-local map that stores context for e.g. a specific request.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, hasDynamicSuffix: true, example: "mdc.some_key='some_value'", - sdks: ['java', 'java.logback', 'java.jul', 'java.log4j2'], + sdks: ["java","java.logback","java.jul","java.log4j2"], }, [MESSAGING_DESTINATION_CONNECTION]: { - brief: 'The message destination connection.', + brief: "The message destination connection.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'BestTopic', - sdks: ['php-laravel'], + example: "BestTopic", + sdks: ["php-laravel"], }, [MESSAGING_DESTINATION_NAME]: { - brief: 'The message destination name.', + brief: "The message destination name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'BestTopic', - sdks: ['php-laravel'], + example: "BestTopic", + sdks: ["php-laravel"], }, [MESSAGING_MESSAGE_BODY_SIZE]: { - brief: 'The size of the message body in bytes.', + brief: "The size of the message body in bytes.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 839, - sdks: ['php-laravel'], + sdks: ["php-laravel"], }, [MESSAGING_MESSAGE_ENVELOPE_SIZE]: { - brief: 'The size of the message body and metadata in bytes.', + brief: "The size of the message body and metadata in bytes.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 1045, - sdks: ['php-laravel'], + sdks: ["php-laravel"], }, [MESSAGING_MESSAGE_ID]: { - brief: 'A value used by the messaging system as an identifier for the message, represented as a string.', + brief: "A value used by the messaging system as an identifier for the message, represented as a string.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'f47ac10b58cc4372a5670e02b2c3d479', - sdks: ['php-laravel'], + example: "f47ac10b58cc4372a5670e02b2c3d479", + sdks: ["php-laravel"], }, [MESSAGING_MESSAGE_RECEIVE_LATENCY]: { - brief: 'The latency between when the message was published and received.', + brief: "The latency between when the message was published and received.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1732847252, - sdks: ['php-laravel'], + sdks: ["php-laravel"], }, [MESSAGING_MESSAGE_RETRY_COUNT]: { - brief: 'The amount of attempts to send the message.', + brief: "The amount of attempts to send the message.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 2, - sdks: ['php-laravel'], + sdks: ["php-laravel"], }, [MESSAGING_OPERATION_TYPE]: { - brief: 'A string identifying the type of the messaging operation', + brief: "A string identifying the type of the messaging operation", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'create', + example: "create", }, [MESSAGING_SYSTEM]: { - brief: 'The messaging system as identified by the client instrumentation.', + brief: "The messaging system as identified by the client instrumentation.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'activemq', - sdks: ['php-laravel'], + example: "activemq", + sdks: ["php-laravel"], }, [METHOD]: { - brief: 'The HTTP method used.', + brief: "The HTTP method used.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'GET', + example: "GET", deprecation: { - replacement: 'http.request.method', + replacement: "http.request.method" }, aliases: [HTTP_REQUEST_METHOD], - sdks: ['javascript-browser', 'javascript-node'], + sdks: ["javascript-browser","javascript-node"], }, [NAVIGATION_TYPE]: { - brief: 'The type of navigation done by a client-side router.', + brief: "The type of navigation done by a client-side router.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'router.push', + example: "router.push", }, [NEL_ELAPSED_TIME]: { - brief: - 'The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.', + brief: "The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 100, }, [NEL_PHASE]: { - brief: 'If request failed, the phase of its network error. If request succeeded, "application".', + brief: "If request failed, the phase of its network error. If request succeeded, \"application\".", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'application', + example: "application", }, [NEL_REFERRER]: { brief: "request's referrer, as determined by the referrer policy associated with its client.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'https://example.com/foo?bar=baz', + example: "https://example.com/foo?bar=baz", }, [NEL_SAMPLING_FUNCTION]: { - brief: 'The sampling function used to determine if the request should be sampled.', + brief: "The sampling function used to determine if the request should be sampled.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 0.5, }, [NEL_TYPE]: { - brief: 'If request failed, the type of its network error. If request succeeded, "ok".', + brief: "If request failed, the type of its network error. If request succeeded, \"ok\".", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'dns.unreachable', + example: "dns.unreachable", }, [NETWORK_LOCAL_ADDRESS]: { - brief: 'Local address of the network connection - IP address or Unix domain socket name.', + brief: "Local address of the network connection - IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '10.1.2.80', + example: "10.1.2.80", aliases: [NET_HOST_IP, NET_SOCK_HOST_ADDR], }, [NETWORK_LOCAL_PORT]: { - brief: 'Local port number of the network connection.', + brief: "Local port number of the network connection.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 65400, aliases: [NET_SOCK_HOST_PORT], }, [NETWORK_PEER_ADDRESS]: { - brief: 'Peer address of the network connection - IP address or Unix domain socket name.', + brief: "Peer address of the network connection - IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '10.1.2.80', + example: "10.1.2.80", aliases: [NET_PEER_IP, NET_SOCK_PEER_ADDR], }, [NETWORK_PEER_PORT]: { - brief: 'Peer port number of the network connection.', + brief: "Peer port number of the network connection.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 65400, }, [NETWORK_PROTOCOL_NAME]: { - brief: 'OSI application layer or non-OSI equivalent.', + brief: "OSI application layer or non-OSI equivalent.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'http', + example: "http", aliases: [NET_PROTOCOL_NAME], }, [NETWORK_PROTOCOL_VERSION]: { - brief: 'The actual version of the protocol used for network communication.', + brief: "The actual version of the protocol used for network communication.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '1.1', + example: "1.1", aliases: [HTTP_FLAVOR, NET_PROTOCOL_VERSION], }, [NETWORK_TRANSPORT]: { - brief: 'OSI transport layer or inter-process communication method.', + brief: "OSI transport layer or inter-process communication method.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'tcp', + example: "tcp", aliases: [NET_TRANSPORT], }, [NETWORK_TYPE]: { - brief: 'OSI network layer or non-OSI equivalent.', + brief: "OSI network layer or non-OSI equivalent.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'ipv4', + example: "ipv4", }, [NET_HOST_IP]: { - brief: 'Local address of the network connection - IP address or Unix domain socket name.', + brief: "Local address of the network connection - IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '192.168.0.1', + example: "192.168.0.1", deprecation: { - replacement: 'network.local.address', + replacement: "network.local.address" }, aliases: [NETWORK_LOCAL_ADDRESS, NET_SOCK_HOST_ADDR], }, [NET_HOST_NAME]: { - brief: - 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'example.com', + example: "example.com", deprecation: { - replacement: 'server.address', + replacement: "server.address" }, aliases: [SERVER_ADDRESS, HTTP_SERVER_NAME, HTTP_HOST], }, [NET_HOST_PORT]: { - brief: 'Server port number.', + brief: "Server port number.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 1337, deprecation: { - replacement: 'server.port', + replacement: "server.port" }, aliases: [SERVER_PORT], }, [NET_PEER_IP]: { - brief: 'Peer address of the network connection - IP address or Unix domain socket name.', + brief: "Peer address of the network connection - IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '192.168.0.1', + example: "192.168.0.1", deprecation: { - replacement: 'network.peer.address', + replacement: "network.peer.address" }, aliases: [NETWORK_PEER_ADDRESS, NET_SOCK_PEER_ADDR], }, [NET_PEER_NAME]: { - brief: - 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'example.com', + example: "example.com", deprecation: { - replacement: 'server.address', - reason: 'Deprecated, use server.address on client spans and client.address on server spans.', + replacement: "server.address", + reason: "Deprecated, use server.address on client spans and client.address on server spans." }, }, [NET_PEER_PORT]: { - brief: 'Peer port number.', + brief: "Peer port number.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 1337, deprecation: { - replacement: 'server.port', - reason: 'Deprecated, use server.port on client spans and client.port on server spans.', + replacement: "server.port", + reason: "Deprecated, use server.port on client spans and client.port on server spans." }, }, [NET_PROTOCOL_NAME]: { - brief: 'OSI application layer or non-OSI equivalent.', + brief: "OSI application layer or non-OSI equivalent.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'http', + example: "http", deprecation: { - replacement: 'network.protocol.name', + replacement: "network.protocol.name" }, aliases: [NETWORK_PROTOCOL_NAME], }, [NET_PROTOCOL_VERSION]: { - brief: 'The actual version of the protocol used for network communication.', + brief: "The actual version of the protocol used for network communication.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '1.1', + example: "1.1", deprecation: { - replacement: 'network.protocol.version', + replacement: "network.protocol.version" }, aliases: [NETWORK_PROTOCOL_VERSION, HTTP_FLAVOR], }, [NET_SOCK_FAMILY]: { - brief: 'OSI transport and network layer', + brief: "OSI transport and network layer", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'inet', + example: "inet", deprecation: { - replacement: 'network.transport', - reason: 'Deprecated, use network.transport and network.type.', + replacement: "network.transport", + reason: "Deprecated, use network.transport and network.type." }, }, [NET_SOCK_HOST_ADDR]: { - brief: 'Local address of the network connection mapping to Unix domain socket name.', + brief: "Local address of the network connection mapping to Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '/var/my.sock', + example: "/var/my.sock", deprecation: { - replacement: 'network.local.address', + replacement: "network.local.address" }, aliases: [NETWORK_LOCAL_ADDRESS, NET_HOST_IP], }, [NET_SOCK_HOST_PORT]: { - brief: 'Local port number of the network connection.', + brief: "Local port number of the network connection.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 8080, deprecation: { - replacement: 'network.local.port', + replacement: "network.local.port" }, aliases: [NETWORK_LOCAL_PORT], }, [NET_SOCK_PEER_ADDR]: { - brief: 'Peer address of the network connection - IP address', + brief: "Peer address of the network connection - IP address", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '192.168.0.1', + example: "192.168.0.1", deprecation: { - replacement: 'network.peer.address', + replacement: "network.peer.address" }, aliases: [NETWORK_PEER_ADDRESS, NET_PEER_IP], }, [NET_SOCK_PEER_NAME]: { - brief: 'Peer address of the network connection - Unix domain socket name', + brief: "Peer address of the network connection - Unix domain socket name", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '/var/my.sock', + example: "/var/my.sock", deprecation: { - reason: 'Deprecated from OTEL, no replacement at this time', + reason: "Deprecated from OTEL, no replacement at this time" }, }, [NET_SOCK_PEER_PORT]: { - brief: 'Peer port number of the network connection.', + brief: "Peer port number of the network connection.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 8080, deprecation: { - replacement: 'network.peer.port', + replacement: "network.peer.port" }, }, [NET_TRANSPORT]: { - brief: 'OSI transport layer or inter-process communication method.', + brief: "OSI transport layer or inter-process communication method.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'tcp', + example: "tcp", deprecation: { - replacement: 'network.transport', + replacement: "network.transport" }, aliases: [NETWORK_TRANSPORT], }, [OS_BUILD_ID]: { - brief: 'The build ID of the operating system.', + brief: "The build ID of the operating system.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '1234567890', + example: "1234567890", }, [OS_DESCRIPTION]: { - brief: - 'Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.', + brief: "Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'Ubuntu 18.04.1 LTS', + example: "Ubuntu 18.04.1 LTS", }, [OS_NAME]: { - brief: 'Human readable operating system name.', + brief: "Human readable operating system name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'Ubuntu', + example: "Ubuntu", }, [OS_TYPE]: { - brief: 'The operating system type.', + brief: "The operating system type.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'linux', + example: "linux", }, [OS_VERSION]: { - brief: 'The version of the operating system.', + brief: "The version of the operating system.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '18.04.2', + example: "18.04.2", }, [OTEL_SCOPE_NAME]: { - brief: 'The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).', + brief: "The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'io.opentelemetry.contrib.mongodb', + example: "io.opentelemetry.contrib.mongodb", }, [OTEL_SCOPE_VERSION]: { - brief: 'The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).', + brief: "The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '2.4.5', + example: "2.4.5", }, [OTEL_STATUS_CODE]: { - brief: 'Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.', + brief: "Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'OK', + example: "OK", }, [OTEL_STATUS_DESCRIPTION]: { - brief: 'Description of the Status if it has a value, otherwise not set.', + brief: "Description of the Status if it has a value, otherwise not set.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'resource not found', + example: "resource not found", }, [PARAMS_KEY]: { - brief: - 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', + brief: "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, hasDynamicSuffix: true, @@ -12421,849 +12149,829 @@ export const ATTRIBUTE_METADATA: Record = { aliases: [URL_PATH_PARAMETER_KEY], }, [PREVIOUS_ROUTE]: { - brief: 'Also used by mobile SDKs to indicate the previous route in the application.', + brief: "Also used by mobile SDKs to indicate the previous route in the application.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'HomeScreen', - sdks: ['javascript-reactnative'], + example: "HomeScreen", + sdks: ["javascript-reactnative"], }, [PROCESS_EXECUTABLE_NAME]: { - brief: 'The name of the executable that started the process.', + brief: "The name of the executable that started the process.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'getsentry', + example: "getsentry", }, [PROCESS_PID]: { - brief: 'The process ID of the running process.', + brief: "The process ID of the running process.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 12345, }, [PROCESS_RUNTIME_DESCRIPTION]: { - 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.', + brief: "An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'Eclipse OpenJ9 VM openj9-0.21.0', + example: "Eclipse OpenJ9 VM openj9-0.21.0", }, [PROCESS_RUNTIME_NAME]: { - brief: 'The name of the runtime. Equivalent to `name` in the Sentry runtime context.', + brief: "The name of the runtime. Equivalent to `name` in the Sentry runtime context.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'node', + example: "node", }, [PROCESS_RUNTIME_VERSION]: { - brief: - 'The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.', + brief: "The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '18.04.2', + example: "18.04.2", }, [PROFILE_ID]: { - brief: 'The id of the sentry profile.', + brief: "The id of the sentry profile.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '123e4567e89b12d3a456426614174000', + example: "123e4567e89b12d3a456426614174000", deprecation: { - replacement: 'sentry.profile_id', + replacement: "sentry.profile_id" }, aliases: [SENTRY_PROFILE_ID], }, [QUERY_KEY]: { - brief: 'An item in a query string. Usually added by client-side routing frameworks like vue-router.', + brief: "An item in a query string. Usually added by client-side routing frameworks like vue-router.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, hasDynamicSuffix: true, example: "query.id='123'", deprecation: { - replacement: 'url.query', - reason: 'Instead of sending items individually in query., they should be sent all together with url.query.', + replacement: "url.query", + reason: "Instead of sending items individually in query., they should be sent all together with url.query." }, }, [RELEASE]: { - brief: 'The sentry release.', + brief: "The sentry release.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'production', + example: "production", deprecation: { - replacement: 'sentry.release', + replacement: "sentry.release" }, aliases: [SENTRY_RELEASE], }, [REMIX_ACTION_FORM_DATA_KEY]: { - brief: 'Remix form data, being the form data key, the value being the form data value.', + brief: "Remix form data, being the form data key, the value being the form data value.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, hasDynamicSuffix: true, example: "http.response.header.text='test'", - sdks: ['javascript-remix'], + sdks: ["javascript-remix"], }, [REPLAY_ID]: { - brief: 'The id of the sentry replay.', + brief: "The id of the sentry replay.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '123e4567e89b12d3a456426614174000', + example: "123e4567e89b12d3a456426614174000", deprecation: { - replacement: 'sentry.replay_id', + replacement: "sentry.replay_id" }, aliases: [SENTRY_REPLAY_ID], }, [RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME]: { - brief: 'The software deployment environment name.', + brief: "The software deployment environment name.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, - example: 'production', + example: "production", deprecation: { - replacement: 'sentry.environment', + replacement: "sentry.environment" }, }, [RESOURCE_RENDER_BLOCKING_STATUS]: { - brief: 'The render blocking status of the resource.', + brief: "The render blocking status of the resource.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'non-blocking', - sdks: ['javascript-browser'], + example: "non-blocking", + sdks: ["javascript-browser"], }, [ROUTE]: { - 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.', + brief: "The matched route, that is, the path template in the format used by the respective server framework. Also used by mobile SDKs to indicate the current route in the application.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'App\\Controller::indexAction', + example: "App\\Controller::indexAction", deprecation: { - replacement: 'http.route', + replacement: "http.route" }, aliases: [HTTP_ROUTE], - sdks: ['php-laravel', 'javascript-reactnative'], + sdks: ["php-laravel","javascript-reactnative"], }, [RPC_GRPC_STATUS_CODE]: { - brief: 'The numeric status code of the gRPC request.', + brief: "The numeric status code of the gRPC request.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 2, }, [RPC_SERVICE]: { - brief: 'The full (logical) name of the service being called, including its package name, if applicable.', + brief: "The full (logical) name of the service being called, including its package name, if applicable.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'myService.BestService', + example: "myService.BestService", }, [SENTRY_ACTION]: { - 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.', + brief: "Used as a generic attribute representing the action depending on the type of span. For instance, this is the database query operation for DB spans, and the request method for HTTP spans.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'SELECT', + example: "SELECT", }, [SENTRY_BROWSER_NAME]: { - brief: 'The name of the browser.', + brief: "The name of the browser.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Chrome', + example: "Chrome", deprecation: { - replacement: 'browser.name', + replacement: "browser.name" }, aliases: [BROWSER_NAME], }, [SENTRY_BROWSER_VERSION]: { - brief: 'The version of the browser.', + brief: "The version of the browser.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '120.0.6099.130', + example: "120.0.6099.130", deprecation: { - replacement: 'browser.version', + replacement: "browser.version" }, aliases: [BROWSER_VERSION], }, [SENTRY_CANCELLATION_REASON]: { - brief: 'The reason why a span ended early.', + brief: "The reason why a span ended early.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'document.hidden', + example: "document.hidden", }, [SENTRY_CATEGORY]: { - 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'.", + brief: "The high-level category of a span, derived from the span operation or span attributes. This categorizes spans by their general purpose (e.g., database, HTTP, UI). Known values include: 'ai', 'ai.pipeline', 'app', 'browser', 'cache', 'console', 'db', 'event', 'file', 'function.aws', 'function.azure', 'function.gcp', 'function.nextjs', 'function.remix', 'graphql', 'grpc', 'http', 'measure', 'middleware', 'navigation', 'pageload', 'queue', 'resource', 'rpc', 'serialize', 'subprocess', 'template', 'topic', 'ui', 'ui.angular', 'ui.ember', 'ui.react', 'ui.svelte', 'ui.vue', 'view', 'websocket'.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'db', + example: "db", }, [SENTRY_CLIENT_SAMPLE_RATE]: { - brief: 'Rate at which a span was sampled in the SDK.', + brief: "Rate at which a span was sampled in the SDK.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 0.5, }, [SENTRY_DESCRIPTION]: { - brief: 'The human-readable description of a span.', + brief: "The human-readable description of a span.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'index view query', + example: "index view query", }, [SENTRY_DIST]: { - brief: 'The sentry dist.', + brief: "The sentry dist.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '1.0', + example: "1.0", }, [SENTRY_DOMAIN]: { - 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.', + brief: "Used as a generic attribute representing the domain depending on the type of span. For instance, this is the collection/table name for database spans, and the server address for HTTP spans.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'example.com', + example: "example.com", }, [SENTRY_DSC_ENVIRONMENT]: { - brief: 'The environment from the dynamic sampling context.', + brief: "The environment from the dynamic sampling context.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'prod', + example: "prod", }, [SENTRY_DSC_PUBLIC_KEY]: { - brief: 'The public key from the dynamic sampling context.', + brief: "The public key from the dynamic sampling context.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'c51734c603c4430eb57cb0a5728a479d', + example: "c51734c603c4430eb57cb0a5728a479d", }, [SENTRY_DSC_RELEASE]: { - brief: 'The release identifier from the dynamic sampling context.', + brief: "The release identifier from the dynamic sampling context.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'frontend@e8211be71b214afab5b85de4b4c54be3714952bb', + example: "frontend@e8211be71b214afab5b85de4b4c54be3714952bb", }, [SENTRY_DSC_SAMPLED]: { - brief: 'Whether the event was sampled according to the dynamic sampling context.', + brief: "Whether the event was sampled according to the dynamic sampling context.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, }, [SENTRY_DSC_SAMPLE_RATE]: { - brief: 'The sample rate from the dynamic sampling context.', + brief: "The sample rate from the dynamic sampling context.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '1.0', + example: "1.0", }, [SENTRY_DSC_TRACE_ID]: { - brief: 'The trace ID from the dynamic sampling context.', + brief: "The trace ID from the dynamic sampling context.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '047372980460430cbc78d9779df33a46', + example: "047372980460430cbc78d9779df33a46", }, [SENTRY_DSC_TRANSACTION]: { - brief: 'The transaction name from the dynamic sampling context.', + brief: "The transaction name from the dynamic sampling context.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '/issues/errors-outages/', + example: "/issues/errors-outages/", }, [SENTRY_ENVIRONMENT]: { - brief: 'The sentry environment.', + brief: "The sentry environment.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'production', + example: "production", aliases: [ENVIRONMENT], }, [SENTRY_EXCLUSIVE_TIME]: { - brief: 'The exclusive time duration of the span in milliseconds.', + brief: "The exclusive time duration of the span in milliseconds.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1234, }, [SENTRY_GRAPHQL_OPERATION]: { - brief: 'Indicates the type of graphql operation, emitted by the Javascript SDK.', + brief: "Indicates the type of graphql operation, emitted by the Javascript SDK.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'getUserById', + example: "getUserById", }, [SENTRY_GROUP]: { - brief: - 'Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.', + brief: "Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, }, [SENTRY_HTTP_PREFETCH]: { - brief: 'If an http request was a prefetch request.', + brief: "If an http request was a prefetch request.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, }, [SENTRY_IDLE_SPAN_FINISH_REASON]: { - brief: 'The reason why an idle span ended early.', + brief: "The reason why an idle span ended early.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'idleTimeout', + example: "idleTimeout", }, [SENTRY_IS_REMOTE]: { brief: "Indicates whether a span's parent is remote.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, }, [SENTRY_KIND]: { - 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.', + brief: "Used to clarify the relationship between parents and children, or to distinguish between spans, e.g. a `server` and `client` span with the same name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'server', + example: "server", }, [SENTRY_MESSAGE_PARAMETER_KEY]: { - 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)", + brief: "A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc)", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, example: "sentry.message.parameter.0='123'", }, [SENTRY_MESSAGE_TEMPLATE]: { - brief: 'The parameterized template string.', + brief: "The parameterized template string.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Hello, {name}!', + example: "Hello, {name}!", }, [SENTRY_MODULE_KEY]: { - brief: 'A module that was loaded in the process. The key is the name of the module.', + brief: "A module that was loaded in the process. The key is the name of the module.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, hasDynamicSuffix: true, example: "sentry.module.brianium/paratest='v7.7.0'", }, [SENTRY_NEXTJS_SSR_FUNCTION_ROUTE]: { - 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.', + brief: "A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '/posts/[id]/layout', - sdks: ['javascript'], + example: "/posts/[id]/layout", + sdks: ["javascript"], }, [SENTRY_NEXTJS_SSR_FUNCTION_TYPE]: { - 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.', + brief: "A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'generateMetadata', - sdks: ['javascript'], + example: "generateMetadata", + sdks: ["javascript"], }, [SENTRY_NORMALIZED_DB_QUERY]: { - brief: 'The normalized version of `db.query.text`.', + brief: "The normalized version of `db.query.text`.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', + example: "SELECT .. FROM sentry_project WHERE (project_id = %s)", }, [SENTRY_NORMALIZED_DB_QUERY_HASH]: { - brief: 'The hash of `sentry.normalized_db_query`.', + brief: "The hash of `sentry.normalized_db_query`.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, }, [SENTRY_NORMALIZED_DESCRIPTION]: { - 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).', + brief: "Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', + example: "SELECT .. FROM sentry_project WHERE (project_id = %s)", }, [SENTRY_OBSERVED_TIMESTAMP_NANOS]: { - brief: 'The timestamp at which an envelope was received by Relay, in nanoseconds.', + brief: "The timestamp at which an envelope was received by Relay, in nanoseconds.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '1544712660300000000', + example: "1544712660300000000", }, [SENTRY_OP]: { - brief: 'The operation of a span.', + brief: "The operation of a span.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'http.client', + example: "http.client", }, [SENTRY_ORIGIN]: { - brief: 'The origin of the instrumentation (e.g. span, log, etc.)', + brief: "The origin of the instrumentation (e.g. span, log, etc.)", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'auto.http.otel.fastify', + example: "auto.http.otel.fastify", }, [SENTRY_PLATFORM]: { - brief: 'The sdk platform that generated the event.', + brief: "The sdk platform that generated the event.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'php', + example: "php", }, [SENTRY_PROFILE_ID]: { - brief: 'The id of the sentry profile.', + brief: "The id of the sentry profile.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '123e4567e89b12d3a456426614174000', + example: "123e4567e89b12d3a456426614174000", aliases: [PROFILE_ID], }, [SENTRY_RELEASE]: { - brief: 'The sentry release.', + brief: "The sentry release.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '7.0.0', + example: "7.0.0", aliases: [SERVICE_VERSION, RELEASE], }, [SENTRY_REPLAY_ID]: { - brief: 'The id of the sentry replay.', + brief: "The id of the sentry replay.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '123e4567e89b12d3a456426614174000', + example: "123e4567e89b12d3a456426614174000", aliases: [REPLAY_ID], }, [SENTRY_REPLAY_IS_BUFFERING]: { - brief: - 'A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).', + brief: "A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, }, [SENTRY_SDK_INTEGRATIONS]: { - 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.', + brief: "A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.", type: 'string[]', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: ['InboundFilters', 'FunctionToString', 'BrowserApiErrors', 'Breadcrumbs'], + example: ["InboundFilters","FunctionToString","BrowserApiErrors","Breadcrumbs"], }, [SENTRY_SDK_NAME]: { - brief: 'The sentry sdk name.', + brief: "The sentry sdk name.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '@sentry/react', + example: "@sentry/react", }, [SENTRY_SDK_VERSION]: { - brief: 'The sentry sdk version.', + brief: "The sentry sdk version.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '7.0.0', + example: "7.0.0", }, [SENTRY_SEGMENT_ID]: { - brief: 'The segment ID of a span', + brief: "The segment ID of a span", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '051581bf3cb55c13', + example: "051581bf3cb55c13", aliases: [_SENTRY_SEGMENT_ID], }, [_SENTRY_SEGMENT_ID]: { - brief: 'The segment ID of a span', + brief: "The segment ID of a span", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '051581bf3cb55c13', + example: "051581bf3cb55c13", deprecation: { - replacement: 'sentry.segment.id', + replacement: "sentry.segment.id" }, aliases: [SENTRY_SEGMENT_ID], }, [SENTRY_SEGMENT_NAME]: { - brief: 'The segment name of a span', + brief: "The segment name of a span", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'GET /user', + example: "GET /user", }, [SENTRY_SERVER_SAMPLE_RATE]: { - brief: 'Rate at which a span was sampled in Relay.', + brief: "Rate at which a span was sampled in Relay.", type: 'double', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 0.5, }, [SENTRY_SPAN_SOURCE]: { - 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'`.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'route', + example: "route", }, [SENTRY_STATUS_MESSAGE]: { - brief: 'The from OTLP extracted status message.', + brief: "The from OTLP extracted status message.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'foobar', + example: "foobar", }, [SENTRY_TRACE_PARENT_SPAN_ID]: { - 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.', + brief: "The span id of the span that was active when the log was collected. This should not be set if there was no active span.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'b0e6f15b45c36b12', + example: "b0e6f15b45c36b12", }, [SENTRY_TRANSACTION]: { - brief: 'The sentry transaction (segment name).', + brief: "The sentry transaction (segment name).", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'GET /', + example: "GET /", aliases: [TRANSACTION], }, [SERVER_ADDRESS]: { - brief: - 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'example.com', + example: "example.com", aliases: [HTTP_SERVER_NAME, NET_HOST_NAME, HTTP_HOST], }, [SERVER_PORT]: { - brief: 'Server port number.', + brief: "Server port number.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 1337, aliases: [NET_HOST_PORT], }, [SERVICE_NAME]: { - brief: 'Logical name of the service.', + brief: "Logical name of the service.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'omegastar', + example: "omegastar", }, [SERVICE_VERSION]: { - brief: 'The version string of the service API or implementation. The format is not defined by these conventions.', + brief: "The version string of the service API or implementation. The format is not defined by these conventions.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '5.0.0', + example: "5.0.0", aliases: [SENTRY_RELEASE], }, [THREAD_ID]: { - brief: 'Current “managed” thread ID.', + brief: "Current “managed” thread ID.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 56, }, [THREAD_NAME]: { - brief: 'Current thread name.', + brief: "Current thread name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'main', + example: "main", }, [TIMBER_TAG]: { - brief: 'The log tag provided by the timber logging framework.', + brief: "The log tag provided by the timber logging framework.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'MyTag', - sdks: ['sentry.java.android'], + example: "MyTag", + sdks: ["sentry.java.android"], }, [TRANSACTION]: { - brief: 'The sentry transaction (segment name).', + brief: "The sentry transaction (segment name).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'GET /', + example: "GET /", deprecation: { - replacement: 'sentry.transaction', + replacement: "sentry.transaction" }, aliases: [SENTRY_TRANSACTION], }, [TYPE]: { - brief: 'More granular type of the operation happening.', + brief: "More granular type of the operation happening.", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'fetch', - sdks: ['javascript-browser', 'javascript-node'], + example: "fetch", + sdks: ["javascript-browser","javascript-node"], }, [UI_COMPONENT_NAME]: { - brief: 'The name of the associated component.', + brief: "The name of the associated component.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'HomeButton', + example: "HomeButton", }, [UI_CONTRIBUTES_TO_TTFD]: { - brief: 'Whether the span execution contributed to the TTFD (time to fully drawn) metric.', + brief: "Whether the span execution contributed to the TTFD (time to fully drawn) metric.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, }, [UI_CONTRIBUTES_TO_TTID]: { - brief: 'Whether the span execution contributed to the TTID (time to initial display) metric.', + brief: "Whether the span execution contributed to the TTID (time to initial display) metric.", type: 'boolean', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: true, }, [URL]: { - brief: 'The URL of the resource that was fetched.', + brief: "The URL of the resource that was fetched.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'https://example.com/test?foo=bar#buzz', + example: "https://example.com/test?foo=bar#buzz", deprecation: { - replacement: 'url.full', + replacement: "url.full" }, aliases: [URL_FULL, HTTP_URL], - sdks: ['javascript-browser', 'javascript-node'], + sdks: ["javascript-browser","javascript-node"], }, [URL_DOMAIN]: { - brief: - 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'example.com', + example: "example.com", }, [URL_FRAGMENT]: { - brief: - 'The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.', + brief: "The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'details', + example: "details", }, [URL_FULL]: { - brief: 'The URL of the resource that was fetched.', + brief: "The URL of the resource that was fetched.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'https://example.com/test?foo=bar#buzz', + example: "https://example.com/test?foo=bar#buzz", aliases: [HTTP_URL, URL], }, [URL_PATH]: { - brief: 'The URI path component.', + brief: "The URI path component.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '/foo', + example: "/foo", }, [URL_PATH_PARAMETER_KEY]: { - brief: - 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', + brief: "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, hasDynamicSuffix: true, @@ -13271,467 +12979,464 @@ export const ATTRIBUTE_METADATA: Record = { aliases: [PARAMS_KEY], }, [URL_PORT]: { - brief: 'Server port number.', + brief: "Server port number.", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: true, example: 1337, }, [URL_QUERY]: { - brief: - 'The query string present in the URL. Note that this does not contain the leading ? character, while the `http.query` attribute does.', + brief: "The query string present in the URL. Note that this does not contain the leading ? character, while the `http.query` attribute does.", type: 'string', pii: { isPii: 'maybe', - reason: - 'Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.', + reason: "Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." }, isInOtel: true, - example: 'foo=bar&bar=baz', + example: "foo=bar&bar=baz", }, [URL_SCHEME]: { - brief: 'The URI scheme component identifying the used protocol.', + brief: "The URI scheme component identifying the used protocol.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: 'https', + example: "https", aliases: [HTTP_SCHEME], }, [URL_TEMPLATE]: { - brief: 'The low-cardinality template of an absolute path reference.', + brief: "The low-cardinality template of an absolute path reference.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: true, - example: '/users/:id', + example: "/users/:id", aliases: [HTTP_ROUTE], }, [USER_AGENT_ORIGINAL]: { - brief: 'Value of the HTTP User-Agent header sent by the client.', + brief: "Value of the HTTP User-Agent header sent by the client.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: 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', + 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], }, [USER_EMAIL]: { - brief: 'User email address.', + brief: "User email address.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: 'test@example.com', + example: "test@example.com", }, [USER_FULL_NAME]: { brief: "User's full name.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: 'John Smith', + example: "John Smith", }, [USER_GEO_CITY]: { - brief: 'Human readable city name.', + brief: "Human readable city name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Toronto', + example: "Toronto", }, [USER_GEO_COUNTRY_CODE]: { - brief: 'Two-letter country code (ISO 3166-1 alpha-2).', + brief: "Two-letter country code (ISO 3166-1 alpha-2).", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'CA', + example: "CA", }, [USER_GEO_REGION]: { - brief: 'Human readable region name or code.', + brief: "Human readable region name or code.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Canada', + example: "Canada", }, [USER_GEO_SUBDIVISION]: { - brief: 'Human readable subdivision name.', + brief: "Human readable subdivision name.", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'Ontario', + example: "Ontario", }, [USER_HASH]: { - brief: 'Unique user hash to correlate information for a user in anonymized form.', + brief: "Unique user hash to correlate information for a user in anonymized form.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: '8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d', + example: "8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", }, [USER_ID]: { - brief: 'Unique identifier of the user.', + brief: "Unique identifier of the user.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + example: "S-1-5-21-202424912787-2692429404-2351956786-1000", }, [USER_IP_ADDRESS]: { - brief: 'The IP address of the user.', + brief: "The IP address of the user.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: '192.168.1.1', + example: "192.168.1.1", }, [USER_NAME]: { - brief: 'Short name or login/username of the user.', + brief: "Short name or login/username of the user.", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: 'j.smith', + example: "j.smith", }, [USER_ROLES]: { - brief: 'Array of user roles at the time of the event.', + brief: "Array of user roles at the time of the event.", type: 'string[]', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: true, - example: ['admin', 'editor'], + example: ["admin","editor"], }, [VERCEL_BRANCH]: { - brief: 'Git branch name for Vercel project', + brief: "Git branch name for Vercel project", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'main', + example: "main", }, [VERCEL_BUILD_ID]: { - brief: 'Identifier for the Vercel build (only present on build logs)', + brief: "Identifier for the Vercel build (only present on build logs)", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'bld_cotnkcr76', + example: "bld_cotnkcr76", }, [VERCEL_DEPLOYMENT_ID]: { - brief: 'Identifier for the Vercel deployment', + brief: "Identifier for the Vercel deployment", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'dpl_233NRGRjVZX1caZrXWtz5g1TAksD', + example: "dpl_233NRGRjVZX1caZrXWtz5g1TAksD", }, [VERCEL_DESTINATION]: { - brief: 'Origin of the external content in Vercel (only on external logs)', + brief: "Origin of the external content in Vercel (only on external logs)", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'https://vitals.vercel-insights.com/v1', + example: "https://vitals.vercel-insights.com/v1", }, [VERCEL_EDGE_TYPE]: { - brief: 'Type of edge runtime in Vercel', + brief: "Type of edge runtime in Vercel", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'edge-function', + example: "edge-function", }, [VERCEL_ENTRYPOINT]: { - brief: 'Entrypoint for the request in Vercel', + brief: "Entrypoint for the request in Vercel", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'api/index.js', + example: "api/index.js", }, [VERCEL_EXECUTION_REGION]: { - brief: 'Region where the request is executed', + brief: "Region where the request is executed", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'sfo1', + example: "sfo1", }, [VERCEL_ID]: { - brief: 'Unique identifier for the log entry in Vercel', + brief: "Unique identifier for the log entry in Vercel", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '1573817187330377061717300000', + example: "1573817187330377061717300000", }, [VERCEL_JA3_DIGEST]: { - brief: 'JA3 fingerprint digest of Vercel request', + brief: "JA3 fingerprint digest of Vercel request", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0', + example: "769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0", }, [VERCEL_JA4_DIGEST]: { - brief: 'JA4 fingerprint digest', + brief: "JA4 fingerprint digest", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 't13d1516h2_8daaf6152771_02713d6af862', + example: "t13d1516h2_8daaf6152771_02713d6af862", }, [VERCEL_LOG_TYPE]: { - brief: 'Vercel log output type', + brief: "Vercel log output type", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'stdout', + example: "stdout", }, [VERCEL_PROJECT_ID]: { - brief: 'Identifier for the Vercel project', + brief: "Identifier for the Vercel project", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'gdufoJxB6b9b1fEqr1jUtFkyavUU', + example: "gdufoJxB6b9b1fEqr1jUtFkyavUU", }, [VERCEL_PROJECT_NAME]: { - brief: 'Name of the Vercel project', + brief: "Name of the Vercel project", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'my-app', + example: "my-app", }, [VERCEL_PROXY_CACHE_ID]: { - brief: 'Original request ID when request is served from cache', + brief: "Original request ID when request is served from cache", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'pdx1::v8g4b-1744143786684-93dafbc0f70d', + example: "pdx1::v8g4b-1744143786684-93dafbc0f70d", }, [VERCEL_PROXY_CLIENT_IP]: { - brief: 'Client IP address', + brief: "Client IP address", type: 'string', pii: { - isPii: 'true', + isPii: 'true' }, isInOtel: false, - example: '120.75.16.101', + example: "120.75.16.101", }, [VERCEL_PROXY_HOST]: { - brief: 'Hostname of the request', + brief: "Hostname of the request", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'test.vercel.app', + example: "test.vercel.app", }, [VERCEL_PROXY_LAMBDA_REGION]: { - brief: 'Region where lambda function executed', + brief: "Region where lambda function executed", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'sfo1', + example: "sfo1", }, [VERCEL_PROXY_METHOD]: { - brief: 'HTTP method of the request', + brief: "HTTP method of the request", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'GET', + example: "GET", }, [VERCEL_PROXY_PATH]: { - brief: 'Request path with query parameters', + brief: "Request path with query parameters", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '/dynamic/some-value.json?route=some-value', + example: "/dynamic/some-value.json?route=some-value", }, [VERCEL_PROXY_PATH_TYPE]: { - brief: 'How the request was served based on its path and project configuration', + brief: "How the request was served based on its path and project configuration", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'func', + example: "func", }, [VERCEL_PROXY_PATH_TYPE_VARIANT]: { - brief: 'Variant of the path type', + brief: "Variant of the path type", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: 'api', + example: "api", }, [VERCEL_PROXY_REFERER]: { - brief: 'Referer of the request', + brief: "Referer of the request", type: 'string', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: '*.vercel.app', + example: "*.vercel.app", }, [VERCEL_PROXY_REGION]: { - brief: 'Region where the request is processed', + brief: "Region where the request is processed", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'sfo1', + example: "sfo1", }, [VERCEL_PROXY_RESPONSE_BYTE_SIZE]: { - brief: 'Size of the response in bytes', + brief: "Size of the response in bytes", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1024, }, [VERCEL_PROXY_SCHEME]: { - brief: 'Protocol of the request', + brief: "Protocol of the request", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'https', + example: "https", }, [VERCEL_PROXY_STATUS_CODE]: { - brief: 'HTTP status code of the proxy request', + brief: "HTTP status code of the proxy request", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 200, }, [VERCEL_PROXY_TIMESTAMP]: { - brief: 'Unix timestamp when the proxy request was made', + brief: "Unix timestamp when the proxy request was made", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 1573817250172, }, [VERCEL_PROXY_USER_AGENT]: { - brief: 'User agent strings of the request', + brief: "User agent strings of the request", type: 'string[]', pii: { - isPii: 'maybe', + isPii: 'maybe' }, isInOtel: false, - example: ['Mozilla/5.0...'], + example: ["Mozilla/5.0..."], }, [VERCEL_PROXY_VERCEL_CACHE]: { - brief: 'Cache status sent to the browser', + brief: "Cache status sent to the browser", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'REVALIDATED', + example: "REVALIDATED", }, [VERCEL_PROXY_VERCEL_ID]: { - brief: 'Vercel-specific identifier', + brief: "Vercel-specific identifier", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'sfo1::abc123', + example: "sfo1::abc123", }, [VERCEL_PROXY_WAF_ACTION]: { - brief: 'Action taken by firewall rules', + brief: "Action taken by firewall rules", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'deny', + example: "deny", }, [VERCEL_PROXY_WAF_RULE_ID]: { - brief: 'ID of the firewall rule that matched', + brief: "ID of the firewall rule that matched", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'rule_gAHz8jtSB1Gy', + example: "rule_gAHz8jtSB1Gy", }, [VERCEL_REQUEST_ID]: { - brief: 'Identifier of the Vercel request', + brief: "Identifier of the Vercel request", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: '643af4e3-975a-4cc7-9e7a-1eda11539d90', + example: "643af4e3-975a-4cc7-9e7a-1eda11539d90", }, [VERCEL_SOURCE]: { - brief: 'Origin of the Vercel log (build, edge, lambda, static, external, or firewall)', + brief: "Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", type: 'string', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, - example: 'build', + example: "build", }, [VERCEL_STATUS_CODE]: { - brief: 'HTTP status code of the request (-1 means no response returned and the lambda crashed)', + brief: "HTTP status code of the request (-1 means no response returned and the lambda crashed)", type: 'integer', pii: { - isPii: 'false', + isPii: 'false' }, isInOtel: false, example: 200, @@ -13843,8 +13548,10 @@ export type Attributes = { [GEN_AI_COST_OUTPUT_TOKENS]?: GEN_AI_COST_OUTPUT_TOKENS_TYPE; [GEN_AI_COST_TOTAL_TOKENS]?: GEN_AI_COST_TOTAL_TOKENS_TYPE; [GEN_AI_EMBEDDINGS_INPUT]?: GEN_AI_EMBEDDINGS_INPUT_TYPE; + [GEN_AI_INPUT_MESSAGES]?: GEN_AI_INPUT_MESSAGES_TYPE; [GEN_AI_OPERATION_NAME]?: GEN_AI_OPERATION_NAME_TYPE; [GEN_AI_OPERATION_TYPE]?: GEN_AI_OPERATION_TYPE_TYPE; + [GEN_AI_OUTPUT_MESSAGES]?: GEN_AI_OUTPUT_MESSAGES_TYPE; [GEN_AI_PIPELINE_NAME]?: GEN_AI_PIPELINE_NAME_TYPE; [GEN_AI_PROMPT]?: GEN_AI_PROMPT_TYPE; [GEN_AI_REQUEST_AVAILABLE_TOOLS]?: GEN_AI_REQUEST_AVAILABLE_TOOLS_TYPE; @@ -13865,7 +13572,11 @@ export type Attributes = { [GEN_AI_RESPONSE_TOKENS_PER_SECOND]?: GEN_AI_RESPONSE_TOKENS_PER_SECOND_TYPE; [GEN_AI_RESPONSE_TOOL_CALLS]?: GEN_AI_RESPONSE_TOOL_CALLS_TYPE; [GEN_AI_SYSTEM]?: GEN_AI_SYSTEM_TYPE; + [GEN_AI_SYSTEM_INSTRUCTIONS]?: GEN_AI_SYSTEM_INSTRUCTIONS_TYPE; [GEN_AI_SYSTEM_MESSAGE]?: GEN_AI_SYSTEM_MESSAGE_TYPE; + [GEN_AI_TOOL_CALL_ARGUMENTS]?: GEN_AI_TOOL_CALL_ARGUMENTS_TYPE; + [GEN_AI_TOOL_CALL_RESULT]?: GEN_AI_TOOL_CALL_RESULT_TYPE; + [GEN_AI_TOOL_DEFINITIONS]?: GEN_AI_TOOL_DEFINITIONS_TYPE; [GEN_AI_TOOL_DESCRIPTION]?: GEN_AI_TOOL_DESCRIPTION_TYPE; [GEN_AI_TOOL_INPUT]?: GEN_AI_TOOL_INPUT_TYPE; [GEN_AI_TOOL_MESSAGE]?: GEN_AI_TOOL_MESSAGE_TYPE; @@ -14157,3 +13868,4 @@ export type Attributes = { [VERCEL_SOURCE]?: VERCEL_SOURCE_TYPE; [VERCEL_STATUS_CODE]?: VERCEL_STATUS_CODE_TYPE; } & Record; + diff --git a/model/attributes/gen_ai/gen_ai__input__messages.json b/model/attributes/gen_ai/gen_ai__input__messages.json new file mode 100644 index 00000000..f834ec8e --- /dev/null +++ b/model/attributes/gen_ai/gen_ai__input__messages.json @@ -0,0 +1,11 @@ +{ + "key": "gen_ai.input.messages", + "brief": "The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + "type": "string", + "format": "", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" +} diff --git a/model/attributes/gen_ai/gen_ai__output__messages.json b/model/attributes/gen_ai/gen_ai__output__messages.json new file mode 100644 index 00000000..f2b0dec5 --- /dev/null +++ b/model/attributes/gen_ai/gen_ai__output__messages.json @@ -0,0 +1,11 @@ +{ + "key": "gen_ai.output.messages", + "brief": "The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", + "type": "string", + "format": "", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]" +} diff --git a/model/attributes/gen_ai/gen_ai__request__available_tools.json b/model/attributes/gen_ai/gen_ai__request__available_tools.json index 0a288af0..69066810 100644 --- a/model/attributes/gen_ai/gen_ai__request__available_tools.json +++ b/model/attributes/gen_ai/gen_ai__request__available_tools.json @@ -7,5 +7,9 @@ }, "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\"}]", - "alias": [] + "alias": [], + "deprecation": { + "_status": null, + "replacement": "gen_ai.tool.definitions" + } } diff --git a/model/attributes/gen_ai/gen_ai__request__messages.json b/model/attributes/gen_ai/gen_ai__request__messages.json index 5875b906..8e443473 100644 --- a/model/attributes/gen_ai/gen_ai__request__messages.json +++ b/model/attributes/gen_ai/gen_ai__request__messages.json @@ -7,5 +7,9 @@ }, "is_in_otel": false, "example": "[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]", - "alias": ["ai.input_messages"] + "alias": ["ai.input_messages"], + "deprecation": { + "_status": null, + "replacement": "gen_ai.input.messages" + } } diff --git a/model/attributes/gen_ai/gen_ai__response__text.json b/model/attributes/gen_ai/gen_ai__response__text.json index d4db9fde..239012a1 100644 --- a/model/attributes/gen_ai/gen_ai__response__text.json +++ b/model/attributes/gen_ai/gen_ai__response__text.json @@ -7,5 +7,9 @@ }, "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\"]", - "alias": [] + "alias": [], + "deprecation": { + "_status": null, + "replacement": "gen_ai.output.messages" + } } diff --git a/model/attributes/gen_ai/gen_ai__response__tool_calls.json b/model/attributes/gen_ai/gen_ai__response__tool_calls.json index eddd26b8..34cf8136 100644 --- a/model/attributes/gen_ai/gen_ai__response__tool_calls.json +++ b/model/attributes/gen_ai/gen_ai__response__tool_calls.json @@ -7,5 +7,9 @@ }, "is_in_otel": false, "example": "[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", - "alias": [] + "alias": [], + "deprecation": { + "_status": null, + "replacement": "gen_ai.output.messages" + } } diff --git a/model/attributes/gen_ai/gen_ai__system__message.json b/model/attributes/gen_ai/gen_ai__system__message.json index 3e89f602..aee9357f 100644 --- a/model/attributes/gen_ai/gen_ai__system__message.json +++ b/model/attributes/gen_ai/gen_ai__system__message.json @@ -6,5 +6,9 @@ "key": "true" }, "is_in_otel": false, - "example": "You are a helpful assistant" + "example": "You are a helpful assistant", + "deprecation": { + "_status": null, + "replacement": "gen_ai.system_instructions" + } } diff --git a/model/attributes/gen_ai/gen_ai__system_instructions.json b/model/attributes/gen_ai/gen_ai__system_instructions.json new file mode 100644 index 00000000..bdd6453d --- /dev/null +++ b/model/attributes/gen_ai/gen_ai__system_instructions.json @@ -0,0 +1,11 @@ +{ + "key": "gen_ai.system_instructions", + "brief": "The system instructions passed to the model.", + "type": "string", + "format": "", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "You are a helpful assistant" +} diff --git a/model/attributes/gen_ai/gen_ai__tool__call__arguments.json b/model/attributes/gen_ai/gen_ai__tool__call__arguments.json new file mode 100644 index 00000000..065338b5 --- /dev/null +++ b/model/attributes/gen_ai/gen_ai__tool__call__arguments.json @@ -0,0 +1,11 @@ +{ + "key": "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.", + "type": "string", + "format": "", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "{\"location\": \"Paris\"}" +} diff --git a/model/attributes/gen_ai/gen_ai__tool__call__result.json b/model/attributes/gen_ai/gen_ai__tool__call__result.json new file mode 100644 index 00000000..fe133cb3 --- /dev/null +++ b/model/attributes/gen_ai/gen_ai__tool__call__result.json @@ -0,0 +1,11 @@ +{ + "key": "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.", + "type": "string", + "format": "", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "rainy, 57°F" +} diff --git a/model/attributes/gen_ai/gen_ai__tool__definitions.json b/model/attributes/gen_ai/gen_ai__tool__definitions.json new file mode 100644 index 00000000..e8e9422f --- /dev/null +++ b/model/attributes/gen_ai/gen_ai__tool__definitions.json @@ -0,0 +1,11 @@ +{ + "key": "gen_ai.tool.definitions", + "brief": "The list of source system tool definitions available to the GenAI agent or model.", + "type": "string", + "format": "", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "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\"]}}]" +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 7bd158e8..70bf6ded 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -5,12 +5,9 @@ import warnings from dataclasses import dataclass from enum import Enum -from typing import Dict, List, Literal, Optional, TypedDict, Union - -AttributeValue = Union[ - str, int, float, bool, List[str], List[int], List[float], List[bool] -] +from typing import List, Union, Literal, Optional, Dict, TypedDict +AttributeValue = Union[str, int, float, bool, List[str], List[int], List[float], List[bool]] class AttributeType(Enum): STRING = "string" @@ -22,67 +19,59 @@ class AttributeType(Enum): INTEGER_ARRAY = "integer[]" DOUBLE_ARRAY = "double[]" - class IsPii(Enum): TRUE = "true" FALSE = "false" MAYBE = "maybe" - @dataclass class PiiInfo: """Holds information about PII in an attribute's values.""" - isPii: IsPii reason: Optional[str] = None - class DeprecationStatus(Enum): BACKFILL = "backfill" NORMALIZE = "normalize" - @dataclass class DeprecationInfo: """Holds information about a deprecation.""" - replacement: Optional[str] = None reason: Optional[str] = None status: Optional[DeprecationStatus] = None - @dataclass class AttributeMetadata: """The metadata for an attribute.""" brief: str """A description of the attribute""" - + type: AttributeType """The type of the attribute value""" - + pii: PiiInfo """If an attribute can have pii. Is either true, false or maybe. Optionally include a reason about why it has PII or not""" - + is_in_otel: bool """Whether the attribute is defined in OpenTelemetry Semantic Conventions""" - + has_dynamic_suffix: Optional[bool] = None """If an attribute has a dynamic suffix, for example http.response.header. where is dynamic""" - + example: Optional[AttributeValue] = None """An example value of the attribute""" - + deprecation: Optional[DeprecationInfo] = None """If an attribute was deprecated, and what it was replaced with""" - + aliases: Optional[List[str]] = None """If there are attributes that alias to this attribute""" - + sdks: Optional[List[str]] = None """If an attribute is SDK specific, list the SDKs that use this attribute. This is not an exhaustive list, there might be SDKs that send this attribute that are is not documented here.""" - class _AttributeNamesMeta(type): _deprecated_names = { "AI_COMPLETION_TOKENS_USED", @@ -117,6 +106,11 @@ class _AttributeNamesMeta(type): "ENVIRONMENT", "FS_ERROR", "GEN_AI_PROMPT", + "GEN_AI_REQUEST_AVAILABLE_TOOLS", + "GEN_AI_REQUEST_MESSAGES", + "GEN_AI_RESPONSE_TEXT", + "GEN_AI_RESPONSE_TOOL_CALLS", + "GEN_AI_SYSTEM_MESSAGE", "GEN_AI_USAGE_COMPLETION_TOKENS", "GEN_AI_USAGE_PROMPT_TOKENS", "HTTP_CLIENT_IP", @@ -171,7 +165,6 @@ def __getattribute__(cls, name: str): ) return super().__getattribute__(name) - class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """Contains all attribute names as class attributes with their documentation.""" @@ -186,9 +179,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/ai/ai__completion_tokens__used.json - AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = ( - "ai.completion_tokens.used" - ) + AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = "ai.completion_tokens.used" """The number of tokens used to respond to the message. Type: int @@ -596,9 +587,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__invoker_type.json - BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = ( - "browser.script.invoker_type" - ) + BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = "browser.script.invoker_type" """Browser script entry point type. Type: str @@ -608,9 +597,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__source_char_position.json - BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal[ - "browser.script.source_char_position" - ] = "browser.script.source_char_position" + BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal["browser.script.source_char_position"] = "browser.script.source_char_position" """A number representing the script character position of the script. Type: int @@ -722,9 +709,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_read.json - CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = ( - "cloudflare.d1.rows_read" - ) + CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = "cloudflare.d1.rows_read" """The number of rows read in a Cloudflare D1 operation. Type: int @@ -734,9 +719,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_written.json - CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = ( - "cloudflare.d1.rows_written" - ) + CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = "cloudflare.d1.rows_written" """The number of rows written in a Cloudflare D1 operation. Type: int @@ -882,9 +865,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/db/db__query__parameter__[key].json - DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = ( - "db.query.parameter." - ) + DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = "db.query.parameter." """A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value. Type: str @@ -1216,9 +1197,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__assistant__message.json - GEN_AI_ASSISTANT_MESSAGE: Literal["gen_ai.assistant.message"] = ( - "gen_ai.assistant.message" - ) + GEN_AI_ASSISTANT_MESSAGE: Literal["gen_ai.assistant.message"] = "gen_ai.assistant.message" """The assistant message passed to the model. Type: str @@ -1238,9 +1217,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__input_tokens.json - GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = ( - "gen_ai.cost.input_tokens" - ) + GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = "gen_ai.cost.input_tokens" """The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens). Type: float @@ -1250,9 +1227,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__output_tokens.json - GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = ( - "gen_ai.cost.output_tokens" - ) + GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = "gen_ai.cost.output_tokens" """The cost of tokens used for creating the AI output in USD (without reasoning tokens). Type: float @@ -1262,9 +1237,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__total_tokens.json - GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = ( - "gen_ai.cost.total_tokens" - ) + GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = "gen_ai.cost.total_tokens" """The total cost for the tokens used. Type: float @@ -1274,9 +1247,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__embeddings__input.json - GEN_AI_EMBEDDINGS_INPUT: Literal["gen_ai.embeddings.input"] = ( - "gen_ai.embeddings.input" - ) + GEN_AI_EMBEDDINGS_INPUT: Literal["gen_ai.embeddings.input"] = "gen_ai.embeddings.input" """The input to the embeddings model. Type: str @@ -1285,6 +1256,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "What's the weather in Paris?" """ + # Path: model/attributes/gen_ai/gen_ai__input__messages.json + GEN_AI_INPUT_MESSAGES: Literal["gen_ai.input.messages"] = "gen_ai.input.messages" + """The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" + """ + # Path: model/attributes/gen_ai/gen_ai__operation__name.json GEN_AI_OPERATION_NAME: Literal["gen_ai.operation.name"] = "gen_ai.operation.name" """The name of the operation being performed. @@ -1305,6 +1286,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "tool" """ + # Path: model/attributes/gen_ai/gen_ai__output__messages.json + GEN_AI_OUTPUT_MESSAGES: Literal["gen_ai.output.messages"] = "gen_ai.output.messages" + """The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]" + """ + # Path: model/attributes/gen_ai/gen_ai__pipeline__name.json GEN_AI_PIPELINE_NAME: Literal["gen_ai.pipeline.name"] = "gen_ai.pipeline.name" """Name of the AI pipeline or chain being executed. @@ -1328,21 +1319,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__available_tools.json - GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = ( - "gen_ai.request.available_tools" - ) + GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = "gen_ai.request.available_tools" """The available tools for the model. It has to be a stringified version of an array of objects. Type: str Contains PII: maybe Defined in OTEL: No + DEPRECATED: Use gen_ai.tool.definitions instead Example: "[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]" """ # Path: model/attributes/gen_ai/gen_ai__request__frequency_penalty.json - GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = ( - "gen_ai.request.frequency_penalty" - ) + GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = "gen_ai.request.frequency_penalty" """Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation. Type: float @@ -1353,9 +1341,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__max_tokens.json - GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = ( - "gen_ai.request.max_tokens" - ) + GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = "gen_ai.request.max_tokens" """The maximum number of tokens to generate in the response. Type: int @@ -1365,15 +1351,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__messages.json - GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = ( - "gen_ai.request.messages" - ) + GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = "gen_ai.request.messages" """The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. Type: str Contains PII: maybe Defined in OTEL: No Aliases: ai.input_messages + DEPRECATED: Use gen_ai.input.messages instead 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\"}}]" """ @@ -1388,9 +1373,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__presence_penalty.json - GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = ( - "gen_ai.request.presence_penalty" - ) + GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = "gen_ai.request.presence_penalty" """Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies. Type: float @@ -1412,9 +1395,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__temperature.json - GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = ( - "gen_ai.request.temperature" - ) + GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = "gen_ai.request.temperature" """For an AI model call, the temperature parameter. Temperature essentially means how random the output will be. Type: float @@ -1447,9 +1428,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__finish_reasons.json - GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = ( - "gen_ai.response.finish_reasons" - ) + GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = "gen_ai.response.finish_reasons" """The reason why the model stopped generating. Type: str @@ -1482,9 +1461,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__streaming.json - GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = ( - "gen_ai.response.streaming" - ) + GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = "gen_ai.response.streaming" """Whether or not the AI model call's response was streamed back asynchronously Type: bool @@ -1501,13 +1478,12 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: No + DEPRECATED: Use gen_ai.output.messages instead 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\"]" """ # Path: model/attributes/gen_ai/gen_ai__response__tokens_per_second.json - GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = ( - "gen_ai.response.tokens_per_second" - ) + GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = "gen_ai.response.tokens_per_second" """The total output tokens per seconds throughput Type: float @@ -1517,14 +1493,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tool_calls.json - GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = ( - "gen_ai.response.tool_calls" - ) + GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = "gen_ai.response.tool_calls" """The tool calls in the model's response. It has to be a stringified version of an array of objects. Type: str Contains PII: maybe Defined in OTEL: No + DEPRECATED: Use gen_ai.output.messages instead Example: "[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]" """ @@ -1546,13 +1521,52 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: true Defined in OTEL: No + DEPRECATED: Use gen_ai.system_instructions instead Example: "You are a helpful assistant" """ + # Path: model/attributes/gen_ai/gen_ai__system_instructions.json + GEN_AI_SYSTEM_INSTRUCTIONS: Literal["gen_ai.system_instructions"] = "gen_ai.system_instructions" + """The system instructions passed to the model. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "You are a helpful assistant" + """ + + # Path: model/attributes/gen_ai/gen_ai__tool__call__arguments.json + GEN_AI_TOOL_CALL_ARGUMENTS: Literal["gen_ai.tool.call.arguments"] = "gen_ai.tool.call.arguments" + """The arguments of the tool call. It has to be a stringified version of the arguments to the tool. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "{\"location\": \"Paris\"}" + """ + + # Path: model/attributes/gen_ai/gen_ai__tool__call__result.json + GEN_AI_TOOL_CALL_RESULT: Literal["gen_ai.tool.call.result"] = "gen_ai.tool.call.result" + """The result of the tool call. It has to be a stringified version of the result of the tool. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "rainy, 57°F" + """ + + # Path: model/attributes/gen_ai/gen_ai__tool__definitions.json + GEN_AI_TOOL_DEFINITIONS: Literal["gen_ai.tool.definitions"] = "gen_ai.tool.definitions" + """The list of source system tool definitions available to the GenAI agent or model. + + Type: str + Contains PII: maybe + Defined in OTEL: No + 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\"]}}]" + """ + # Path: model/attributes/gen_ai/gen_ai__tool__description.json - GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = ( - "gen_ai.tool.description" - ) + GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = "gen_ai.tool.description" """The description of the tool being used. Type: str @@ -1613,9 +1627,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__completion_tokens.json - GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = ( - "gen_ai.usage.completion_tokens" - ) + GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = "gen_ai.usage.completion_tokens" """The number of tokens used in the GenAI response (completion). Type: int @@ -1627,9 +1639,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens.json - GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = ( - "gen_ai.usage.input_tokens" - ) + GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = "gen_ai.usage.input_tokens" """The number of tokens used to process the AI input (prompt) without cached input tokens. Type: int @@ -1640,9 +1650,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cache_write.json - GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE: Literal[ - "gen_ai.usage.input_tokens.cache_write" - ] = "gen_ai.usage.input_tokens.cache_write" + GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE: Literal["gen_ai.usage.input_tokens.cache_write"] = "gen_ai.usage.input_tokens.cache_write" """The number of tokens written to the cache when processing the AI input (prompt). Type: int @@ -1652,9 +1660,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cached.json - GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = ( - "gen_ai.usage.input_tokens.cached" - ) + GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = "gen_ai.usage.input_tokens.cached" """The number of cached tokens used to process the AI input (prompt). Type: int @@ -1664,9 +1670,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens.json - GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = ( - "gen_ai.usage.output_tokens" - ) + GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = "gen_ai.usage.output_tokens" """The number of tokens used for creating the AI output (without reasoning tokens). Type: int @@ -1677,9 +1681,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens__reasoning.json - GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal[ - "gen_ai.usage.output_tokens.reasoning" - ] = "gen_ai.usage.output_tokens.reasoning" + GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal["gen_ai.usage.output_tokens.reasoning"] = "gen_ai.usage.output_tokens.reasoning" """The number of tokens used for reasoning to create the AI output. Type: int @@ -1689,9 +1691,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__prompt_tokens.json - GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = ( - "gen_ai.usage.prompt_tokens" - ) + GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = "gen_ai.usage.prompt_tokens" """The number of tokens used in the GenAI input (prompt). Type: int @@ -1703,9 +1703,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__total_tokens.json - GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = ( - "gen_ai.usage.total_tokens" - ) + GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = "gen_ai.usage.total_tokens" """The total number of tokens used to process the prompt. (input tokens plus output todkens) Type: int @@ -1758,9 +1756,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__decoded_response_content_length.json - HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal[ - "http.decoded_response_content_length" - ] = "http.decoded_response_content_length" + HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal["http.decoded_response_content_length"] = "http.decoded_response_content_length" """The decoded body size of the response (in bytes). Type: int @@ -1826,9 +1822,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connect_start.json - HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = ( - "http.request.connect_start" - ) + HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = "http.request.connect_start" """The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource. Type: float @@ -1838,9 +1832,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connection_end.json - HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = ( - "http.request.connection_end" - ) + HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = "http.request.connection_end" """The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication. Type: float @@ -1850,9 +1842,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_end.json - HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = ( - "http.request.domain_lookup_end" - ) + HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = "http.request.domain_lookup_end" """The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource. Type: float @@ -1862,9 +1852,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_start.json - HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = ( - "http.request.domain_lookup_start" - ) + HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = "http.request.domain_lookup_start" """The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource. Type: float @@ -1874,9 +1862,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__fetch_start.json - HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = ( - "http.request.fetch_start" - ) + HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = "http.request.fetch_start" """The UNIX timestamp representing the time immediately before the browser starts to fetch the resource. Type: float @@ -1886,9 +1872,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__header__[key].json - HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = ( - "http.request.header." - ) + HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = "http.request.header." """HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -1910,9 +1894,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_end.json - HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = ( - "http.request.redirect_end" - ) + HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = "http.request.redirect_end" """The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect Type: float @@ -1922,9 +1904,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_start.json - HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = ( - "http.request.redirect_start" - ) + HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = "http.request.redirect_start" """The UNIX timestamp representing the start time of the fetch which that initiates the redirect. Type: float @@ -1934,9 +1914,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__request_start.json - HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = ( - "http.request.request_start" - ) + HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = "http.request.request_start" """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -1946,9 +1924,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__resend_count.json - HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = ( - "http.request.resend_count" - ) + HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = "http.request.resend_count" """The ordinal number of request resending attempt (for any reason, including redirects). Type: int @@ -1958,9 +1934,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_end.json - HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = ( - "http.request.response_end" - ) + HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = "http.request.response_end" """The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first. Type: float @@ -1970,9 +1944,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_start.json - HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = ( - "http.request.response_start" - ) + HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = "http.request.response_start" """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -1982,9 +1954,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__secure_connection_start.json - HTTP_REQUEST_SECURE_CONNECTION_START: Literal[ - "http.request.secure_connection_start" - ] = "http.request.secure_connection_start" + HTTP_REQUEST_SECURE_CONNECTION_START: Literal["http.request.secure_connection_start"] = "http.request.secure_connection_start" """The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero. Type: float @@ -1994,9 +1964,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__time_to_first_byte.json - HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = ( - "http.request.time_to_first_byte" - ) + HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = "http.request.time_to_first_byte" """The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests Type: float @@ -2006,9 +1974,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__worker_start.json - HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = ( - "http.request.worker_start" - ) + HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = "http.request.worker_start" """The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running. Type: float @@ -2018,9 +1984,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__body__size.json - HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = ( - "http.response.body.size" - ) + HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = "http.response.body.size" """The encoded body size of the response (in bytes). Type: int @@ -2031,9 +1995,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__[key].json - HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = ( - "http.response.header." - ) + HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = "http.response.header." """HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -2044,9 +2006,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__content-length.json - HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal[ - "http.response.header.content-length" - ] = "http.response.header.content-length" + HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal["http.response.header.content-length"] = "http.response.header.content-length" """The size of the message body sent to the recipient (in bytes) Type: str @@ -2068,9 +2028,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__status_code.json - HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = ( - "http.response.status_code" - ) + HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = "http.response.status_code" """The status code of the HTTP response. Type: int @@ -2081,9 +2039,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_content_length.json - HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = ( - "http.response_content_length" - ) + HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = "http.response_content_length" """The encoded body size of the response (in bytes). Type: int @@ -2095,9 +2051,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_transfer_size.json - HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = ( - "http.response_transfer_size" - ) + HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = "http.response_transfer_size" """The transfer size of the response (in bytes). Type: int @@ -2321,9 +2275,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__cancelled__request_id.json - MCP_CANCELLED_REQUEST_ID: Literal["mcp.cancelled.request_id"] = ( - "mcp.cancelled.request_id" - ) + MCP_CANCELLED_REQUEST_ID: Literal["mcp.cancelled.request_id"] = "mcp.cancelled.request_id" """Request ID of the cancelled MCP operation. Type: str @@ -2443,9 +2395,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__progress__percentage.json - MCP_PROGRESS_PERCENTAGE: Literal["mcp.progress.percentage"] = ( - "mcp.progress.percentage" - ) + MCP_PROGRESS_PERCENTAGE: Literal["mcp.progress.percentage"] = "mcp.progress.percentage" """Calculated progress percentage of an MCP operation. Computed from current/total * 100. Type: float @@ -2485,9 +2435,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__description.json - MCP_PROMPT_RESULT_DESCRIPTION: Literal["mcp.prompt.result.description"] = ( - "mcp.prompt.result.description" - ) + MCP_PROMPT_RESULT_DESCRIPTION: Literal["mcp.prompt.result.description"] = "mcp.prompt.result.description" """Description of the prompt result. Type: str @@ -2497,9 +2445,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_content.json - MCP_PROMPT_RESULT_MESSAGE_CONTENT: Literal["mcp.prompt.result.message_content"] = ( - "mcp.prompt.result.message_content" - ) + MCP_PROMPT_RESULT_MESSAGE_CONTENT: Literal["mcp.prompt.result.message_content"] = "mcp.prompt.result.message_content" """Content of the message in the prompt result. Used for single message results only. Type: str @@ -2509,9 +2455,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_count.json - MCP_PROMPT_RESULT_MESSAGE_COUNT: Literal["mcp.prompt.result.message_count"] = ( - "mcp.prompt.result.message_count" - ) + MCP_PROMPT_RESULT_MESSAGE_COUNT: Literal["mcp.prompt.result.message_count"] = "mcp.prompt.result.message_count" """Number of messages in the prompt result. Type: int @@ -2521,9 +2465,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_role.json - MCP_PROMPT_RESULT_MESSAGE_ROLE: Literal["mcp.prompt.result.message_role"] = ( - "mcp.prompt.result.message_role" - ) + MCP_PROMPT_RESULT_MESSAGE_ROLE: Literal["mcp.prompt.result.message_role"] = "mcp.prompt.result.message_role" """Role of the message in the prompt result. Used for single message results only. Type: str @@ -2553,9 +2495,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__[key].json - MCP_REQUEST_ARGUMENT_KEY: Literal["mcp.request.argument."] = ( - "mcp.request.argument." - ) + MCP_REQUEST_ARGUMENT_KEY: Literal["mcp.request.argument."] = "mcp.request.argument." """MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value. Type: str @@ -2566,9 +2506,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__name.json - MCP_REQUEST_ARGUMENT_NAME: Literal["mcp.request.argument.name"] = ( - "mcp.request.argument.name" - ) + MCP_REQUEST_ARGUMENT_NAME: Literal["mcp.request.argument.name"] = "mcp.request.argument.name" """Name argument from prompts/get MCP request. Type: str @@ -2578,9 +2516,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__uri.json - MCP_REQUEST_ARGUMENT_URI: Literal["mcp.request.argument.uri"] = ( - "mcp.request.argument.uri" - ) + MCP_REQUEST_ARGUMENT_URI: Literal["mcp.request.argument.uri"] = "mcp.request.argument.uri" """URI argument from resources/read MCP request. Type: str @@ -2670,9 +2606,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__content.json - MCP_TOOL_RESULT_CONTENT: Literal["mcp.tool.result.content"] = ( - "mcp.tool.result.content" - ) + MCP_TOOL_RESULT_CONTENT: Literal["mcp.tool.result.content"] = "mcp.tool.result.content" """The content of the tool result. Type: str @@ -2682,9 +2616,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__content_count.json - MCP_TOOL_RESULT_CONTENT_COUNT: Literal["mcp.tool.result.content_count"] = ( - "mcp.tool.result.content_count" - ) + MCP_TOOL_RESULT_CONTENT_COUNT: Literal["mcp.tool.result.content_count"] = "mcp.tool.result.content_count" """Number of content items in the tool result. Type: int @@ -2694,9 +2626,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__is_error.json - MCP_TOOL_RESULT_IS_ERROR: Literal["mcp.tool.result.is_error"] = ( - "mcp.tool.result.is_error" - ) + MCP_TOOL_RESULT_IS_ERROR: Literal["mcp.tool.result.is_error"] = "mcp.tool.result.is_error" """Whether a tool execution resulted in an error. Type: bool @@ -2727,9 +2657,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__connection.json - MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = ( - "messaging.destination.connection" - ) + MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = "messaging.destination.connection" """The message destination connection. Type: str @@ -2739,9 +2667,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__name.json - MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = ( - "messaging.destination.name" - ) + MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = "messaging.destination.name" """The message destination name. Type: str @@ -2751,9 +2677,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__body__size.json - MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = ( - "messaging.message.body.size" - ) + MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = "messaging.message.body.size" """The size of the message body in bytes. Type: int @@ -2763,9 +2687,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__envelope__size.json - MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = ( - "messaging.message.envelope.size" - ) + MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = "messaging.message.envelope.size" """The size of the message body and metadata in bytes. Type: int @@ -2785,9 +2707,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__receive__latency.json - MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = ( - "messaging.message.receive.latency" - ) + MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = "messaging.message.receive.latency" """The latency between when the message was published and received. Type: int @@ -2797,9 +2717,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__retry__count.json - MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = ( - "messaging.message.retry.count" - ) + MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = "messaging.message.retry.count" """The amount of attempts to send the message. Type: int @@ -2809,9 +2727,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__operation__type.json - MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = ( - "messaging.operation.type" - ) + MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = "messaging.operation.type" """A string identifying the type of the messaging operation Type: str @@ -3132,9 +3048,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/network/network__protocol__version.json - NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = ( - "network.protocol.version" - ) + NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = "network.protocol.version" """The actual version of the protocol used for network communication. Type: str @@ -3246,9 +3160,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/otel/otel__status_description.json - OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = ( - "otel.status_description" - ) + OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = "otel.status_description" """Description of the Status if it has a value, otherwise not set. Type: str @@ -3280,9 +3192,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__executable__name.json - PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = ( - "process.executable.name" - ) + PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = "process.executable.name" """The name of the executable that started the process. Type: str @@ -3302,9 +3212,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__description.json - PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = ( - "process.runtime.description" - ) + PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = "process.runtime.description" """An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context. Type: str @@ -3324,9 +3232,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__version.json - PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = ( - "process.runtime.version" - ) + PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = "process.runtime.version" """The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context. Type: str @@ -3372,9 +3278,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/remix/remix__action_form_data__[key].json - REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = ( - "remix.action_form_data." - ) + REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = "remix.action_form_data." """Remix form data, being the form data key, the value being the form data value. Type: str @@ -3397,9 +3301,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__deployment__environment__name.json - RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal[ - "resource.deployment.environment.name" - ] = "resource.deployment.environment.name" + RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal["resource.deployment.environment.name"] = "resource.deployment.environment.name" """The software deployment environment name. Type: str @@ -3410,9 +3312,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__render_blocking_status.json - RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = ( - "resource.render_blocking_status" - ) + RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = "resource.render_blocking_status" """The render blocking status of the resource. Type: str @@ -3488,9 +3388,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__cancellation_reason.json - SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = ( - "sentry.cancellation_reason" - ) + SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = "sentry.cancellation_reason" """The reason why a span ended early. Type: str @@ -3510,9 +3408,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__client_sample_rate.json - SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = ( - "sentry.client_sample_rate" - ) + SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = "sentry.client_sample_rate" """Rate at which a span was sampled in the SDK. Type: float @@ -3643,9 +3539,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__graphql__operation.json - SENTRY_GRAPHQL_OPERATION: Literal["sentry.graphql.operation"] = ( - "sentry.graphql.operation" - ) + SENTRY_GRAPHQL_OPERATION: Literal["sentry.graphql.operation"] = "sentry.graphql.operation" """Indicates the type of graphql operation, emitted by the Javascript SDK. Type: str @@ -3674,9 +3568,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__idle_span_finish_reason.json - SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = ( - "sentry.idle_span_finish_reason" - ) + SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = "sentry.idle_span_finish_reason" """The reason why an idle span ended early. Type: str @@ -3706,9 +3598,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__parameter__[key].json - SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = ( - "sentry.message.parameter." - ) + SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = "sentry.message.parameter." """A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc) Type: str @@ -3718,9 +3608,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__template.json - SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = ( - "sentry.message.template" - ) + SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = "sentry.message.template" """The parameterized template string. Type: str @@ -3741,9 +3629,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__route.json - SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = ( - "sentry.nextjs.ssr.function.route" - ) + SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = "sentry.nextjs.ssr.function.route" """A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known. Type: str @@ -3753,9 +3639,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__type.json - SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = ( - "sentry.nextjs.ssr.function.type" - ) + SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = "sentry.nextjs.ssr.function.type" """A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions. Type: str @@ -3765,9 +3649,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_db_query.json - SENTRY_NORMALIZED_DB_QUERY: Literal["sentry.normalized_db_query"] = ( - "sentry.normalized_db_query" - ) + SENTRY_NORMALIZED_DB_QUERY: Literal["sentry.normalized_db_query"] = "sentry.normalized_db_query" """The normalized version of `db.query.text`. Type: str @@ -3777,9 +3659,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_db_query__hash.json - SENTRY_NORMALIZED_DB_QUERY_HASH: Literal["sentry.normalized_db_query.hash"] = ( - "sentry.normalized_db_query.hash" - ) + SENTRY_NORMALIZED_DB_QUERY_HASH: Literal["sentry.normalized_db_query.hash"] = "sentry.normalized_db_query.hash" """The hash of `sentry.normalized_db_query`. Type: str @@ -3788,9 +3668,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_description.json - SENTRY_NORMALIZED_DESCRIPTION: Literal["sentry.normalized_description"] = ( - "sentry.normalized_description" - ) + SENTRY_NORMALIZED_DESCRIPTION: Literal["sentry.normalized_description"] = "sentry.normalized_description" """Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc). Type: str @@ -3800,9 +3678,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__observed_timestamp_nanos.json - SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = ( - "sentry.observed_timestamp_nanos" - ) + SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = "sentry.observed_timestamp_nanos" """The timestamp at which an envelope was received by Relay, in nanoseconds. Type: str @@ -3875,9 +3751,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__replay_is_buffering.json - SENTRY_REPLAY_IS_BUFFERING: Literal["sentry.replay_is_buffering"] = ( - "sentry.replay_is_buffering" - ) + SENTRY_REPLAY_IS_BUFFERING: Literal["sentry.replay_is_buffering"] = "sentry.replay_is_buffering" """A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate). Type: bool @@ -3887,9 +3761,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__sdk__integrations.json - SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = ( - "sentry.sdk.integrations" - ) + SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = "sentry.sdk.integrations" """A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations. Type: List[str] @@ -3952,9 +3824,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__server_sample_rate.json - SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = ( - "sentry.server_sample_rate" - ) + SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = "sentry.server_sample_rate" """Rate at which a span was sampled in Relay. Type: float @@ -3984,9 +3854,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__trace__parent_span_id.json - SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = ( - "sentry.trace.parent_span_id" - ) + SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = "sentry.trace.parent_span_id" """The span id of the span that was active when the log was collected. This should not be set if there was no active span. Type: str @@ -4173,9 +4041,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/url/url__path__parameter__[key].json - URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = ( - "url.path.parameter." - ) + URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = "url.path.parameter." """Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. Type: str @@ -4422,9 +4288,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__execution_region.json - VERCEL_EXECUTION_REGION: Literal["vercel.execution_region"] = ( - "vercel.execution_region" - ) + VERCEL_EXECUTION_REGION: Literal["vercel.execution_region"] = "vercel.execution_region" """Region where the request is executed Type: str @@ -4524,9 +4388,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__lambda_region.json - VERCEL_PROXY_LAMBDA_REGION: Literal["vercel.proxy.lambda_region"] = ( - "vercel.proxy.lambda_region" - ) + VERCEL_PROXY_LAMBDA_REGION: Literal["vercel.proxy.lambda_region"] = "vercel.proxy.lambda_region" """Region where lambda function executed Type: str @@ -4566,9 +4428,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__path_type_variant.json - VERCEL_PROXY_PATH_TYPE_VARIANT: Literal["vercel.proxy.path_type_variant"] = ( - "vercel.proxy.path_type_variant" - ) + VERCEL_PROXY_PATH_TYPE_VARIANT: Literal["vercel.proxy.path_type_variant"] = "vercel.proxy.path_type_variant" """Variant of the path type Type: str @@ -4598,9 +4458,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__response_byte_size.json - VERCEL_PROXY_RESPONSE_BYTE_SIZE: Literal["vercel.proxy.response_byte_size"] = ( - "vercel.proxy.response_byte_size" - ) + VERCEL_PROXY_RESPONSE_BYTE_SIZE: Literal["vercel.proxy.response_byte_size"] = "vercel.proxy.response_byte_size" """Size of the response in bytes Type: int @@ -4620,9 +4478,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__status_code.json - VERCEL_PROXY_STATUS_CODE: Literal["vercel.proxy.status_code"] = ( - "vercel.proxy.status_code" - ) + VERCEL_PROXY_STATUS_CODE: Literal["vercel.proxy.status_code"] = "vercel.proxy.status_code" """HTTP status code of the proxy request Type: int @@ -4642,9 +4498,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__user_agent.json - VERCEL_PROXY_USER_AGENT: Literal["vercel.proxy.user_agent"] = ( - "vercel.proxy.user_agent" - ) + VERCEL_PROXY_USER_AGENT: Literal["vercel.proxy.user_agent"] = "vercel.proxy.user_agent" """User agent strings of the request Type: List[str] @@ -4654,9 +4508,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__vercel_cache.json - VERCEL_PROXY_VERCEL_CACHE: Literal["vercel.proxy.vercel_cache"] = ( - "vercel.proxy.vercel_cache" - ) + VERCEL_PROXY_VERCEL_CACHE: Literal["vercel.proxy.vercel_cache"] = "vercel.proxy.vercel_cache" """Cache status sent to the browser Type: str @@ -4676,9 +4528,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__waf_action.json - VERCEL_PROXY_WAF_ACTION: Literal["vercel.proxy.waf_action"] = ( - "vercel.proxy.waf_action" - ) + VERCEL_PROXY_WAF_ACTION: Literal["vercel.proxy.waf_action"] = "vercel.proxy.waf_action" """Action taken by firewall rules Type: str @@ -4688,9 +4538,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__waf_rule_id.json - VERCEL_PROXY_WAF_RULE_ID: Literal["vercel.proxy.waf_rule_id"] = ( - "vercel.proxy.waf_rule_id" - ) + VERCEL_PROXY_WAF_RULE_ID: Literal["vercel.proxy.waf_rule_id"] = "vercel.proxy.waf_rule_id" """ID of the firewall rule that matched Type: str @@ -4734,296 +4582,408 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.citations": AttributeMetadata( brief="References or sources cited by the AI model in its response.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Citation 1", "Citation 2"], ), "ai.completion_tokens.used": AttributeMetadata( brief="The number of tokens used to respond to the message.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=10, - deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), - aliases=["gen_ai.usage.output_tokens", "gen_ai.usage.completion_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.output_tokens" + ), + aliases=["gen_ai.usage.output_tokens","gen_ai.usage.completion_tokens"], sdks=["python"], ), "ai.documents": AttributeMetadata( brief="Documents or content chunks used as context for the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["document1.txt", "document2.pdf"], ), "ai.finish_reason": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="COMPLETE", - deprecation=DeprecationInfo(replacement="gen_ai.response.finish_reason"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.finish_reason" + ), aliases=["gen_ai.response.finish_reasons"], ), "ai.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo(replacement="gen_ai.request.frequency_penalty"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.frequency_penalty" + ), aliases=["gen_ai.request.frequency_penalty"], ), "ai.function_call": AttributeMetadata( brief="For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="function_name", - deprecation=DeprecationInfo(replacement="gen_ai.tool.name"), + deprecation=DeprecationInfo( + replacement="gen_ai.tool.name" + ), aliases=["gen_ai.tool.name"], ), "ai.generation_id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="gen_123abc", - deprecation=DeprecationInfo(replacement="gen_ai.response.id"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.id" + ), aliases=["gen_ai.response.id"], ), "ai.input_messages": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"role": "user", "message": "hello"}]', - deprecation=DeprecationInfo(replacement="gen_ai.request.messages"), + example="[{\"role\": \"user\", \"message\": \"hello\"}]", + deprecation=DeprecationInfo( + replacement="gen_ai.request.messages" + ), aliases=["gen_ai.request.messages"], sdks=["python"], ), "ai.is_search_required": AttributeMetadata( brief="Boolean indicating if the model needs to perform a search.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=False, ), "ai.metadata": AttributeMetadata( brief="Extra metadata passed to an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"user_id": 123, "session_id": "abc123"}', + example="{\"user_id\": 123, \"session_id\": \"abc123\"}", ), "ai.model.provider": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="openai", - deprecation=DeprecationInfo(replacement="gen_ai.system"), + deprecation=DeprecationInfo( + replacement="gen_ai.system" + ), aliases=["gen_ai.system"], ), "ai.model_id": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="gpt-4", - deprecation=DeprecationInfo(replacement="gen_ai.response.model"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.model" + ), aliases=["gen_ai.response.model"], sdks=["python"], ), "ai.pipeline.name": AttributeMetadata( brief="The name of the AI pipeline.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Autofix Pipeline", - deprecation=DeprecationInfo(replacement="gen_ai.pipeline.name"), + deprecation=DeprecationInfo( + replacement="gen_ai.pipeline.name" + ), aliases=["gen_ai.pipeline.name"], ), "ai.preamble": AttributeMetadata( brief="For an AI model call, the preamble parameter. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="You are now a clown.", ), "ai.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo(replacement="gen_ai.request.presence_penalty"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.presence_penalty" + ), aliases=["gen_ai.request.presence_penalty"], ), "ai.prompt_tokens.used": AttributeMetadata( brief="The number of tokens used to process just the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=20, - deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), - aliases=["gen_ai.usage.prompt_tokens", "gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.input_tokens" + ), + aliases=["gen_ai.usage.prompt_tokens","gen_ai.usage.input_tokens"], sdks=["python"], ), "ai.raw_prompting": AttributeMetadata( brief="When enabled, the user’s prompt will be sent to the model without any pre-processing.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "ai.response_format": AttributeMetadata( brief="For an AI model call, the format of the response", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="json_object", ), "ai.responses": AttributeMetadata( brief="The response messages sent back by the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["hello", "world"], - deprecation=DeprecationInfo(replacement="gen_ai.response.text"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.text" + ), sdks=["python"], ), "ai.search_queries": AttributeMetadata( brief="Queries used to search for relevant context or documents.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["climate change effects", "renewable energy"], ), "ai.search_results": AttributeMetadata( brief="Results returned from search queries for context.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["search_result_1, search_result_2"], ), "ai.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="1234567890", - deprecation=DeprecationInfo(replacement="gen_ai.request.seed"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.seed" + ), aliases=["gen_ai.request.seed"], ), "ai.streaming": AttributeMetadata( brief="Whether the request was streamed back.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, - deprecation=DeprecationInfo(replacement="gen_ai.response.streaming"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.streaming" + ), aliases=["gen_ai.response.streaming"], sdks=["python"], ), "ai.tags": AttributeMetadata( brief="Tags that describe an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"executed_function": "add_integers"}', + example="{\"executed_function\": \"add_integers\"}", ), "ai.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.1, - deprecation=DeprecationInfo(replacement="gen_ai.request.temperature"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.temperature" + ), aliases=["gen_ai.request.temperature"], ), "ai.texts": AttributeMetadata( brief="Raw text inputs provided to the model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Hello, how are you?", "What is the capital of France?"], ), "ai.tool_calls": AttributeMetadata( brief="For an AI model call, the tool calls that were made.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["tool_call_1", "tool_call_2"], - deprecation=DeprecationInfo(replacement="gen_ai.response.tool_calls"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.tool_calls" + ), ), "ai.tools": AttributeMetadata( brief="For an AI model call, the functions that are available", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["function_1", "function_2"], - deprecation=DeprecationInfo(replacement="gen_ai.request.available_tools"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.available_tools" + ), ), "ai.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=35, - deprecation=DeprecationInfo(replacement="gen_ai.request.top_k"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.top_k" + ), aliases=["gen_ai.request.top_k"], ), "ai.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.7, - deprecation=DeprecationInfo(replacement="gen_ai.request.top_p"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.top_p" + ), aliases=["gen_ai.request.top_p"], ), "ai.total_cost": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12.34, ), "ai.total_tokens.used": AttributeMetadata( brief="The total number of tokens used to process the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=30, - deprecation=DeprecationInfo(replacement="gen_ai.usage.total_tokens"), + deprecation=DeprecationInfo( + replacement="gen_ai.usage.total_tokens" + ), aliases=["gen_ai.usage.total_tokens"], sdks=["python"], ), "ai.warnings": AttributeMetadata( brief="Warning messages generated during model execution.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Token limit exceeded"], ), "app_start_type": AttributeMetadata( brief="Mobile app start variant. Either cold or warm.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="cold", ), "blocked_main_thread": AttributeMetadata( brief="Whether the main thread was blocked by the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Chrome", aliases=["sentry.browser.name"], @@ -5031,14 +4991,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.report.type": AttributeMetadata( brief="A browser report sent via reporting API..", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="network-error", ), "browser.script.invoker": AttributeMetadata( brief="How a script was called in the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Window.requestAnimationFrame", sdks=["browser"], @@ -5046,7 +5010,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.invoker_type": AttributeMetadata( brief="Browser script entry point type.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="event-listener", sdks=["browser"], @@ -5054,7 +5020,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.source_char_position": AttributeMetadata( brief="A number representing the script character position of the script.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=678, sdks=["browser"], @@ -5062,7 +5030,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="120.0.6099.130", aliases=["sentry.browser.version"], @@ -5070,7 +5040,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.hit": AttributeMetadata( brief="If the cache was hit during this span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, sdks=["php-laravel"], @@ -5078,14 +5050,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.item_size": AttributeMetadata( brief="The size of the requested item in the cache. In bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=58, ), "cache.key": AttributeMetadata( brief="The key of the cache accessed.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["my-cache-key", "my-other-cache-key"], sdks=["php-laravel"], @@ -5093,7 +5069,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.operation": AttributeMetadata( brief="The operation being performed on the cache.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="get", sdks=["php-laravel"], @@ -5101,7 +5079,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.ttl": AttributeMetadata( brief="The ttl of the cache in seconds", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=120, sdks=["php-laravel"], @@ -5109,7 +5089,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "channel": AttributeMetadata( brief="The channel name that is being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="mail", sdks=["php-laravel"], @@ -5117,7 +5099,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.address": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="example.com", aliases=["http.client_ip"], @@ -5125,14 +5109,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.port": AttributeMetadata( brief="Client port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=5432, ), "cloudflare.d1.duration": AttributeMetadata( brief="The duration of a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=543, sdks=["javascript-cloudflare"], @@ -5140,7 +5128,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_read": AttributeMetadata( brief="The number of rows read in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -5148,7 +5138,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_written": AttributeMetadata( brief="The number of rows written in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -5156,7 +5148,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.file.path": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/app/myapplication/http/handler/server.py", aliases=["code.filepath"], @@ -5164,25 +5158,35 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.filepath": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/app/myapplication/http/handler/server.py", - deprecation=DeprecationInfo(replacement="code.file.path"), + deprecation=DeprecationInfo( + replacement="code.file.path" + ), aliases=["code.file.path"], ), "code.function": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="server_request", - deprecation=DeprecationInfo(replacement="code.function.name"), + deprecation=DeprecationInfo( + replacement="code.function.name" + ), aliases=["code.function.name"], ), "code.function.name": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="server_request", aliases=["code.function"], @@ -5190,7 +5194,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.line.number": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=42, aliases=["code.lineno"], @@ -5198,43 +5204,57 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.lineno": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=42, - deprecation=DeprecationInfo(replacement="code.line.number"), + deprecation=DeprecationInfo( + replacement="code.line.number" + ), aliases=["code.line.number"], ), "code.namespace": AttributeMetadata( brief="The 'namespace' within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http.handler", deprecation=DeprecationInfo( replacement="code.function.name", - reason="code.function.name should include the namespace.", + reason="code.function.name should include the namespace." ), ), "db.collection.name": AttributeMetadata( brief="The name of a collection (table, container) within the database.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="users", ), "db.name": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="customers", - deprecation=DeprecationInfo(replacement="db.namespace"), + deprecation=DeprecationInfo( + replacement="db.namespace" + ), aliases=["db.namespace"], ), "db.namespace": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="customers", aliases=["db.name"], @@ -5242,18 +5262,23 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.operation": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT", deprecation=DeprecationInfo( - replacement="db.operation.name", status=DeprecationStatus.NORMALIZE + replacement="db.operation.name", + status=DeprecationStatus.NORMALIZE ), aliases=["db.operation.name"], ), "db.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT", aliases=["db.operation"], @@ -5261,7 +5286,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.parameter.": AttributeMetadata( brief="A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="db.query.parameter.foo='123'", @@ -5269,14 +5296,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.summary": AttributeMetadata( brief="A database query being executed. Should be paramaterized. The full version of the query is in `db.query.text`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT * FROM users", ), "db.query.text": AttributeMetadata( brief="The database query being executed. Should be the full query, not a parameterized version. The parameterized version is in `db.query.summary`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT * FROM users", aliases=["db.statement"], @@ -5284,7 +5315,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.connection": AttributeMetadata( brief="The redis connection name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="my-redis-instance", sdks=["php-laravel"], @@ -5292,7 +5325,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.parameters": AttributeMetadata( brief="The array of command parameters given to a redis command.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["test", "*"], sdks=["php-laravel"], @@ -5300,41 +5335,51 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.sql.bindings": AttributeMetadata( brief="The array of query bindings.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["1", "foo"], deprecation=DeprecationInfo( replacement="db.query.parameter.", - reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter..", + reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.." ), sdks=["php-laravel"], ), "db.statement": AttributeMetadata( brief="The database statement being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT * FROM users", deprecation=DeprecationInfo( - replacement="db.query.text", status=DeprecationStatus.NORMALIZE + replacement="db.query.text", + status=DeprecationStatus.NORMALIZE ), aliases=["db.query.text"], ), "db.system": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="postgresql", deprecation=DeprecationInfo( - replacement="db.system.name", status=DeprecationStatus.NORMALIZE + replacement="db.system.name", + status=DeprecationStatus.NORMALIZE ), aliases=["db.system.name"], ), "db.system.name": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="postgresql", aliases=["db.system"], @@ -5342,121 +5387,157 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.user": AttributeMetadata( brief="The database user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="fancy_user", ), "device.brand": AttributeMetadata( brief="The brand of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Apple", ), "device.family": AttributeMetadata( brief="The family of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="iPhone", ), "device.model": AttributeMetadata( brief="The model of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="iPhone 15 Pro Max", ), "environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="production", - deprecation=DeprecationInfo(replacement="sentry.environment"), + deprecation=DeprecationInfo( + replacement="sentry.environment" + ), aliases=["sentry.environment"], ), "error.type": AttributeMetadata( brief="Describes a class of error the operation ended with.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="timeout", ), "event.id": AttributeMetadata( brief="The unique identifier for this event (log record)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1234567890, ), "event.name": AttributeMetadata( brief="The name that uniquely identifies this event (log record)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Process Payload", ), "exception.escaped": AttributeMetadata( brief="SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, ), "exception.message": AttributeMetadata( brief="The error message.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ENOENT: no such file or directory", ), "exception.stacktrace": AttributeMetadata( brief="A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)', + example="Exception in thread \"main\" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)", ), "exception.type": AttributeMetadata( brief="The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="OSError", ), "faas.coldstart": AttributeMetadata( brief="A boolean that is true if the serverless function is executed for the first time (aka cold-start).", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, ), "faas.cron": AttributeMetadata( brief="A string containing the schedule period as Cron Expression.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="0/5 * * * ? *", ), "faas.time": AttributeMetadata( brief="A string containing the function invocation time in the ISO 8601 format expressed in UTC.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="2020-01-23T13:47:06Z", ), "faas.trigger": AttributeMetadata( brief="Type of the trigger which caused this function invocation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="timer", ), "flag.evaluation.": AttributeMetadata( brief="An instance of a feature flag evaluation. The value of this attribute is the boolean representing the evaluation result. The suffix is the name of the feature flag.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, has_dynamic_suffix=True, example="flag.evaluation.is_new_ui=true", @@ -5464,110 +5545,158 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.delay": AttributeMetadata( brief="The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=5, ), "frames.frozen": AttributeMetadata( brief="The number of frozen frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=3, ), "frames.slow": AttributeMetadata( brief="The number of slow frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1, ), "frames.total": AttributeMetadata( brief="The number of total frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=60, ), "fs_error": AttributeMetadata( brief="The error message of a file system error.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="ENOENT: no such file or directory", deprecation=DeprecationInfo( replacement="error.type", - reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better.", + reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better." ), sdks=["javascript-node"], ), "gen_ai.agent.name": AttributeMetadata( brief="The name of the agent being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ResearchAssistant", ), "gen_ai.assistant.message": AttributeMetadata( brief="The assistant message passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="get_weather tool call", ), "gen_ai.choice": AttributeMetadata( brief="The model's response message.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="The weather in Paris is rainy and overcast, with temperatures around 57°F", ), "gen_ai.cost.input_tokens": AttributeMetadata( brief="The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=123.45, ), "gen_ai.cost.output_tokens": AttributeMetadata( brief="The cost of tokens used for creating the AI output in USD (without reasoning tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=123.45, ), "gen_ai.cost.total_tokens": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12.34, ), "gen_ai.embeddings.input": AttributeMetadata( brief="The input to the embeddings model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="What's the weather in Paris?", ), + "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:\"...\"}`.", + type=AttributeType.STRING, + pii=PiiInfo( + isPii=IsPii.MAYBE + ), + is_in_otel=False, + example="[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]", + ), "gen_ai.operation.name": AttributeMetadata( brief="The name of the operation being performed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="chat", ), "gen_ai.operation.type": AttributeMetadata( brief="The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="tool", ), + "gen_ai.output.messages": AttributeMetadata( + brief="The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", + type=AttributeType.STRING, + pii=PiiInfo( + isPii=IsPii.MAYBE + ), + is_in_otel=False, + example="[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]", + ), "gen_ai.pipeline.name": AttributeMetadata( brief="Name of the AI pipeline or chain being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Autofix Pipeline", aliases=["ai.pipeline.name"], @@ -5575,9 +5704,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.prompt": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='[{"role": "user", "message": "hello"}]', + example="[{\"role\": \"user\", \"message\": \"hello\"}]", deprecation=DeprecationInfo( reason="Deprecated from OTEL, use gen_ai.input.messages with the new format instead." ), @@ -5585,14 +5716,21 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.available_tools": AttributeMetadata( brief="The available tools for the model. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]', + 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" + ), ), "gen_ai.request.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=0.5, aliases=["ai.frequency_penalty"], @@ -5600,29 +5738,40 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.max_tokens": AttributeMetadata( brief="The maximum number of tokens to generate in the response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=2048, ), "gen_ai.request.messages": AttributeMetadata( - brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', + brief="The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"role": "system", "content": "Generate a random number."}, {"role": "user", "content": [{"text": "Generate a random number between 0 and 10.", "type": "text"}]}, {"role": "tool", "content": {"toolCallId": "1", "toolName": "Weather", "output": "rainy"}}]', + 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"], ), "gen_ai.request.model": AttributeMetadata( brief="The model identifier being used for the request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gpt-4-turbo-preview", ), "gen_ai.request.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=0.5, aliases=["ai.presence_penalty"], @@ -5630,7 +5779,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1234567890", aliases=["ai.seed"], @@ -5638,7 +5789,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=0.1, aliases=["ai.temperature"], @@ -5646,7 +5799,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=35, aliases=["ai.top_k"], @@ -5654,7 +5809,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=0.7, aliases=["ai.top_p"], @@ -5662,7 +5819,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.finish_reasons": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="COMPLETE", aliases=["ai.finish_reason"], @@ -5670,7 +5829,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gen_123abc", aliases=["ai.generation_id"], @@ -5678,7 +5839,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.model": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gpt-4", aliases=["ai.model_id"], @@ -5686,7 +5849,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.streaming": AttributeMetadata( brief="Whether or not the AI model call's response was streamed back asynchronously", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, aliases=["ai.streaming"], @@ -5694,28 +5859,42 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.text": AttributeMetadata( brief="The model's response text messages. It has to be a stringified version of an array of response text messages.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='["The weather in Paris is rainy and overcast, with temperatures around 57°F", "The weather in London is sunny and warm, with temperatures around 65°F"]', + 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" + ), ), "gen_ai.response.tokens_per_second": AttributeMetadata( brief="The total output tokens per seconds throughput", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12345.67, ), "gen_ai.response.tool_calls": AttributeMetadata( brief="The tool calls in the model's response. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"name": "get_weather", "arguments": {"location": "Paris"}}]', + example="[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", + deprecation=DeprecationInfo( + replacement="gen_ai.output.messages" + ), ), "gen_ai.system": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="openai", aliases=["ai.model.provider"], @@ -5723,35 +5902,84 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system.message": AttributeMetadata( brief="The system instructions passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), + is_in_otel=False, + example="You are a helpful assistant", + deprecation=DeprecationInfo( + replacement="gen_ai.system_instructions" + ), + ), + "gen_ai.system_instructions": AttributeMetadata( + brief="The system instructions passed to the model.", + type=AttributeType.STRING, + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="You are a helpful assistant", ), + "gen_ai.tool.call.arguments": AttributeMetadata( + brief="The arguments of the tool call. It has to be a stringified version of the arguments to the tool.", + type=AttributeType.STRING, + pii=PiiInfo( + isPii=IsPii.MAYBE + ), + is_in_otel=False, + example="{\"location\": \"Paris\"}", + ), + "gen_ai.tool.call.result": AttributeMetadata( + brief="The result of the tool call. It has to be a stringified version of the result of the tool.", + type=AttributeType.STRING, + pii=PiiInfo( + isPii=IsPii.MAYBE + ), + is_in_otel=False, + example="rainy, 57°F", + ), + "gen_ai.tool.definitions": AttributeMetadata( + brief="The list of source system tool definitions available to the GenAI agent or model.", + type=AttributeType.STRING, + pii=PiiInfo( + isPii=IsPii.MAYBE + ), + is_in_otel=False, + 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\"]}}]", + ), "gen_ai.tool.description": AttributeMetadata( brief="The description of the tool being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Searches the web for current information about a topic", ), "gen_ai.tool.input": AttributeMetadata( brief="The input of the tool being used. It has to be a stringified version of the input to the tool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"location": "Paris"}', + example="{\"location\": \"Paris\"}", ), "gen_ai.tool.message": AttributeMetadata( brief="The response from a tool or function call passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="rainy, 57°F", ), "gen_ai.tool.name": AttributeMetadata( brief="Name of the tool utilized by the agent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Flights", aliases=["ai.function_call"], @@ -5759,76 +5987,100 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.output": AttributeMetadata( brief="The output of the tool being used. It has to be a stringified version of the output of the tool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="rainy, 57°F", ), "gen_ai.tool.type": AttributeMetadata( brief="The type of tool being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="function", ), "gen_ai.usage.completion_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI response (completion).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=10, - deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), - aliases=["ai.completion_tokens.used", "gen_ai.usage.output_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.output_tokens" + ), + aliases=["ai.completion_tokens.used","gen_ai.usage.output_tokens"], ), "gen_ai.usage.input_tokens": AttributeMetadata( brief="The number of tokens used to process the AI input (prompt) without cached input tokens.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=10, - aliases=["ai.prompt_tokens.used", "gen_ai.usage.prompt_tokens"], + aliases=["ai.prompt_tokens.used","gen_ai.usage.prompt_tokens"], ), "gen_ai.usage.input_tokens.cache_write": AttributeMetadata( brief="The number of tokens written to the cache when processing the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=100, ), "gen_ai.usage.input_tokens.cached": AttributeMetadata( brief="The number of cached tokens used to process the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=50, ), "gen_ai.usage.output_tokens": AttributeMetadata( brief="The number of tokens used for creating the AI output (without reasoning tokens).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=10, - aliases=["ai.completion_tokens.used", "gen_ai.usage.completion_tokens"], + aliases=["ai.completion_tokens.used","gen_ai.usage.completion_tokens"], ), "gen_ai.usage.output_tokens.reasoning": AttributeMetadata( brief="The number of tokens used for reasoning to create the AI output.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=75, ), "gen_ai.usage.prompt_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=20, - deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), - aliases=["ai.prompt_tokens.used", "gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.input_tokens" + ), + aliases=["ai.prompt_tokens.used","gen_ai.usage.input_tokens"], ), "gen_ai.usage.total_tokens": AttributeMetadata( brief="The total number of tokens used to process the prompt. (input tokens plus output todkens)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=20, aliases=["ai.total_tokens.used"], @@ -5836,37 +6088,49 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.user.message": AttributeMetadata( brief="The user message passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="What's the weather in Paris?", ), "graphql.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="findBookById", ), "graphql.operation.type": AttributeMetadata( brief="The type of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="query", ), "http.client_ip": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="client.address"), + deprecation=DeprecationInfo( + replacement="client.address" + ), aliases=["client.address"], ), "http.decoded_response_content_length": AttributeMetadata( brief="The decoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=456, sdks=["javascript-browser"], @@ -5874,43 +6138,50 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.flavor": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo(replacement="network.protocol.version"), - aliases=["network.protocol.version", "net.protocol.version"], + deprecation=DeprecationInfo( + replacement="network.protocol.version" + ), + aliases=["network.protocol.version","net.protocol.version"], ), "http.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="#details", ), "http.host": AttributeMetadata( brief="The domain name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage", + reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage" ), - aliases=[ - "server.address", - "client.address", - "http.server_name", - "net.host.name", - ], + aliases=["server.address","client.address","http.server_name","net.host.name"], ), "http.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="GET", - deprecation=DeprecationInfo(replacement="http.request.method"), + deprecation=DeprecationInfo( + replacement="http.request.method" + ), aliases=["http.request.method"], ), "http.query": AttributeMetadata( @@ -5918,7 +6189,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." ), is_in_otel=False, example="?foo=bar&bar=baz", @@ -5926,7 +6197,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connect_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.111, sdks=["javascript-browser"], @@ -5934,7 +6207,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connection_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.15, sdks=["javascript-browser"], @@ -5942,7 +6217,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.201, sdks=["javascript-browser"], @@ -5950,7 +6227,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.322, sdks=["javascript-browser"], @@ -5958,7 +6237,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.fetch_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.389, sdks=["javascript-browser"], @@ -5966,7 +6247,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.header.": AttributeMetadata( brief="HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="http.request.header.custom-header=['foo', 'bar']", @@ -5974,15 +6257,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="GET", - aliases=["method", "http.method"], + aliases=["method","http.method"], ), "http.request.redirect_end": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829558.502, sdks=["javascript-browser"], @@ -5990,7 +6277,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.redirect_start": AttributeMetadata( brief="The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.495, sdks=["javascript-browser"], @@ -5998,7 +6287,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.request_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.51, sdks=["javascript-browser"], @@ -6006,14 +6297,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.resend_count": AttributeMetadata( brief="The ordinal number of request resending attempt (for any reason, including redirects).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=2, ), "http.request.response_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.89, sdks=["javascript-browser"], @@ -6021,7 +6316,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.response_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.7, sdks=["javascript-browser"], @@ -6029,7 +6326,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.secure_connection_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.73, sdks=["javascript-browser"], @@ -6037,7 +6336,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.time_to_first_byte": AttributeMetadata( brief="The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1.032, sdks=["javascript-browser"], @@ -6045,7 +6346,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.worker_start": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829553.68, sdks=["javascript-browser"], @@ -6053,15 +6356,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.body.size": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=123, - aliases=["http.response_content_length", "http.response.header.content-length"], + aliases=["http.response_content_length","http.response.header.content-length"], ), "http.response.header.": AttributeMetadata( brief="HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="http.response.header.custom-header=['foo', 'bar']", @@ -6069,15 +6376,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.header.content-length": AttributeMetadata( brief="The size of the message body sent to the recipient (in bytes)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http.response.header.custom-header=['foo', 'bar']", - aliases=["http.response_content_length", "http.response.body.size"], + aliases=["http.response_content_length","http.response.body.size"], ), "http.response.size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=456, aliases=["http.response_transfer_size"], @@ -6085,7 +6396,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=404, aliases=["http.status_code"], @@ -6093,29 +6406,37 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response_content_length": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=123, deprecation=DeprecationInfo( - replacement="http.response.body.size", status=DeprecationStatus.BACKFILL + replacement="http.response.body.size", + status=DeprecationStatus.BACKFILL ), - aliases=["http.response.body.size", "http.response.header.content-length"], + aliases=["http.response.body.size","http.response.header.content-length"], ), "http.response_transfer_size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=456, deprecation=DeprecationInfo( - replacement="http.response.size", status=DeprecationStatus.BACKFILL + replacement="http.response.size", + status=DeprecationStatus.BACKFILL ), aliases=["http.response.size"], ), "http.route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/users/:id", aliases=["url.template"], @@ -6123,63 +6444,87 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https", - deprecation=DeprecationInfo(replacement="url.scheme"), + deprecation=DeprecationInfo( + replacement="url.scheme" + ), aliases=["url.scheme"], ), "http.server_name": AttributeMetadata( brief="The server domain name", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "net.host.name", "http.host"], + deprecation=DeprecationInfo( + replacement="server.address" + ), + aliases=["server.address","net.host.name","http.host"], ), "http.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=404, - deprecation=DeprecationInfo(replacement="http.response.status_code"), + deprecation=DeprecationInfo( + replacement="http.response.status_code" + ), aliases=["http.response.status_code"], ), "http.target": AttributeMetadata( brief="The pathname and query string of the URL.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/test?foo=bar#buzz", deprecation=DeprecationInfo( replacement="url.path", - reason="This attribute is being deprecated in favor of url.path and url.query", + reason="This attribute is being deprecated in favor of url.path and url.query" ), ), "http.url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo(replacement="url.full"), - aliases=["url.full", "url"], + deprecation=DeprecationInfo( + replacement="url.full" + ), + aliases=["url.full","url"], ), "http.user_agent": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", - deprecation=DeprecationInfo(replacement="user_agent.original"), + deprecation=DeprecationInfo( + replacement="user_agent.original" + ), aliases=["user_agent.original"], ), "id": AttributeMetadata( brief="A unique identifier for the span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -6187,77 +6532,99 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.gc.action": AttributeMetadata( brief="Name of the garbage collector action.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="end of minor GC", ), "jvm.gc.name": AttributeMetadata( brief="Name of the garbage collector.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Young Generation", ), "jvm.memory.pool.name": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Old Gen", ), "jvm.memory.type": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Old Gen", ), "jvm.thread.daemon": AttributeMetadata( brief="Whether the thread is daemon or not.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, ), "jvm.thread.state": AttributeMetadata( brief="State of the thread.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="blocked", ), "lcp.element": AttributeMetadata( brief="The dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="img", ), "lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="#hero", ), "lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1234, ), "lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com", ), "logger.name": AttributeMetadata( brief="The name of the logger that generated this event.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="myLogger", ), @@ -6266,7 +6633,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Cancellation reasons may contain user-specific or sensitive information", + reason="Cancellation reasons may contain user-specific or sensitive information" ), is_in_otel=False, example="User cancelled the request", @@ -6274,14 +6641,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.cancelled.request_id": AttributeMetadata( brief="Request ID of the cancelled MCP operation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123", ), "mcp.client.name": AttributeMetadata( brief="Name of the MCP client application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="claude-desktop", ), @@ -6290,7 +6661,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Client titles may reveal user-specific application configurations or custom setups", + reason="Client titles may reveal user-specific application configurations or custom setups" ), is_in_otel=False, example="Claude Desktop", @@ -6298,28 +6669,36 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.client.version": AttributeMetadata( brief="Version of the MCP client application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1.0.0", ), "mcp.lifecycle.phase": AttributeMetadata( brief="Lifecycle phase indicator for MCP operations.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="initialization_complete", ), "mcp.logging.data_type": AttributeMetadata( brief="Data type of the logged message content.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="string", ), "mcp.logging.level": AttributeMetadata( brief="Log level for MCP logging operations.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="info", ), @@ -6328,7 +6707,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Logger names may be user-defined and could contain sensitive information", + reason="Logger names may be user-defined and could contain sensitive information" ), is_in_otel=False, example="mcp_server", @@ -6336,21 +6715,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.logging.message": AttributeMetadata( brief="Log message content from MCP logging operations.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="Log messages can contain user data"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="Log messages can contain user data" + ), is_in_otel=False, example="Tool execution completed successfully", ), "mcp.method.name": AttributeMetadata( brief="The name of the MCP request or notification method being called.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="tools/call", ), "mcp.progress.current": AttributeMetadata( brief="Current progress value of an MCP operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=50, ), @@ -6359,7 +6745,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Progress messages may contain user-specific or sensitive information", + reason="Progress messages may contain user-specific or sensitive information" ), is_in_otel=False, example="Processing 50 of 100 items", @@ -6367,21 +6753,27 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.percentage": AttributeMetadata( brief="Calculated progress percentage of an MCP operation. Computed from current/total * 100.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=50, ), "mcp.progress.token": AttributeMetadata( brief="Token for tracking progress of an MCP operation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="progress-token-123", ), "mcp.progress.total": AttributeMetadata( brief="Total progress target value of an MCP operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=100, ), @@ -6390,7 +6782,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Prompt names may reveal user behavior patterns or sensitive operations", + reason="Prompt names may reveal user behavior patterns or sensitive operations" ), is_in_otel=False, example="summarize", @@ -6398,49 +6790,64 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.description": AttributeMetadata( brief="Description of the prompt result.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="A summary of the requested information", ), "mcp.prompt.result.message_content": AttributeMetadata( brief="Content of the message in the prompt result. Used for single message results only.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="Please provide a summary of the document", ), "mcp.prompt.result.message_count": AttributeMetadata( brief="Number of messages in the prompt result.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=3, ), "mcp.prompt.result.message_role": AttributeMetadata( brief="Role of the message in the prompt result. Used for single message results only.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="user", ), "mcp.protocol.ready": AttributeMetadata( brief="Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1, ), "mcp.protocol.version": AttributeMetadata( brief="MCP protocol version used in the session.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="2024-11-05", ), "mcp.request.argument.": AttributeMetadata( brief="MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="Arguments contain user input"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="Arguments contain user input" + ), is_in_otel=False, has_dynamic_suffix=True, example="mcp.request.argument.query='weather in Paris'", @@ -6448,42 +6855,57 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.argument.name": AttributeMetadata( brief="Name argument from prompts/get MCP request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="Prompt names can contain user input"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="Prompt names can contain user input" + ), is_in_otel=False, example="summarize", ), "mcp.request.argument.uri": AttributeMetadata( brief="URI argument from resources/read MCP request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain user file paths"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="URIs can contain user file paths" + ), is_in_otel=False, example="file:///path/to/resource", ), "mcp.request.id": AttributeMetadata( brief="JSON-RPC request identifier for the MCP request. Unique within the MCP session.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1", ), "mcp.resource.protocol": AttributeMetadata( brief="Protocol of the resource URI being accessed, extracted from the URI.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="file", ), "mcp.resource.uri": AttributeMetadata( brief="The resource URI being accessed in an MCP operation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain sensitive file paths"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="URIs can contain sensitive file paths" + ), is_in_otel=False, example="file:///path/to/file.txt", ), "mcp.server.name": AttributeMetadata( brief="Name of the MCP server application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sentry-mcp-server", ), @@ -6492,7 +6914,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Server titles may reveal user-specific application configurations or custom setups", + reason="Server titles may reveal user-specific application configurations or custom setups" ), is_in_otel=False, example="Sentry MCP Server", @@ -6500,65 +6922,84 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.server.version": AttributeMetadata( brief="Version of the MCP server application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="0.1.0", ), "mcp.session.id": AttributeMetadata( brief="Identifier for the MCP session.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="550e8400-e29b-41d4-a716-446655440000", ), "mcp.tool.name": AttributeMetadata( brief="Name of the MCP tool being called.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="calculator", ), "mcp.tool.result.content": AttributeMetadata( brief="The content of the tool result.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE, reason="Tool results can contain user data"), + pii=PiiInfo( + isPii=IsPii.TRUE, + reason="Tool results can contain user data" + ), is_in_otel=False, - example='{"output": "rainy", "toolCallId": "1"}', + example="{\"output\": \"rainy\", \"toolCallId\": \"1\"}", ), "mcp.tool.result.content_count": AttributeMetadata( brief="Number of content items in the tool result.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1, ), "mcp.tool.result.is_error": AttributeMetadata( brief="Whether a tool execution resulted in an error.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=False, ), "mcp.transport": AttributeMetadata( brief="Transport method used for MCP communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="stdio", ), "mdc.": AttributeMetadata( brief="Attributes from the Mapped Diagnostic Context (MDC) present at the moment the log record was created. The MDC is supported by all the most popular logging solutions in the Java ecosystem, and it's usually implemented as a thread-local map that stores context for e.g. a specific request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="mdc.some_key='some_value'", - sdks=["java", "java.logback", "java.jul", "java.log4j2"], + sdks=["java","java.logback","java.jul","java.log4j2"], ), "messaging.destination.connection": AttributeMetadata( brief="The message destination connection.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="BestTopic", sdks=["php-laravel"], @@ -6566,7 +7007,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.destination.name": AttributeMetadata( brief="The message destination name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="BestTopic", sdks=["php-laravel"], @@ -6574,7 +7017,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.body.size": AttributeMetadata( brief="The size of the message body in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=839, sdks=["php-laravel"], @@ -6582,7 +7027,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.envelope.size": AttributeMetadata( brief="The size of the message body and metadata in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1045, sdks=["php-laravel"], @@ -6590,7 +7037,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.id": AttributeMetadata( brief="A value used by the messaging system as an identifier for the message, represented as a string.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -6598,7 +7047,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.receive.latency": AttributeMetadata( brief="The latency between when the message was published and received.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732847252, sdks=["php-laravel"], @@ -6606,7 +7057,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.retry.count": AttributeMetadata( brief="The amount of attempts to send the message.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=2, sdks=["php-laravel"], @@ -6614,14 +7067,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.operation.type": AttributeMetadata( brief="A string identifying the type of the messaging operation", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="create", ), "messaging.system": AttributeMetadata( brief="The messaging system as identified by the client instrumentation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="activemq", sdks=["php-laravel"], @@ -6629,173 +7086,233 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET", - deprecation=DeprecationInfo(replacement="http.request.method"), + deprecation=DeprecationInfo( + replacement="http.request.method" + ), aliases=["http.request.method"], - sdks=["javascript-browser", "javascript-node"], + sdks=["javascript-browser","javascript-node"], ), "navigation.type": AttributeMetadata( brief="The type of navigation done by a client-side router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="router.push", ), "nel.elapsed_time": AttributeMetadata( brief="The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=100, ), "nel.phase": AttributeMetadata( - brief='If request failed, the phase of its network error. If request succeeded, "application".', + brief="If request failed, the phase of its network error. If request succeeded, \"application\".", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="application", ), "nel.referrer": AttributeMetadata( brief="request's referrer, as determined by the referrer policy associated with its client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com/foo?bar=baz", ), "nel.sampling_function": AttributeMetadata( brief="The sampling function used to determine if the request should be sampled.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, ), "nel.type": AttributeMetadata( - brief='If request failed, the type of its network error. If request succeeded, "ok".', + brief="If request failed, the type of its network error. If request succeeded, \"ok\".", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="dns.unreachable", ), "net.host.ip": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.local.address"), - aliases=["network.local.address", "net.sock.host.addr"], + deprecation=DeprecationInfo( + replacement="network.local.address" + ), + aliases=["network.local.address","net.sock.host.addr"], ), "net.host.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "http.server_name", "http.host"], + deprecation=DeprecationInfo( + replacement="server.address" + ), + aliases=["server.address","http.server_name","http.host"], ), "net.host.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1337, - deprecation=DeprecationInfo(replacement="server.port"), + deprecation=DeprecationInfo( + replacement="server.port" + ), aliases=["server.port"], ), "net.peer.ip": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.peer.address"), - aliases=["network.peer.address", "net.sock.peer.addr"], + deprecation=DeprecationInfo( + replacement="network.peer.address" + ), + aliases=["network.peer.address","net.sock.peer.addr"], ), "net.peer.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use server.address on client spans and client.address on server spans.", + reason="Deprecated, use server.address on client spans and client.address on server spans." ), ), "net.peer.port": AttributeMetadata( brief="Peer port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1337, deprecation=DeprecationInfo( replacement="server.port", - reason="Deprecated, use server.port on client spans and client.port on server spans.", + reason="Deprecated, use server.port on client spans and client.port on server spans." ), ), "net.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http", - deprecation=DeprecationInfo(replacement="network.protocol.name"), + deprecation=DeprecationInfo( + replacement="network.protocol.name" + ), aliases=["network.protocol.name"], ), "net.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo(replacement="network.protocol.version"), - aliases=["network.protocol.version", "http.flavor"], + deprecation=DeprecationInfo( + replacement="network.protocol.version" + ), + aliases=["network.protocol.version","http.flavor"], ), "net.sock.family": AttributeMetadata( brief="OSI transport and network layer", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="inet", deprecation=DeprecationInfo( replacement="network.transport", - reason="Deprecated, use network.transport and network.type.", + reason="Deprecated, use network.transport and network.type." ), ), "net.sock.host.addr": AttributeMetadata( brief="Local address of the network connection mapping to Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/var/my.sock", - deprecation=DeprecationInfo(replacement="network.local.address"), - aliases=["network.local.address", "net.host.ip"], + deprecation=DeprecationInfo( + replacement="network.local.address" + ), + aliases=["network.local.address","net.host.ip"], ), "net.sock.host.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=8080, - deprecation=DeprecationInfo(replacement="network.local.port"), + deprecation=DeprecationInfo( + replacement="network.local.port" + ), aliases=["network.local.port"], ), "net.sock.peer.addr": AttributeMetadata( brief="Peer address of the network connection - IP address", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.peer.address"), - aliases=["network.peer.address", "net.peer.ip"], + deprecation=DeprecationInfo( + replacement="network.peer.address" + ), + aliases=["network.peer.address","net.peer.ip"], ), "net.sock.peer.name": AttributeMetadata( brief="Peer address of the network connection - Unix domain socket name", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/var/my.sock", deprecation=DeprecationInfo( @@ -6805,32 +7322,44 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=8080, - deprecation=DeprecationInfo(replacement="network.peer.port"), + deprecation=DeprecationInfo( + replacement="network.peer.port" + ), ), "net.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="tcp", - deprecation=DeprecationInfo(replacement="network.transport"), + deprecation=DeprecationInfo( + replacement="network.transport" + ), aliases=["network.transport"], ), "network.local.address": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="10.1.2.80", - aliases=["net.host.ip", "net.sock.host.addr"], + aliases=["net.host.ip","net.sock.host.addr"], ), "network.local.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=65400, aliases=["net.sock.host.port"], @@ -6838,22 +7367,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.peer.address": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="10.1.2.80", - aliases=["net.peer.ip", "net.sock.peer.addr"], + aliases=["net.peer.ip","net.sock.peer.addr"], ), "network.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=65400, ), "network.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http", aliases=["net.protocol.name"], @@ -6861,15 +7396,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - aliases=["http.flavor", "net.protocol.version"], + aliases=["http.flavor","net.protocol.version"], ), "network.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="tcp", aliases=["net.transport"], @@ -6877,77 +7416,99 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.type": AttributeMetadata( brief="OSI network layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ipv4", ), "os.build_id": AttributeMetadata( brief="The build ID of the operating system.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1234567890", ), "os.description": AttributeMetadata( brief="Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Ubuntu 18.04.1 LTS", ), "os.name": AttributeMetadata( brief="Human readable operating system name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Ubuntu", ), "os.type": AttributeMetadata( brief="The operating system type.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="linux", ), "os.version": AttributeMetadata( brief="The version of the operating system.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="18.04.2", ), "otel.scope.name": AttributeMetadata( brief="The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="io.opentelemetry.contrib.mongodb", ), "otel.scope.version": AttributeMetadata( brief="The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="2.4.5", ), "otel.status_code": AttributeMetadata( brief="Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="OK", ), "otel.status_description": AttributeMetadata( brief="Description of the Status if it has a value, otherwise not set.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="resource not found", ), "params.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="params.id='123'", @@ -6956,7 +7517,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "previous_route": AttributeMetadata( brief="Also used by mobile SDKs to indicate the previous route in the application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="HomeScreen", sdks=["javascript-reactnative"], @@ -6964,72 +7527,94 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.executable.name": AttributeMetadata( brief="The name of the executable that started the process.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="getsentry", ), "process.pid": AttributeMetadata( brief="The process ID of the running process.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=12345, ), "process.runtime.description": AttributeMetadata( brief="An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Eclipse OpenJ9 VM openj9-0.21.0", ), "process.runtime.name": AttributeMetadata( brief="The name of the runtime. Equivalent to `name` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="node", ), "process.runtime.version": AttributeMetadata( brief="The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="18.04.2", ), "profile_id": AttributeMetadata( brief="The id of the sentry profile.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", - deprecation=DeprecationInfo(replacement="sentry.profile_id"), + deprecation=DeprecationInfo( + replacement="sentry.profile_id" + ), aliases=["sentry.profile_id"], ), "query.": AttributeMetadata( brief="An item in a query string. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="query.id='123'", deprecation=DeprecationInfo( replacement="url.query", - reason="Instead of sending items individually in query., they should be sent all together with url.query.", + reason="Instead of sending items individually in query., they should be sent all together with url.query." ), ), "release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="production", - deprecation=DeprecationInfo(replacement="sentry.release"), + deprecation=DeprecationInfo( + replacement="sentry.release" + ), aliases=["sentry.release"], ), "remix.action_form_data.": AttributeMetadata( brief="Remix form data, being the form data key, the value being the form data value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="http.response.header.text='test'", @@ -7038,26 +7623,35 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", - deprecation=DeprecationInfo(replacement="sentry.replay_id"), + deprecation=DeprecationInfo( + replacement="sentry.replay_id" + ), aliases=["sentry.replay_id"], ), "resource.deployment.environment.name": AttributeMetadata( brief="The software deployment environment name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example="production", deprecation=DeprecationInfo( - replacement="sentry.environment", status=DeprecationStatus.BACKFILL + replacement="sentry.environment", + status=DeprecationStatus.BACKFILL ), ), "resource.render_blocking_status": AttributeMetadata( brief="The render blocking status of the resource.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="non-blocking", sdks=["javascript-browser"], @@ -7065,147 +7659,193 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework. Also used by mobile SDKs to indicate the current route in the application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="App\\Controller::indexAction", - deprecation=DeprecationInfo(replacement="http.route"), + deprecation=DeprecationInfo( + replacement="http.route" + ), aliases=["http.route"], - sdks=["php-laravel", "javascript-reactnative"], + sdks=["php-laravel","javascript-reactnative"], ), "rpc.grpc.status_code": AttributeMetadata( brief="The numeric status code of the gRPC request.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=2, ), "rpc.service": AttributeMetadata( brief="The full (logical) name of the service being called, including its package name, if applicable.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="myService.BestService", ), "sentry.action": AttributeMetadata( brief="Used as a generic attribute representing the action depending on the type of span. For instance, this is the database query operation for DB spans, and the request method for HTTP spans.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="SELECT", ), "sentry.browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Chrome", - deprecation=DeprecationInfo(replacement="browser.name"), + deprecation=DeprecationInfo( + replacement="browser.name" + ), aliases=["browser.name"], ), "sentry.browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="120.0.6099.130", - deprecation=DeprecationInfo(replacement="browser.version"), + deprecation=DeprecationInfo( + replacement="browser.version" + ), aliases=["browser.version"], ), "sentry.cancellation_reason": AttributeMetadata( brief="The reason why a span ended early.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="document.hidden", ), "sentry.category": AttributeMetadata( brief="The high-level category of a span, derived from the span operation or span attributes. This categorizes spans by their general purpose (e.g., database, HTTP, UI). Known values include: 'ai', 'ai.pipeline', 'app', 'browser', 'cache', 'console', 'db', 'event', 'file', 'function.aws', 'function.azure', 'function.gcp', 'function.nextjs', 'function.remix', 'graphql', 'grpc', 'http', 'measure', 'middleware', 'navigation', 'pageload', 'queue', 'resource', 'rpc', 'serialize', 'subprocess', 'template', 'topic', 'ui', 'ui.angular', 'ui.ember', 'ui.react', 'ui.svelte', 'ui.vue', 'view', 'websocket'.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="db", ), "sentry.client_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in the SDK.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, ), "sentry.description": AttributeMetadata( brief="The human-readable description of a span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="index view query", ), "sentry.dist": AttributeMetadata( brief="The sentry dist.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1.0", ), "sentry.domain": AttributeMetadata( brief="Used as a generic attribute representing the domain depending on the type of span. For instance, this is the collection/table name for database spans, and the server address for HTTP spans.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="example.com", ), "sentry.dsc.environment": AttributeMetadata( brief="The environment from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="prod", ), "sentry.dsc.public_key": AttributeMetadata( brief="The public key from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="c51734c603c4430eb57cb0a5728a479d", ), "sentry.dsc.release": AttributeMetadata( brief="The release identifier from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="frontend@e8211be71b214afab5b85de4b4c54be3714952bb", ), "sentry.dsc.sample_rate": AttributeMetadata( brief="The sample rate from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1.0", ), "sentry.dsc.sampled": AttributeMetadata( brief="Whether the event was sampled according to the dynamic sampling context.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "sentry.dsc.trace_id": AttributeMetadata( brief="The trace ID from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="047372980460430cbc78d9779df33a46", ), "sentry.dsc.transaction": AttributeMetadata( brief="The transaction name from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="/issues/errors-outages/", ), "sentry.environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="production", aliases=["environment"], @@ -7213,69 +7853,89 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.exclusive_time": AttributeMetadata( brief="The exclusive time duration of the span in milliseconds.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1234, ), "sentry.graphql.operation": AttributeMetadata( brief="Indicates the type of graphql operation, emitted by the Javascript SDK.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="getUserById", ), "sentry.group": AttributeMetadata( brief="Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, ), "sentry.http.prefetch": AttributeMetadata( brief="If an http request was a prefetch request.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "sentry.idle_span_finish_reason": AttributeMetadata( brief="The reason why an idle span ended early.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="idleTimeout", ), "sentry.is_remote": AttributeMetadata( brief="Indicates whether a span's parent is remote.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "sentry.kind": AttributeMetadata( brief="Used to clarify the relationship between parents and children, or to distinguish between spans, e.g. a `server` and `client` span with the same name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="server", ), "sentry.message.parameter.": AttributeMetadata( brief="A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="sentry.message.parameter.0='123'", ), "sentry.message.template": AttributeMetadata( brief="The parameterized template string.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Hello, {name}!", ), "sentry.module.": AttributeMetadata( brief="A module that was loaded in the process. The key is the name of the module.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="sentry.module.brianium/paratest='v7.7.0'", @@ -7283,7 +7943,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.route": AttributeMetadata( brief="A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="/posts/[id]/layout", sdks=["javascript"], @@ -7291,7 +7953,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.type": AttributeMetadata( brief="A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="generateMetadata", sdks=["javascript"], @@ -7299,55 +7963,71 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.normalized_db_query": AttributeMetadata( brief="The normalized version of `db.query.text`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", ), "sentry.normalized_db_query.hash": AttributeMetadata( brief="The hash of `sentry.normalized_db_query`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, ), "sentry.normalized_description": AttributeMetadata( brief="Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", ), "sentry.observed_timestamp_nanos": AttributeMetadata( brief="The timestamp at which an envelope was received by Relay, in nanoseconds.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1544712660300000000", ), "sentry.op": AttributeMetadata( brief="The operation of a span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="http.client", ), "sentry.origin": AttributeMetadata( brief="The origin of the instrumentation (e.g. span, log, etc.)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="auto.http.otel.fastify", ), "sentry.platform": AttributeMetadata( brief="The sdk platform that generated the event.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="php", ), "sentry.profile_id": AttributeMetadata( brief="The id of the sentry profile.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["profile_id"], @@ -7355,15 +8035,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="7.0.0", - aliases=["service.version", "release"], + aliases=["service.version","release"], ), "sentry.replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["replay_id"], @@ -7371,40 +8055,45 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.replay_is_buffering": AttributeMetadata( brief="A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "sentry.sdk.integrations": AttributeMetadata( brief="A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, - example=[ - "InboundFilters", - "FunctionToString", - "BrowserApiErrors", - "Breadcrumbs", - ], + example=["InboundFilters", "FunctionToString", "BrowserApiErrors", "Breadcrumbs"], ), "sentry.sdk.name": AttributeMetadata( brief="The sentry sdk name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="@sentry/react", ), "sentry.sdk.version": AttributeMetadata( brief="The sentry sdk version.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="7.0.0", ), "sentry.segment.id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="051581bf3cb55c13", aliases=["sentry.segment_id"], @@ -7412,51 +8101,67 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment.name": AttributeMetadata( brief="The segment name of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET /user", ), "sentry.segment_id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="051581bf3cb55c13", - deprecation=DeprecationInfo(replacement="sentry.segment.id"), + deprecation=DeprecationInfo( + replacement="sentry.segment.id" + ), aliases=["sentry.segment.id"], ), "sentry.server_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in Relay.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, ), "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'`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="route", ), "sentry.status.message": AttributeMetadata( brief="The from OTLP extracted status message.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="foobar", ), "sentry.trace.parent_span_id": AttributeMetadata( brief="The span id of the span that was active when the log was collected. This should not be set if there was no active span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="b0e6f15b45c36b12", ), "sentry.transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="GET /", aliases=["transaction"], @@ -7464,15 +8169,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "server.address": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - aliases=["http.server_name", "net.host.name", "http.host"], + aliases=["http.server_name","net.host.name","http.host"], ), "server.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1337, aliases=["net.host.port"], @@ -7480,14 +8189,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "service.name": AttributeMetadata( brief="Logical name of the service.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="omegastar", ), "service.version": AttributeMetadata( brief="The version string of the service API or implementation. The format is not defined by these conventions.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="5.0.0", aliases=["sentry.release"], @@ -7495,21 +8208,27 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "thread.id": AttributeMetadata( brief="Current “managed” thread ID.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=56, ), "thread.name": AttributeMetadata( brief="Current thread name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="main", ), "timber.tag": AttributeMetadata( brief="The log tag provided by the timber logging framework.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="MyTag", sdks=["sentry.java.android"], @@ -7517,74 +8236,96 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET /", - deprecation=DeprecationInfo(replacement="sentry.transaction"), + deprecation=DeprecationInfo( + replacement="sentry.transaction" + ), aliases=["sentry.transaction"], ), "type": AttributeMetadata( brief="More granular type of the operation happening.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="fetch", - sdks=["javascript-browser", "javascript-node"], + sdks=["javascript-browser","javascript-node"], ), "ui.component_name": AttributeMetadata( brief="The name of the associated component.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="HomeButton", ), "ui.contributes_to_ttfd": AttributeMetadata( brief="Whether the span execution contributed to the TTFD (time to fully drawn) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "ui.contributes_to_ttid": AttributeMetadata( brief="Whether the span execution contributed to the TTID (time to initial display) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "url.domain": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", ), "url.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="details", ), "url.full": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - aliases=["http.url", "url"], + aliases=["http.url","url"], ), "url.path": AttributeMetadata( brief="The URI path component.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/foo", ), "url.path.parameter.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="url.path.parameter.id='123'", @@ -7593,7 +8334,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1337, ), @@ -7602,7 +8345,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." ), is_in_otel=True, example="foo=bar&bar=baz", @@ -7610,7 +8353,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https", aliases=["http.scheme"], @@ -7618,7 +8363,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.template": AttributeMetadata( brief="The low-cardinality template of an absolute path reference.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/users/:id", aliases=["http.route"], @@ -7626,94 +8373,122 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo(replacement="url.full"), - aliases=["url.full", "http.url"], - sdks=["javascript-browser", "javascript-node"], + deprecation=DeprecationInfo( + replacement="url.full" + ), + aliases=["url.full","http.url"], + sdks=["javascript-browser","javascript-node"], ), "user.email": AttributeMetadata( brief="User email address.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="test@example.com", ), "user.full_name": AttributeMetadata( brief="User's full name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="John Smith", ), "user.geo.city": AttributeMetadata( brief="Human readable city name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Toronto", ), "user.geo.country_code": AttributeMetadata( brief="Two-letter country code (ISO 3166-1 alpha-2).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="CA", ), "user.geo.region": AttributeMetadata( brief="Human readable region name or code.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Canada", ), "user.geo.subdivision": AttributeMetadata( brief="Human readable subdivision name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Ontario", ), "user.hash": AttributeMetadata( brief="Unique user hash to correlate information for a user in anonymized form.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", ), "user.id": AttributeMetadata( brief="Unique identifier of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="S-1-5-21-202424912787-2692429404-2351956786-1000", ), "user.ip_address": AttributeMetadata( brief="The IP address of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="192.168.1.1", ), "user.name": AttributeMetadata( brief="Short name or login/username of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="j.smith", ), "user.roles": AttributeMetadata( brief="Array of user roles at the time of the event.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example=["admin", "editor"], ), "user_agent.original": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", aliases=["http.user_agent"], @@ -7721,245 +8496,315 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.branch": AttributeMetadata( brief="Git branch name for Vercel project", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="main", ), "vercel.build_id": AttributeMetadata( brief="Identifier for the Vercel build (only present on build logs)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="bld_cotnkcr76", ), "vercel.deployment_id": AttributeMetadata( brief="Identifier for the Vercel deployment", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="dpl_233NRGRjVZX1caZrXWtz5g1TAksD", ), "vercel.destination": AttributeMetadata( brief="Origin of the external content in Vercel (only on external logs)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://vitals.vercel-insights.com/v1", ), "vercel.edge_type": AttributeMetadata( brief="Type of edge runtime in Vercel", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="edge-function", ), "vercel.entrypoint": AttributeMetadata( brief="Entrypoint for the request in Vercel", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="api/index.js", ), "vercel.execution_region": AttributeMetadata( brief="Region where the request is executed", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sfo1", ), "vercel.id": AttributeMetadata( brief="Unique identifier for the log entry in Vercel", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1573817187330377061717300000", ), "vercel.ja3_digest": AttributeMetadata( brief="JA3 fingerprint digest of Vercel request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0", ), "vercel.ja4_digest": AttributeMetadata( brief="JA4 fingerprint digest", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="t13d1516h2_8daaf6152771_02713d6af862", ), "vercel.log_type": AttributeMetadata( brief="Vercel log output type", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="stdout", ), "vercel.project_id": AttributeMetadata( brief="Identifier for the Vercel project", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="gdufoJxB6b9b1fEqr1jUtFkyavUU", ), "vercel.project_name": AttributeMetadata( brief="Name of the Vercel project", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="my-app", ), "vercel.proxy.cache_id": AttributeMetadata( brief="Original request ID when request is served from cache", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="pdx1::v8g4b-1744143786684-93dafbc0f70d", ), "vercel.proxy.client_ip": AttributeMetadata( brief="Client IP address", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="120.75.16.101", ), "vercel.proxy.host": AttributeMetadata( brief="Hostname of the request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="test.vercel.app", ), "vercel.proxy.lambda_region": AttributeMetadata( brief="Region where lambda function executed", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sfo1", ), "vercel.proxy.method": AttributeMetadata( brief="HTTP method of the request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="GET", ), "vercel.proxy.path": AttributeMetadata( brief="Request path with query parameters", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="/dynamic/some-value.json?route=some-value", ), "vercel.proxy.path_type": AttributeMetadata( brief="How the request was served based on its path and project configuration", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="func", ), "vercel.proxy.path_type_variant": AttributeMetadata( brief="Variant of the path type", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="api", ), "vercel.proxy.referer": AttributeMetadata( brief="Referer of the request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="*.vercel.app", ), "vercel.proxy.region": AttributeMetadata( brief="Region where the request is processed", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sfo1", ), "vercel.proxy.response_byte_size": AttributeMetadata( brief="Size of the response in bytes", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1024, ), "vercel.proxy.scheme": AttributeMetadata( brief="Protocol of the request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="https", ), "vercel.proxy.status_code": AttributeMetadata( brief="HTTP status code of the proxy request", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=200, ), "vercel.proxy.timestamp": AttributeMetadata( brief="Unix timestamp when the proxy request was made", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1573817250172, ), "vercel.proxy.user_agent": AttributeMetadata( brief="User agent strings of the request", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["Mozilla/5.0..."], ), "vercel.proxy.vercel_cache": AttributeMetadata( brief="Cache status sent to the browser", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="REVALIDATED", ), "vercel.proxy.vercel_id": AttributeMetadata( brief="Vercel-specific identifier", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="sfo1::abc123", ), "vercel.proxy.waf_action": AttributeMetadata( brief="Action taken by firewall rules", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="deny", ), "vercel.proxy.waf_rule_id": AttributeMetadata( brief="ID of the firewall rule that matched", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="rule_gAHz8jtSB1Gy", ), "vercel.request_id": AttributeMetadata( brief="Identifier of the Vercel request", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="643af4e3-975a-4cc7-9e7a-1eda11539d90", ), "vercel.source": AttributeMetadata( brief="Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="build", ), "vercel.status_code": AttributeMetadata( brief="HTTP status code of the request (-1 means no response returned and the lambda crashed)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=200, ), @@ -7970,427 +8815,429 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): If a key is not present in this dictionary, it means that attribute is not defined in the Sentry Semantic Conventions. """ -Attributes = TypedDict( - "Attributes", - { - "ai.citations": List[str], - "ai.completion_tokens.used": int, - "ai.documents": List[str], - "ai.finish_reason": str, - "ai.frequency_penalty": float, - "ai.function_call": str, - "ai.generation_id": str, - "ai.input_messages": str, - "ai.is_search_required": bool, - "ai.metadata": str, - "ai.model.provider": str, - "ai.model_id": str, - "ai.pipeline.name": str, - "ai.preamble": str, - "ai.presence_penalty": float, - "ai.prompt_tokens.used": int, - "ai.raw_prompting": bool, - "ai.response_format": str, - "ai.responses": List[str], - "ai.search_queries": List[str], - "ai.search_results": List[str], - "ai.seed": str, - "ai.streaming": bool, - "ai.tags": str, - "ai.temperature": float, - "ai.texts": List[str], - "ai.tool_calls": List[str], - "ai.tools": List[str], - "ai.top_k": int, - "ai.top_p": float, - "ai.total_cost": float, - "ai.total_tokens.used": int, - "ai.warnings": List[str], - "app_start_type": str, - "blocked_main_thread": bool, - "browser.name": str, - "browser.report.type": str, - "browser.script.invoker": str, - "browser.script.invoker_type": str, - "browser.script.source_char_position": int, - "browser.version": str, - "cache.hit": bool, - "cache.item_size": int, - "cache.key": List[str], - "cache.operation": str, - "cache.ttl": int, - "channel": str, - "client.address": str, - "client.port": int, - "cloudflare.d1.duration": int, - "cloudflare.d1.rows_read": int, - "cloudflare.d1.rows_written": int, - "code.file.path": str, - "code.filepath": str, - "code.function": str, - "code.function.name": str, - "code.line.number": int, - "code.lineno": int, - "code.namespace": str, - "db.collection.name": str, - "db.name": str, - "db.namespace": str, - "db.operation": str, - "db.operation.name": str, - "db.query.parameter.": str, - "db.query.summary": str, - "db.query.text": str, - "db.redis.connection": str, - "db.redis.parameters": List[str], - "db.sql.bindings": List[str], - "db.statement": str, - "db.system": str, - "db.system.name": str, - "db.user": str, - "device.brand": str, - "device.family": str, - "device.model": str, - "environment": str, - "error.type": str, - "event.id": int, - "event.name": str, - "exception.escaped": bool, - "exception.message": str, - "exception.stacktrace": str, - "exception.type": str, - "faas.coldstart": bool, - "faas.cron": str, - "faas.time": str, - "faas.trigger": str, - "flag.evaluation.": bool, - "frames.delay": int, - "frames.frozen": int, - "frames.slow": int, - "frames.total": int, - "fs_error": str, - "gen_ai.agent.name": str, - "gen_ai.assistant.message": str, - "gen_ai.choice": str, - "gen_ai.cost.input_tokens": float, - "gen_ai.cost.output_tokens": float, - "gen_ai.cost.total_tokens": float, - "gen_ai.embeddings.input": str, - "gen_ai.operation.name": str, - "gen_ai.operation.type": str, - "gen_ai.pipeline.name": str, - "gen_ai.prompt": str, - "gen_ai.request.available_tools": str, - "gen_ai.request.frequency_penalty": float, - "gen_ai.request.max_tokens": int, - "gen_ai.request.messages": str, - "gen_ai.request.model": str, - "gen_ai.request.presence_penalty": float, - "gen_ai.request.seed": str, - "gen_ai.request.temperature": float, - "gen_ai.request.top_k": int, - "gen_ai.request.top_p": float, - "gen_ai.response.finish_reasons": str, - "gen_ai.response.id": str, - "gen_ai.response.model": str, - "gen_ai.response.streaming": bool, - "gen_ai.response.text": str, - "gen_ai.response.tokens_per_second": float, - "gen_ai.response.tool_calls": str, - "gen_ai.system": str, - "gen_ai.system.message": str, - "gen_ai.tool.description": str, - "gen_ai.tool.input": str, - "gen_ai.tool.message": str, - "gen_ai.tool.name": str, - "gen_ai.tool.output": str, - "gen_ai.tool.type": str, - "gen_ai.usage.completion_tokens": int, - "gen_ai.usage.input_tokens": int, - "gen_ai.usage.input_tokens.cache_write": int, - "gen_ai.usage.input_tokens.cached": int, - "gen_ai.usage.output_tokens": int, - "gen_ai.usage.output_tokens.reasoning": int, - "gen_ai.usage.prompt_tokens": int, - "gen_ai.usage.total_tokens": int, - "gen_ai.user.message": str, - "graphql.operation.name": str, - "graphql.operation.type": str, - "http.client_ip": str, - "http.decoded_response_content_length": int, - "http.flavor": str, - "http.fragment": str, - "http.host": str, - "http.method": str, - "http.query": str, - "http.request.connect_start": float, - "http.request.connection_end": float, - "http.request.domain_lookup_end": float, - "http.request.domain_lookup_start": float, - "http.request.fetch_start": float, - "http.request.header.": List[str], - "http.request.method": str, - "http.request.redirect_end": float, - "http.request.redirect_start": float, - "http.request.request_start": float, - "http.request.resend_count": int, - "http.request.response_end": float, - "http.request.response_start": float, - "http.request.secure_connection_start": float, - "http.request.time_to_first_byte": float, - "http.request.worker_start": float, - "http.response.body.size": int, - "http.response.header.": List[str], - "http.response.header.content-length": str, - "http.response.size": int, - "http.response.status_code": int, - "http.response_content_length": int, - "http.response_transfer_size": int, - "http.route": str, - "http.scheme": str, - "http.server_name": str, - "http.status_code": int, - "http.target": str, - "http.url": str, - "http.user_agent": str, - "id": str, - "jvm.gc.action": str, - "jvm.gc.name": str, - "jvm.memory.pool.name": str, - "jvm.memory.type": str, - "jvm.thread.daemon": bool, - "jvm.thread.state": str, - "lcp.element": str, - "lcp.id": str, - "lcp.size": int, - "lcp.url": str, - "logger.name": str, - "mcp.cancelled.reason": str, - "mcp.cancelled.request_id": str, - "mcp.client.name": str, - "mcp.client.title": str, - "mcp.client.version": str, - "mcp.lifecycle.phase": str, - "mcp.logging.data_type": str, - "mcp.logging.level": str, - "mcp.logging.logger": str, - "mcp.logging.message": str, - "mcp.method.name": str, - "mcp.progress.current": int, - "mcp.progress.message": str, - "mcp.progress.percentage": float, - "mcp.progress.token": str, - "mcp.progress.total": int, - "mcp.prompt.name": str, - "mcp.prompt.result.description": str, - "mcp.prompt.result.message_content": str, - "mcp.prompt.result.message_count": int, - "mcp.prompt.result.message_role": str, - "mcp.protocol.ready": int, - "mcp.protocol.version": str, - "mcp.request.argument.": str, - "mcp.request.argument.name": str, - "mcp.request.argument.uri": str, - "mcp.request.id": str, - "mcp.resource.protocol": str, - "mcp.resource.uri": str, - "mcp.server.name": str, - "mcp.server.title": str, - "mcp.server.version": str, - "mcp.session.id": str, - "mcp.tool.name": str, - "mcp.tool.result.content": str, - "mcp.tool.result.content_count": int, - "mcp.tool.result.is_error": bool, - "mcp.transport": str, - "mdc.": str, - "messaging.destination.connection": str, - "messaging.destination.name": str, - "messaging.message.body.size": int, - "messaging.message.envelope.size": int, - "messaging.message.id": str, - "messaging.message.receive.latency": int, - "messaging.message.retry.count": int, - "messaging.operation.type": str, - "messaging.system": str, - "method": str, - "navigation.type": str, - "nel.elapsed_time": int, - "nel.phase": str, - "nel.referrer": str, - "nel.sampling_function": float, - "nel.type": str, - "net.host.ip": str, - "net.host.name": str, - "net.host.port": int, - "net.peer.ip": str, - "net.peer.name": str, - "net.peer.port": int, - "net.protocol.name": str, - "net.protocol.version": str, - "net.sock.family": str, - "net.sock.host.addr": str, - "net.sock.host.port": int, - "net.sock.peer.addr": str, - "net.sock.peer.name": str, - "net.sock.peer.port": int, - "net.transport": str, - "network.local.address": str, - "network.local.port": int, - "network.peer.address": str, - "network.peer.port": int, - "network.protocol.name": str, - "network.protocol.version": str, - "network.transport": str, - "network.type": str, - "os.build_id": str, - "os.description": str, - "os.name": str, - "os.type": str, - "os.version": str, - "otel.scope.name": str, - "otel.scope.version": str, - "otel.status_code": str, - "otel.status_description": str, - "params.": str, - "previous_route": str, - "process.executable.name": str, - "process.pid": int, - "process.runtime.description": str, - "process.runtime.name": str, - "process.runtime.version": str, - "profile_id": str, - "query.": str, - "release": str, - "remix.action_form_data.": str, - "replay_id": str, - "resource.deployment.environment.name": str, - "resource.render_blocking_status": str, - "route": str, - "rpc.grpc.status_code": int, - "rpc.service": str, - "sentry.action": str, - "sentry.browser.name": str, - "sentry.browser.version": str, - "sentry.cancellation_reason": str, - "sentry.category": str, - "sentry.client_sample_rate": float, - "sentry.description": str, - "sentry.dist": str, - "sentry.domain": str, - "sentry.dsc.environment": str, - "sentry.dsc.public_key": str, - "sentry.dsc.release": str, - "sentry.dsc.sample_rate": str, - "sentry.dsc.sampled": bool, - "sentry.dsc.trace_id": str, - "sentry.dsc.transaction": str, - "sentry.environment": str, - "sentry.exclusive_time": float, - "sentry.graphql.operation": str, - "sentry.group": str, - "sentry.http.prefetch": bool, - "sentry.idle_span_finish_reason": str, - "sentry.is_remote": bool, - "sentry.kind": str, - "sentry.message.parameter.": str, - "sentry.message.template": str, - "sentry.module.": str, - "sentry.nextjs.ssr.function.route": str, - "sentry.nextjs.ssr.function.type": str, - "sentry.normalized_db_query": str, - "sentry.normalized_db_query.hash": str, - "sentry.normalized_description": str, - "sentry.observed_timestamp_nanos": str, - "sentry.op": str, - "sentry.origin": str, - "sentry.platform": str, - "sentry.profile_id": str, - "sentry.release": str, - "sentry.replay_id": str, - "sentry.replay_is_buffering": bool, - "sentry.sdk.integrations": List[str], - "sentry.sdk.name": str, - "sentry.sdk.version": str, - "sentry.segment.id": str, - "sentry.segment.name": str, - "sentry.segment_id": str, - "sentry.server_sample_rate": float, - "sentry.span.source": str, - "sentry.status.message": str, - "sentry.trace.parent_span_id": str, - "sentry.transaction": str, - "server.address": str, - "server.port": int, - "service.name": str, - "service.version": str, - "thread.id": int, - "thread.name": str, - "timber.tag": str, - "transaction": str, - "type": str, - "ui.component_name": str, - "ui.contributes_to_ttfd": bool, - "ui.contributes_to_ttid": bool, - "url.domain": str, - "url.fragment": str, - "url.full": str, - "url.path": str, - "url.path.parameter.": str, - "url.port": int, - "url.query": str, - "url.scheme": str, - "url.template": str, - "url": str, - "user.email": str, - "user.full_name": str, - "user.geo.city": str, - "user.geo.country_code": str, - "user.geo.region": str, - "user.geo.subdivision": str, - "user.hash": str, - "user.id": str, - "user.ip_address": str, - "user.name": str, - "user.roles": List[str], - "user_agent.original": str, - "vercel.branch": str, - "vercel.build_id": str, - "vercel.deployment_id": str, - "vercel.destination": str, - "vercel.edge_type": str, - "vercel.entrypoint": str, - "vercel.execution_region": str, - "vercel.id": str, - "vercel.ja3_digest": str, - "vercel.ja4_digest": str, - "vercel.log_type": str, - "vercel.project_id": str, - "vercel.project_name": str, - "vercel.proxy.cache_id": str, - "vercel.proxy.client_ip": str, - "vercel.proxy.host": str, - "vercel.proxy.lambda_region": str, - "vercel.proxy.method": str, - "vercel.proxy.path": str, - "vercel.proxy.path_type": str, - "vercel.proxy.path_type_variant": str, - "vercel.proxy.referer": str, - "vercel.proxy.region": str, - "vercel.proxy.response_byte_size": int, - "vercel.proxy.scheme": str, - "vercel.proxy.status_code": int, - "vercel.proxy.timestamp": int, - "vercel.proxy.user_agent": List[str], - "vercel.proxy.vercel_cache": str, - "vercel.proxy.vercel_id": str, - "vercel.proxy.waf_action": str, - "vercel.proxy.waf_rule_id": str, - "vercel.request_id": str, - "vercel.source": str, - "vercel.status_code": int, - }, - total=False, -) +Attributes = TypedDict("Attributes", { + "ai.citations": List[str], + "ai.completion_tokens.used": int, + "ai.documents": List[str], + "ai.finish_reason": str, + "ai.frequency_penalty": float, + "ai.function_call": str, + "ai.generation_id": str, + "ai.input_messages": str, + "ai.is_search_required": bool, + "ai.metadata": str, + "ai.model.provider": str, + "ai.model_id": str, + "ai.pipeline.name": str, + "ai.preamble": str, + "ai.presence_penalty": float, + "ai.prompt_tokens.used": int, + "ai.raw_prompting": bool, + "ai.response_format": str, + "ai.responses": List[str], + "ai.search_queries": List[str], + "ai.search_results": List[str], + "ai.seed": str, + "ai.streaming": bool, + "ai.tags": str, + "ai.temperature": float, + "ai.texts": List[str], + "ai.tool_calls": List[str], + "ai.tools": List[str], + "ai.top_k": int, + "ai.top_p": float, + "ai.total_cost": float, + "ai.total_tokens.used": int, + "ai.warnings": List[str], + "app_start_type": str, + "blocked_main_thread": bool, + "browser.name": str, + "browser.report.type": str, + "browser.script.invoker": str, + "browser.script.invoker_type": str, + "browser.script.source_char_position": int, + "browser.version": str, + "cache.hit": bool, + "cache.item_size": int, + "cache.key": List[str], + "cache.operation": str, + "cache.ttl": int, + "channel": str, + "client.address": str, + "client.port": int, + "cloudflare.d1.duration": int, + "cloudflare.d1.rows_read": int, + "cloudflare.d1.rows_written": int, + "code.file.path": str, + "code.filepath": str, + "code.function": str, + "code.function.name": str, + "code.line.number": int, + "code.lineno": int, + "code.namespace": str, + "db.collection.name": str, + "db.name": str, + "db.namespace": str, + "db.operation": str, + "db.operation.name": str, + "db.query.parameter.": str, + "db.query.summary": str, + "db.query.text": str, + "db.redis.connection": str, + "db.redis.parameters": List[str], + "db.sql.bindings": List[str], + "db.statement": str, + "db.system": str, + "db.system.name": str, + "db.user": str, + "device.brand": str, + "device.family": str, + "device.model": str, + "environment": str, + "error.type": str, + "event.id": int, + "event.name": str, + "exception.escaped": bool, + "exception.message": str, + "exception.stacktrace": str, + "exception.type": str, + "faas.coldstart": bool, + "faas.cron": str, + "faas.time": str, + "faas.trigger": str, + "flag.evaluation.": bool, + "frames.delay": int, + "frames.frozen": int, + "frames.slow": int, + "frames.total": int, + "fs_error": str, + "gen_ai.agent.name": str, + "gen_ai.assistant.message": str, + "gen_ai.choice": str, + "gen_ai.cost.input_tokens": float, + "gen_ai.cost.output_tokens": float, + "gen_ai.cost.total_tokens": float, + "gen_ai.embeddings.input": str, + "gen_ai.input.messages": str, + "gen_ai.operation.name": str, + "gen_ai.operation.type": str, + "gen_ai.output.messages": str, + "gen_ai.pipeline.name": str, + "gen_ai.prompt": str, + "gen_ai.request.available_tools": str, + "gen_ai.request.frequency_penalty": float, + "gen_ai.request.max_tokens": int, + "gen_ai.request.messages": str, + "gen_ai.request.model": str, + "gen_ai.request.presence_penalty": float, + "gen_ai.request.seed": str, + "gen_ai.request.temperature": float, + "gen_ai.request.top_k": int, + "gen_ai.request.top_p": float, + "gen_ai.response.finish_reasons": str, + "gen_ai.response.id": str, + "gen_ai.response.model": str, + "gen_ai.response.streaming": bool, + "gen_ai.response.text": str, + "gen_ai.response.tokens_per_second": float, + "gen_ai.response.tool_calls": str, + "gen_ai.system": str, + "gen_ai.system.message": str, + "gen_ai.system_instructions": str, + "gen_ai.tool.call.arguments": str, + "gen_ai.tool.call.result": str, + "gen_ai.tool.definitions": str, + "gen_ai.tool.description": str, + "gen_ai.tool.input": str, + "gen_ai.tool.message": str, + "gen_ai.tool.name": str, + "gen_ai.tool.output": str, + "gen_ai.tool.type": str, + "gen_ai.usage.completion_tokens": int, + "gen_ai.usage.input_tokens": int, + "gen_ai.usage.input_tokens.cache_write": int, + "gen_ai.usage.input_tokens.cached": int, + "gen_ai.usage.output_tokens": int, + "gen_ai.usage.output_tokens.reasoning": int, + "gen_ai.usage.prompt_tokens": int, + "gen_ai.usage.total_tokens": int, + "gen_ai.user.message": str, + "graphql.operation.name": str, + "graphql.operation.type": str, + "http.client_ip": str, + "http.decoded_response_content_length": int, + "http.flavor": str, + "http.fragment": str, + "http.host": str, + "http.method": str, + "http.query": str, + "http.request.connect_start": float, + "http.request.connection_end": float, + "http.request.domain_lookup_end": float, + "http.request.domain_lookup_start": float, + "http.request.fetch_start": float, + "http.request.header.": List[str], + "http.request.method": str, + "http.request.redirect_end": float, + "http.request.redirect_start": float, + "http.request.request_start": float, + "http.request.resend_count": int, + "http.request.response_end": float, + "http.request.response_start": float, + "http.request.secure_connection_start": float, + "http.request.time_to_first_byte": float, + "http.request.worker_start": float, + "http.response.body.size": int, + "http.response.header.": List[str], + "http.response.header.content-length": str, + "http.response.size": int, + "http.response.status_code": int, + "http.response_content_length": int, + "http.response_transfer_size": int, + "http.route": str, + "http.scheme": str, + "http.server_name": str, + "http.status_code": int, + "http.target": str, + "http.url": str, + "http.user_agent": str, + "id": str, + "jvm.gc.action": str, + "jvm.gc.name": str, + "jvm.memory.pool.name": str, + "jvm.memory.type": str, + "jvm.thread.daemon": bool, + "jvm.thread.state": str, + "lcp.element": str, + "lcp.id": str, + "lcp.size": int, + "lcp.url": str, + "logger.name": str, + "mcp.cancelled.reason": str, + "mcp.cancelled.request_id": str, + "mcp.client.name": str, + "mcp.client.title": str, + "mcp.client.version": str, + "mcp.lifecycle.phase": str, + "mcp.logging.data_type": str, + "mcp.logging.level": str, + "mcp.logging.logger": str, + "mcp.logging.message": str, + "mcp.method.name": str, + "mcp.progress.current": int, + "mcp.progress.message": str, + "mcp.progress.percentage": float, + "mcp.progress.token": str, + "mcp.progress.total": int, + "mcp.prompt.name": str, + "mcp.prompt.result.description": str, + "mcp.prompt.result.message_content": str, + "mcp.prompt.result.message_count": int, + "mcp.prompt.result.message_role": str, + "mcp.protocol.ready": int, + "mcp.protocol.version": str, + "mcp.request.argument.": str, + "mcp.request.argument.name": str, + "mcp.request.argument.uri": str, + "mcp.request.id": str, + "mcp.resource.protocol": str, + "mcp.resource.uri": str, + "mcp.server.name": str, + "mcp.server.title": str, + "mcp.server.version": str, + "mcp.session.id": str, + "mcp.tool.name": str, + "mcp.tool.result.content": str, + "mcp.tool.result.content_count": int, + "mcp.tool.result.is_error": bool, + "mcp.transport": str, + "mdc.": str, + "messaging.destination.connection": str, + "messaging.destination.name": str, + "messaging.message.body.size": int, + "messaging.message.envelope.size": int, + "messaging.message.id": str, + "messaging.message.receive.latency": int, + "messaging.message.retry.count": int, + "messaging.operation.type": str, + "messaging.system": str, + "method": str, + "navigation.type": str, + "nel.elapsed_time": int, + "nel.phase": str, + "nel.referrer": str, + "nel.sampling_function": float, + "nel.type": str, + "net.host.ip": str, + "net.host.name": str, + "net.host.port": int, + "net.peer.ip": str, + "net.peer.name": str, + "net.peer.port": int, + "net.protocol.name": str, + "net.protocol.version": str, + "net.sock.family": str, + "net.sock.host.addr": str, + "net.sock.host.port": int, + "net.sock.peer.addr": str, + "net.sock.peer.name": str, + "net.sock.peer.port": int, + "net.transport": str, + "network.local.address": str, + "network.local.port": int, + "network.peer.address": str, + "network.peer.port": int, + "network.protocol.name": str, + "network.protocol.version": str, + "network.transport": str, + "network.type": str, + "os.build_id": str, + "os.description": str, + "os.name": str, + "os.type": str, + "os.version": str, + "otel.scope.name": str, + "otel.scope.version": str, + "otel.status_code": str, + "otel.status_description": str, + "params.": str, + "previous_route": str, + "process.executable.name": str, + "process.pid": int, + "process.runtime.description": str, + "process.runtime.name": str, + "process.runtime.version": str, + "profile_id": str, + "query.": str, + "release": str, + "remix.action_form_data.": str, + "replay_id": str, + "resource.deployment.environment.name": str, + "resource.render_blocking_status": str, + "route": str, + "rpc.grpc.status_code": int, + "rpc.service": str, + "sentry.action": str, + "sentry.browser.name": str, + "sentry.browser.version": str, + "sentry.cancellation_reason": str, + "sentry.category": str, + "sentry.client_sample_rate": float, + "sentry.description": str, + "sentry.dist": str, + "sentry.domain": str, + "sentry.dsc.environment": str, + "sentry.dsc.public_key": str, + "sentry.dsc.release": str, + "sentry.dsc.sample_rate": str, + "sentry.dsc.sampled": bool, + "sentry.dsc.trace_id": str, + "sentry.dsc.transaction": str, + "sentry.environment": str, + "sentry.exclusive_time": float, + "sentry.graphql.operation": str, + "sentry.group": str, + "sentry.http.prefetch": bool, + "sentry.idle_span_finish_reason": str, + "sentry.is_remote": bool, + "sentry.kind": str, + "sentry.message.parameter.": str, + "sentry.message.template": str, + "sentry.module.": str, + "sentry.nextjs.ssr.function.route": str, + "sentry.nextjs.ssr.function.type": str, + "sentry.normalized_db_query": str, + "sentry.normalized_db_query.hash": str, + "sentry.normalized_description": str, + "sentry.observed_timestamp_nanos": str, + "sentry.op": str, + "sentry.origin": str, + "sentry.platform": str, + "sentry.profile_id": str, + "sentry.release": str, + "sentry.replay_id": str, + "sentry.replay_is_buffering": bool, + "sentry.sdk.integrations": List[str], + "sentry.sdk.name": str, + "sentry.sdk.version": str, + "sentry.segment.id": str, + "sentry.segment.name": str, + "sentry.segment_id": str, + "sentry.server_sample_rate": float, + "sentry.span.source": str, + "sentry.status.message": str, + "sentry.trace.parent_span_id": str, + "sentry.transaction": str, + "server.address": str, + "server.port": int, + "service.name": str, + "service.version": str, + "thread.id": int, + "thread.name": str, + "timber.tag": str, + "transaction": str, + "type": str, + "ui.component_name": str, + "ui.contributes_to_ttfd": bool, + "ui.contributes_to_ttid": bool, + "url.domain": str, + "url.fragment": str, + "url.full": str, + "url.path": str, + "url.path.parameter.": str, + "url.port": int, + "url.query": str, + "url.scheme": str, + "url.template": str, + "url": str, + "user.email": str, + "user.full_name": str, + "user.geo.city": str, + "user.geo.country_code": str, + "user.geo.region": str, + "user.geo.subdivision": str, + "user.hash": str, + "user.id": str, + "user.ip_address": str, + "user.name": str, + "user.roles": List[str], + "user_agent.original": str, + "vercel.branch": str, + "vercel.build_id": str, + "vercel.deployment_id": str, + "vercel.destination": str, + "vercel.edge_type": str, + "vercel.entrypoint": str, + "vercel.execution_region": str, + "vercel.id": str, + "vercel.ja3_digest": str, + "vercel.ja4_digest": str, + "vercel.log_type": str, + "vercel.project_id": str, + "vercel.project_name": str, + "vercel.proxy.cache_id": str, + "vercel.proxy.client_ip": str, + "vercel.proxy.host": str, + "vercel.proxy.lambda_region": str, + "vercel.proxy.method": str, + "vercel.proxy.path": str, + "vercel.proxy.path_type": str, + "vercel.proxy.path_type_variant": str, + "vercel.proxy.referer": str, + "vercel.proxy.region": str, + "vercel.proxy.response_byte_size": int, + "vercel.proxy.scheme": str, + "vercel.proxy.status_code": int, + "vercel.proxy.timestamp": int, + "vercel.proxy.user_agent": List[str], + "vercel.proxy.vercel_cache": str, + "vercel.proxy.vercel_id": str, + "vercel.proxy.waf_action": str, + "vercel.proxy.waf_rule_id": str, + "vercel.request_id": str, + "vercel.source": str, + "vercel.status_code": int, +}, total=False) """TypedDict representing a collection of attributes, including deprecated and non-deprecated ones.""" __all__ = [ @@ -8398,3 +9245,4 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "Attributes", "ATTRIBUTE_NAMES", ] + diff --git a/shared/deprecated_attributes.json b/shared/deprecated_attributes.json index e0bd97d9..14475f02 100644 --- a/shared/deprecated_attributes.json +++ b/shared/deprecated_attributes.json @@ -594,6 +594,80 @@ "reason": "Deprecated from OTEL, use gen_ai.input.messages with the new format instead." } }, + { + "key": "gen_ai.request.available_tools", + "brief": "The available tools for the model. It has to be a stringified version of an array of objects.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]", + "alias": [], + "deprecation": { + "_status": null, + "replacement": "gen_ai.tool.definitions" + } + }, + { + "key": "gen_ai.request.messages", + "brief": "The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]", + "alias": ["ai.input_messages"], + "deprecation": { + "_status": null, + "replacement": "gen_ai.input.messages" + } + }, + { + "key": "gen_ai.response.text", + "brief": "The model's response text messages. It has to be a stringified version of an array of response text messages.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "[\"The weather in Paris is rainy and overcast, with temperatures around 57°F\", \"The weather in London is sunny and warm, with temperatures around 65°F\"]", + "alias": [], + "deprecation": { + "_status": null, + "replacement": "gen_ai.output.messages" + } + }, + { + "key": "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.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", + "alias": [], + "deprecation": { + "_status": null, + "replacement": "gen_ai.output.messages" + } + }, + { + "key": "gen_ai.system.message", + "brief": "The system instructions passed to the model.", + "type": "string", + "pii": { + "key": "true" + }, + "is_in_otel": false, + "example": "You are a helpful assistant", + "deprecation": { + "_status": null, + "replacement": "gen_ai.system_instructions" + } + }, { "key": "gen_ai.usage.completion_tokens", "brief": "The number of tokens used in the GenAI response (completion).", From 45d6085c32d89622277e769340130a2231d321d7 Mon Sep 17 00:00:00 2001 From: Ogi <86684834+obostjancic@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:24:31 +0100 Subject: [PATCH 2/7] test fix --- model/attributes/gen_ai/gen_ai__input__messages.json | 1 - model/attributes/gen_ai/gen_ai__output__messages.json | 1 - model/attributes/gen_ai/gen_ai__system_instructions.json | 1 - model/attributes/gen_ai/gen_ai__tool__call__arguments.json | 1 - model/attributes/gen_ai/gen_ai__tool__call__result.json | 1 - model/attributes/gen_ai/gen_ai__tool__definitions.json | 1 - 6 files changed, 6 deletions(-) diff --git a/model/attributes/gen_ai/gen_ai__input__messages.json b/model/attributes/gen_ai/gen_ai__input__messages.json index f834ec8e..4598c422 100644 --- a/model/attributes/gen_ai/gen_ai__input__messages.json +++ b/model/attributes/gen_ai/gen_ai__input__messages.json @@ -2,7 +2,6 @@ "key": "gen_ai.input.messages", "brief": "The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", "type": "string", - "format": "", "pii": { "key": "maybe" }, diff --git a/model/attributes/gen_ai/gen_ai__output__messages.json b/model/attributes/gen_ai/gen_ai__output__messages.json index f2b0dec5..e9de4e44 100644 --- a/model/attributes/gen_ai/gen_ai__output__messages.json +++ b/model/attributes/gen_ai/gen_ai__output__messages.json @@ -2,7 +2,6 @@ "key": "gen_ai.output.messages", "brief": "The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", "type": "string", - "format": "", "pii": { "key": "maybe" }, diff --git a/model/attributes/gen_ai/gen_ai__system_instructions.json b/model/attributes/gen_ai/gen_ai__system_instructions.json index bdd6453d..67351663 100644 --- a/model/attributes/gen_ai/gen_ai__system_instructions.json +++ b/model/attributes/gen_ai/gen_ai__system_instructions.json @@ -2,7 +2,6 @@ "key": "gen_ai.system_instructions", "brief": "The system instructions passed to the model.", "type": "string", - "format": "", "pii": { "key": "maybe" }, diff --git a/model/attributes/gen_ai/gen_ai__tool__call__arguments.json b/model/attributes/gen_ai/gen_ai__tool__call__arguments.json index 065338b5..6e3939cc 100644 --- a/model/attributes/gen_ai/gen_ai__tool__call__arguments.json +++ b/model/attributes/gen_ai/gen_ai__tool__call__arguments.json @@ -2,7 +2,6 @@ "key": "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.", "type": "string", - "format": "", "pii": { "key": "maybe" }, diff --git a/model/attributes/gen_ai/gen_ai__tool__call__result.json b/model/attributes/gen_ai/gen_ai__tool__call__result.json index fe133cb3..0cd57109 100644 --- a/model/attributes/gen_ai/gen_ai__tool__call__result.json +++ b/model/attributes/gen_ai/gen_ai__tool__call__result.json @@ -2,7 +2,6 @@ "key": "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.", "type": "string", - "format": "", "pii": { "key": "maybe" }, diff --git a/model/attributes/gen_ai/gen_ai__tool__definitions.json b/model/attributes/gen_ai/gen_ai__tool__definitions.json index e8e9422f..5772ee55 100644 --- a/model/attributes/gen_ai/gen_ai__tool__definitions.json +++ b/model/attributes/gen_ai/gen_ai__tool__definitions.json @@ -2,7 +2,6 @@ "key": "gen_ai.tool.definitions", "brief": "The list of source system tool definitions available to the GenAI agent or model.", "type": "string", - "format": "", "pii": { "key": "maybe" }, From 57c30a8fe59c1ca138724c7b8c06f2bcfcee657c Mon Sep 17 00:00:00 2001 From: Ogi <86684834+obostjancic@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:24:51 +0100 Subject: [PATCH 3/7] reformat --- .../sentry-conventions/src/attributes.ts | 3066 ++++++++------- python/src/sentry_conventions/attributes.py | 3387 +++++++---------- 2 files changed, 3120 insertions(+), 3333 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 4a98056c..a8d14e02 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -8740,8 +8740,7 @@ export const VERCEL_STATUS_CODE = 'vercel.status_code'; */ export type VERCEL_STATUS_CODE_TYPE = number; - -export type AttributeType = +export type AttributeType = | 'string' | 'boolean' | 'integer' @@ -8751,10 +8750,7 @@ export type AttributeType = | 'integer[]' | 'double[]'; -export type IsPii = - | 'true' - | 'false' - | 'maybe'; +export type IsPii = 'true' | 'false' | 'maybe'; export interface PiiInfo { /** Whether the attribute contains PII */ @@ -9215,608 +9211,1039 @@ export const ATTRIBUTE_TYPE: Record = { [VERCEL_STATUS_CODE]: 'integer', }; -export type AttributeName = typeof AI_CITATIONS | typeof AI_COMPLETION_TOKENS_USED | typeof AI_DOCUMENTS | typeof AI_FINISH_REASON | typeof AI_FREQUENCY_PENALTY | typeof AI_FUNCTION_CALL | typeof AI_GENERATION_ID | typeof AI_INPUT_MESSAGES | typeof AI_IS_SEARCH_REQUIRED | typeof AI_METADATA | typeof AI_MODEL_ID | typeof AI_MODEL_PROVIDER | typeof AI_PIPELINE_NAME | typeof AI_PREAMBLE | typeof AI_PRESENCE_PENALTY | typeof AI_PROMPT_TOKENS_USED | typeof AI_RAW_PROMPTING | typeof AI_RESPONSES | typeof AI_RESPONSE_FORMAT | typeof AI_SEARCH_QUERIES | typeof AI_SEARCH_RESULTS | typeof AI_SEED | typeof AI_STREAMING | typeof AI_TAGS | typeof AI_TEMPERATURE | typeof AI_TEXTS | typeof AI_TOOLS | typeof AI_TOOL_CALLS | typeof AI_TOP_K | typeof AI_TOP_P | typeof AI_TOTAL_COST | typeof AI_TOTAL_TOKENS_USED | typeof AI_WARNINGS | typeof APP_START_TYPE | typeof BLOCKED_MAIN_THREAD | typeof BROWSER_NAME | typeof BROWSER_REPORT_TYPE | typeof BROWSER_SCRIPT_INVOKER | typeof BROWSER_SCRIPT_INVOKER_TYPE | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION | typeof BROWSER_VERSION | typeof CACHE_HIT | typeof CACHE_ITEM_SIZE | typeof CACHE_KEY | typeof CACHE_OPERATION | typeof CACHE_TTL | typeof CHANNEL | typeof CLIENT_ADDRESS | typeof CLIENT_PORT | typeof CLOUDFLARE_D1_DURATION | typeof CLOUDFLARE_D1_ROWS_READ | typeof CLOUDFLARE_D1_ROWS_WRITTEN | typeof CODE_FILEPATH | typeof CODE_FILE_PATH | typeof CODE_FUNCTION | typeof CODE_FUNCTION_NAME | typeof CODE_LINENO | typeof CODE_LINE_NUMBER | typeof CODE_NAMESPACE | typeof DB_COLLECTION_NAME | typeof DB_NAME | typeof DB_NAMESPACE | typeof DB_OPERATION | typeof DB_OPERATION_NAME | typeof DB_QUERY_PARAMETER_KEY | typeof DB_QUERY_SUMMARY | typeof DB_QUERY_TEXT | typeof DB_REDIS_CONNECTION | typeof DB_REDIS_PARAMETERS | typeof DB_SQL_BINDINGS | typeof DB_STATEMENT | typeof DB_SYSTEM | typeof DB_SYSTEM_NAME | typeof DB_USER | typeof DEVICE_BRAND | typeof DEVICE_FAMILY | typeof DEVICE_MODEL | typeof ENVIRONMENT | typeof ERROR_TYPE | typeof EVENT_ID | typeof EVENT_NAME | typeof EXCEPTION_ESCAPED | typeof EXCEPTION_MESSAGE | typeof EXCEPTION_STACKTRACE | typeof EXCEPTION_TYPE | typeof FAAS_COLDSTART | typeof FAAS_CRON | typeof FAAS_TIME | typeof FAAS_TRIGGER | typeof FLAG_EVALUATION_KEY | typeof FRAMES_DELAY | typeof FRAMES_FROZEN | typeof FRAMES_SLOW | typeof FRAMES_TOTAL | typeof FS_ERROR | typeof GEN_AI_AGENT_NAME | typeof GEN_AI_ASSISTANT_MESSAGE | typeof GEN_AI_CHOICE | typeof GEN_AI_COST_INPUT_TOKENS | typeof GEN_AI_COST_OUTPUT_TOKENS | typeof GEN_AI_COST_TOTAL_TOKENS | typeof GEN_AI_EMBEDDINGS_INPUT | typeof GEN_AI_INPUT_MESSAGES | typeof GEN_AI_OPERATION_NAME | typeof GEN_AI_OPERATION_TYPE | typeof GEN_AI_OUTPUT_MESSAGES | typeof GEN_AI_PIPELINE_NAME | typeof GEN_AI_PROMPT | typeof GEN_AI_REQUEST_AVAILABLE_TOOLS | typeof GEN_AI_REQUEST_FREQUENCY_PENALTY | typeof GEN_AI_REQUEST_MAX_TOKENS | typeof GEN_AI_REQUEST_MESSAGES | typeof GEN_AI_REQUEST_MODEL | typeof GEN_AI_REQUEST_PRESENCE_PENALTY | typeof GEN_AI_REQUEST_SEED | typeof GEN_AI_REQUEST_TEMPERATURE | typeof GEN_AI_REQUEST_TOP_K | typeof GEN_AI_REQUEST_TOP_P | typeof GEN_AI_RESPONSE_FINISH_REASONS | typeof GEN_AI_RESPONSE_ID | typeof GEN_AI_RESPONSE_MODEL | typeof GEN_AI_RESPONSE_STREAMING | typeof GEN_AI_RESPONSE_TEXT | typeof GEN_AI_RESPONSE_TOKENS_PER_SECOND | typeof GEN_AI_RESPONSE_TOOL_CALLS | typeof GEN_AI_SYSTEM | typeof GEN_AI_SYSTEM_INSTRUCTIONS | typeof GEN_AI_SYSTEM_MESSAGE | typeof GEN_AI_TOOL_CALL_ARGUMENTS | typeof GEN_AI_TOOL_CALL_RESULT | typeof GEN_AI_TOOL_DEFINITIONS | typeof GEN_AI_TOOL_DESCRIPTION | typeof GEN_AI_TOOL_INPUT | typeof GEN_AI_TOOL_MESSAGE | typeof GEN_AI_TOOL_NAME | typeof GEN_AI_TOOL_OUTPUT | typeof GEN_AI_TOOL_TYPE | typeof GEN_AI_USAGE_COMPLETION_TOKENS | typeof GEN_AI_USAGE_INPUT_TOKENS | typeof GEN_AI_USAGE_INPUT_TOKENS_CACHED | typeof GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE | typeof GEN_AI_USAGE_OUTPUT_TOKENS | typeof GEN_AI_USAGE_OUTPUT_TOKENS_REASONING | typeof GEN_AI_USAGE_PROMPT_TOKENS | typeof GEN_AI_USAGE_TOTAL_TOKENS | typeof GEN_AI_USER_MESSAGE | typeof GRAPHQL_OPERATION_NAME | typeof GRAPHQL_OPERATION_TYPE | typeof HTTP_CLIENT_IP | typeof HTTP_DECODED_RESPONSE_CONTENT_LENGTH | typeof HTTP_FLAVOR | typeof HTTP_FRAGMENT | typeof HTTP_HOST | typeof HTTP_METHOD | typeof HTTP_QUERY | typeof HTTP_REQUEST_CONNECTION_END | typeof HTTP_REQUEST_CONNECT_START | typeof HTTP_REQUEST_DOMAIN_LOOKUP_END | typeof HTTP_REQUEST_DOMAIN_LOOKUP_START | typeof HTTP_REQUEST_FETCH_START | typeof HTTP_REQUEST_HEADER_KEY | typeof HTTP_REQUEST_METHOD | typeof HTTP_REQUEST_REDIRECT_END | typeof HTTP_REQUEST_REDIRECT_START | typeof HTTP_REQUEST_REQUEST_START | typeof HTTP_REQUEST_RESEND_COUNT | typeof HTTP_REQUEST_RESPONSE_END | typeof HTTP_REQUEST_RESPONSE_START | typeof HTTP_REQUEST_SECURE_CONNECTION_START | typeof HTTP_REQUEST_TIME_TO_FIRST_BYTE | typeof HTTP_REQUEST_WORKER_START | typeof HTTP_RESPONSE_BODY_SIZE | typeof HTTP_RESPONSE_CONTENT_LENGTH | typeof HTTP_RESPONSE_HEADER_CONTENT_LENGTH | typeof HTTP_RESPONSE_HEADER_KEY | typeof HTTP_RESPONSE_SIZE | typeof HTTP_RESPONSE_STATUS_CODE | typeof HTTP_RESPONSE_TRANSFER_SIZE | typeof HTTP_ROUTE | typeof HTTP_SCHEME | typeof HTTP_SERVER_NAME | typeof HTTP_STATUS_CODE | typeof HTTP_TARGET | typeof HTTP_URL | typeof HTTP_USER_AGENT | typeof ID | 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_ELEMENT | typeof LCP_ID | typeof LCP_SIZE | typeof LCP_URL | typeof LOGGER_NAME | typeof MCP_CANCELLED_REASON | typeof MCP_CANCELLED_REQUEST_ID | typeof MCP_CLIENT_NAME | typeof MCP_CLIENT_TITLE | typeof MCP_CLIENT_VERSION | typeof MCP_LIFECYCLE_PHASE | typeof MCP_LOGGING_DATA_TYPE | typeof MCP_LOGGING_LEVEL | typeof MCP_LOGGING_LOGGER | typeof MCP_LOGGING_MESSAGE | typeof MCP_METHOD_NAME | typeof MCP_PROGRESS_CURRENT | typeof MCP_PROGRESS_MESSAGE | typeof MCP_PROGRESS_PERCENTAGE | typeof MCP_PROGRESS_TOKEN | typeof MCP_PROGRESS_TOTAL | typeof MCP_PROMPT_NAME | typeof MCP_PROMPT_RESULT_DESCRIPTION | typeof MCP_PROMPT_RESULT_MESSAGE_CONTENT | typeof MCP_PROMPT_RESULT_MESSAGE_COUNT | typeof MCP_PROMPT_RESULT_MESSAGE_ROLE | typeof MCP_PROTOCOL_READY | typeof MCP_PROTOCOL_VERSION | typeof MCP_REQUEST_ARGUMENT_KEY | typeof MCP_REQUEST_ARGUMENT_NAME | typeof MCP_REQUEST_ARGUMENT_URI | typeof MCP_REQUEST_ID | typeof MCP_RESOURCE_PROTOCOL | typeof MCP_RESOURCE_URI | typeof MCP_SERVER_NAME | typeof MCP_SERVER_TITLE | typeof MCP_SERVER_VERSION | typeof MCP_SESSION_ID | typeof MCP_TOOL_NAME | typeof MCP_TOOL_RESULT_CONTENT | typeof MCP_TOOL_RESULT_CONTENT_COUNT | typeof MCP_TOOL_RESULT_IS_ERROR | typeof MCP_TRANSPORT | typeof MDC_KEY | typeof MESSAGING_DESTINATION_CONNECTION | typeof MESSAGING_DESTINATION_NAME | typeof MESSAGING_MESSAGE_BODY_SIZE | typeof MESSAGING_MESSAGE_ENVELOPE_SIZE | typeof MESSAGING_MESSAGE_ID | typeof MESSAGING_MESSAGE_RECEIVE_LATENCY | typeof MESSAGING_MESSAGE_RETRY_COUNT | typeof MESSAGING_OPERATION_TYPE | typeof MESSAGING_SYSTEM | typeof METHOD | typeof NAVIGATION_TYPE | typeof NEL_ELAPSED_TIME | typeof NEL_PHASE | typeof NEL_REFERRER | typeof NEL_SAMPLING_FUNCTION | typeof NEL_TYPE | typeof NETWORK_LOCAL_ADDRESS | typeof NETWORK_LOCAL_PORT | typeof NETWORK_PEER_ADDRESS | typeof NETWORK_PEER_PORT | typeof NETWORK_PROTOCOL_NAME | typeof NETWORK_PROTOCOL_VERSION | typeof NETWORK_TRANSPORT | typeof NETWORK_TYPE | typeof NET_HOST_IP | typeof NET_HOST_NAME | typeof NET_HOST_PORT | typeof NET_PEER_IP | typeof NET_PEER_NAME | typeof NET_PEER_PORT | typeof NET_PROTOCOL_NAME | typeof NET_PROTOCOL_VERSION | typeof NET_SOCK_FAMILY | typeof NET_SOCK_HOST_ADDR | typeof NET_SOCK_HOST_PORT | typeof NET_SOCK_PEER_ADDR | typeof NET_SOCK_PEER_NAME | typeof NET_SOCK_PEER_PORT | typeof NET_TRANSPORT | typeof OS_BUILD_ID | typeof OS_DESCRIPTION | typeof OS_NAME | typeof OS_TYPE | typeof OS_VERSION | typeof OTEL_SCOPE_NAME | typeof OTEL_SCOPE_VERSION | typeof OTEL_STATUS_CODE | typeof OTEL_STATUS_DESCRIPTION | typeof PARAMS_KEY | typeof PREVIOUS_ROUTE | typeof PROCESS_EXECUTABLE_NAME | typeof PROCESS_PID | typeof PROCESS_RUNTIME_DESCRIPTION | typeof PROCESS_RUNTIME_NAME | typeof PROCESS_RUNTIME_VERSION | typeof PROFILE_ID | typeof QUERY_KEY | typeof RELEASE | typeof REMIX_ACTION_FORM_DATA_KEY | typeof REPLAY_ID | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME | typeof RESOURCE_RENDER_BLOCKING_STATUS | typeof ROUTE | typeof RPC_GRPC_STATUS_CODE | typeof RPC_SERVICE | typeof SENTRY_ACTION | typeof SENTRY_BROWSER_NAME | typeof SENTRY_BROWSER_VERSION | typeof SENTRY_CANCELLATION_REASON | typeof SENTRY_CATEGORY | typeof SENTRY_CLIENT_SAMPLE_RATE | typeof SENTRY_DESCRIPTION | typeof SENTRY_DIST | typeof SENTRY_DOMAIN | typeof SENTRY_DSC_ENVIRONMENT | typeof SENTRY_DSC_PUBLIC_KEY | typeof SENTRY_DSC_RELEASE | typeof SENTRY_DSC_SAMPLED | typeof SENTRY_DSC_SAMPLE_RATE | typeof SENTRY_DSC_TRACE_ID | typeof SENTRY_DSC_TRANSACTION | typeof SENTRY_ENVIRONMENT | typeof SENTRY_EXCLUSIVE_TIME | typeof SENTRY_GRAPHQL_OPERATION | typeof SENTRY_GROUP | typeof SENTRY_HTTP_PREFETCH | typeof SENTRY_IDLE_SPAN_FINISH_REASON | typeof SENTRY_IS_REMOTE | typeof SENTRY_KIND | typeof SENTRY_MESSAGE_PARAMETER_KEY | typeof SENTRY_MESSAGE_TEMPLATE | typeof SENTRY_MODULE_KEY | typeof SENTRY_NEXTJS_SSR_FUNCTION_ROUTE | typeof SENTRY_NEXTJS_SSR_FUNCTION_TYPE | typeof SENTRY_NORMALIZED_DB_QUERY | typeof SENTRY_NORMALIZED_DB_QUERY_HASH | typeof SENTRY_NORMALIZED_DESCRIPTION | typeof SENTRY_OBSERVED_TIMESTAMP_NANOS | typeof SENTRY_OP | typeof SENTRY_ORIGIN | typeof SENTRY_PLATFORM | typeof SENTRY_PROFILE_ID | typeof SENTRY_RELEASE | typeof SENTRY_REPLAY_ID | typeof SENTRY_REPLAY_IS_BUFFERING | typeof SENTRY_SDK_INTEGRATIONS | typeof SENTRY_SDK_NAME | typeof SENTRY_SDK_VERSION | typeof SENTRY_SEGMENT_ID | typeof _SENTRY_SEGMENT_ID | typeof SENTRY_SEGMENT_NAME | typeof SENTRY_SERVER_SAMPLE_RATE | typeof SENTRY_SPAN_SOURCE | typeof SENTRY_STATUS_MESSAGE | typeof SENTRY_TRACE_PARENT_SPAN_ID | typeof SENTRY_TRANSACTION | typeof SERVER_ADDRESS | typeof SERVER_PORT | typeof SERVICE_NAME | typeof SERVICE_VERSION | typeof THREAD_ID | typeof THREAD_NAME | typeof TIMBER_TAG | typeof TRANSACTION | typeof TYPE | typeof UI_COMPONENT_NAME | typeof UI_CONTRIBUTES_TO_TTFD | typeof UI_CONTRIBUTES_TO_TTID | typeof URL | typeof URL_DOMAIN | typeof URL_FRAGMENT | typeof URL_FULL | typeof URL_PATH | typeof URL_PATH_PARAMETER_KEY | typeof URL_PORT | typeof URL_QUERY | typeof URL_SCHEME | typeof URL_TEMPLATE | typeof USER_AGENT_ORIGINAL | typeof USER_EMAIL | typeof USER_FULL_NAME | typeof USER_GEO_CITY | typeof USER_GEO_COUNTRY_CODE | typeof USER_GEO_REGION | typeof USER_GEO_SUBDIVISION | typeof USER_HASH | typeof USER_ID | typeof USER_IP_ADDRESS | typeof USER_NAME | typeof USER_ROLES | typeof VERCEL_BRANCH | typeof VERCEL_BUILD_ID | typeof VERCEL_DEPLOYMENT_ID | typeof VERCEL_DESTINATION | typeof VERCEL_EDGE_TYPE | typeof VERCEL_ENTRYPOINT | typeof VERCEL_EXECUTION_REGION | typeof VERCEL_ID | typeof VERCEL_JA3_DIGEST | typeof VERCEL_JA4_DIGEST | typeof VERCEL_LOG_TYPE | typeof VERCEL_PROJECT_ID | typeof VERCEL_PROJECT_NAME | typeof VERCEL_PROXY_CACHE_ID | typeof VERCEL_PROXY_CLIENT_IP | typeof VERCEL_PROXY_HOST | typeof VERCEL_PROXY_LAMBDA_REGION | typeof VERCEL_PROXY_METHOD | typeof VERCEL_PROXY_PATH | typeof VERCEL_PROXY_PATH_TYPE | typeof VERCEL_PROXY_PATH_TYPE_VARIANT | typeof VERCEL_PROXY_REFERER | typeof VERCEL_PROXY_REGION | typeof VERCEL_PROXY_RESPONSE_BYTE_SIZE | typeof VERCEL_PROXY_SCHEME | typeof VERCEL_PROXY_STATUS_CODE | typeof VERCEL_PROXY_TIMESTAMP | typeof VERCEL_PROXY_USER_AGENT | typeof VERCEL_PROXY_VERCEL_CACHE | typeof VERCEL_PROXY_VERCEL_ID | typeof VERCEL_PROXY_WAF_ACTION | typeof VERCEL_PROXY_WAF_RULE_ID | typeof VERCEL_REQUEST_ID | typeof VERCEL_SOURCE | typeof VERCEL_STATUS_CODE; +export type AttributeName = + | typeof AI_CITATIONS + | typeof AI_COMPLETION_TOKENS_USED + | typeof AI_DOCUMENTS + | typeof AI_FINISH_REASON + | typeof AI_FREQUENCY_PENALTY + | typeof AI_FUNCTION_CALL + | typeof AI_GENERATION_ID + | typeof AI_INPUT_MESSAGES + | typeof AI_IS_SEARCH_REQUIRED + | typeof AI_METADATA + | typeof AI_MODEL_ID + | typeof AI_MODEL_PROVIDER + | typeof AI_PIPELINE_NAME + | typeof AI_PREAMBLE + | typeof AI_PRESENCE_PENALTY + | typeof AI_PROMPT_TOKENS_USED + | typeof AI_RAW_PROMPTING + | typeof AI_RESPONSES + | typeof AI_RESPONSE_FORMAT + | typeof AI_SEARCH_QUERIES + | typeof AI_SEARCH_RESULTS + | typeof AI_SEED + | typeof AI_STREAMING + | typeof AI_TAGS + | typeof AI_TEMPERATURE + | typeof AI_TEXTS + | typeof AI_TOOLS + | typeof AI_TOOL_CALLS + | typeof AI_TOP_K + | typeof AI_TOP_P + | typeof AI_TOTAL_COST + | typeof AI_TOTAL_TOKENS_USED + | typeof AI_WARNINGS + | typeof APP_START_TYPE + | typeof BLOCKED_MAIN_THREAD + | typeof BROWSER_NAME + | typeof BROWSER_REPORT_TYPE + | typeof BROWSER_SCRIPT_INVOKER + | typeof BROWSER_SCRIPT_INVOKER_TYPE + | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION + | typeof BROWSER_VERSION + | typeof CACHE_HIT + | typeof CACHE_ITEM_SIZE + | typeof CACHE_KEY + | typeof CACHE_OPERATION + | typeof CACHE_TTL + | typeof CHANNEL + | typeof CLIENT_ADDRESS + | typeof CLIENT_PORT + | typeof CLOUDFLARE_D1_DURATION + | typeof CLOUDFLARE_D1_ROWS_READ + | typeof CLOUDFLARE_D1_ROWS_WRITTEN + | typeof CODE_FILEPATH + | typeof CODE_FILE_PATH + | typeof CODE_FUNCTION + | typeof CODE_FUNCTION_NAME + | typeof CODE_LINENO + | typeof CODE_LINE_NUMBER + | typeof CODE_NAMESPACE + | typeof DB_COLLECTION_NAME + | typeof DB_NAME + | typeof DB_NAMESPACE + | typeof DB_OPERATION + | typeof DB_OPERATION_NAME + | typeof DB_QUERY_PARAMETER_KEY + | typeof DB_QUERY_SUMMARY + | typeof DB_QUERY_TEXT + | typeof DB_REDIS_CONNECTION + | typeof DB_REDIS_PARAMETERS + | typeof DB_SQL_BINDINGS + | typeof DB_STATEMENT + | typeof DB_SYSTEM + | typeof DB_SYSTEM_NAME + | typeof DB_USER + | typeof DEVICE_BRAND + | typeof DEVICE_FAMILY + | typeof DEVICE_MODEL + | typeof ENVIRONMENT + | typeof ERROR_TYPE + | typeof EVENT_ID + | typeof EVENT_NAME + | typeof EXCEPTION_ESCAPED + | typeof EXCEPTION_MESSAGE + | typeof EXCEPTION_STACKTRACE + | typeof EXCEPTION_TYPE + | typeof FAAS_COLDSTART + | typeof FAAS_CRON + | typeof FAAS_TIME + | typeof FAAS_TRIGGER + | typeof FLAG_EVALUATION_KEY + | typeof FRAMES_DELAY + | typeof FRAMES_FROZEN + | typeof FRAMES_SLOW + | typeof FRAMES_TOTAL + | typeof FS_ERROR + | typeof GEN_AI_AGENT_NAME + | typeof GEN_AI_ASSISTANT_MESSAGE + | typeof GEN_AI_CHOICE + | typeof GEN_AI_COST_INPUT_TOKENS + | typeof GEN_AI_COST_OUTPUT_TOKENS + | typeof GEN_AI_COST_TOTAL_TOKENS + | typeof GEN_AI_EMBEDDINGS_INPUT + | typeof GEN_AI_INPUT_MESSAGES + | typeof GEN_AI_OPERATION_NAME + | typeof GEN_AI_OPERATION_TYPE + | typeof GEN_AI_OUTPUT_MESSAGES + | typeof GEN_AI_PIPELINE_NAME + | typeof GEN_AI_PROMPT + | typeof GEN_AI_REQUEST_AVAILABLE_TOOLS + | typeof GEN_AI_REQUEST_FREQUENCY_PENALTY + | typeof GEN_AI_REQUEST_MAX_TOKENS + | typeof GEN_AI_REQUEST_MESSAGES + | typeof GEN_AI_REQUEST_MODEL + | typeof GEN_AI_REQUEST_PRESENCE_PENALTY + | typeof GEN_AI_REQUEST_SEED + | typeof GEN_AI_REQUEST_TEMPERATURE + | typeof GEN_AI_REQUEST_TOP_K + | typeof GEN_AI_REQUEST_TOP_P + | typeof GEN_AI_RESPONSE_FINISH_REASONS + | typeof GEN_AI_RESPONSE_ID + | typeof GEN_AI_RESPONSE_MODEL + | typeof GEN_AI_RESPONSE_STREAMING + | typeof GEN_AI_RESPONSE_TEXT + | typeof GEN_AI_RESPONSE_TOKENS_PER_SECOND + | typeof GEN_AI_RESPONSE_TOOL_CALLS + | typeof GEN_AI_SYSTEM + | typeof GEN_AI_SYSTEM_INSTRUCTIONS + | typeof GEN_AI_SYSTEM_MESSAGE + | typeof GEN_AI_TOOL_CALL_ARGUMENTS + | typeof GEN_AI_TOOL_CALL_RESULT + | typeof GEN_AI_TOOL_DEFINITIONS + | typeof GEN_AI_TOOL_DESCRIPTION + | typeof GEN_AI_TOOL_INPUT + | typeof GEN_AI_TOOL_MESSAGE + | typeof GEN_AI_TOOL_NAME + | typeof GEN_AI_TOOL_OUTPUT + | typeof GEN_AI_TOOL_TYPE + | typeof GEN_AI_USAGE_COMPLETION_TOKENS + | typeof GEN_AI_USAGE_INPUT_TOKENS + | typeof GEN_AI_USAGE_INPUT_TOKENS_CACHED + | typeof GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE + | typeof GEN_AI_USAGE_OUTPUT_TOKENS + | typeof GEN_AI_USAGE_OUTPUT_TOKENS_REASONING + | typeof GEN_AI_USAGE_PROMPT_TOKENS + | typeof GEN_AI_USAGE_TOTAL_TOKENS + | typeof GEN_AI_USER_MESSAGE + | typeof GRAPHQL_OPERATION_NAME + | typeof GRAPHQL_OPERATION_TYPE + | typeof HTTP_CLIENT_IP + | typeof HTTP_DECODED_RESPONSE_CONTENT_LENGTH + | typeof HTTP_FLAVOR + | typeof HTTP_FRAGMENT + | typeof HTTP_HOST + | typeof HTTP_METHOD + | typeof HTTP_QUERY + | typeof HTTP_REQUEST_CONNECTION_END + | typeof HTTP_REQUEST_CONNECT_START + | typeof HTTP_REQUEST_DOMAIN_LOOKUP_END + | typeof HTTP_REQUEST_DOMAIN_LOOKUP_START + | typeof HTTP_REQUEST_FETCH_START + | typeof HTTP_REQUEST_HEADER_KEY + | typeof HTTP_REQUEST_METHOD + | typeof HTTP_REQUEST_REDIRECT_END + | typeof HTTP_REQUEST_REDIRECT_START + | typeof HTTP_REQUEST_REQUEST_START + | typeof HTTP_REQUEST_RESEND_COUNT + | typeof HTTP_REQUEST_RESPONSE_END + | typeof HTTP_REQUEST_RESPONSE_START + | typeof HTTP_REQUEST_SECURE_CONNECTION_START + | typeof HTTP_REQUEST_TIME_TO_FIRST_BYTE + | typeof HTTP_REQUEST_WORKER_START + | typeof HTTP_RESPONSE_BODY_SIZE + | typeof HTTP_RESPONSE_CONTENT_LENGTH + | typeof HTTP_RESPONSE_HEADER_CONTENT_LENGTH + | typeof HTTP_RESPONSE_HEADER_KEY + | typeof HTTP_RESPONSE_SIZE + | typeof HTTP_RESPONSE_STATUS_CODE + | typeof HTTP_RESPONSE_TRANSFER_SIZE + | typeof HTTP_ROUTE + | typeof HTTP_SCHEME + | typeof HTTP_SERVER_NAME + | typeof HTTP_STATUS_CODE + | typeof HTTP_TARGET + | typeof HTTP_URL + | typeof HTTP_USER_AGENT + | typeof ID + | 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_ELEMENT + | typeof LCP_ID + | typeof LCP_SIZE + | typeof LCP_URL + | typeof LOGGER_NAME + | typeof MCP_CANCELLED_REASON + | typeof MCP_CANCELLED_REQUEST_ID + | typeof MCP_CLIENT_NAME + | typeof MCP_CLIENT_TITLE + | typeof MCP_CLIENT_VERSION + | typeof MCP_LIFECYCLE_PHASE + | typeof MCP_LOGGING_DATA_TYPE + | typeof MCP_LOGGING_LEVEL + | typeof MCP_LOGGING_LOGGER + | typeof MCP_LOGGING_MESSAGE + | typeof MCP_METHOD_NAME + | typeof MCP_PROGRESS_CURRENT + | typeof MCP_PROGRESS_MESSAGE + | typeof MCP_PROGRESS_PERCENTAGE + | typeof MCP_PROGRESS_TOKEN + | typeof MCP_PROGRESS_TOTAL + | typeof MCP_PROMPT_NAME + | typeof MCP_PROMPT_RESULT_DESCRIPTION + | typeof MCP_PROMPT_RESULT_MESSAGE_CONTENT + | typeof MCP_PROMPT_RESULT_MESSAGE_COUNT + | typeof MCP_PROMPT_RESULT_MESSAGE_ROLE + | typeof MCP_PROTOCOL_READY + | typeof MCP_PROTOCOL_VERSION + | typeof MCP_REQUEST_ARGUMENT_KEY + | typeof MCP_REQUEST_ARGUMENT_NAME + | typeof MCP_REQUEST_ARGUMENT_URI + | typeof MCP_REQUEST_ID + | typeof MCP_RESOURCE_PROTOCOL + | typeof MCP_RESOURCE_URI + | typeof MCP_SERVER_NAME + | typeof MCP_SERVER_TITLE + | typeof MCP_SERVER_VERSION + | typeof MCP_SESSION_ID + | typeof MCP_TOOL_NAME + | typeof MCP_TOOL_RESULT_CONTENT + | typeof MCP_TOOL_RESULT_CONTENT_COUNT + | typeof MCP_TOOL_RESULT_IS_ERROR + | typeof MCP_TRANSPORT + | typeof MDC_KEY + | typeof MESSAGING_DESTINATION_CONNECTION + | typeof MESSAGING_DESTINATION_NAME + | typeof MESSAGING_MESSAGE_BODY_SIZE + | typeof MESSAGING_MESSAGE_ENVELOPE_SIZE + | typeof MESSAGING_MESSAGE_ID + | typeof MESSAGING_MESSAGE_RECEIVE_LATENCY + | typeof MESSAGING_MESSAGE_RETRY_COUNT + | typeof MESSAGING_OPERATION_TYPE + | typeof MESSAGING_SYSTEM + | typeof METHOD + | typeof NAVIGATION_TYPE + | typeof NEL_ELAPSED_TIME + | typeof NEL_PHASE + | typeof NEL_REFERRER + | typeof NEL_SAMPLING_FUNCTION + | typeof NEL_TYPE + | typeof NETWORK_LOCAL_ADDRESS + | typeof NETWORK_LOCAL_PORT + | typeof NETWORK_PEER_ADDRESS + | typeof NETWORK_PEER_PORT + | typeof NETWORK_PROTOCOL_NAME + | typeof NETWORK_PROTOCOL_VERSION + | typeof NETWORK_TRANSPORT + | typeof NETWORK_TYPE + | typeof NET_HOST_IP + | typeof NET_HOST_NAME + | typeof NET_HOST_PORT + | typeof NET_PEER_IP + | typeof NET_PEER_NAME + | typeof NET_PEER_PORT + | typeof NET_PROTOCOL_NAME + | typeof NET_PROTOCOL_VERSION + | typeof NET_SOCK_FAMILY + | typeof NET_SOCK_HOST_ADDR + | typeof NET_SOCK_HOST_PORT + | typeof NET_SOCK_PEER_ADDR + | typeof NET_SOCK_PEER_NAME + | typeof NET_SOCK_PEER_PORT + | typeof NET_TRANSPORT + | typeof OS_BUILD_ID + | typeof OS_DESCRIPTION + | typeof OS_NAME + | typeof OS_TYPE + | typeof OS_VERSION + | typeof OTEL_SCOPE_NAME + | typeof OTEL_SCOPE_VERSION + | typeof OTEL_STATUS_CODE + | typeof OTEL_STATUS_DESCRIPTION + | typeof PARAMS_KEY + | typeof PREVIOUS_ROUTE + | typeof PROCESS_EXECUTABLE_NAME + | typeof PROCESS_PID + | typeof PROCESS_RUNTIME_DESCRIPTION + | typeof PROCESS_RUNTIME_NAME + | typeof PROCESS_RUNTIME_VERSION + | typeof PROFILE_ID + | typeof QUERY_KEY + | typeof RELEASE + | typeof REMIX_ACTION_FORM_DATA_KEY + | typeof REPLAY_ID + | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME + | typeof RESOURCE_RENDER_BLOCKING_STATUS + | typeof ROUTE + | typeof RPC_GRPC_STATUS_CODE + | typeof RPC_SERVICE + | typeof SENTRY_ACTION + | typeof SENTRY_BROWSER_NAME + | typeof SENTRY_BROWSER_VERSION + | typeof SENTRY_CANCELLATION_REASON + | typeof SENTRY_CATEGORY + | typeof SENTRY_CLIENT_SAMPLE_RATE + | typeof SENTRY_DESCRIPTION + | typeof SENTRY_DIST + | typeof SENTRY_DOMAIN + | typeof SENTRY_DSC_ENVIRONMENT + | typeof SENTRY_DSC_PUBLIC_KEY + | typeof SENTRY_DSC_RELEASE + | typeof SENTRY_DSC_SAMPLED + | typeof SENTRY_DSC_SAMPLE_RATE + | typeof SENTRY_DSC_TRACE_ID + | typeof SENTRY_DSC_TRANSACTION + | typeof SENTRY_ENVIRONMENT + | typeof SENTRY_EXCLUSIVE_TIME + | typeof SENTRY_GRAPHQL_OPERATION + | typeof SENTRY_GROUP + | typeof SENTRY_HTTP_PREFETCH + | typeof SENTRY_IDLE_SPAN_FINISH_REASON + | typeof SENTRY_IS_REMOTE + | typeof SENTRY_KIND + | typeof SENTRY_MESSAGE_PARAMETER_KEY + | typeof SENTRY_MESSAGE_TEMPLATE + | typeof SENTRY_MODULE_KEY + | typeof SENTRY_NEXTJS_SSR_FUNCTION_ROUTE + | typeof SENTRY_NEXTJS_SSR_FUNCTION_TYPE + | typeof SENTRY_NORMALIZED_DB_QUERY + | typeof SENTRY_NORMALIZED_DB_QUERY_HASH + | typeof SENTRY_NORMALIZED_DESCRIPTION + | typeof SENTRY_OBSERVED_TIMESTAMP_NANOS + | typeof SENTRY_OP + | typeof SENTRY_ORIGIN + | typeof SENTRY_PLATFORM + | typeof SENTRY_PROFILE_ID + | typeof SENTRY_RELEASE + | typeof SENTRY_REPLAY_ID + | typeof SENTRY_REPLAY_IS_BUFFERING + | typeof SENTRY_SDK_INTEGRATIONS + | typeof SENTRY_SDK_NAME + | typeof SENTRY_SDK_VERSION + | typeof SENTRY_SEGMENT_ID + | typeof _SENTRY_SEGMENT_ID + | typeof SENTRY_SEGMENT_NAME + | typeof SENTRY_SERVER_SAMPLE_RATE + | typeof SENTRY_SPAN_SOURCE + | typeof SENTRY_STATUS_MESSAGE + | typeof SENTRY_TRACE_PARENT_SPAN_ID + | typeof SENTRY_TRANSACTION + | typeof SERVER_ADDRESS + | typeof SERVER_PORT + | typeof SERVICE_NAME + | typeof SERVICE_VERSION + | typeof THREAD_ID + | typeof THREAD_NAME + | typeof TIMBER_TAG + | typeof TRANSACTION + | typeof TYPE + | typeof UI_COMPONENT_NAME + | typeof UI_CONTRIBUTES_TO_TTFD + | typeof UI_CONTRIBUTES_TO_TTID + | typeof URL + | typeof URL_DOMAIN + | typeof URL_FRAGMENT + | typeof URL_FULL + | typeof URL_PATH + | typeof URL_PATH_PARAMETER_KEY + | typeof URL_PORT + | typeof URL_QUERY + | typeof URL_SCHEME + | typeof URL_TEMPLATE + | typeof USER_AGENT_ORIGINAL + | typeof USER_EMAIL + | typeof USER_FULL_NAME + | typeof USER_GEO_CITY + | typeof USER_GEO_COUNTRY_CODE + | typeof USER_GEO_REGION + | typeof USER_GEO_SUBDIVISION + | typeof USER_HASH + | typeof USER_ID + | typeof USER_IP_ADDRESS + | typeof USER_NAME + | typeof USER_ROLES + | typeof VERCEL_BRANCH + | typeof VERCEL_BUILD_ID + | typeof VERCEL_DEPLOYMENT_ID + | typeof VERCEL_DESTINATION + | typeof VERCEL_EDGE_TYPE + | typeof VERCEL_ENTRYPOINT + | typeof VERCEL_EXECUTION_REGION + | typeof VERCEL_ID + | typeof VERCEL_JA3_DIGEST + | typeof VERCEL_JA4_DIGEST + | typeof VERCEL_LOG_TYPE + | typeof VERCEL_PROJECT_ID + | typeof VERCEL_PROJECT_NAME + | typeof VERCEL_PROXY_CACHE_ID + | typeof VERCEL_PROXY_CLIENT_IP + | typeof VERCEL_PROXY_HOST + | typeof VERCEL_PROXY_LAMBDA_REGION + | typeof VERCEL_PROXY_METHOD + | typeof VERCEL_PROXY_PATH + | typeof VERCEL_PROXY_PATH_TYPE + | typeof VERCEL_PROXY_PATH_TYPE_VARIANT + | typeof VERCEL_PROXY_REFERER + | typeof VERCEL_PROXY_REGION + | typeof VERCEL_PROXY_RESPONSE_BYTE_SIZE + | typeof VERCEL_PROXY_SCHEME + | typeof VERCEL_PROXY_STATUS_CODE + | typeof VERCEL_PROXY_TIMESTAMP + | typeof VERCEL_PROXY_USER_AGENT + | typeof VERCEL_PROXY_VERCEL_CACHE + | typeof VERCEL_PROXY_VERCEL_ID + | typeof VERCEL_PROXY_WAF_ACTION + | typeof VERCEL_PROXY_WAF_RULE_ID + | typeof VERCEL_REQUEST_ID + | typeof VERCEL_SOURCE + | typeof VERCEL_STATUS_CODE; export const ATTRIBUTE_METADATA: Record = { [AI_CITATIONS]: { - brief: "References or sources cited by the AI model in its response.", + brief: 'References or sources cited by the AI model in its response.', type: 'string[]', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: ["Citation 1","Citation 2"], + example: ['Citation 1', 'Citation 2'], }, [AI_COMPLETION_TOKENS_USED]: { - brief: "The number of tokens used to respond to the message.", + brief: 'The number of tokens used to respond to the message.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 10, deprecation: { - replacement: "gen_ai.usage.output_tokens" + replacement: 'gen_ai.usage.output_tokens', }, aliases: [GEN_AI_USAGE_OUTPUT_TOKENS, GEN_AI_USAGE_COMPLETION_TOKENS], - sdks: ["python"], + sdks: ['python'], }, [AI_DOCUMENTS]: { - brief: "Documents or content chunks used as context for the AI model.", + brief: 'Documents or content chunks used as context for the AI model.', type: 'string[]', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: ["document1.txt","document2.pdf"], + example: ['document1.txt', 'document2.pdf'], }, [AI_FINISH_REASON]: { - brief: "The reason why the model stopped generating.", + brief: 'The reason why the model stopped generating.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "COMPLETE", + example: 'COMPLETE', deprecation: { - replacement: "gen_ai.response.finish_reason" + replacement: 'gen_ai.response.finish_reason', }, aliases: [GEN_AI_RESPONSE_FINISH_REASONS], }, [AI_FREQUENCY_PENALTY]: { - 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.", + brief: + 'Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 0.5, deprecation: { - replacement: "gen_ai.request.frequency_penalty" + replacement: 'gen_ai.request.frequency_penalty', }, aliases: [GEN_AI_REQUEST_FREQUENCY_PENALTY], }, [AI_FUNCTION_CALL]: { - brief: "For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", + brief: + 'For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "function_name", + example: 'function_name', deprecation: { - replacement: "gen_ai.tool.name" + replacement: 'gen_ai.tool.name', }, aliases: [GEN_AI_TOOL_NAME], }, [AI_GENERATION_ID]: { - brief: "Unique identifier for the completion.", + brief: 'Unique identifier for the completion.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "gen_123abc", + example: 'gen_123abc', deprecation: { - replacement: "gen_ai.response.id" + replacement: 'gen_ai.response.id', }, aliases: [GEN_AI_RESPONSE_ID], }, [AI_INPUT_MESSAGES]: { - brief: "The input messages sent to the model", + brief: 'The input messages sent to the model', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "[{\"role\": \"user\", \"message\": \"hello\"}]", + example: '[{"role": "user", "message": "hello"}]', deprecation: { - replacement: "gen_ai.request.messages" + replacement: 'gen_ai.request.messages', }, aliases: [GEN_AI_REQUEST_MESSAGES], - sdks: ["python"], + sdks: ['python'], }, [AI_IS_SEARCH_REQUIRED]: { - brief: "Boolean indicating if the model needs to perform a search.", + brief: 'Boolean indicating if the model needs to perform a search.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: false, }, [AI_METADATA]: { - brief: "Extra metadata passed to an AI pipeline step.", + brief: 'Extra metadata passed to an AI pipeline step.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "{\"user_id\": 123, \"session_id\": \"abc123\"}", + example: '{"user_id": 123, "session_id": "abc123"}', }, [AI_MODEL_ID]: { - brief: "The vendor-specific ID of the model used.", + brief: 'The vendor-specific ID of the model used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "gpt-4", + example: 'gpt-4', deprecation: { - replacement: "gen_ai.response.model" + replacement: 'gen_ai.response.model', }, aliases: [GEN_AI_RESPONSE_MODEL], - sdks: ["python"], + sdks: ['python'], }, [AI_MODEL_PROVIDER]: { - brief: "The provider of the model.", + brief: 'The provider of the model.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "openai", + example: 'openai', deprecation: { - replacement: "gen_ai.system" + replacement: 'gen_ai.system', }, aliases: [GEN_AI_SYSTEM], }, [AI_PIPELINE_NAME]: { - brief: "The name of the AI pipeline.", + brief: 'The name of the AI pipeline.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Autofix Pipeline", + example: 'Autofix Pipeline', deprecation: { - replacement: "gen_ai.pipeline.name" + replacement: 'gen_ai.pipeline.name', }, aliases: [GEN_AI_PIPELINE_NAME], }, [AI_PREAMBLE]: { - 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.", + brief: + "For an AI model call, the preamble parameter. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style.", type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "You are now a clown.", + example: 'You are now a clown.', }, [AI_PRESENCE_PENALTY]: { - 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.", + brief: + 'Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 0.5, deprecation: { - replacement: "gen_ai.request.presence_penalty" + replacement: 'gen_ai.request.presence_penalty', }, aliases: [GEN_AI_REQUEST_PRESENCE_PENALTY], }, [AI_PROMPT_TOKENS_USED]: { - brief: "The number of tokens used to process just the prompt.", + brief: 'The number of tokens used to process just the prompt.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 20, deprecation: { - replacement: "gen_ai.usage.input_tokens" + replacement: 'gen_ai.usage.input_tokens', }, aliases: [GEN_AI_USAGE_PROMPT_TOKENS, GEN_AI_USAGE_INPUT_TOKENS], - sdks: ["python"], + sdks: ['python'], }, [AI_RAW_PROMPTING]: { - brief: "When enabled, the user’s prompt will be sent to the model without any pre-processing.", + brief: 'When enabled, the user’s prompt will be sent to the model without any pre-processing.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, }, [AI_RESPONSES]: { - brief: "The response messages sent back by the AI model.", + brief: 'The response messages sent back by the AI model.', type: 'string[]', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: ["hello","world"], + example: ['hello', 'world'], deprecation: { - replacement: "gen_ai.response.text" + replacement: 'gen_ai.response.text', }, - sdks: ["python"], + sdks: ['python'], }, [AI_RESPONSE_FORMAT]: { - brief: "For an AI model call, the format of the response", + brief: 'For an AI model call, the format of the response', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "json_object", + example: 'json_object', }, [AI_SEARCH_QUERIES]: { - brief: "Queries used to search for relevant context or documents.", + brief: 'Queries used to search for relevant context or documents.', type: 'string[]', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: ["climate change effects","renewable energy"], + example: ['climate change effects', 'renewable energy'], }, [AI_SEARCH_RESULTS]: { - brief: "Results returned from search queries for context.", + brief: 'Results returned from search queries for context.', type: 'string[]', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: ["search_result_1, search_result_2"], + example: ['search_result_1, search_result_2'], }, [AI_SEED]: { - brief: "The seed, ideally models given the same seed and same other parameters will produce the exact same output.", + brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "1234567890", + example: '1234567890', deprecation: { - replacement: "gen_ai.request.seed" + replacement: 'gen_ai.request.seed', }, aliases: [GEN_AI_REQUEST_SEED], }, [AI_STREAMING]: { - brief: "Whether the request was streamed back.", + brief: 'Whether the request was streamed back.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, deprecation: { - replacement: "gen_ai.response.streaming" + replacement: 'gen_ai.response.streaming', }, aliases: [GEN_AI_RESPONSE_STREAMING], - sdks: ["python"], + sdks: ['python'], }, [AI_TAGS]: { - brief: "Tags that describe an AI pipeline step.", + brief: 'Tags that describe an AI pipeline step.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "{\"executed_function\": \"add_integers\"}", + example: '{"executed_function": "add_integers"}', }, [AI_TEMPERATURE]: { - brief: "For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", + brief: + 'For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 0.1, deprecation: { - replacement: "gen_ai.request.temperature" + replacement: 'gen_ai.request.temperature', }, aliases: [GEN_AI_REQUEST_TEMPERATURE], }, [AI_TEXTS]: { - brief: "Raw text inputs provided to the model.", + brief: 'Raw text inputs provided to the model.', type: 'string[]', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: ["Hello, how are you?","What is the capital of France?"], + example: ['Hello, how are you?', 'What is the capital of France?'], }, [AI_TOOLS]: { - brief: "For an AI model call, the functions that are available", + brief: 'For an AI model call, the functions that are available', type: 'string[]', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: ["function_1","function_2"], + example: ['function_1', 'function_2'], deprecation: { - replacement: "gen_ai.request.available_tools" + replacement: 'gen_ai.request.available_tools', }, }, [AI_TOOL_CALLS]: { - brief: "For an AI model call, the tool calls that were made.", + brief: 'For an AI model call, the tool calls that were made.', type: 'string[]', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: ["tool_call_1","tool_call_2"], + example: ['tool_call_1', 'tool_call_2'], deprecation: { - replacement: "gen_ai.response.tool_calls" + replacement: 'gen_ai.response.tool_calls', }, }, [AI_TOP_K]: { - 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).", + brief: + 'Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 35, deprecation: { - replacement: "gen_ai.request.top_k" + replacement: 'gen_ai.request.top_k', }, aliases: [GEN_AI_REQUEST_TOP_K], }, [AI_TOP_P]: { - 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).", + brief: + 'Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 0.7, deprecation: { - replacement: "gen_ai.request.top_p" + replacement: 'gen_ai.request.top_p', }, aliases: [GEN_AI_REQUEST_TOP_P], }, [AI_TOTAL_COST]: { - brief: "The total cost for the tokens used.", + brief: 'The total cost for the tokens used.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 12.34, }, [AI_TOTAL_TOKENS_USED]: { - brief: "The total number of tokens used to process the prompt.", + brief: 'The total number of tokens used to process the prompt.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 30, deprecation: { - replacement: "gen_ai.usage.total_tokens" + replacement: 'gen_ai.usage.total_tokens', }, aliases: [GEN_AI_USAGE_TOTAL_TOKENS], - sdks: ["python"], + sdks: ['python'], }, [AI_WARNINGS]: { - brief: "Warning messages generated during model execution.", + brief: 'Warning messages generated during model execution.', type: 'string[]', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: ["Token limit exceeded"], + example: ['Token limit exceeded'], }, [APP_START_TYPE]: { - brief: "Mobile app start variant. Either cold or warm.", + brief: 'Mobile app start variant. Either cold or warm.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "cold", + example: 'cold', }, [BLOCKED_MAIN_THREAD]: { - brief: "Whether the main thread was blocked by the span.", + brief: 'Whether the main thread was blocked by the span.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, }, [BROWSER_NAME]: { - brief: "The name of the browser.", + brief: 'The name of the browser.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Chrome", + example: 'Chrome', aliases: [SENTRY_BROWSER_NAME], }, [BROWSER_REPORT_TYPE]: { - brief: "A browser report sent via reporting API..", + brief: 'A browser report sent via reporting API..', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "network-error", + example: 'network-error', }, [BROWSER_SCRIPT_INVOKER]: { - brief: "How a script was called in the browser.", + brief: 'How a script was called in the browser.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Window.requestAnimationFrame", - sdks: ["browser"], + example: 'Window.requestAnimationFrame', + sdks: ['browser'], }, [BROWSER_SCRIPT_INVOKER_TYPE]: { - brief: "Browser script entry point type.", + brief: 'Browser script entry point type.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "event-listener", - sdks: ["browser"], + example: 'event-listener', + sdks: ['browser'], }, [BROWSER_SCRIPT_SOURCE_CHAR_POSITION]: { - brief: "A number representing the script character position of the script.", + brief: 'A number representing the script character position of the script.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 678, - sdks: ["browser"], + sdks: ['browser'], }, [BROWSER_VERSION]: { - brief: "The version of the browser.", + brief: 'The version of the browser.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "120.0.6099.130", + example: '120.0.6099.130', aliases: [SENTRY_BROWSER_VERSION], }, [CACHE_HIT]: { - brief: "If the cache was hit during this span.", + brief: 'If the cache was hit during this span.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, - sdks: ["php-laravel"], + sdks: ['php-laravel'], }, [CACHE_ITEM_SIZE]: { - brief: "The size of the requested item in the cache. In bytes.", + brief: 'The size of the requested item in the cache. In bytes.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 58, }, [CACHE_KEY]: { - brief: "The key of the cache accessed.", + brief: 'The key of the cache accessed.', type: 'string[]', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: ["my-cache-key","my-other-cache-key"], - sdks: ["php-laravel"], + example: ['my-cache-key', 'my-other-cache-key'], + sdks: ['php-laravel'], }, [CACHE_OPERATION]: { - brief: "The operation being performed on the cache.", + brief: 'The operation being performed on the cache.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "get", - sdks: ["php-laravel"], + example: 'get', + sdks: ['php-laravel'], }, [CACHE_TTL]: { - brief: "The ttl of the cache in seconds", + brief: 'The ttl of the cache in seconds', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 120, - sdks: ["php-laravel"], + sdks: ['php-laravel'], }, [CHANNEL]: { - brief: "The channel name that is being used.", + brief: 'The channel name that is being used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "mail", - sdks: ["php-laravel"], + example: 'mail', + sdks: ['php-laravel'], }, [CLIENT_ADDRESS]: { - brief: "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + brief: + 'Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: "example.com", + example: 'example.com', aliases: [HTTP_CLIENT_IP], }, [CLIENT_PORT]: { - brief: "Client port number.", + brief: 'Client port number.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 5432, }, [CLOUDFLARE_D1_DURATION]: { - brief: "The duration of a Cloudflare D1 operation.", + brief: 'The duration of a Cloudflare D1 operation.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 543, - sdks: ["javascript-cloudflare"], + sdks: ['javascript-cloudflare'], }, [CLOUDFLARE_D1_ROWS_READ]: { - brief: "The number of rows read in a Cloudflare D1 operation.", + brief: 'The number of rows read in a Cloudflare D1 operation.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 12, - sdks: ["javascript-cloudflare"], + sdks: ['javascript-cloudflare'], }, [CLOUDFLARE_D1_ROWS_WRITTEN]: { - brief: "The number of rows written in a Cloudflare D1 operation.", + brief: 'The number of rows written in a Cloudflare D1 operation.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 12, - sdks: ["javascript-cloudflare"], + sdks: ['javascript-cloudflare'], }, [CODE_FILEPATH]: { - brief: "The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", + brief: + 'The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "/app/myapplication/http/handler/server.py", + example: '/app/myapplication/http/handler/server.py', deprecation: { - replacement: "code.file.path" + replacement: 'code.file.path', }, aliases: [CODE_FILE_PATH], }, [CODE_FILE_PATH]: { - brief: "The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", + brief: + 'The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "/app/myapplication/http/handler/server.py", + example: '/app/myapplication/http/handler/server.py', aliases: [CODE_FILEPATH], }, [CODE_FUNCTION]: { brief: "The method or function name, or equivalent (usually rightmost part of the code unit's name).", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "server_request", + example: 'server_request', deprecation: { - replacement: "code.function.name" + replacement: 'code.function.name', }, aliases: [CODE_FUNCTION_NAME], }, @@ -9824,691 +10251,720 @@ export const ATTRIBUTE_METADATA: Record = { brief: "The method or function name, or equivalent (usually rightmost part of the code unit's name).", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "server_request", + example: 'server_request', aliases: [CODE_FUNCTION], }, [CODE_LINENO]: { - brief: "The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", + brief: + 'The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 42, deprecation: { - replacement: "code.line.number" + replacement: 'code.line.number', }, aliases: [CODE_LINE_NUMBER], }, [CODE_LINE_NUMBER]: { - brief: "The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", + brief: + 'The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 42, aliases: [CODE_LINENO], }, [CODE_NAMESPACE]: { - 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.", + brief: + "The 'namespace' within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "http.handler", + example: 'http.handler', deprecation: { - replacement: "code.function.name", - reason: "code.function.name should include the namespace." + replacement: 'code.function.name', + reason: 'code.function.name should include the namespace.', }, }, [DB_COLLECTION_NAME]: { - brief: "The name of a collection (table, container) within the database.", + brief: 'The name of a collection (table, container) within the database.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "users", + example: 'users', }, [DB_NAME]: { - brief: "The name of the database being accessed.", + brief: 'The name of the database being accessed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "customers", + example: 'customers', deprecation: { - replacement: "db.namespace" + replacement: 'db.namespace', }, aliases: [DB_NAMESPACE], }, [DB_NAMESPACE]: { - brief: "The name of the database being accessed.", + brief: 'The name of the database being accessed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "customers", + example: 'customers', aliases: [DB_NAME], }, [DB_OPERATION]: { - brief: "The name of the operation being executed.", + brief: 'The name of the operation being executed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "SELECT", + example: 'SELECT', deprecation: { - replacement: "db.operation.name" + replacement: 'db.operation.name', }, aliases: [DB_OPERATION_NAME], }, [DB_OPERATION_NAME]: { - brief: "The name of the operation being executed.", + brief: 'The name of the operation being executed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "SELECT", + example: 'SELECT', aliases: [DB_OPERATION], }, [DB_QUERY_PARAMETER_KEY]: { - 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.", + brief: + 'A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, hasDynamicSuffix: true, example: "db.query.parameter.foo='123'", }, [DB_QUERY_SUMMARY]: { - brief: "A database query being executed. Should be paramaterized. The full version of the query is in `db.query.text`.", + brief: + 'A database query being executed. Should be paramaterized. The full version of the query is in `db.query.text`.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "SELECT * FROM users", + example: 'SELECT * FROM users', }, [DB_QUERY_TEXT]: { - brief: "The database query being executed. Should be the full query, not a parameterized version. The parameterized version is in `db.query.summary`.", + brief: + 'The database query being executed. Should be the full query, not a parameterized version. The parameterized version is in `db.query.summary`.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "SELECT * FROM users", + example: 'SELECT * FROM users', aliases: [DB_STATEMENT], }, [DB_REDIS_CONNECTION]: { - brief: "The redis connection name.", + brief: 'The redis connection name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "my-redis-instance", - sdks: ["php-laravel"], + example: 'my-redis-instance', + sdks: ['php-laravel'], }, [DB_REDIS_PARAMETERS]: { - brief: "The array of command parameters given to a redis command.", + brief: 'The array of command parameters given to a redis command.', type: 'string[]', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: ["test","*"], - sdks: ["php-laravel"], + example: ['test', '*'], + sdks: ['php-laravel'], }, [DB_SQL_BINDINGS]: { - brief: "The array of query bindings.", + brief: 'The array of query bindings.', type: 'string[]', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: ["1","foo"], + example: ['1', 'foo'], deprecation: { - replacement: "db.query.parameter.", - reason: "Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.." + replacement: 'db.query.parameter.', + reason: + 'Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter..', }, - sdks: ["php-laravel"], + sdks: ['php-laravel'], }, [DB_STATEMENT]: { - brief: "The database statement being executed.", + brief: 'The database statement being executed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "SELECT * FROM users", + example: 'SELECT * FROM users', deprecation: { - replacement: "db.query.text" + replacement: 'db.query.text', }, aliases: [DB_QUERY_TEXT], }, [DB_SYSTEM]: { - 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.", + brief: + 'An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "postgresql", + example: 'postgresql', deprecation: { - replacement: "db.system.name" + replacement: 'db.system.name', }, aliases: [DB_SYSTEM_NAME], }, [DB_SYSTEM_NAME]: { - 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.", + brief: + 'An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "postgresql", + example: 'postgresql', aliases: [DB_SYSTEM], }, [DB_USER]: { - brief: "The database user.", + brief: 'The database user.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: "fancy_user", + example: 'fancy_user', }, [DEVICE_BRAND]: { - brief: "The brand of the device.", + brief: 'The brand of the device.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Apple", + example: 'Apple', }, [DEVICE_FAMILY]: { - brief: "The family of the device.", + brief: 'The family of the device.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "iPhone", + example: 'iPhone', }, [DEVICE_MODEL]: { - brief: "The model of the device.", + brief: 'The model of the device.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "iPhone 15 Pro Max", + example: 'iPhone 15 Pro Max', }, [ENVIRONMENT]: { - brief: "The sentry environment.", + brief: 'The sentry environment.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "production", + example: 'production', deprecation: { - replacement: "sentry.environment" + replacement: 'sentry.environment', }, aliases: [SENTRY_ENVIRONMENT], }, [ERROR_TYPE]: { - brief: "Describes a class of error the operation ended with.", + brief: 'Describes a class of error the operation ended with.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "timeout", + example: 'timeout', }, [EVENT_ID]: { - brief: "The unique identifier for this event (log record)", + brief: 'The unique identifier for this event (log record)', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1234567890, }, [EVENT_NAME]: { - brief: "The name that uniquely identifies this event (log record)", + brief: 'The name that uniquely identifies this event (log record)', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Process Payload", + example: 'Process Payload', }, [EXCEPTION_ESCAPED]: { - 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.", + brief: + 'SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: true, }, [EXCEPTION_MESSAGE]: { - brief: "The error message.", + brief: 'The error message.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "ENOENT: no such file or directory", + example: 'ENOENT: no such file or directory', }, [EXCEPTION_STACKTRACE]: { - 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.", + brief: + 'A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, 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)", + 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)', }, [EXCEPTION_TYPE]: { - 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.", + brief: + 'The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "OSError", + example: 'OSError', }, [FAAS_COLDSTART]: { - brief: "A boolean that is true if the serverless function is executed for the first time (aka cold-start).", + brief: 'A boolean that is true if the serverless function is executed for the first time (aka cold-start).', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: true, }, [FAAS_CRON]: { - brief: "A string containing the schedule period as Cron Expression.", + brief: 'A string containing the schedule period as Cron Expression.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "0/5 * * * ? *", + example: '0/5 * * * ? *', }, [FAAS_TIME]: { - brief: "A string containing the function invocation time in the ISO 8601 format expressed in UTC.", + brief: 'A string containing the function invocation time in the ISO 8601 format expressed in UTC.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "2020-01-23T13:47:06Z", + example: '2020-01-23T13:47:06Z', }, [FAAS_TRIGGER]: { - brief: "Type of the trigger which caused this function invocation.", + brief: 'Type of the trigger which caused this function invocation.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "timer", + example: 'timer', }, [FLAG_EVALUATION_KEY]: { - 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.", + brief: + 'An instance of a feature flag evaluation. The value of this attribute is the boolean representing the evaluation result. The suffix is the name of the feature flag.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, hasDynamicSuffix: true, - example: "flag.evaluation.is_new_ui=true", + example: 'flag.evaluation.is_new_ui=true', }, [FRAMES_DELAY]: { - 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/).", + brief: + 'The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 5, }, [FRAMES_FROZEN]: { - brief: "The number of frozen frames rendered during the lifetime of the span.", + brief: 'The number of frozen frames rendered during the lifetime of the span.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 3, }, [FRAMES_SLOW]: { - brief: "The number of slow frames rendered during the lifetime of the span.", + brief: 'The number of slow frames rendered during the lifetime of the span.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1, }, [FRAMES_TOTAL]: { - brief: "The number of total frames rendered during the lifetime of the span.", + brief: 'The number of total frames rendered during the lifetime of the span.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 60, }, [FS_ERROR]: { - brief: "The error message of a file system error.", + brief: 'The error message of a file system error.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "ENOENT: no such file or directory", + example: 'ENOENT: no such file or directory', deprecation: { - replacement: "error.type", - reason: "This attribute is not part of the OpenTelemetry specification and error.type fits much better." + replacement: 'error.type', + reason: 'This attribute is not part of the OpenTelemetry specification and error.type fits much better.', }, - sdks: ["javascript-node"], + sdks: ['javascript-node'], }, [GEN_AI_AGENT_NAME]: { - brief: "The name of the agent being used.", + brief: 'The name of the agent being used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "ResearchAssistant", + example: 'ResearchAssistant', }, [GEN_AI_ASSISTANT_MESSAGE]: { - brief: "The assistant message passed to the model.", + brief: 'The assistant message passed to the model.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "get_weather tool call", + example: 'get_weather tool call', }, [GEN_AI_CHOICE]: { brief: "The model's response message.", type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "The weather in Paris is rainy and overcast, with temperatures around 57°F", + example: 'The weather in Paris is rainy and overcast, with temperatures around 57°F', }, [GEN_AI_COST_INPUT_TOKENS]: { - brief: "The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).", + brief: 'The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 123.45, }, [GEN_AI_COST_OUTPUT_TOKENS]: { - brief: "The cost of tokens used for creating the AI output in USD (without reasoning tokens).", + brief: 'The cost of tokens used for creating the AI output in USD (without reasoning tokens).', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 123.45, }, [GEN_AI_COST_TOTAL_TOKENS]: { - brief: "The total cost for the tokens used.", + brief: 'The total cost for the tokens used.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 12.34, }, [GEN_AI_EMBEDDINGS_INPUT]: { - brief: "The input to the embeddings model.", + brief: 'The input to the embeddings model.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, example: "What's the weather in Paris?", }, [GEN_AI_INPUT_MESSAGES]: { - brief: "The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + brief: + 'The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]", + example: '[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]', }, [GEN_AI_OPERATION_NAME]: { - brief: "The name of the operation being performed.", + brief: 'The name of the operation being performed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "chat", + example: 'chat', }, [GEN_AI_OPERATION_TYPE]: { - brief: "The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier.", + brief: + "The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier.", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "tool", + example: 'tool', }, [GEN_AI_OUTPUT_MESSAGES]: { - 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.", + brief: + "The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]", + example: + '[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]', }, [GEN_AI_PIPELINE_NAME]: { - brief: "Name of the AI pipeline or chain being executed.", + brief: 'Name of the AI pipeline or chain being executed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Autofix Pipeline", + example: 'Autofix Pipeline', aliases: [AI_PIPELINE_NAME], }, [GEN_AI_PROMPT]: { - brief: "The input messages sent to the model", + brief: 'The input messages sent to the model', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "[{\"role\": \"user\", \"message\": \"hello\"}]", + example: '[{"role": "user", "message": "hello"}]', deprecation: { - reason: "Deprecated from OTEL, use gen_ai.input.messages with the new format instead." + reason: 'Deprecated from OTEL, use gen_ai.input.messages with the new format instead.', }, }, [GEN_AI_REQUEST_AVAILABLE_TOOLS]: { - brief: "The available tools for the model. It has to be a stringified version of an array of objects.", + brief: 'The available tools for the model. It has to be a stringified version of an array of objects.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]", + example: + '[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]', deprecation: { - replacement: "gen_ai.tool.definitions" + replacement: 'gen_ai.tool.definitions', }, }, [GEN_AI_REQUEST_FREQUENCY_PENALTY]: { - 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.", + brief: + 'Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 0.5, aliases: [AI_FREQUENCY_PENALTY], }, [GEN_AI_REQUEST_MAX_TOKENS]: { - brief: "The maximum number of tokens to generate in the response.", + brief: 'The maximum number of tokens to generate in the response.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 2048, }, [GEN_AI_REQUEST_MESSAGES]: { - brief: "The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + brief: + 'The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]", + 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: { - replacement: "gen_ai.input.messages" + replacement: 'gen_ai.input.messages', }, aliases: [AI_INPUT_MESSAGES], }, [GEN_AI_REQUEST_MODEL]: { - brief: "The model identifier being used for the request.", + brief: 'The model identifier being used for the request.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "gpt-4-turbo-preview", + example: 'gpt-4-turbo-preview', }, [GEN_AI_REQUEST_PRESENCE_PENALTY]: { - 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.", + brief: + 'Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 0.5, aliases: [AI_PRESENCE_PENALTY], }, [GEN_AI_REQUEST_SEED]: { - brief: "The seed, ideally models given the same seed and same other parameters will produce the exact same output.", + brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "1234567890", + example: '1234567890', aliases: [AI_SEED], }, [GEN_AI_REQUEST_TEMPERATURE]: { - brief: "For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", + brief: + 'For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 0.1, aliases: [AI_TEMPERATURE], }, [GEN_AI_REQUEST_TOP_K]: { - 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).", + brief: + 'Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 35, aliases: [AI_TOP_K], }, [GEN_AI_REQUEST_TOP_P]: { - 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).", + brief: + 'Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 0.7, aliases: [AI_TOP_P], }, [GEN_AI_RESPONSE_FINISH_REASONS]: { - brief: "The reason why the model stopped generating.", + brief: 'The reason why the model stopped generating.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "COMPLETE", + example: 'COMPLETE', aliases: [AI_FINISH_REASON], }, [GEN_AI_RESPONSE_ID]: { - brief: "Unique identifier for the completion.", + brief: 'Unique identifier for the completion.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "gen_123abc", + example: 'gen_123abc', aliases: [AI_GENERATION_ID], }, [GEN_AI_RESPONSE_MODEL]: { - brief: "The vendor-specific ID of the model used.", + brief: 'The vendor-specific ID of the model used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "gpt-4", + example: 'gpt-4', aliases: [AI_MODEL_ID], }, [GEN_AI_RESPONSE_STREAMING]: { brief: "Whether or not the AI model call's response was streamed back asynchronously", type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, aliases: [AI_STREAMING], }, [GEN_AI_RESPONSE_TEXT]: { - brief: "The model's response text messages. It has to be a stringified version of an array of response text messages.", + brief: + "The model's response text messages. It has to be a stringified version of an array of response text messages.", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: 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\"]", + 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: { - replacement: "gen_ai.output.messages" + replacement: 'gen_ai.output.messages', }, }, [GEN_AI_RESPONSE_TOKENS_PER_SECOND]: { - brief: "The total output tokens per seconds throughput", + brief: 'The total output tokens per seconds throughput', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 12345.67, @@ -10517,1631 +10973,1657 @@ export const ATTRIBUTE_METADATA: Record = { brief: "The tool calls in the model's response. It has to be a stringified version of an array of objects.", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", + example: '[{"name": "get_weather", "arguments": {"location": "Paris"}}]', deprecation: { - replacement: "gen_ai.output.messages" + replacement: 'gen_ai.output.messages', }, }, [GEN_AI_SYSTEM]: { - brief: "The provider of the model.", + brief: 'The provider of the model.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "openai", + example: 'openai', aliases: [AI_MODEL_PROVIDER], }, [GEN_AI_SYSTEM_INSTRUCTIONS]: { - brief: "The system instructions passed to the model.", + brief: 'The system instructions passed to the model.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "You are a helpful assistant", + example: 'You are a helpful assistant', }, [GEN_AI_SYSTEM_MESSAGE]: { - brief: "The system instructions passed to the model.", + brief: 'The system instructions passed to the model.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "You are a helpful assistant", + example: 'You are a helpful assistant', deprecation: { - replacement: "gen_ai.system_instructions" + replacement: 'gen_ai.system_instructions', }, }, [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.", + brief: 'The arguments of the tool call. It has to be a stringified version of the arguments to the tool.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "{\"location\": \"Paris\"}", + example: '{"location": "Paris"}', }, [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.", + brief: 'The result of the tool call. It has to be a stringified version of the result of the tool.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "rainy, 57°F", + example: 'rainy, 57°F', }, [GEN_AI_TOOL_DEFINITIONS]: { - brief: "The list of source system tool definitions available to the GenAI agent or model.", + brief: 'The list of source system tool definitions available to the GenAI agent or model.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "[{\"type\": \"function\", \"name\": \"get_current_weather\", \"description\": \"Get the current weather in a given location\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"The city and state, e.g. San Francisco, CA\"}, \"unit\": {\"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"]}}, \"required\": [\"location\", \"unit\"]}}]", + example: + '[{"type": "function", "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "The city and state, e.g. San Francisco, CA"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["location", "unit"]}}]', }, [GEN_AI_TOOL_DESCRIPTION]: { - brief: "The description of the tool being used.", + brief: 'The description of the tool being used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "Searches the web for current information about a topic", + example: 'Searches the web for current information about a topic', }, [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.", + brief: 'The input of the tool being used. It has to be a stringified version of the input to the tool.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "{\"location\": \"Paris\"}", + example: '{"location": "Paris"}', }, [GEN_AI_TOOL_MESSAGE]: { - brief: "The response from a tool or function call passed to the model.", + brief: 'The response from a tool or function call passed to the model.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "rainy, 57°F", + example: 'rainy, 57°F', }, [GEN_AI_TOOL_NAME]: { - brief: "Name of the tool utilized by the agent.", + brief: 'Name of the tool utilized by the agent.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "Flights", + example: 'Flights', aliases: [AI_FUNCTION_CALL], }, [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.", + brief: 'The output of the tool being used. It has to be a stringified version of the output of the tool.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "rainy, 57°F", + example: 'rainy, 57°F', }, [GEN_AI_TOOL_TYPE]: { - brief: "The type of tool being used.", + brief: 'The type of tool being used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "function", + example: 'function', }, [GEN_AI_USAGE_COMPLETION_TOKENS]: { - brief: "The number of tokens used in the GenAI response (completion).", + brief: 'The number of tokens used in the GenAI response (completion).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 10, deprecation: { - replacement: "gen_ai.usage.output_tokens" + replacement: 'gen_ai.usage.output_tokens', }, aliases: [AI_COMPLETION_TOKENS_USED, GEN_AI_USAGE_OUTPUT_TOKENS], }, [GEN_AI_USAGE_INPUT_TOKENS]: { - brief: "The number of tokens used to process the AI input (prompt) without cached input tokens.", + brief: 'The number of tokens used to process the AI input (prompt) without cached input tokens.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 10, aliases: [AI_PROMPT_TOKENS_USED, GEN_AI_USAGE_PROMPT_TOKENS], }, [GEN_AI_USAGE_INPUT_TOKENS_CACHED]: { - brief: "The number of cached tokens used to process the AI input (prompt).", + brief: 'The number of cached tokens used to process the AI input (prompt).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 50, }, [GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE]: { - brief: "The number of tokens written to the cache when processing the AI input (prompt).", + brief: 'The number of tokens written to the cache when processing the AI input (prompt).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 100, }, [GEN_AI_USAGE_OUTPUT_TOKENS]: { - brief: "The number of tokens used for creating the AI output (without reasoning tokens).", + brief: 'The number of tokens used for creating the AI output (without reasoning tokens).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 10, aliases: [AI_COMPLETION_TOKENS_USED, GEN_AI_USAGE_COMPLETION_TOKENS], }, [GEN_AI_USAGE_OUTPUT_TOKENS_REASONING]: { - brief: "The number of tokens used for reasoning to create the AI output.", + brief: 'The number of tokens used for reasoning to create the AI output.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 75, }, [GEN_AI_USAGE_PROMPT_TOKENS]: { - brief: "The number of tokens used in the GenAI input (prompt).", + brief: 'The number of tokens used in the GenAI input (prompt).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 20, deprecation: { - replacement: "gen_ai.usage.input_tokens" + replacement: 'gen_ai.usage.input_tokens', }, aliases: [AI_PROMPT_TOKENS_USED, GEN_AI_USAGE_INPUT_TOKENS], }, [GEN_AI_USAGE_TOTAL_TOKENS]: { - brief: "The total number of tokens used to process the prompt. (input tokens plus output todkens)", + brief: 'The total number of tokens used to process the prompt. (input tokens plus output todkens)', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 20, aliases: [AI_TOTAL_TOKENS_USED], }, [GEN_AI_USER_MESSAGE]: { - brief: "The user message passed to the model.", + brief: 'The user message passed to the model.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, example: "What's the weather in Paris?", }, [GRAPHQL_OPERATION_NAME]: { - brief: "The name of the operation being executed.", + brief: 'The name of the operation being executed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "findBookById", + example: 'findBookById', }, [GRAPHQL_OPERATION_TYPE]: { - brief: "The type of the operation being executed.", + brief: 'The type of the operation being executed.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "query", + example: 'query', }, [HTTP_CLIENT_IP]: { - brief: "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + brief: + 'Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: "example.com", + example: 'example.com', deprecation: { - replacement: "client.address" + replacement: 'client.address', }, aliases: [CLIENT_ADDRESS], }, [HTTP_DECODED_RESPONSE_CONTENT_LENGTH]: { - brief: "The decoded body size of the response (in bytes).", + brief: 'The decoded body size of the response (in bytes).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 456, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_FLAVOR]: { - brief: "The actual version of the protocol used for network communication.", + brief: 'The actual version of the protocol used for network communication.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "1.1", + example: '1.1', deprecation: { - replacement: "network.protocol.version" + replacement: 'network.protocol.version', }, aliases: [NETWORK_PROTOCOL_VERSION, NET_PROTOCOL_VERSION], }, [HTTP_FRAGMENT]: { - brief: "The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", + brief: + 'The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "#details", + example: '#details', }, [HTTP_HOST]: { - brief: "The domain name.", + brief: 'The domain name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "example.com", + example: 'example.com', deprecation: { - replacement: "server.address", - reason: "Deprecated, use one of `server.address` or `client.address`, depending on the usage" + replacement: 'server.address', + 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], }, [HTTP_METHOD]: { - brief: "The HTTP method used.", + brief: 'The HTTP method used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "GET", + example: 'GET', deprecation: { - replacement: "http.request.method" + replacement: 'http.request.method', }, aliases: [HTTP_REQUEST_METHOD], }, [HTTP_QUERY]: { - brief: "The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.", + brief: + 'The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.', type: 'string', pii: { isPii: 'maybe', - reason: "Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." + reason: + 'Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.', }, isInOtel: false, - example: "?foo=bar&bar=baz", + example: '?foo=bar&bar=baz', }, [HTTP_REQUEST_CONNECTION_END]: { - 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.", + brief: + 'The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.15, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_CONNECT_START]: { - brief: "The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.", + brief: + 'The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.111, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_DOMAIN_LOOKUP_END]: { - brief: "The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", + brief: + 'The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.201, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_DOMAIN_LOOKUP_START]: { - brief: "The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", + brief: + 'The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.322, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_FETCH_START]: { - brief: "The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", + brief: 'The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.389, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_HEADER_KEY]: { - brief: "HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", + brief: + 'HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.', type: 'string[]', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, hasDynamicSuffix: true, example: "http.request.header.custom-header=['foo', 'bar']", }, [HTTP_REQUEST_METHOD]: { - brief: "The HTTP method used.", + brief: 'The HTTP method used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "GET", + example: 'GET', aliases: [METHOD, HTTP_METHOD], }, [HTTP_REQUEST_REDIRECT_END]: { - brief: "The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", + brief: + 'The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829558.502, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_REDIRECT_START]: { - brief: "The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", + brief: 'The UNIX timestamp representing the start time of the fetch which that initiates the redirect.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.495, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_REQUEST_START]: { - 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.", + brief: + 'The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.51, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_RESEND_COUNT]: { - brief: "The ordinal number of request resending attempt (for any reason, including redirects).", + brief: 'The ordinal number of request resending attempt (for any reason, including redirects).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 2, }, [HTTP_REQUEST_RESPONSE_END]: { - 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.", + brief: + 'The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.89, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_RESPONSE_START]: { - 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.", + brief: + 'The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.7, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_SECURE_CONNECTION_START]: { - 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.", + brief: + 'The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829555.73, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_TIME_TO_FIRST_BYTE]: { - 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", + brief: + "The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests", type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1.032, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_REQUEST_WORKER_START]: { - 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.", + brief: + 'The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732829553.68, - sdks: ["javascript-browser"], + sdks: ['javascript-browser'], }, [HTTP_RESPONSE_BODY_SIZE]: { - brief: "The encoded body size of the response (in bytes).", + brief: 'The encoded body size of the response (in bytes).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 123, aliases: [HTTP_RESPONSE_CONTENT_LENGTH, HTTP_RESPONSE_HEADER_CONTENT_LENGTH], }, [HTTP_RESPONSE_CONTENT_LENGTH]: { - brief: "The encoded body size of the response (in bytes).", + brief: 'The encoded body size of the response (in bytes).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 123, deprecation: { - replacement: "http.response.body.size" + replacement: 'http.response.body.size', }, aliases: [HTTP_RESPONSE_BODY_SIZE, HTTP_RESPONSE_HEADER_CONTENT_LENGTH], }, [HTTP_RESPONSE_HEADER_CONTENT_LENGTH]: { - brief: "The size of the message body sent to the recipient (in bytes)", + brief: 'The size of the message body sent to the recipient (in bytes)', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, example: "http.response.header.custom-header=['foo', 'bar']", aliases: [HTTP_RESPONSE_CONTENT_LENGTH, HTTP_RESPONSE_BODY_SIZE], }, [HTTP_RESPONSE_HEADER_KEY]: { - brief: "HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", + brief: + 'HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.', type: 'string[]', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, hasDynamicSuffix: true, example: "http.response.header.custom-header=['foo', 'bar']", }, [HTTP_RESPONSE_SIZE]: { - brief: "The transfer size of the response (in bytes).", + brief: 'The transfer size of the response (in bytes).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 456, aliases: [HTTP_RESPONSE_TRANSFER_SIZE], }, [HTTP_RESPONSE_STATUS_CODE]: { - brief: "The status code of the HTTP response.", + brief: 'The status code of the HTTP response.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 404, aliases: [HTTP_STATUS_CODE], }, [HTTP_RESPONSE_TRANSFER_SIZE]: { - brief: "The transfer size of the response (in bytes).", + brief: 'The transfer size of the response (in bytes).', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 456, deprecation: { - replacement: "http.response.size" + replacement: 'http.response.size', }, aliases: [HTTP_RESPONSE_SIZE], }, [HTTP_ROUTE]: { - brief: "The matched route, that is, the path template in the format used by the respective server framework.", + brief: 'The matched route, that is, the path template in the format used by the respective server framework.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "/users/:id", + example: '/users/:id', aliases: [URL_TEMPLATE], }, [HTTP_SCHEME]: { - brief: "The URI scheme component identifying the used protocol.", + brief: 'The URI scheme component identifying the used protocol.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "https", + example: 'https', deprecation: { - replacement: "url.scheme" + replacement: 'url.scheme', }, aliases: [URL_SCHEME], }, [HTTP_SERVER_NAME]: { - brief: "The server domain name", + brief: 'The server domain name', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "example.com", + example: 'example.com', deprecation: { - replacement: "server.address" + replacement: 'server.address', }, aliases: [SERVER_ADDRESS, NET_HOST_NAME, HTTP_HOST], }, [HTTP_STATUS_CODE]: { - brief: "The status code of the HTTP response.", + brief: 'The status code of the HTTP response.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 404, deprecation: { - replacement: "http.response.status_code" + replacement: 'http.response.status_code', }, aliases: [HTTP_RESPONSE_STATUS_CODE], }, [HTTP_TARGET]: { - brief: "The pathname and query string of the URL.", + brief: 'The pathname and query string of the URL.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "/test?foo=bar#buzz", + example: '/test?foo=bar#buzz', deprecation: { - replacement: "url.path", - reason: "This attribute is being deprecated in favor of url.path and url.query" + replacement: 'url.path', + reason: 'This attribute is being deprecated in favor of url.path and url.query', }, }, [HTTP_URL]: { - brief: "The URL of the resource that was fetched.", + brief: 'The URL of the resource that was fetched.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "https://example.com/test?foo=bar#buzz", + example: 'https://example.com/test?foo=bar#buzz', deprecation: { - replacement: "url.full" + replacement: 'url.full', }, aliases: [URL_FULL, URL], }, [HTTP_USER_AGENT]: { - brief: "Value of the HTTP User-Agent header sent by the client.", + brief: 'Value of the HTTP User-Agent header sent by the client.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: 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", + 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: { - replacement: "user_agent.original" + replacement: 'user_agent.original', }, aliases: [USER_AGENT_ORIGINAL], }, [ID]: { - brief: "A unique identifier for the span.", + brief: 'A unique identifier for the span.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "f47ac10b58cc4372a5670e02b2c3d479", - sdks: ["php-laravel"], + example: 'f47ac10b58cc4372a5670e02b2c3d479', + sdks: ['php-laravel'], }, [JVM_GC_ACTION]: { - brief: "Name of the garbage collector action.", + brief: 'Name of the garbage collector action.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "end of minor GC", + example: 'end of minor GC', }, [JVM_GC_NAME]: { - brief: "Name of the garbage collector.", + brief: 'Name of the garbage collector.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "G1 Young Generation", + example: 'G1 Young Generation', }, [JVM_MEMORY_POOL_NAME]: { - brief: "Name of the memory pool.", + brief: 'Name of the memory pool.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "G1 Old Gen", + example: 'G1 Old Gen', }, [JVM_MEMORY_TYPE]: { - brief: "Name of the memory pool.", + brief: 'Name of the memory pool.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "G1 Old Gen", + example: 'G1 Old Gen', }, [JVM_THREAD_DAEMON]: { - brief: "Whether the thread is daemon or not.", + brief: 'Whether the thread is daemon or not.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: true, }, [JVM_THREAD_STATE]: { - brief: "State of the thread.", + brief: 'State of the thread.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "blocked", + example: 'blocked', }, [LCP_ELEMENT]: { - brief: "The dom element responsible for the largest contentful paint.", + brief: 'The dom element responsible for the largest contentful paint.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "img", + example: 'img', }, [LCP_ID]: { - brief: "The id of the dom element responsible for the largest contentful paint.", + brief: 'The id of the dom element responsible for the largest contentful paint.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "#hero", + example: '#hero', }, [LCP_SIZE]: { - brief: "The size of the largest contentful paint element.", + brief: 'The size of the largest contentful paint element.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1234, }, [LCP_URL]: { - brief: "The url of the dom element responsible for the largest contentful paint.", + brief: 'The url of the dom element responsible for the largest contentful paint.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "https://example.com", + example: 'https://example.com', }, [LOGGER_NAME]: { - brief: "The name of the logger that generated this event.", + brief: 'The name of the logger that generated this event.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "myLogger", + example: 'myLogger', }, [MCP_CANCELLED_REASON]: { - brief: "Reason for the cancellation of an MCP operation.", + brief: 'Reason for the cancellation of an MCP operation.', type: 'string', pii: { isPii: 'maybe', - reason: "Cancellation reasons may contain user-specific or sensitive information" + reason: 'Cancellation reasons may contain user-specific or sensitive information', }, isInOtel: false, - example: "User cancelled the request", + example: 'User cancelled the request', }, [MCP_CANCELLED_REQUEST_ID]: { - brief: "Request ID of the cancelled MCP operation.", + brief: 'Request ID of the cancelled MCP operation.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "123", + example: '123', }, [MCP_CLIENT_NAME]: { - brief: "Name of the MCP client application.", + brief: 'Name of the MCP client application.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "claude-desktop", + example: 'claude-desktop', }, [MCP_CLIENT_TITLE]: { - brief: "Display title of the MCP client application.", + brief: 'Display title of the MCP client application.', type: 'string', pii: { isPii: 'maybe', - reason: "Client titles may reveal user-specific application configurations or custom setups" + reason: 'Client titles may reveal user-specific application configurations or custom setups', }, isInOtel: false, - example: "Claude Desktop", + example: 'Claude Desktop', }, [MCP_CLIENT_VERSION]: { - brief: "Version of the MCP client application.", + brief: 'Version of the MCP client application.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "1.0.0", + example: '1.0.0', }, [MCP_LIFECYCLE_PHASE]: { - brief: "Lifecycle phase indicator for MCP operations.", + brief: 'Lifecycle phase indicator for MCP operations.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "initialization_complete", + example: 'initialization_complete', }, [MCP_LOGGING_DATA_TYPE]: { - brief: "Data type of the logged message content.", + brief: 'Data type of the logged message content.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "string", + example: 'string', }, [MCP_LOGGING_LEVEL]: { - brief: "Log level for MCP logging operations.", + brief: 'Log level for MCP logging operations.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "info", + example: 'info', }, [MCP_LOGGING_LOGGER]: { - brief: "Logger name for MCP logging operations.", + brief: 'Logger name for MCP logging operations.', type: 'string', pii: { isPii: 'maybe', - reason: "Logger names may be user-defined and could contain sensitive information" + reason: 'Logger names may be user-defined and could contain sensitive information', }, isInOtel: false, - example: "mcp_server", + example: 'mcp_server', }, [MCP_LOGGING_MESSAGE]: { - brief: "Log message content from MCP logging operations.", + brief: 'Log message content from MCP logging operations.', type: 'string', pii: { isPii: 'true', - reason: "Log messages can contain user data" + reason: 'Log messages can contain user data', }, isInOtel: false, - example: "Tool execution completed successfully", + example: 'Tool execution completed successfully', }, [MCP_METHOD_NAME]: { - brief: "The name of the MCP request or notification method being called.", + brief: 'The name of the MCP request or notification method being called.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "tools/call", + example: 'tools/call', }, [MCP_PROGRESS_CURRENT]: { - brief: "Current progress value of an MCP operation.", + brief: 'Current progress value of an MCP operation.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 50, }, [MCP_PROGRESS_MESSAGE]: { - brief: "Progress message describing the current state of an MCP operation.", + brief: 'Progress message describing the current state of an MCP operation.', type: 'string', pii: { isPii: 'maybe', - reason: "Progress messages may contain user-specific or sensitive information" + reason: 'Progress messages may contain user-specific or sensitive information', }, isInOtel: false, - example: "Processing 50 of 100 items", + example: 'Processing 50 of 100 items', }, [MCP_PROGRESS_PERCENTAGE]: { - brief: "Calculated progress percentage of an MCP operation. Computed from current/total * 100.", + brief: 'Calculated progress percentage of an MCP operation. Computed from current/total * 100.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 50, }, [MCP_PROGRESS_TOKEN]: { - brief: "Token for tracking progress of an MCP operation.", + brief: 'Token for tracking progress of an MCP operation.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "progress-token-123", + example: 'progress-token-123', }, [MCP_PROGRESS_TOTAL]: { - brief: "Total progress target value of an MCP operation.", + brief: 'Total progress target value of an MCP operation.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 100, }, [MCP_PROMPT_NAME]: { - brief: "Name of the MCP prompt template being used.", + brief: 'Name of the MCP prompt template being used.', type: 'string', pii: { isPii: 'maybe', - reason: "Prompt names may reveal user behavior patterns or sensitive operations" + reason: 'Prompt names may reveal user behavior patterns or sensitive operations', }, isInOtel: false, - example: "summarize", + example: 'summarize', }, [MCP_PROMPT_RESULT_DESCRIPTION]: { - brief: "Description of the prompt result.", + brief: 'Description of the prompt result.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "A summary of the requested information", + example: 'A summary of the requested information', }, [MCP_PROMPT_RESULT_MESSAGE_CONTENT]: { - brief: "Content of the message in the prompt result. Used for single message results only.", + brief: 'Content of the message in the prompt result. Used for single message results only.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "Please provide a summary of the document", + example: 'Please provide a summary of the document', }, [MCP_PROMPT_RESULT_MESSAGE_COUNT]: { - brief: "Number of messages in the prompt result.", + brief: 'Number of messages in the prompt result.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 3, }, [MCP_PROMPT_RESULT_MESSAGE_ROLE]: { - brief: "Role of the message in the prompt result. Used for single message results only.", + brief: 'Role of the message in the prompt result. Used for single message results only.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "user", + example: 'user', }, [MCP_PROTOCOL_READY]: { - brief: "Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", + brief: 'Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1, }, [MCP_PROTOCOL_VERSION]: { - brief: "MCP protocol version used in the session.", + brief: 'MCP protocol version used in the session.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "2024-11-05", + example: '2024-11-05', }, [MCP_REQUEST_ARGUMENT_KEY]: { - 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.", + brief: + 'MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value.', type: 'string', pii: { isPii: 'true', - reason: "Arguments contain user input" + reason: 'Arguments contain user input', }, isInOtel: false, hasDynamicSuffix: true, example: "mcp.request.argument.query='weather in Paris'", }, [MCP_REQUEST_ARGUMENT_NAME]: { - brief: "Name argument from prompts/get MCP request.", + brief: 'Name argument from prompts/get MCP request.', type: 'string', pii: { isPii: 'true', - reason: "Prompt names can contain user input" + reason: 'Prompt names can contain user input', }, isInOtel: false, - example: "summarize", + example: 'summarize', }, [MCP_REQUEST_ARGUMENT_URI]: { - brief: "URI argument from resources/read MCP request.", + brief: 'URI argument from resources/read MCP request.', type: 'string', pii: { isPii: 'true', - reason: "URIs can contain user file paths" + reason: 'URIs can contain user file paths', }, isInOtel: false, - example: "file:///path/to/resource", + example: 'file:///path/to/resource', }, [MCP_REQUEST_ID]: { - brief: "JSON-RPC request identifier for the MCP request. Unique within the MCP session.", + brief: 'JSON-RPC request identifier for the MCP request. Unique within the MCP session.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "1", + example: '1', }, [MCP_RESOURCE_PROTOCOL]: { - brief: "Protocol of the resource URI being accessed, extracted from the URI.", + brief: 'Protocol of the resource URI being accessed, extracted from the URI.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "file", + example: 'file', }, [MCP_RESOURCE_URI]: { - brief: "The resource URI being accessed in an MCP operation.", + brief: 'The resource URI being accessed in an MCP operation.', type: 'string', pii: { isPii: 'true', - reason: "URIs can contain sensitive file paths" + reason: 'URIs can contain sensitive file paths', }, isInOtel: false, - example: "file:///path/to/file.txt", + example: 'file:///path/to/file.txt', }, [MCP_SERVER_NAME]: { - brief: "Name of the MCP server application.", + brief: 'Name of the MCP server application.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "sentry-mcp-server", + example: 'sentry-mcp-server', }, [MCP_SERVER_TITLE]: { - brief: "Display title of the MCP server application.", + brief: 'Display title of the MCP server application.', type: 'string', pii: { isPii: 'maybe', - reason: "Server titles may reveal user-specific application configurations or custom setups" + reason: 'Server titles may reveal user-specific application configurations or custom setups', }, isInOtel: false, - example: "Sentry MCP Server", + example: 'Sentry MCP Server', }, [MCP_SERVER_VERSION]: { - brief: "Version of the MCP server application.", + brief: 'Version of the MCP server application.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "0.1.0", + example: '0.1.0', }, [MCP_SESSION_ID]: { - brief: "Identifier for the MCP session.", + brief: 'Identifier for the MCP session.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "550e8400-e29b-41d4-a716-446655440000", + example: '550e8400-e29b-41d4-a716-446655440000', }, [MCP_TOOL_NAME]: { - brief: "Name of the MCP tool being called.", + brief: 'Name of the MCP tool being called.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "calculator", + example: 'calculator', }, [MCP_TOOL_RESULT_CONTENT]: { - brief: "The content of the tool result.", + brief: 'The content of the tool result.', type: 'string', pii: { isPii: 'true', - reason: "Tool results can contain user data" + reason: 'Tool results can contain user data', }, isInOtel: false, - example: "{\"output\": \"rainy\", \"toolCallId\": \"1\"}", + example: '{"output": "rainy", "toolCallId": "1"}', }, [MCP_TOOL_RESULT_CONTENT_COUNT]: { - brief: "Number of content items in the tool result.", + brief: 'Number of content items in the tool result.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1, }, [MCP_TOOL_RESULT_IS_ERROR]: { - brief: "Whether a tool execution resulted in an error.", + brief: 'Whether a tool execution resulted in an error.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: false, }, [MCP_TRANSPORT]: { - brief: "Transport method used for MCP communication.", + brief: 'Transport method used for MCP communication.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "stdio", + example: 'stdio', }, [MDC_KEY]: { - 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.", + brief: + "Attributes from the Mapped Diagnostic Context (MDC) present at the moment the log record was created. The MDC is supported by all the most popular logging solutions in the Java ecosystem, and it's usually implemented as a thread-local map that stores context for e.g. a specific request.", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, hasDynamicSuffix: true, example: "mdc.some_key='some_value'", - sdks: ["java","java.logback","java.jul","java.log4j2"], + sdks: ['java', 'java.logback', 'java.jul', 'java.log4j2'], }, [MESSAGING_DESTINATION_CONNECTION]: { - brief: "The message destination connection.", + brief: 'The message destination connection.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "BestTopic", - sdks: ["php-laravel"], + example: 'BestTopic', + sdks: ['php-laravel'], }, [MESSAGING_DESTINATION_NAME]: { - brief: "The message destination name.", + brief: 'The message destination name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "BestTopic", - sdks: ["php-laravel"], + example: 'BestTopic', + sdks: ['php-laravel'], }, [MESSAGING_MESSAGE_BODY_SIZE]: { - brief: "The size of the message body in bytes.", + brief: 'The size of the message body in bytes.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 839, - sdks: ["php-laravel"], + sdks: ['php-laravel'], }, [MESSAGING_MESSAGE_ENVELOPE_SIZE]: { - brief: "The size of the message body and metadata in bytes.", + brief: 'The size of the message body and metadata in bytes.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 1045, - sdks: ["php-laravel"], + sdks: ['php-laravel'], }, [MESSAGING_MESSAGE_ID]: { - brief: "A value used by the messaging system as an identifier for the message, represented as a string.", + brief: 'A value used by the messaging system as an identifier for the message, represented as a string.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "f47ac10b58cc4372a5670e02b2c3d479", - sdks: ["php-laravel"], + example: 'f47ac10b58cc4372a5670e02b2c3d479', + sdks: ['php-laravel'], }, [MESSAGING_MESSAGE_RECEIVE_LATENCY]: { - brief: "The latency between when the message was published and received.", + brief: 'The latency between when the message was published and received.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1732847252, - sdks: ["php-laravel"], + sdks: ['php-laravel'], }, [MESSAGING_MESSAGE_RETRY_COUNT]: { - brief: "The amount of attempts to send the message.", + brief: 'The amount of attempts to send the message.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 2, - sdks: ["php-laravel"], + sdks: ['php-laravel'], }, [MESSAGING_OPERATION_TYPE]: { - brief: "A string identifying the type of the messaging operation", + brief: 'A string identifying the type of the messaging operation', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "create", + example: 'create', }, [MESSAGING_SYSTEM]: { - brief: "The messaging system as identified by the client instrumentation.", + brief: 'The messaging system as identified by the client instrumentation.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "activemq", - sdks: ["php-laravel"], + example: 'activemq', + sdks: ['php-laravel'], }, [METHOD]: { - brief: "The HTTP method used.", + brief: 'The HTTP method used.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "GET", + example: 'GET', deprecation: { - replacement: "http.request.method" + replacement: 'http.request.method', }, aliases: [HTTP_REQUEST_METHOD], - sdks: ["javascript-browser","javascript-node"], + sdks: ['javascript-browser', 'javascript-node'], }, [NAVIGATION_TYPE]: { - brief: "The type of navigation done by a client-side router.", + brief: 'The type of navigation done by a client-side router.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "router.push", + example: 'router.push', }, [NEL_ELAPSED_TIME]: { - brief: "The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.", + brief: + 'The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 100, }, [NEL_PHASE]: { - brief: "If request failed, the phase of its network error. If request succeeded, \"application\".", + brief: 'If request failed, the phase of its network error. If request succeeded, "application".', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "application", + example: 'application', }, [NEL_REFERRER]: { brief: "request's referrer, as determined by the referrer policy associated with its client.", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "https://example.com/foo?bar=baz", + example: 'https://example.com/foo?bar=baz', }, [NEL_SAMPLING_FUNCTION]: { - brief: "The sampling function used to determine if the request should be sampled.", + brief: 'The sampling function used to determine if the request should be sampled.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 0.5, }, [NEL_TYPE]: { - brief: "If request failed, the type of its network error. If request succeeded, \"ok\".", + brief: 'If request failed, the type of its network error. If request succeeded, "ok".', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "dns.unreachable", + example: 'dns.unreachable', }, [NETWORK_LOCAL_ADDRESS]: { - brief: "Local address of the network connection - IP address or Unix domain socket name.", + brief: 'Local address of the network connection - IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "10.1.2.80", + example: '10.1.2.80', aliases: [NET_HOST_IP, NET_SOCK_HOST_ADDR], }, [NETWORK_LOCAL_PORT]: { - brief: "Local port number of the network connection.", + brief: 'Local port number of the network connection.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 65400, aliases: [NET_SOCK_HOST_PORT], }, [NETWORK_PEER_ADDRESS]: { - brief: "Peer address of the network connection - IP address or Unix domain socket name.", + brief: 'Peer address of the network connection - IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "10.1.2.80", + example: '10.1.2.80', aliases: [NET_PEER_IP, NET_SOCK_PEER_ADDR], }, [NETWORK_PEER_PORT]: { - brief: "Peer port number of the network connection.", + brief: 'Peer port number of the network connection.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 65400, }, [NETWORK_PROTOCOL_NAME]: { - brief: "OSI application layer or non-OSI equivalent.", + brief: 'OSI application layer or non-OSI equivalent.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "http", + example: 'http', aliases: [NET_PROTOCOL_NAME], }, [NETWORK_PROTOCOL_VERSION]: { - brief: "The actual version of the protocol used for network communication.", + brief: 'The actual version of the protocol used for network communication.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "1.1", + example: '1.1', aliases: [HTTP_FLAVOR, NET_PROTOCOL_VERSION], }, [NETWORK_TRANSPORT]: { - brief: "OSI transport layer or inter-process communication method.", + brief: 'OSI transport layer or inter-process communication method.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "tcp", + example: 'tcp', aliases: [NET_TRANSPORT], }, [NETWORK_TYPE]: { - brief: "OSI network layer or non-OSI equivalent.", + brief: 'OSI network layer or non-OSI equivalent.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "ipv4", + example: 'ipv4', }, [NET_HOST_IP]: { - brief: "Local address of the network connection - IP address or Unix domain socket name.", + brief: 'Local address of the network connection - IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "192.168.0.1", + example: '192.168.0.1', deprecation: { - replacement: "network.local.address" + replacement: 'network.local.address', }, aliases: [NETWORK_LOCAL_ADDRESS, NET_SOCK_HOST_ADDR], }, [NET_HOST_NAME]: { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "example.com", + example: 'example.com', deprecation: { - replacement: "server.address" + replacement: 'server.address', }, aliases: [SERVER_ADDRESS, HTTP_SERVER_NAME, HTTP_HOST], }, [NET_HOST_PORT]: { - brief: "Server port number.", + brief: 'Server port number.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 1337, deprecation: { - replacement: "server.port" + replacement: 'server.port', }, aliases: [SERVER_PORT], }, [NET_PEER_IP]: { - brief: "Peer address of the network connection - IP address or Unix domain socket name.", + brief: 'Peer address of the network connection - IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "192.168.0.1", + example: '192.168.0.1', deprecation: { - replacement: "network.peer.address" + replacement: 'network.peer.address', }, aliases: [NETWORK_PEER_ADDRESS, NET_SOCK_PEER_ADDR], }, [NET_PEER_NAME]: { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "example.com", + example: 'example.com', deprecation: { - replacement: "server.address", - reason: "Deprecated, use server.address on client spans and client.address on server spans." + replacement: 'server.address', + reason: 'Deprecated, use server.address on client spans and client.address on server spans.', }, }, [NET_PEER_PORT]: { - brief: "Peer port number.", + brief: 'Peer port number.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 1337, deprecation: { - replacement: "server.port", - reason: "Deprecated, use server.port on client spans and client.port on server spans." + replacement: 'server.port', + reason: 'Deprecated, use server.port on client spans and client.port on server spans.', }, }, [NET_PROTOCOL_NAME]: { - brief: "OSI application layer or non-OSI equivalent.", + brief: 'OSI application layer or non-OSI equivalent.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "http", + example: 'http', deprecation: { - replacement: "network.protocol.name" + replacement: 'network.protocol.name', }, aliases: [NETWORK_PROTOCOL_NAME], }, [NET_PROTOCOL_VERSION]: { - brief: "The actual version of the protocol used for network communication.", + brief: 'The actual version of the protocol used for network communication.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "1.1", + example: '1.1', deprecation: { - replacement: "network.protocol.version" + replacement: 'network.protocol.version', }, aliases: [NETWORK_PROTOCOL_VERSION, HTTP_FLAVOR], }, [NET_SOCK_FAMILY]: { - brief: "OSI transport and network layer", + brief: 'OSI transport and network layer', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "inet", + example: 'inet', deprecation: { - replacement: "network.transport", - reason: "Deprecated, use network.transport and network.type." + replacement: 'network.transport', + reason: 'Deprecated, use network.transport and network.type.', }, }, [NET_SOCK_HOST_ADDR]: { - brief: "Local address of the network connection mapping to Unix domain socket name.", + brief: 'Local address of the network connection mapping to Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "/var/my.sock", + example: '/var/my.sock', deprecation: { - replacement: "network.local.address" + replacement: 'network.local.address', }, aliases: [NETWORK_LOCAL_ADDRESS, NET_HOST_IP], }, [NET_SOCK_HOST_PORT]: { - brief: "Local port number of the network connection.", + brief: 'Local port number of the network connection.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 8080, deprecation: { - replacement: "network.local.port" + replacement: 'network.local.port', }, aliases: [NETWORK_LOCAL_PORT], }, [NET_SOCK_PEER_ADDR]: { - brief: "Peer address of the network connection - IP address", + brief: 'Peer address of the network connection - IP address', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "192.168.0.1", + example: '192.168.0.1', deprecation: { - replacement: "network.peer.address" + replacement: 'network.peer.address', }, aliases: [NETWORK_PEER_ADDRESS, NET_PEER_IP], }, [NET_SOCK_PEER_NAME]: { - brief: "Peer address of the network connection - Unix domain socket name", + brief: 'Peer address of the network connection - Unix domain socket name', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "/var/my.sock", + example: '/var/my.sock', deprecation: { - reason: "Deprecated from OTEL, no replacement at this time" + reason: 'Deprecated from OTEL, no replacement at this time', }, }, [NET_SOCK_PEER_PORT]: { - brief: "Peer port number of the network connection.", + brief: 'Peer port number of the network connection.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 8080, deprecation: { - replacement: "network.peer.port" + replacement: 'network.peer.port', }, }, [NET_TRANSPORT]: { - brief: "OSI transport layer or inter-process communication method.", + brief: 'OSI transport layer or inter-process communication method.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "tcp", + example: 'tcp', deprecation: { - replacement: "network.transport" + replacement: 'network.transport', }, aliases: [NETWORK_TRANSPORT], }, [OS_BUILD_ID]: { - brief: "The build ID of the operating system.", + brief: 'The build ID of the operating system.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "1234567890", + example: '1234567890', }, [OS_DESCRIPTION]: { - brief: "Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", + brief: + 'Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "Ubuntu 18.04.1 LTS", + example: 'Ubuntu 18.04.1 LTS', }, [OS_NAME]: { - brief: "Human readable operating system name.", + brief: 'Human readable operating system name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "Ubuntu", + example: 'Ubuntu', }, [OS_TYPE]: { - brief: "The operating system type.", + brief: 'The operating system type.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "linux", + example: 'linux', }, [OS_VERSION]: { - brief: "The version of the operating system.", + brief: 'The version of the operating system.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "18.04.2", + example: '18.04.2', }, [OTEL_SCOPE_NAME]: { - brief: "The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", + brief: 'The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "io.opentelemetry.contrib.mongodb", + example: 'io.opentelemetry.contrib.mongodb', }, [OTEL_SCOPE_VERSION]: { - brief: "The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", + brief: 'The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "2.4.5", + example: '2.4.5', }, [OTEL_STATUS_CODE]: { - brief: "Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", + brief: 'Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "OK", + example: 'OK', }, [OTEL_STATUS_DESCRIPTION]: { - brief: "Description of the Status if it has a value, otherwise not set.", + brief: 'Description of the Status if it has a value, otherwise not set.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "resource not found", + example: 'resource not found', }, [PARAMS_KEY]: { - brief: "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", + brief: + 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, hasDynamicSuffix: true, @@ -12149,829 +12631,849 @@ export const ATTRIBUTE_METADATA: Record = { aliases: [URL_PATH_PARAMETER_KEY], }, [PREVIOUS_ROUTE]: { - brief: "Also used by mobile SDKs to indicate the previous route in the application.", + brief: 'Also used by mobile SDKs to indicate the previous route in the application.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "HomeScreen", - sdks: ["javascript-reactnative"], + example: 'HomeScreen', + sdks: ['javascript-reactnative'], }, [PROCESS_EXECUTABLE_NAME]: { - brief: "The name of the executable that started the process.", + brief: 'The name of the executable that started the process.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "getsentry", + example: 'getsentry', }, [PROCESS_PID]: { - brief: "The process ID of the running process.", + brief: 'The process ID of the running process.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 12345, }, [PROCESS_RUNTIME_DESCRIPTION]: { - 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.", + brief: + 'An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "Eclipse OpenJ9 VM openj9-0.21.0", + example: 'Eclipse OpenJ9 VM openj9-0.21.0', }, [PROCESS_RUNTIME_NAME]: { - brief: "The name of the runtime. Equivalent to `name` in the Sentry runtime context.", + brief: 'The name of the runtime. Equivalent to `name` in the Sentry runtime context.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "node", + example: 'node', }, [PROCESS_RUNTIME_VERSION]: { - brief: "The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.", + brief: + 'The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "18.04.2", + example: '18.04.2', }, [PROFILE_ID]: { - brief: "The id of the sentry profile.", + brief: 'The id of the sentry profile.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "123e4567e89b12d3a456426614174000", + example: '123e4567e89b12d3a456426614174000', deprecation: { - replacement: "sentry.profile_id" + replacement: 'sentry.profile_id', }, aliases: [SENTRY_PROFILE_ID], }, [QUERY_KEY]: { - brief: "An item in a query string. Usually added by client-side routing frameworks like vue-router.", + brief: 'An item in a query string. Usually added by client-side routing frameworks like vue-router.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, hasDynamicSuffix: true, example: "query.id='123'", deprecation: { - replacement: "url.query", - reason: "Instead of sending items individually in query., they should be sent all together with url.query." + replacement: 'url.query', + reason: 'Instead of sending items individually in query., they should be sent all together with url.query.', }, }, [RELEASE]: { - brief: "The sentry release.", + brief: 'The sentry release.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "production", + example: 'production', deprecation: { - replacement: "sentry.release" + replacement: 'sentry.release', }, aliases: [SENTRY_RELEASE], }, [REMIX_ACTION_FORM_DATA_KEY]: { - brief: "Remix form data, being the form data key, the value being the form data value.", + brief: 'Remix form data, being the form data key, the value being the form data value.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, hasDynamicSuffix: true, example: "http.response.header.text='test'", - sdks: ["javascript-remix"], + sdks: ['javascript-remix'], }, [REPLAY_ID]: { - brief: "The id of the sentry replay.", + brief: 'The id of the sentry replay.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "123e4567e89b12d3a456426614174000", + example: '123e4567e89b12d3a456426614174000', deprecation: { - replacement: "sentry.replay_id" + replacement: 'sentry.replay_id', }, aliases: [SENTRY_REPLAY_ID], }, [RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME]: { - brief: "The software deployment environment name.", + brief: 'The software deployment environment name.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, - example: "production", + example: 'production', deprecation: { - replacement: "sentry.environment" + replacement: 'sentry.environment', }, }, [RESOURCE_RENDER_BLOCKING_STATUS]: { - brief: "The render blocking status of the resource.", + brief: 'The render blocking status of the resource.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "non-blocking", - sdks: ["javascript-browser"], + example: 'non-blocking', + sdks: ['javascript-browser'], }, [ROUTE]: { - 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.", + brief: + 'The matched route, that is, the path template in the format used by the respective server framework. Also used by mobile SDKs to indicate the current route in the application.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "App\\Controller::indexAction", + example: 'App\\Controller::indexAction', deprecation: { - replacement: "http.route" + replacement: 'http.route', }, aliases: [HTTP_ROUTE], - sdks: ["php-laravel","javascript-reactnative"], + sdks: ['php-laravel', 'javascript-reactnative'], }, [RPC_GRPC_STATUS_CODE]: { - brief: "The numeric status code of the gRPC request.", + brief: 'The numeric status code of the gRPC request.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 2, }, [RPC_SERVICE]: { - brief: "The full (logical) name of the service being called, including its package name, if applicable.", + brief: 'The full (logical) name of the service being called, including its package name, if applicable.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "myService.BestService", + example: 'myService.BestService', }, [SENTRY_ACTION]: { - 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.", + brief: + 'Used as a generic attribute representing the action depending on the type of span. For instance, this is the database query operation for DB spans, and the request method for HTTP spans.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "SELECT", + example: 'SELECT', }, [SENTRY_BROWSER_NAME]: { - brief: "The name of the browser.", + brief: 'The name of the browser.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Chrome", + example: 'Chrome', deprecation: { - replacement: "browser.name" + replacement: 'browser.name', }, aliases: [BROWSER_NAME], }, [SENTRY_BROWSER_VERSION]: { - brief: "The version of the browser.", + brief: 'The version of the browser.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "120.0.6099.130", + example: '120.0.6099.130', deprecation: { - replacement: "browser.version" + replacement: 'browser.version', }, aliases: [BROWSER_VERSION], }, [SENTRY_CANCELLATION_REASON]: { - brief: "The reason why a span ended early.", + brief: 'The reason why a span ended early.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "document.hidden", + example: 'document.hidden', }, [SENTRY_CATEGORY]: { - 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'.", + brief: + "The high-level category of a span, derived from the span operation or span attributes. This categorizes spans by their general purpose (e.g., database, HTTP, UI). Known values include: 'ai', 'ai.pipeline', 'app', 'browser', 'cache', 'console', 'db', 'event', 'file', 'function.aws', 'function.azure', 'function.gcp', 'function.nextjs', 'function.remix', 'graphql', 'grpc', 'http', 'measure', 'middleware', 'navigation', 'pageload', 'queue', 'resource', 'rpc', 'serialize', 'subprocess', 'template', 'topic', 'ui', 'ui.angular', 'ui.ember', 'ui.react', 'ui.svelte', 'ui.vue', 'view', 'websocket'.", type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "db", + example: 'db', }, [SENTRY_CLIENT_SAMPLE_RATE]: { - brief: "Rate at which a span was sampled in the SDK.", + brief: 'Rate at which a span was sampled in the SDK.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 0.5, }, [SENTRY_DESCRIPTION]: { - brief: "The human-readable description of a span.", + brief: 'The human-readable description of a span.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "index view query", + example: 'index view query', }, [SENTRY_DIST]: { - brief: "The sentry dist.", + brief: 'The sentry dist.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "1.0", + example: '1.0', }, [SENTRY_DOMAIN]: { - 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.", + brief: + 'Used as a generic attribute representing the domain depending on the type of span. For instance, this is the collection/table name for database spans, and the server address for HTTP spans.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "example.com", + example: 'example.com', }, [SENTRY_DSC_ENVIRONMENT]: { - brief: "The environment from the dynamic sampling context.", + brief: 'The environment from the dynamic sampling context.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "prod", + example: 'prod', }, [SENTRY_DSC_PUBLIC_KEY]: { - brief: "The public key from the dynamic sampling context.", + brief: 'The public key from the dynamic sampling context.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "c51734c603c4430eb57cb0a5728a479d", + example: 'c51734c603c4430eb57cb0a5728a479d', }, [SENTRY_DSC_RELEASE]: { - brief: "The release identifier from the dynamic sampling context.", + brief: 'The release identifier from the dynamic sampling context.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "frontend@e8211be71b214afab5b85de4b4c54be3714952bb", + example: 'frontend@e8211be71b214afab5b85de4b4c54be3714952bb', }, [SENTRY_DSC_SAMPLED]: { - brief: "Whether the event was sampled according to the dynamic sampling context.", + brief: 'Whether the event was sampled according to the dynamic sampling context.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, }, [SENTRY_DSC_SAMPLE_RATE]: { - brief: "The sample rate from the dynamic sampling context.", + brief: 'The sample rate from the dynamic sampling context.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "1.0", + example: '1.0', }, [SENTRY_DSC_TRACE_ID]: { - brief: "The trace ID from the dynamic sampling context.", + brief: 'The trace ID from the dynamic sampling context.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "047372980460430cbc78d9779df33a46", + example: '047372980460430cbc78d9779df33a46', }, [SENTRY_DSC_TRANSACTION]: { - brief: "The transaction name from the dynamic sampling context.", + brief: 'The transaction name from the dynamic sampling context.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "/issues/errors-outages/", + example: '/issues/errors-outages/', }, [SENTRY_ENVIRONMENT]: { - brief: "The sentry environment.", + brief: 'The sentry environment.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "production", + example: 'production', aliases: [ENVIRONMENT], }, [SENTRY_EXCLUSIVE_TIME]: { - brief: "The exclusive time duration of the span in milliseconds.", + brief: 'The exclusive time duration of the span in milliseconds.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1234, }, [SENTRY_GRAPHQL_OPERATION]: { - brief: "Indicates the type of graphql operation, emitted by the Javascript SDK.", + brief: 'Indicates the type of graphql operation, emitted by the Javascript SDK.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "getUserById", + example: 'getUserById', }, [SENTRY_GROUP]: { - brief: "Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.", + brief: + 'Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, }, [SENTRY_HTTP_PREFETCH]: { - brief: "If an http request was a prefetch request.", + brief: 'If an http request was a prefetch request.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, }, [SENTRY_IDLE_SPAN_FINISH_REASON]: { - brief: "The reason why an idle span ended early.", + brief: 'The reason why an idle span ended early.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "idleTimeout", + example: 'idleTimeout', }, [SENTRY_IS_REMOTE]: { brief: "Indicates whether a span's parent is remote.", type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, }, [SENTRY_KIND]: { - 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.", + brief: + 'Used to clarify the relationship between parents and children, or to distinguish between spans, e.g. a `server` and `client` span with the same name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "server", + example: 'server', }, [SENTRY_MESSAGE_PARAMETER_KEY]: { - 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)", + brief: + "A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc)", type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, example: "sentry.message.parameter.0='123'", }, [SENTRY_MESSAGE_TEMPLATE]: { - brief: "The parameterized template string.", + brief: 'The parameterized template string.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Hello, {name}!", + example: 'Hello, {name}!', }, [SENTRY_MODULE_KEY]: { - brief: "A module that was loaded in the process. The key is the name of the module.", + brief: 'A module that was loaded in the process. The key is the name of the module.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, hasDynamicSuffix: true, example: "sentry.module.brianium/paratest='v7.7.0'", }, [SENTRY_NEXTJS_SSR_FUNCTION_ROUTE]: { - 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.", + brief: + 'A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "/posts/[id]/layout", - sdks: ["javascript"], + example: '/posts/[id]/layout', + sdks: ['javascript'], }, [SENTRY_NEXTJS_SSR_FUNCTION_TYPE]: { - 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.", + brief: + 'A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "generateMetadata", - sdks: ["javascript"], + example: 'generateMetadata', + sdks: ['javascript'], }, [SENTRY_NORMALIZED_DB_QUERY]: { - brief: "The normalized version of `db.query.text`.", + brief: 'The normalized version of `db.query.text`.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "SELECT .. FROM sentry_project WHERE (project_id = %s)", + example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', }, [SENTRY_NORMALIZED_DB_QUERY_HASH]: { - brief: "The hash of `sentry.normalized_db_query`.", + brief: 'The hash of `sentry.normalized_db_query`.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, }, [SENTRY_NORMALIZED_DESCRIPTION]: { - 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).", + brief: + 'Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc).', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "SELECT .. FROM sentry_project WHERE (project_id = %s)", + example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', }, [SENTRY_OBSERVED_TIMESTAMP_NANOS]: { - brief: "The timestamp at which an envelope was received by Relay, in nanoseconds.", + brief: 'The timestamp at which an envelope was received by Relay, in nanoseconds.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "1544712660300000000", + example: '1544712660300000000', }, [SENTRY_OP]: { - brief: "The operation of a span.", + brief: 'The operation of a span.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "http.client", + example: 'http.client', }, [SENTRY_ORIGIN]: { - brief: "The origin of the instrumentation (e.g. span, log, etc.)", + brief: 'The origin of the instrumentation (e.g. span, log, etc.)', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "auto.http.otel.fastify", + example: 'auto.http.otel.fastify', }, [SENTRY_PLATFORM]: { - brief: "The sdk platform that generated the event.", + brief: 'The sdk platform that generated the event.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "php", + example: 'php', }, [SENTRY_PROFILE_ID]: { - brief: "The id of the sentry profile.", + brief: 'The id of the sentry profile.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "123e4567e89b12d3a456426614174000", + example: '123e4567e89b12d3a456426614174000', aliases: [PROFILE_ID], }, [SENTRY_RELEASE]: { - brief: "The sentry release.", + brief: 'The sentry release.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "7.0.0", + example: '7.0.0', aliases: [SERVICE_VERSION, RELEASE], }, [SENTRY_REPLAY_ID]: { - brief: "The id of the sentry replay.", + brief: 'The id of the sentry replay.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "123e4567e89b12d3a456426614174000", + example: '123e4567e89b12d3a456426614174000', aliases: [REPLAY_ID], }, [SENTRY_REPLAY_IS_BUFFERING]: { - brief: "A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", + brief: + 'A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, }, [SENTRY_SDK_INTEGRATIONS]: { - 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.", + brief: + 'A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.', type: 'string[]', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: ["InboundFilters","FunctionToString","BrowserApiErrors","Breadcrumbs"], + example: ['InboundFilters', 'FunctionToString', 'BrowserApiErrors', 'Breadcrumbs'], }, [SENTRY_SDK_NAME]: { - brief: "The sentry sdk name.", + brief: 'The sentry sdk name.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "@sentry/react", + example: '@sentry/react', }, [SENTRY_SDK_VERSION]: { - brief: "The sentry sdk version.", + brief: 'The sentry sdk version.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "7.0.0", + example: '7.0.0', }, [SENTRY_SEGMENT_ID]: { - brief: "The segment ID of a span", + brief: 'The segment ID of a span', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "051581bf3cb55c13", + example: '051581bf3cb55c13', aliases: [_SENTRY_SEGMENT_ID], }, [_SENTRY_SEGMENT_ID]: { - brief: "The segment ID of a span", + brief: 'The segment ID of a span', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "051581bf3cb55c13", + example: '051581bf3cb55c13', deprecation: { - replacement: "sentry.segment.id" + replacement: 'sentry.segment.id', }, aliases: [SENTRY_SEGMENT_ID], }, [SENTRY_SEGMENT_NAME]: { - brief: "The segment name of a span", + brief: 'The segment name of a span', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "GET /user", + example: 'GET /user', }, [SENTRY_SERVER_SAMPLE_RATE]: { - brief: "Rate at which a span was sampled in Relay.", + brief: 'Rate at which a span was sampled in Relay.', type: 'double', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 0.5, }, [SENTRY_SPAN_SOURCE]: { - 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'`.", type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "route", + example: 'route', }, [SENTRY_STATUS_MESSAGE]: { - brief: "The from OTLP extracted status message.", + brief: 'The from OTLP extracted status message.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "foobar", + example: 'foobar', }, [SENTRY_TRACE_PARENT_SPAN_ID]: { - 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.", + brief: + 'The span id of the span that was active when the log was collected. This should not be set if there was no active span.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "b0e6f15b45c36b12", + example: 'b0e6f15b45c36b12', }, [SENTRY_TRANSACTION]: { - brief: "The sentry transaction (segment name).", + brief: 'The sentry transaction (segment name).', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "GET /", + example: 'GET /', aliases: [TRANSACTION], }, [SERVER_ADDRESS]: { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "example.com", + example: 'example.com', aliases: [HTTP_SERVER_NAME, NET_HOST_NAME, HTTP_HOST], }, [SERVER_PORT]: { - brief: "Server port number.", + brief: 'Server port number.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 1337, aliases: [NET_HOST_PORT], }, [SERVICE_NAME]: { - brief: "Logical name of the service.", + brief: 'Logical name of the service.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "omegastar", + example: 'omegastar', }, [SERVICE_VERSION]: { - brief: "The version string of the service API or implementation. The format is not defined by these conventions.", + brief: 'The version string of the service API or implementation. The format is not defined by these conventions.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "5.0.0", + example: '5.0.0', aliases: [SENTRY_RELEASE], }, [THREAD_ID]: { - brief: "Current “managed” thread ID.", + brief: 'Current “managed” thread ID.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 56, }, [THREAD_NAME]: { - brief: "Current thread name.", + brief: 'Current thread name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "main", + example: 'main', }, [TIMBER_TAG]: { - brief: "The log tag provided by the timber logging framework.", + brief: 'The log tag provided by the timber logging framework.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "MyTag", - sdks: ["sentry.java.android"], + example: 'MyTag', + sdks: ['sentry.java.android'], }, [TRANSACTION]: { - brief: "The sentry transaction (segment name).", + brief: 'The sentry transaction (segment name).', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "GET /", + example: 'GET /', deprecation: { - replacement: "sentry.transaction" + replacement: 'sentry.transaction', }, aliases: [SENTRY_TRANSACTION], }, [TYPE]: { - brief: "More granular type of the operation happening.", + brief: 'More granular type of the operation happening.', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "fetch", - sdks: ["javascript-browser","javascript-node"], + example: 'fetch', + sdks: ['javascript-browser', 'javascript-node'], }, [UI_COMPONENT_NAME]: { - brief: "The name of the associated component.", + brief: 'The name of the associated component.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "HomeButton", + example: 'HomeButton', }, [UI_CONTRIBUTES_TO_TTFD]: { - brief: "Whether the span execution contributed to the TTFD (time to fully drawn) metric.", + brief: 'Whether the span execution contributed to the TTFD (time to fully drawn) metric.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, }, [UI_CONTRIBUTES_TO_TTID]: { - brief: "Whether the span execution contributed to the TTID (time to initial display) metric.", + brief: 'Whether the span execution contributed to the TTID (time to initial display) metric.', type: 'boolean', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: true, }, [URL]: { - brief: "The URL of the resource that was fetched.", + brief: 'The URL of the resource that was fetched.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "https://example.com/test?foo=bar#buzz", + example: 'https://example.com/test?foo=bar#buzz', deprecation: { - replacement: "url.full" + replacement: 'url.full', }, aliases: [URL_FULL, HTTP_URL], - sdks: ["javascript-browser","javascript-node"], + sdks: ['javascript-browser', 'javascript-node'], }, [URL_DOMAIN]: { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "example.com", + example: 'example.com', }, [URL_FRAGMENT]: { - brief: "The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", + brief: + 'The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "details", + example: 'details', }, [URL_FULL]: { - brief: "The URL of the resource that was fetched.", + brief: 'The URL of the resource that was fetched.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "https://example.com/test?foo=bar#buzz", + example: 'https://example.com/test?foo=bar#buzz', aliases: [HTTP_URL, URL], }, [URL_PATH]: { - brief: "The URI path component.", + brief: 'The URI path component.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "/foo", + example: '/foo', }, [URL_PATH_PARAMETER_KEY]: { - brief: "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", + brief: + 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, hasDynamicSuffix: true, @@ -12979,464 +13481,467 @@ export const ATTRIBUTE_METADATA: Record = { aliases: [PARAMS_KEY], }, [URL_PORT]: { - brief: "Server port number.", + brief: 'Server port number.', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: true, example: 1337, }, [URL_QUERY]: { - brief: "The query string present in the URL. Note that this does not contain the leading ? character, while the `http.query` attribute does.", + brief: + 'The query string present in the URL. Note that this does not contain the leading ? character, while the `http.query` attribute does.', type: 'string', pii: { isPii: 'maybe', - reason: "Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." + reason: + 'Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.', }, isInOtel: true, - example: "foo=bar&bar=baz", + example: 'foo=bar&bar=baz', }, [URL_SCHEME]: { - brief: "The URI scheme component identifying the used protocol.", + brief: 'The URI scheme component identifying the used protocol.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "https", + example: 'https', aliases: [HTTP_SCHEME], }, [URL_TEMPLATE]: { - brief: "The low-cardinality template of an absolute path reference.", + brief: 'The low-cardinality template of an absolute path reference.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: true, - example: "/users/:id", + example: '/users/:id', aliases: [HTTP_ROUTE], }, [USER_AGENT_ORIGINAL]: { - brief: "Value of the HTTP User-Agent header sent by the client.", + brief: 'Value of the HTTP User-Agent header sent by the client.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: 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", + 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], }, [USER_EMAIL]: { - brief: "User email address.", + brief: 'User email address.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: "test@example.com", + example: 'test@example.com', }, [USER_FULL_NAME]: { brief: "User's full name.", type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: "John Smith", + example: 'John Smith', }, [USER_GEO_CITY]: { - brief: "Human readable city name.", + brief: 'Human readable city name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Toronto", + example: 'Toronto', }, [USER_GEO_COUNTRY_CODE]: { - brief: "Two-letter country code (ISO 3166-1 alpha-2).", + brief: 'Two-letter country code (ISO 3166-1 alpha-2).', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "CA", + example: 'CA', }, [USER_GEO_REGION]: { - brief: "Human readable region name or code.", + brief: 'Human readable region name or code.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Canada", + example: 'Canada', }, [USER_GEO_SUBDIVISION]: { - brief: "Human readable subdivision name.", + brief: 'Human readable subdivision name.', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "Ontario", + example: 'Ontario', }, [USER_HASH]: { - brief: "Unique user hash to correlate information for a user in anonymized form.", + brief: 'Unique user hash to correlate information for a user in anonymized form.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: "8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", + example: '8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d', }, [USER_ID]: { - brief: "Unique identifier of the user.", + brief: 'Unique identifier of the user.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: "S-1-5-21-202424912787-2692429404-2351956786-1000", + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', }, [USER_IP_ADDRESS]: { - brief: "The IP address of the user.", + brief: 'The IP address of the user.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "192.168.1.1", + example: '192.168.1.1', }, [USER_NAME]: { - brief: "Short name or login/username of the user.", + brief: 'Short name or login/username of the user.', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: "j.smith", + example: 'j.smith', }, [USER_ROLES]: { - brief: "Array of user roles at the time of the event.", + brief: 'Array of user roles at the time of the event.', type: 'string[]', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: true, - example: ["admin","editor"], + example: ['admin', 'editor'], }, [VERCEL_BRANCH]: { - brief: "Git branch name for Vercel project", + brief: 'Git branch name for Vercel project', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "main", + example: 'main', }, [VERCEL_BUILD_ID]: { - brief: "Identifier for the Vercel build (only present on build logs)", + brief: 'Identifier for the Vercel build (only present on build logs)', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "bld_cotnkcr76", + example: 'bld_cotnkcr76', }, [VERCEL_DEPLOYMENT_ID]: { - brief: "Identifier for the Vercel deployment", + brief: 'Identifier for the Vercel deployment', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "dpl_233NRGRjVZX1caZrXWtz5g1TAksD", + example: 'dpl_233NRGRjVZX1caZrXWtz5g1TAksD', }, [VERCEL_DESTINATION]: { - brief: "Origin of the external content in Vercel (only on external logs)", + brief: 'Origin of the external content in Vercel (only on external logs)', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "https://vitals.vercel-insights.com/v1", + example: 'https://vitals.vercel-insights.com/v1', }, [VERCEL_EDGE_TYPE]: { - brief: "Type of edge runtime in Vercel", + brief: 'Type of edge runtime in Vercel', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "edge-function", + example: 'edge-function', }, [VERCEL_ENTRYPOINT]: { - brief: "Entrypoint for the request in Vercel", + brief: 'Entrypoint for the request in Vercel', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "api/index.js", + example: 'api/index.js', }, [VERCEL_EXECUTION_REGION]: { - brief: "Region where the request is executed", + brief: 'Region where the request is executed', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "sfo1", + example: 'sfo1', }, [VERCEL_ID]: { - brief: "Unique identifier for the log entry in Vercel", + brief: 'Unique identifier for the log entry in Vercel', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "1573817187330377061717300000", + example: '1573817187330377061717300000', }, [VERCEL_JA3_DIGEST]: { - brief: "JA3 fingerprint digest of Vercel request", + brief: 'JA3 fingerprint digest of Vercel request', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0", + example: '769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0', }, [VERCEL_JA4_DIGEST]: { - brief: "JA4 fingerprint digest", + brief: 'JA4 fingerprint digest', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "t13d1516h2_8daaf6152771_02713d6af862", + example: 't13d1516h2_8daaf6152771_02713d6af862', }, [VERCEL_LOG_TYPE]: { - brief: "Vercel log output type", + brief: 'Vercel log output type', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "stdout", + example: 'stdout', }, [VERCEL_PROJECT_ID]: { - brief: "Identifier for the Vercel project", + brief: 'Identifier for the Vercel project', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "gdufoJxB6b9b1fEqr1jUtFkyavUU", + example: 'gdufoJxB6b9b1fEqr1jUtFkyavUU', }, [VERCEL_PROJECT_NAME]: { - brief: "Name of the Vercel project", + brief: 'Name of the Vercel project', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "my-app", + example: 'my-app', }, [VERCEL_PROXY_CACHE_ID]: { - brief: "Original request ID when request is served from cache", + brief: 'Original request ID when request is served from cache', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "pdx1::v8g4b-1744143786684-93dafbc0f70d", + example: 'pdx1::v8g4b-1744143786684-93dafbc0f70d', }, [VERCEL_PROXY_CLIENT_IP]: { - brief: "Client IP address", + brief: 'Client IP address', type: 'string', pii: { - isPii: 'true' + isPii: 'true', }, isInOtel: false, - example: "120.75.16.101", + example: '120.75.16.101', }, [VERCEL_PROXY_HOST]: { - brief: "Hostname of the request", + brief: 'Hostname of the request', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "test.vercel.app", + example: 'test.vercel.app', }, [VERCEL_PROXY_LAMBDA_REGION]: { - brief: "Region where lambda function executed", + brief: 'Region where lambda function executed', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "sfo1", + example: 'sfo1', }, [VERCEL_PROXY_METHOD]: { - brief: "HTTP method of the request", + brief: 'HTTP method of the request', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "GET", + example: 'GET', }, [VERCEL_PROXY_PATH]: { - brief: "Request path with query parameters", + brief: 'Request path with query parameters', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "/dynamic/some-value.json?route=some-value", + example: '/dynamic/some-value.json?route=some-value', }, [VERCEL_PROXY_PATH_TYPE]: { - brief: "How the request was served based on its path and project configuration", + brief: 'How the request was served based on its path and project configuration', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "func", + example: 'func', }, [VERCEL_PROXY_PATH_TYPE_VARIANT]: { - brief: "Variant of the path type", + brief: 'Variant of the path type', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "api", + example: 'api', }, [VERCEL_PROXY_REFERER]: { - brief: "Referer of the request", + brief: 'Referer of the request', type: 'string', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: "*.vercel.app", + example: '*.vercel.app', }, [VERCEL_PROXY_REGION]: { - brief: "Region where the request is processed", + brief: 'Region where the request is processed', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "sfo1", + example: 'sfo1', }, [VERCEL_PROXY_RESPONSE_BYTE_SIZE]: { - brief: "Size of the response in bytes", + brief: 'Size of the response in bytes', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1024, }, [VERCEL_PROXY_SCHEME]: { - brief: "Protocol of the request", + brief: 'Protocol of the request', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "https", + example: 'https', }, [VERCEL_PROXY_STATUS_CODE]: { - brief: "HTTP status code of the proxy request", + brief: 'HTTP status code of the proxy request', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 200, }, [VERCEL_PROXY_TIMESTAMP]: { - brief: "Unix timestamp when the proxy request was made", + brief: 'Unix timestamp when the proxy request was made', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 1573817250172, }, [VERCEL_PROXY_USER_AGENT]: { - brief: "User agent strings of the request", + brief: 'User agent strings of the request', type: 'string[]', pii: { - isPii: 'maybe' + isPii: 'maybe', }, isInOtel: false, - example: ["Mozilla/5.0..."], + example: ['Mozilla/5.0...'], }, [VERCEL_PROXY_VERCEL_CACHE]: { - brief: "Cache status sent to the browser", + brief: 'Cache status sent to the browser', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "REVALIDATED", + example: 'REVALIDATED', }, [VERCEL_PROXY_VERCEL_ID]: { - brief: "Vercel-specific identifier", + brief: 'Vercel-specific identifier', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "sfo1::abc123", + example: 'sfo1::abc123', }, [VERCEL_PROXY_WAF_ACTION]: { - brief: "Action taken by firewall rules", + brief: 'Action taken by firewall rules', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "deny", + example: 'deny', }, [VERCEL_PROXY_WAF_RULE_ID]: { - brief: "ID of the firewall rule that matched", + brief: 'ID of the firewall rule that matched', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "rule_gAHz8jtSB1Gy", + example: 'rule_gAHz8jtSB1Gy', }, [VERCEL_REQUEST_ID]: { - brief: "Identifier of the Vercel request", + brief: 'Identifier of the Vercel request', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "643af4e3-975a-4cc7-9e7a-1eda11539d90", + example: '643af4e3-975a-4cc7-9e7a-1eda11539d90', }, [VERCEL_SOURCE]: { - brief: "Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", + brief: 'Origin of the Vercel log (build, edge, lambda, static, external, or firewall)', type: 'string', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, - example: "build", + example: 'build', }, [VERCEL_STATUS_CODE]: { - brief: "HTTP status code of the request (-1 means no response returned and the lambda crashed)", + brief: 'HTTP status code of the request (-1 means no response returned and the lambda crashed)', type: 'integer', pii: { - isPii: 'false' + isPii: 'false', }, isInOtel: false, example: 200, @@ -13868,4 +14373,3 @@ export type Attributes = { [VERCEL_SOURCE]?: VERCEL_SOURCE_TYPE; [VERCEL_STATUS_CODE]?: VERCEL_STATUS_CODE_TYPE; } & Record; - diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 70bf6ded..84538dcd 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -5,9 +5,12 @@ import warnings from dataclasses import dataclass from enum import Enum -from typing import List, Union, Literal, Optional, Dict, TypedDict +from typing import Dict, List, Literal, Optional, TypedDict, Union + +AttributeValue = Union[ + str, int, float, bool, List[str], List[int], List[float], List[bool] +] -AttributeValue = Union[str, int, float, bool, List[str], List[int], List[float], List[bool]] class AttributeType(Enum): STRING = "string" @@ -19,59 +22,67 @@ class AttributeType(Enum): INTEGER_ARRAY = "integer[]" DOUBLE_ARRAY = "double[]" + class IsPii(Enum): TRUE = "true" FALSE = "false" MAYBE = "maybe" + @dataclass class PiiInfo: """Holds information about PII in an attribute's values.""" + isPii: IsPii reason: Optional[str] = None + class DeprecationStatus(Enum): BACKFILL = "backfill" NORMALIZE = "normalize" + @dataclass class DeprecationInfo: """Holds information about a deprecation.""" + replacement: Optional[str] = None reason: Optional[str] = None status: Optional[DeprecationStatus] = None + @dataclass class AttributeMetadata: """The metadata for an attribute.""" brief: str """A description of the attribute""" - + type: AttributeType """The type of the attribute value""" - + pii: PiiInfo """If an attribute can have pii. Is either true, false or maybe. Optionally include a reason about why it has PII or not""" - + is_in_otel: bool """Whether the attribute is defined in OpenTelemetry Semantic Conventions""" - + has_dynamic_suffix: Optional[bool] = None """If an attribute has a dynamic suffix, for example http.response.header. where is dynamic""" - + example: Optional[AttributeValue] = None """An example value of the attribute""" - + deprecation: Optional[DeprecationInfo] = None """If an attribute was deprecated, and what it was replaced with""" - + aliases: Optional[List[str]] = None """If there are attributes that alias to this attribute""" - + sdks: Optional[List[str]] = None """If an attribute is SDK specific, list the SDKs that use this attribute. This is not an exhaustive list, there might be SDKs that send this attribute that are is not documented here.""" + class _AttributeNamesMeta(type): _deprecated_names = { "AI_COMPLETION_TOKENS_USED", @@ -165,6 +176,7 @@ def __getattribute__(cls, name: str): ) return super().__getattribute__(name) + class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """Contains all attribute names as class attributes with their documentation.""" @@ -179,7 +191,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/ai/ai__completion_tokens__used.json - AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = "ai.completion_tokens.used" + AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = ( + "ai.completion_tokens.used" + ) """The number of tokens used to respond to the message. Type: int @@ -587,7 +601,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__invoker_type.json - BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = "browser.script.invoker_type" + BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = ( + "browser.script.invoker_type" + ) """Browser script entry point type. Type: str @@ -597,7 +613,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__source_char_position.json - BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal["browser.script.source_char_position"] = "browser.script.source_char_position" + BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal[ + "browser.script.source_char_position" + ] = "browser.script.source_char_position" """A number representing the script character position of the script. Type: int @@ -709,7 +727,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_read.json - CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = "cloudflare.d1.rows_read" + CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = ( + "cloudflare.d1.rows_read" + ) """The number of rows read in a Cloudflare D1 operation. Type: int @@ -719,7 +739,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_written.json - CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = "cloudflare.d1.rows_written" + CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = ( + "cloudflare.d1.rows_written" + ) """The number of rows written in a Cloudflare D1 operation. Type: int @@ -865,7 +887,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/db/db__query__parameter__[key].json - DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = "db.query.parameter." + DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = ( + "db.query.parameter." + ) """A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value. Type: str @@ -1197,7 +1221,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__assistant__message.json - GEN_AI_ASSISTANT_MESSAGE: Literal["gen_ai.assistant.message"] = "gen_ai.assistant.message" + GEN_AI_ASSISTANT_MESSAGE: Literal["gen_ai.assistant.message"] = ( + "gen_ai.assistant.message" + ) """The assistant message passed to the model. Type: str @@ -1217,7 +1243,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__input_tokens.json - GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = "gen_ai.cost.input_tokens" + GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = ( + "gen_ai.cost.input_tokens" + ) """The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens). Type: float @@ -1227,7 +1255,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__output_tokens.json - GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = "gen_ai.cost.output_tokens" + GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = ( + "gen_ai.cost.output_tokens" + ) """The cost of tokens used for creating the AI output in USD (without reasoning tokens). Type: float @@ -1237,7 +1267,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__total_tokens.json - GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = "gen_ai.cost.total_tokens" + GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = ( + "gen_ai.cost.total_tokens" + ) """The total cost for the tokens used. Type: float @@ -1247,7 +1279,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__embeddings__input.json - GEN_AI_EMBEDDINGS_INPUT: Literal["gen_ai.embeddings.input"] = "gen_ai.embeddings.input" + GEN_AI_EMBEDDINGS_INPUT: Literal["gen_ai.embeddings.input"] = ( + "gen_ai.embeddings.input" + ) """The input to the embeddings model. Type: str @@ -1319,7 +1353,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__available_tools.json - GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = "gen_ai.request.available_tools" + GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = ( + "gen_ai.request.available_tools" + ) """The available tools for the model. It has to be a stringified version of an array of objects. Type: str @@ -1330,7 +1366,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__frequency_penalty.json - GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = "gen_ai.request.frequency_penalty" + GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = ( + "gen_ai.request.frequency_penalty" + ) """Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation. Type: float @@ -1341,7 +1379,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__max_tokens.json - GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = "gen_ai.request.max_tokens" + GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = ( + "gen_ai.request.max_tokens" + ) """The maximum number of tokens to generate in the response. Type: int @@ -1351,7 +1391,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__messages.json - GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = "gen_ai.request.messages" + GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = ( + "gen_ai.request.messages" + ) """The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. Type: str @@ -1373,7 +1415,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__presence_penalty.json - GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = "gen_ai.request.presence_penalty" + GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = ( + "gen_ai.request.presence_penalty" + ) """Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies. Type: float @@ -1395,7 +1439,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__temperature.json - GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = "gen_ai.request.temperature" + GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = ( + "gen_ai.request.temperature" + ) """For an AI model call, the temperature parameter. Temperature essentially means how random the output will be. Type: float @@ -1428,7 +1474,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__finish_reasons.json - GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = "gen_ai.response.finish_reasons" + GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = ( + "gen_ai.response.finish_reasons" + ) """The reason why the model stopped generating. Type: str @@ -1461,7 +1509,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__streaming.json - GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = "gen_ai.response.streaming" + GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = ( + "gen_ai.response.streaming" + ) """Whether or not the AI model call's response was streamed back asynchronously Type: bool @@ -1483,7 +1533,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tokens_per_second.json - GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = "gen_ai.response.tokens_per_second" + GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = ( + "gen_ai.response.tokens_per_second" + ) """The total output tokens per seconds throughput Type: float @@ -1493,7 +1545,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tool_calls.json - GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = "gen_ai.response.tool_calls" + GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = ( + "gen_ai.response.tool_calls" + ) """The tool calls in the model's response. It has to be a stringified version of an array of objects. Type: str @@ -1526,7 +1580,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__system_instructions.json - GEN_AI_SYSTEM_INSTRUCTIONS: Literal["gen_ai.system_instructions"] = "gen_ai.system_instructions" + GEN_AI_SYSTEM_INSTRUCTIONS: Literal["gen_ai.system_instructions"] = ( + "gen_ai.system_instructions" + ) """The system instructions passed to the model. Type: str @@ -1536,7 +1592,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__call__arguments.json - GEN_AI_TOOL_CALL_ARGUMENTS: Literal["gen_ai.tool.call.arguments"] = "gen_ai.tool.call.arguments" + GEN_AI_TOOL_CALL_ARGUMENTS: Literal["gen_ai.tool.call.arguments"] = ( + "gen_ai.tool.call.arguments" + ) """The arguments of the tool call. It has to be a stringified version of the arguments to the tool. Type: str @@ -1546,7 +1604,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__call__result.json - GEN_AI_TOOL_CALL_RESULT: Literal["gen_ai.tool.call.result"] = "gen_ai.tool.call.result" + GEN_AI_TOOL_CALL_RESULT: Literal["gen_ai.tool.call.result"] = ( + "gen_ai.tool.call.result" + ) """The result of the tool call. It has to be a stringified version of the result of the tool. Type: str @@ -1556,7 +1616,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__definitions.json - GEN_AI_TOOL_DEFINITIONS: Literal["gen_ai.tool.definitions"] = "gen_ai.tool.definitions" + GEN_AI_TOOL_DEFINITIONS: Literal["gen_ai.tool.definitions"] = ( + "gen_ai.tool.definitions" + ) """The list of source system tool definitions available to the GenAI agent or model. Type: str @@ -1566,7 +1628,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__description.json - GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = "gen_ai.tool.description" + GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = ( + "gen_ai.tool.description" + ) """The description of the tool being used. Type: str @@ -1627,7 +1691,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__completion_tokens.json - GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = "gen_ai.usage.completion_tokens" + GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = ( + "gen_ai.usage.completion_tokens" + ) """The number of tokens used in the GenAI response (completion). Type: int @@ -1639,7 +1705,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens.json - GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = "gen_ai.usage.input_tokens" + GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = ( + "gen_ai.usage.input_tokens" + ) """The number of tokens used to process the AI input (prompt) without cached input tokens. Type: int @@ -1650,7 +1718,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cache_write.json - GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE: Literal["gen_ai.usage.input_tokens.cache_write"] = "gen_ai.usage.input_tokens.cache_write" + GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITE: Literal[ + "gen_ai.usage.input_tokens.cache_write" + ] = "gen_ai.usage.input_tokens.cache_write" """The number of tokens written to the cache when processing the AI input (prompt). Type: int @@ -1660,7 +1730,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cached.json - GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = "gen_ai.usage.input_tokens.cached" + GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = ( + "gen_ai.usage.input_tokens.cached" + ) """The number of cached tokens used to process the AI input (prompt). Type: int @@ -1670,7 +1742,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens.json - GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = "gen_ai.usage.output_tokens" + GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = ( + "gen_ai.usage.output_tokens" + ) """The number of tokens used for creating the AI output (without reasoning tokens). Type: int @@ -1681,7 +1755,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens__reasoning.json - GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal["gen_ai.usage.output_tokens.reasoning"] = "gen_ai.usage.output_tokens.reasoning" + GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal[ + "gen_ai.usage.output_tokens.reasoning" + ] = "gen_ai.usage.output_tokens.reasoning" """The number of tokens used for reasoning to create the AI output. Type: int @@ -1691,7 +1767,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__prompt_tokens.json - GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = "gen_ai.usage.prompt_tokens" + GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = ( + "gen_ai.usage.prompt_tokens" + ) """The number of tokens used in the GenAI input (prompt). Type: int @@ -1703,7 +1781,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__total_tokens.json - GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = "gen_ai.usage.total_tokens" + GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = ( + "gen_ai.usage.total_tokens" + ) """The total number of tokens used to process the prompt. (input tokens plus output todkens) Type: int @@ -1756,7 +1836,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__decoded_response_content_length.json - HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal["http.decoded_response_content_length"] = "http.decoded_response_content_length" + HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal[ + "http.decoded_response_content_length" + ] = "http.decoded_response_content_length" """The decoded body size of the response (in bytes). Type: int @@ -1822,7 +1904,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connect_start.json - HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = "http.request.connect_start" + HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = ( + "http.request.connect_start" + ) """The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource. Type: float @@ -1832,7 +1916,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connection_end.json - HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = "http.request.connection_end" + HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = ( + "http.request.connection_end" + ) """The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication. Type: float @@ -1842,7 +1928,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_end.json - HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = "http.request.domain_lookup_end" + HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = ( + "http.request.domain_lookup_end" + ) """The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource. Type: float @@ -1852,7 +1940,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_start.json - HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = "http.request.domain_lookup_start" + HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = ( + "http.request.domain_lookup_start" + ) """The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource. Type: float @@ -1862,7 +1952,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__fetch_start.json - HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = "http.request.fetch_start" + HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = ( + "http.request.fetch_start" + ) """The UNIX timestamp representing the time immediately before the browser starts to fetch the resource. Type: float @@ -1872,7 +1964,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__header__[key].json - HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = "http.request.header." + HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = ( + "http.request.header." + ) """HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -1894,7 +1988,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_end.json - HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = "http.request.redirect_end" + HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = ( + "http.request.redirect_end" + ) """The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect Type: float @@ -1904,7 +2000,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_start.json - HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = "http.request.redirect_start" + HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = ( + "http.request.redirect_start" + ) """The UNIX timestamp representing the start time of the fetch which that initiates the redirect. Type: float @@ -1914,7 +2012,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__request_start.json - HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = "http.request.request_start" + HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = ( + "http.request.request_start" + ) """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -1924,7 +2024,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__resend_count.json - HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = "http.request.resend_count" + HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = ( + "http.request.resend_count" + ) """The ordinal number of request resending attempt (for any reason, including redirects). Type: int @@ -1934,7 +2036,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_end.json - HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = "http.request.response_end" + HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = ( + "http.request.response_end" + ) """The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first. Type: float @@ -1944,7 +2048,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_start.json - HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = "http.request.response_start" + HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = ( + "http.request.response_start" + ) """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -1954,7 +2060,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__secure_connection_start.json - HTTP_REQUEST_SECURE_CONNECTION_START: Literal["http.request.secure_connection_start"] = "http.request.secure_connection_start" + HTTP_REQUEST_SECURE_CONNECTION_START: Literal[ + "http.request.secure_connection_start" + ] = "http.request.secure_connection_start" """The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero. Type: float @@ -1964,7 +2072,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__time_to_first_byte.json - HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = "http.request.time_to_first_byte" + HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = ( + "http.request.time_to_first_byte" + ) """The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests Type: float @@ -1974,7 +2084,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__worker_start.json - HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = "http.request.worker_start" + HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = ( + "http.request.worker_start" + ) """The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running. Type: float @@ -1984,7 +2096,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__body__size.json - HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = "http.response.body.size" + HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = ( + "http.response.body.size" + ) """The encoded body size of the response (in bytes). Type: int @@ -1995,7 +2109,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__[key].json - HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = "http.response.header." + HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = ( + "http.response.header." + ) """HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -2006,7 +2122,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__content-length.json - HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal["http.response.header.content-length"] = "http.response.header.content-length" + HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal[ + "http.response.header.content-length" + ] = "http.response.header.content-length" """The size of the message body sent to the recipient (in bytes) Type: str @@ -2028,7 +2146,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__status_code.json - HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = "http.response.status_code" + HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = ( + "http.response.status_code" + ) """The status code of the HTTP response. Type: int @@ -2039,7 +2159,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_content_length.json - HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = "http.response_content_length" + HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = ( + "http.response_content_length" + ) """The encoded body size of the response (in bytes). Type: int @@ -2051,7 +2173,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_transfer_size.json - HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = "http.response_transfer_size" + HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = ( + "http.response_transfer_size" + ) """The transfer size of the response (in bytes). Type: int @@ -2275,7 +2399,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__cancelled__request_id.json - MCP_CANCELLED_REQUEST_ID: Literal["mcp.cancelled.request_id"] = "mcp.cancelled.request_id" + MCP_CANCELLED_REQUEST_ID: Literal["mcp.cancelled.request_id"] = ( + "mcp.cancelled.request_id" + ) """Request ID of the cancelled MCP operation. Type: str @@ -2395,7 +2521,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__progress__percentage.json - MCP_PROGRESS_PERCENTAGE: Literal["mcp.progress.percentage"] = "mcp.progress.percentage" + MCP_PROGRESS_PERCENTAGE: Literal["mcp.progress.percentage"] = ( + "mcp.progress.percentage" + ) """Calculated progress percentage of an MCP operation. Computed from current/total * 100. Type: float @@ -2435,7 +2563,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__description.json - MCP_PROMPT_RESULT_DESCRIPTION: Literal["mcp.prompt.result.description"] = "mcp.prompt.result.description" + MCP_PROMPT_RESULT_DESCRIPTION: Literal["mcp.prompt.result.description"] = ( + "mcp.prompt.result.description" + ) """Description of the prompt result. Type: str @@ -2445,7 +2575,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_content.json - MCP_PROMPT_RESULT_MESSAGE_CONTENT: Literal["mcp.prompt.result.message_content"] = "mcp.prompt.result.message_content" + MCP_PROMPT_RESULT_MESSAGE_CONTENT: Literal["mcp.prompt.result.message_content"] = ( + "mcp.prompt.result.message_content" + ) """Content of the message in the prompt result. Used for single message results only. Type: str @@ -2455,7 +2587,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_count.json - MCP_PROMPT_RESULT_MESSAGE_COUNT: Literal["mcp.prompt.result.message_count"] = "mcp.prompt.result.message_count" + MCP_PROMPT_RESULT_MESSAGE_COUNT: Literal["mcp.prompt.result.message_count"] = ( + "mcp.prompt.result.message_count" + ) """Number of messages in the prompt result. Type: int @@ -2465,7 +2599,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__prompt__result__message_role.json - MCP_PROMPT_RESULT_MESSAGE_ROLE: Literal["mcp.prompt.result.message_role"] = "mcp.prompt.result.message_role" + MCP_PROMPT_RESULT_MESSAGE_ROLE: Literal["mcp.prompt.result.message_role"] = ( + "mcp.prompt.result.message_role" + ) """Role of the message in the prompt result. Used for single message results only. Type: str @@ -2495,7 +2631,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__[key].json - MCP_REQUEST_ARGUMENT_KEY: Literal["mcp.request.argument."] = "mcp.request.argument." + MCP_REQUEST_ARGUMENT_KEY: Literal["mcp.request.argument."] = ( + "mcp.request.argument." + ) """MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value. Type: str @@ -2506,7 +2644,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__name.json - MCP_REQUEST_ARGUMENT_NAME: Literal["mcp.request.argument.name"] = "mcp.request.argument.name" + MCP_REQUEST_ARGUMENT_NAME: Literal["mcp.request.argument.name"] = ( + "mcp.request.argument.name" + ) """Name argument from prompts/get MCP request. Type: str @@ -2516,7 +2656,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__request__argument__uri.json - MCP_REQUEST_ARGUMENT_URI: Literal["mcp.request.argument.uri"] = "mcp.request.argument.uri" + MCP_REQUEST_ARGUMENT_URI: Literal["mcp.request.argument.uri"] = ( + "mcp.request.argument.uri" + ) """URI argument from resources/read MCP request. Type: str @@ -2606,7 +2748,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__content.json - MCP_TOOL_RESULT_CONTENT: Literal["mcp.tool.result.content"] = "mcp.tool.result.content" + MCP_TOOL_RESULT_CONTENT: Literal["mcp.tool.result.content"] = ( + "mcp.tool.result.content" + ) """The content of the tool result. Type: str @@ -2616,7 +2760,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__content_count.json - MCP_TOOL_RESULT_CONTENT_COUNT: Literal["mcp.tool.result.content_count"] = "mcp.tool.result.content_count" + MCP_TOOL_RESULT_CONTENT_COUNT: Literal["mcp.tool.result.content_count"] = ( + "mcp.tool.result.content_count" + ) """Number of content items in the tool result. Type: int @@ -2626,7 +2772,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/mcp/mcp__tool__result__is_error.json - MCP_TOOL_RESULT_IS_ERROR: Literal["mcp.tool.result.is_error"] = "mcp.tool.result.is_error" + MCP_TOOL_RESULT_IS_ERROR: Literal["mcp.tool.result.is_error"] = ( + "mcp.tool.result.is_error" + ) """Whether a tool execution resulted in an error. Type: bool @@ -2657,7 +2805,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__connection.json - MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = "messaging.destination.connection" + MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = ( + "messaging.destination.connection" + ) """The message destination connection. Type: str @@ -2667,7 +2817,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__name.json - MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = "messaging.destination.name" + MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = ( + "messaging.destination.name" + ) """The message destination name. Type: str @@ -2677,7 +2829,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__body__size.json - MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = "messaging.message.body.size" + MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = ( + "messaging.message.body.size" + ) """The size of the message body in bytes. Type: int @@ -2687,7 +2841,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__envelope__size.json - MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = "messaging.message.envelope.size" + MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = ( + "messaging.message.envelope.size" + ) """The size of the message body and metadata in bytes. Type: int @@ -2707,7 +2863,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__receive__latency.json - MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = "messaging.message.receive.latency" + MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = ( + "messaging.message.receive.latency" + ) """The latency between when the message was published and received. Type: int @@ -2717,7 +2875,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__retry__count.json - MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = "messaging.message.retry.count" + MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = ( + "messaging.message.retry.count" + ) """The amount of attempts to send the message. Type: int @@ -2727,7 +2887,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__operation__type.json - MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = "messaging.operation.type" + MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = ( + "messaging.operation.type" + ) """A string identifying the type of the messaging operation Type: str @@ -3048,7 +3210,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/network/network__protocol__version.json - NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = "network.protocol.version" + NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = ( + "network.protocol.version" + ) """The actual version of the protocol used for network communication. Type: str @@ -3160,7 +3324,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/otel/otel__status_description.json - OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = "otel.status_description" + OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = ( + "otel.status_description" + ) """Description of the Status if it has a value, otherwise not set. Type: str @@ -3192,7 +3358,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__executable__name.json - PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = "process.executable.name" + PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = ( + "process.executable.name" + ) """The name of the executable that started the process. Type: str @@ -3212,7 +3380,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__description.json - PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = "process.runtime.description" + PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = ( + "process.runtime.description" + ) """An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context. Type: str @@ -3232,7 +3402,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__version.json - PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = "process.runtime.version" + PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = ( + "process.runtime.version" + ) """The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context. Type: str @@ -3278,7 +3450,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/remix/remix__action_form_data__[key].json - REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = "remix.action_form_data." + REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = ( + "remix.action_form_data." + ) """Remix form data, being the form data key, the value being the form data value. Type: str @@ -3301,7 +3475,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__deployment__environment__name.json - RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal["resource.deployment.environment.name"] = "resource.deployment.environment.name" + RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME: Literal[ + "resource.deployment.environment.name" + ] = "resource.deployment.environment.name" """The software deployment environment name. Type: str @@ -3312,7 +3488,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__render_blocking_status.json - RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = "resource.render_blocking_status" + RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = ( + "resource.render_blocking_status" + ) """The render blocking status of the resource. Type: str @@ -3388,7 +3566,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__cancellation_reason.json - SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = "sentry.cancellation_reason" + SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = ( + "sentry.cancellation_reason" + ) """The reason why a span ended early. Type: str @@ -3408,7 +3588,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__client_sample_rate.json - SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = "sentry.client_sample_rate" + SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = ( + "sentry.client_sample_rate" + ) """Rate at which a span was sampled in the SDK. Type: float @@ -3539,7 +3721,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__graphql__operation.json - SENTRY_GRAPHQL_OPERATION: Literal["sentry.graphql.operation"] = "sentry.graphql.operation" + SENTRY_GRAPHQL_OPERATION: Literal["sentry.graphql.operation"] = ( + "sentry.graphql.operation" + ) """Indicates the type of graphql operation, emitted by the Javascript SDK. Type: str @@ -3568,7 +3752,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__idle_span_finish_reason.json - SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = "sentry.idle_span_finish_reason" + SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = ( + "sentry.idle_span_finish_reason" + ) """The reason why an idle span ended early. Type: str @@ -3598,7 +3784,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__parameter__[key].json - SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = "sentry.message.parameter." + SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = ( + "sentry.message.parameter." + ) """A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc) Type: str @@ -3608,7 +3796,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__template.json - SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = "sentry.message.template" + SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = ( + "sentry.message.template" + ) """The parameterized template string. Type: str @@ -3629,7 +3819,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__route.json - SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = "sentry.nextjs.ssr.function.route" + SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = ( + "sentry.nextjs.ssr.function.route" + ) """A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known. Type: str @@ -3639,7 +3831,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__type.json - SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = "sentry.nextjs.ssr.function.type" + SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = ( + "sentry.nextjs.ssr.function.type" + ) """A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions. Type: str @@ -3649,7 +3843,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_db_query.json - SENTRY_NORMALIZED_DB_QUERY: Literal["sentry.normalized_db_query"] = "sentry.normalized_db_query" + SENTRY_NORMALIZED_DB_QUERY: Literal["sentry.normalized_db_query"] = ( + "sentry.normalized_db_query" + ) """The normalized version of `db.query.text`. Type: str @@ -3659,7 +3855,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_db_query__hash.json - SENTRY_NORMALIZED_DB_QUERY_HASH: Literal["sentry.normalized_db_query.hash"] = "sentry.normalized_db_query.hash" + SENTRY_NORMALIZED_DB_QUERY_HASH: Literal["sentry.normalized_db_query.hash"] = ( + "sentry.normalized_db_query.hash" + ) """The hash of `sentry.normalized_db_query`. Type: str @@ -3668,7 +3866,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__normalized_description.json - SENTRY_NORMALIZED_DESCRIPTION: Literal["sentry.normalized_description"] = "sentry.normalized_description" + SENTRY_NORMALIZED_DESCRIPTION: Literal["sentry.normalized_description"] = ( + "sentry.normalized_description" + ) """Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc). Type: str @@ -3678,7 +3878,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__observed_timestamp_nanos.json - SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = "sentry.observed_timestamp_nanos" + SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = ( + "sentry.observed_timestamp_nanos" + ) """The timestamp at which an envelope was received by Relay, in nanoseconds. Type: str @@ -3751,7 +3953,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__replay_is_buffering.json - SENTRY_REPLAY_IS_BUFFERING: Literal["sentry.replay_is_buffering"] = "sentry.replay_is_buffering" + SENTRY_REPLAY_IS_BUFFERING: Literal["sentry.replay_is_buffering"] = ( + "sentry.replay_is_buffering" + ) """A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate). Type: bool @@ -3761,7 +3965,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__sdk__integrations.json - SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = "sentry.sdk.integrations" + SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = ( + "sentry.sdk.integrations" + ) """A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations. Type: List[str] @@ -3824,7 +4030,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__server_sample_rate.json - SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = "sentry.server_sample_rate" + SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = ( + "sentry.server_sample_rate" + ) """Rate at which a span was sampled in Relay. Type: float @@ -3854,7 +4062,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__trace__parent_span_id.json - SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = "sentry.trace.parent_span_id" + SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = ( + "sentry.trace.parent_span_id" + ) """The span id of the span that was active when the log was collected. This should not be set if there was no active span. Type: str @@ -4041,7 +4251,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/url/url__path__parameter__[key].json - URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = "url.path.parameter." + URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = ( + "url.path.parameter." + ) """Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. Type: str @@ -4288,7 +4500,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__execution_region.json - VERCEL_EXECUTION_REGION: Literal["vercel.execution_region"] = "vercel.execution_region" + VERCEL_EXECUTION_REGION: Literal["vercel.execution_region"] = ( + "vercel.execution_region" + ) """Region where the request is executed Type: str @@ -4388,7 +4602,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__lambda_region.json - VERCEL_PROXY_LAMBDA_REGION: Literal["vercel.proxy.lambda_region"] = "vercel.proxy.lambda_region" + VERCEL_PROXY_LAMBDA_REGION: Literal["vercel.proxy.lambda_region"] = ( + "vercel.proxy.lambda_region" + ) """Region where lambda function executed Type: str @@ -4428,7 +4644,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__path_type_variant.json - VERCEL_PROXY_PATH_TYPE_VARIANT: Literal["vercel.proxy.path_type_variant"] = "vercel.proxy.path_type_variant" + VERCEL_PROXY_PATH_TYPE_VARIANT: Literal["vercel.proxy.path_type_variant"] = ( + "vercel.proxy.path_type_variant" + ) """Variant of the path type Type: str @@ -4458,7 +4676,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__response_byte_size.json - VERCEL_PROXY_RESPONSE_BYTE_SIZE: Literal["vercel.proxy.response_byte_size"] = "vercel.proxy.response_byte_size" + VERCEL_PROXY_RESPONSE_BYTE_SIZE: Literal["vercel.proxy.response_byte_size"] = ( + "vercel.proxy.response_byte_size" + ) """Size of the response in bytes Type: int @@ -4478,7 +4698,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__status_code.json - VERCEL_PROXY_STATUS_CODE: Literal["vercel.proxy.status_code"] = "vercel.proxy.status_code" + VERCEL_PROXY_STATUS_CODE: Literal["vercel.proxy.status_code"] = ( + "vercel.proxy.status_code" + ) """HTTP status code of the proxy request Type: int @@ -4498,7 +4720,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__user_agent.json - VERCEL_PROXY_USER_AGENT: Literal["vercel.proxy.user_agent"] = "vercel.proxy.user_agent" + VERCEL_PROXY_USER_AGENT: Literal["vercel.proxy.user_agent"] = ( + "vercel.proxy.user_agent" + ) """User agent strings of the request Type: List[str] @@ -4508,7 +4732,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__vercel_cache.json - VERCEL_PROXY_VERCEL_CACHE: Literal["vercel.proxy.vercel_cache"] = "vercel.proxy.vercel_cache" + VERCEL_PROXY_VERCEL_CACHE: Literal["vercel.proxy.vercel_cache"] = ( + "vercel.proxy.vercel_cache" + ) """Cache status sent to the browser Type: str @@ -4528,7 +4754,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__waf_action.json - VERCEL_PROXY_WAF_ACTION: Literal["vercel.proxy.waf_action"] = "vercel.proxy.waf_action" + VERCEL_PROXY_WAF_ACTION: Literal["vercel.proxy.waf_action"] = ( + "vercel.proxy.waf_action" + ) """Action taken by firewall rules Type: str @@ -4538,7 +4766,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/vercel/vercel__proxy__waf_rule_id.json - VERCEL_PROXY_WAF_RULE_ID: Literal["vercel.proxy.waf_rule_id"] = "vercel.proxy.waf_rule_id" + VERCEL_PROXY_WAF_RULE_ID: Literal["vercel.proxy.waf_rule_id"] = ( + "vercel.proxy.waf_rule_id" + ) """ID of the firewall rule that matched Type: str @@ -4582,408 +4812,296 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.citations": AttributeMetadata( brief="References or sources cited by the AI model in its response.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["Citation 1", "Citation 2"], ), "ai.completion_tokens.used": AttributeMetadata( brief="The number of tokens used to respond to the message.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=10, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.output_tokens" - ), - aliases=["gen_ai.usage.output_tokens","gen_ai.usage.completion_tokens"], + deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), + aliases=["gen_ai.usage.output_tokens", "gen_ai.usage.completion_tokens"], sdks=["python"], ), "ai.documents": AttributeMetadata( brief="Documents or content chunks used as context for the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["document1.txt", "document2.pdf"], ), "ai.finish_reason": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="COMPLETE", - deprecation=DeprecationInfo( - replacement="gen_ai.response.finish_reason" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.finish_reason"), aliases=["gen_ai.response.finish_reasons"], ), "ai.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo( - replacement="gen_ai.request.frequency_penalty" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.frequency_penalty"), aliases=["gen_ai.request.frequency_penalty"], ), "ai.function_call": AttributeMetadata( brief="For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="function_name", - deprecation=DeprecationInfo( - replacement="gen_ai.tool.name" - ), + deprecation=DeprecationInfo(replacement="gen_ai.tool.name"), aliases=["gen_ai.tool.name"], ), "ai.generation_id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="gen_123abc", - deprecation=DeprecationInfo( - replacement="gen_ai.response.id" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.id"), aliases=["gen_ai.response.id"], ), "ai.input_messages": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"role\": \"user\", \"message\": \"hello\"}]", - deprecation=DeprecationInfo( - replacement="gen_ai.request.messages" - ), + example='[{"role": "user", "message": "hello"}]', + deprecation=DeprecationInfo(replacement="gen_ai.request.messages"), aliases=["gen_ai.request.messages"], sdks=["python"], ), "ai.is_search_required": AttributeMetadata( brief="Boolean indicating if the model needs to perform a search.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=False, ), "ai.metadata": AttributeMetadata( brief="Extra metadata passed to an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="{\"user_id\": 123, \"session_id\": \"abc123\"}", + example='{"user_id": 123, "session_id": "abc123"}', ), "ai.model.provider": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="openai", - deprecation=DeprecationInfo( - replacement="gen_ai.system" - ), + deprecation=DeprecationInfo(replacement="gen_ai.system"), aliases=["gen_ai.system"], ), "ai.model_id": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="gpt-4", - deprecation=DeprecationInfo( - replacement="gen_ai.response.model" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.model"), aliases=["gen_ai.response.model"], sdks=["python"], ), "ai.pipeline.name": AttributeMetadata( brief="The name of the AI pipeline.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Autofix Pipeline", - deprecation=DeprecationInfo( - replacement="gen_ai.pipeline.name" - ), + deprecation=DeprecationInfo(replacement="gen_ai.pipeline.name"), aliases=["gen_ai.pipeline.name"], ), "ai.preamble": AttributeMetadata( brief="For an AI model call, the preamble parameter. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="You are now a clown.", ), "ai.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo( - replacement="gen_ai.request.presence_penalty" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.presence_penalty"), aliases=["gen_ai.request.presence_penalty"], ), "ai.prompt_tokens.used": AttributeMetadata( brief="The number of tokens used to process just the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=20, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.input_tokens" - ), - aliases=["gen_ai.usage.prompt_tokens","gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), + aliases=["gen_ai.usage.prompt_tokens", "gen_ai.usage.input_tokens"], sdks=["python"], ), "ai.raw_prompting": AttributeMetadata( brief="When enabled, the user’s prompt will be sent to the model without any pre-processing.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, ), "ai.response_format": AttributeMetadata( brief="For an AI model call, the format of the response", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="json_object", ), "ai.responses": AttributeMetadata( brief="The response messages sent back by the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["hello", "world"], - deprecation=DeprecationInfo( - replacement="gen_ai.response.text" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.text"), sdks=["python"], ), "ai.search_queries": AttributeMetadata( brief="Queries used to search for relevant context or documents.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["climate change effects", "renewable energy"], ), "ai.search_results": AttributeMetadata( brief="Results returned from search queries for context.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["search_result_1, search_result_2"], ), "ai.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="1234567890", - deprecation=DeprecationInfo( - replacement="gen_ai.request.seed" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.seed"), aliases=["gen_ai.request.seed"], ), "ai.streaming": AttributeMetadata( brief="Whether the request was streamed back.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, - deprecation=DeprecationInfo( - replacement="gen_ai.response.streaming" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.streaming"), aliases=["gen_ai.response.streaming"], sdks=["python"], ), "ai.tags": AttributeMetadata( brief="Tags that describe an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="{\"executed_function\": \"add_integers\"}", + example='{"executed_function": "add_integers"}', ), "ai.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.1, - deprecation=DeprecationInfo( - replacement="gen_ai.request.temperature" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.temperature"), aliases=["gen_ai.request.temperature"], ), "ai.texts": AttributeMetadata( brief="Raw text inputs provided to the model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["Hello, how are you?", "What is the capital of France?"], ), "ai.tool_calls": AttributeMetadata( brief="For an AI model call, the tool calls that were made.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["tool_call_1", "tool_call_2"], - deprecation=DeprecationInfo( - replacement="gen_ai.response.tool_calls" - ), + deprecation=DeprecationInfo(replacement="gen_ai.response.tool_calls"), ), "ai.tools": AttributeMetadata( brief="For an AI model call, the functions that are available", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["function_1", "function_2"], - deprecation=DeprecationInfo( - replacement="gen_ai.request.available_tools" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.available_tools"), ), "ai.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=35, - deprecation=DeprecationInfo( - replacement="gen_ai.request.top_k" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.top_k"), aliases=["gen_ai.request.top_k"], ), "ai.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.7, - deprecation=DeprecationInfo( - replacement="gen_ai.request.top_p" - ), + deprecation=DeprecationInfo(replacement="gen_ai.request.top_p"), aliases=["gen_ai.request.top_p"], ), "ai.total_cost": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=12.34, ), "ai.total_tokens.used": AttributeMetadata( brief="The total number of tokens used to process the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=30, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.total_tokens" - ), + deprecation=DeprecationInfo(replacement="gen_ai.usage.total_tokens"), aliases=["gen_ai.usage.total_tokens"], sdks=["python"], ), "ai.warnings": AttributeMetadata( brief="Warning messages generated during model execution.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example=["Token limit exceeded"], ), "app_start_type": AttributeMetadata( brief="Mobile app start variant. Either cold or warm.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="cold", ), "blocked_main_thread": AttributeMetadata( brief="Whether the main thread was blocked by the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, ), "browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Chrome", aliases=["sentry.browser.name"], @@ -4991,18 +5109,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.report.type": AttributeMetadata( brief="A browser report sent via reporting API..", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="network-error", ), "browser.script.invoker": AttributeMetadata( brief="How a script was called in the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Window.requestAnimationFrame", sdks=["browser"], @@ -5010,9 +5124,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.invoker_type": AttributeMetadata( brief="Browser script entry point type.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="event-listener", sdks=["browser"], @@ -5020,9 +5132,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.source_char_position": AttributeMetadata( brief="A number representing the script character position of the script.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=678, sdks=["browser"], @@ -5030,9 +5140,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="120.0.6099.130", aliases=["sentry.browser.version"], @@ -5040,9 +5148,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.hit": AttributeMetadata( brief="If the cache was hit during this span.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, sdks=["php-laravel"], @@ -5050,18 +5156,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.item_size": AttributeMetadata( brief="The size of the requested item in the cache. In bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=58, ), "cache.key": AttributeMetadata( brief="The key of the cache accessed.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["my-cache-key", "my-other-cache-key"], sdks=["php-laravel"], @@ -5069,9 +5171,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.operation": AttributeMetadata( brief="The operation being performed on the cache.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="get", sdks=["php-laravel"], @@ -5079,9 +5179,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.ttl": AttributeMetadata( brief="The ttl of the cache in seconds", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=120, sdks=["php-laravel"], @@ -5089,9 +5187,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "channel": AttributeMetadata( brief="The channel name that is being used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="mail", sdks=["php-laravel"], @@ -5099,9 +5195,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.address": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="example.com", aliases=["http.client_ip"], @@ -5109,18 +5203,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.port": AttributeMetadata( brief="Client port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=5432, ), "cloudflare.d1.duration": AttributeMetadata( brief="The duration of a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=543, sdks=["javascript-cloudflare"], @@ -5128,9 +5218,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_read": AttributeMetadata( brief="The number of rows read in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -5138,9 +5226,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_written": AttributeMetadata( brief="The number of rows written in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -5148,9 +5234,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.file.path": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/app/myapplication/http/handler/server.py", aliases=["code.filepath"], @@ -5158,35 +5242,25 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.filepath": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/app/myapplication/http/handler/server.py", - deprecation=DeprecationInfo( - replacement="code.file.path" - ), + deprecation=DeprecationInfo(replacement="code.file.path"), aliases=["code.file.path"], ), "code.function": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="server_request", - deprecation=DeprecationInfo( - replacement="code.function.name" - ), + deprecation=DeprecationInfo(replacement="code.function.name"), aliases=["code.function.name"], ), "code.function.name": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="server_request", aliases=["code.function"], @@ -5194,9 +5268,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.line.number": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=42, aliases=["code.lineno"], @@ -5204,57 +5276,43 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.lineno": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=42, - deprecation=DeprecationInfo( - replacement="code.line.number" - ), + deprecation=DeprecationInfo(replacement="code.line.number"), aliases=["code.line.number"], ), "code.namespace": AttributeMetadata( brief="The 'namespace' within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="http.handler", deprecation=DeprecationInfo( replacement="code.function.name", - reason="code.function.name should include the namespace." + reason="code.function.name should include the namespace.", ), ), "db.collection.name": AttributeMetadata( brief="The name of a collection (table, container) within the database.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="users", ), "db.name": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="customers", - deprecation=DeprecationInfo( - replacement="db.namespace" - ), + deprecation=DeprecationInfo(replacement="db.namespace"), aliases=["db.namespace"], ), "db.namespace": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="customers", aliases=["db.name"], @@ -5262,23 +5320,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.operation": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT", deprecation=DeprecationInfo( - replacement="db.operation.name", - status=DeprecationStatus.NORMALIZE + replacement="db.operation.name", status=DeprecationStatus.NORMALIZE ), aliases=["db.operation.name"], ), "db.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT", aliases=["db.operation"], @@ -5286,9 +5339,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.parameter.": AttributeMetadata( brief="A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, has_dynamic_suffix=True, example="db.query.parameter.foo='123'", @@ -5296,18 +5347,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.summary": AttributeMetadata( brief="A database query being executed. Should be paramaterized. The full version of the query is in `db.query.text`.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT * FROM users", ), "db.query.text": AttributeMetadata( brief="The database query being executed. Should be the full query, not a parameterized version. The parameterized version is in `db.query.summary`.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT * FROM users", aliases=["db.statement"], @@ -5315,9 +5362,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.connection": AttributeMetadata( brief="The redis connection name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="my-redis-instance", sdks=["php-laravel"], @@ -5325,9 +5370,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.parameters": AttributeMetadata( brief="The array of command parameters given to a redis command.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["test", "*"], sdks=["php-laravel"], @@ -5335,51 +5378,41 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.sql.bindings": AttributeMetadata( brief="The array of query bindings.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["1", "foo"], deprecation=DeprecationInfo( replacement="db.query.parameter.", - reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.." + reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter..", ), sdks=["php-laravel"], ), "db.statement": AttributeMetadata( brief="The database statement being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="SELECT * FROM users", deprecation=DeprecationInfo( - replacement="db.query.text", - status=DeprecationStatus.NORMALIZE + replacement="db.query.text", status=DeprecationStatus.NORMALIZE ), aliases=["db.query.text"], ), "db.system": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="postgresql", deprecation=DeprecationInfo( - replacement="db.system.name", - status=DeprecationStatus.NORMALIZE + replacement="db.system.name", status=DeprecationStatus.NORMALIZE ), aliases=["db.system.name"], ), "db.system.name": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="postgresql", aliases=["db.system"], @@ -5387,157 +5420,121 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.user": AttributeMetadata( brief="The database user.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="fancy_user", ), "device.brand": AttributeMetadata( brief="The brand of the device.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Apple", ), "device.family": AttributeMetadata( brief="The family of the device.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="iPhone", ), "device.model": AttributeMetadata( brief="The model of the device.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="iPhone 15 Pro Max", ), "environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="production", - deprecation=DeprecationInfo( - replacement="sentry.environment" - ), + deprecation=DeprecationInfo(replacement="sentry.environment"), aliases=["sentry.environment"], ), "error.type": AttributeMetadata( brief="Describes a class of error the operation ended with.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="timeout", ), "event.id": AttributeMetadata( brief="The unique identifier for this event (log record)", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1234567890, ), "event.name": AttributeMetadata( brief="The name that uniquely identifies this event (log record)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Process Payload", ), "exception.escaped": AttributeMetadata( brief="SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, ), "exception.message": AttributeMetadata( brief="The error message.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ENOENT: no such file or directory", ), "exception.stacktrace": AttributeMetadata( brief="A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example="Exception in thread \"main\" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)", + example='Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)', ), "exception.type": AttributeMetadata( brief="The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="OSError", ), "faas.coldstart": AttributeMetadata( brief="A boolean that is true if the serverless function is executed for the first time (aka cold-start).", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, ), "faas.cron": AttributeMetadata( brief="A string containing the schedule period as Cron Expression.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="0/5 * * * ? *", ), "faas.time": AttributeMetadata( brief="A string containing the function invocation time in the ISO 8601 format expressed in UTC.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="2020-01-23T13:47:06Z", ), "faas.trigger": AttributeMetadata( brief="Type of the trigger which caused this function invocation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="timer", ), "flag.evaluation.": AttributeMetadata( brief="An instance of a feature flag evaluation. The value of this attribute is the boolean representing the evaluation result. The suffix is the name of the feature flag.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, has_dynamic_suffix=True, example="flag.evaluation.is_new_ui=true", @@ -5545,158 +5542,124 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.delay": AttributeMetadata( brief="The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=5, ), "frames.frozen": AttributeMetadata( brief="The number of frozen frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=3, ), "frames.slow": AttributeMetadata( brief="The number of slow frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1, ), "frames.total": AttributeMetadata( brief="The number of total frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=60, ), "fs_error": AttributeMetadata( brief="The error message of a file system error.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="ENOENT: no such file or directory", deprecation=DeprecationInfo( replacement="error.type", - reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better." + reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better.", ), sdks=["javascript-node"], ), "gen_ai.agent.name": AttributeMetadata( brief="The name of the agent being used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ResearchAssistant", ), "gen_ai.assistant.message": AttributeMetadata( brief="The assistant message passed to the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="get_weather tool call", ), "gen_ai.choice": AttributeMetadata( brief="The model's response message.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="The weather in Paris is rainy and overcast, with temperatures around 57°F", ), "gen_ai.cost.input_tokens": AttributeMetadata( brief="The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=123.45, ), "gen_ai.cost.output_tokens": AttributeMetadata( brief="The cost of tokens used for creating the AI output in USD (without reasoning tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=123.45, ), "gen_ai.cost.total_tokens": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=12.34, ), "gen_ai.embeddings.input": AttributeMetadata( brief="The input to the embeddings model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="What's the weather in Paris?", ), "gen_ai.input.messages": AttributeMetadata( - brief="The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]", + example='[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]', ), "gen_ai.operation.name": AttributeMetadata( brief="The name of the operation being performed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="chat", ), "gen_ai.operation.type": AttributeMetadata( brief="The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="tool", ), "gen_ai.output.messages": AttributeMetadata( brief="The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]", + example='[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]', ), "gen_ai.pipeline.name": AttributeMetadata( brief="Name of the AI pipeline or chain being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Autofix Pipeline", aliases=["ai.pipeline.name"], @@ -5704,11 +5667,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.prompt": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example="[{\"role\": \"user\", \"message\": \"hello\"}]", + example='[{"role": "user", "message": "hello"}]', deprecation=DeprecationInfo( reason="Deprecated from OTEL, use gen_ai.input.messages with the new format instead." ), @@ -5716,21 +5677,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.available_tools": AttributeMetadata( brief="The available tools for the model. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]", - deprecation=DeprecationInfo( - replacement="gen_ai.tool.definitions" - ), + example='[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]', + deprecation=DeprecationInfo(replacement="gen_ai.tool.definitions"), ), "gen_ai.request.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=0.5, aliases=["ai.frequency_penalty"], @@ -5738,40 +5693,30 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.max_tokens": AttributeMetadata( brief="The maximum number of tokens to generate in the response.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=2048, ), "gen_ai.request.messages": AttributeMetadata( - brief="The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", + brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]", - deprecation=DeprecationInfo( - replacement="gen_ai.input.messages" - ), + example='[{"role": "system", "content": "Generate a random number."}, {"role": "user", "content": [{"text": "Generate a random number between 0 and 10.", "type": "text"}]}, {"role": "tool", "content": {"toolCallId": "1", "toolName": "Weather", "output": "rainy"}}]', + deprecation=DeprecationInfo(replacement="gen_ai.input.messages"), aliases=["ai.input_messages"], ), "gen_ai.request.model": AttributeMetadata( brief="The model identifier being used for the request.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="gpt-4-turbo-preview", ), "gen_ai.request.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=0.5, aliases=["ai.presence_penalty"], @@ -5779,9 +5724,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1234567890", aliases=["ai.seed"], @@ -5789,9 +5732,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=0.1, aliases=["ai.temperature"], @@ -5799,9 +5740,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=35, aliases=["ai.top_k"], @@ -5809,9 +5748,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=0.7, aliases=["ai.top_p"], @@ -5819,9 +5756,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.finish_reasons": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="COMPLETE", aliases=["ai.finish_reason"], @@ -5829,9 +5764,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="gen_123abc", aliases=["ai.generation_id"], @@ -5839,9 +5772,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.model": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="gpt-4", aliases=["ai.model_id"], @@ -5849,9 +5780,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.streaming": AttributeMetadata( brief="Whether or not the AI model call's response was streamed back asynchronously", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, aliases=["ai.streaming"], @@ -5859,42 +5788,30 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.text": AttributeMetadata( brief="The model's response text messages. It has to be a stringified version of an array of response text messages.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[\"The weather in Paris is rainy and overcast, with temperatures around 57°F\", \"The weather in London is sunny and warm, with temperatures around 65°F\"]", - deprecation=DeprecationInfo( - replacement="gen_ai.output.messages" - ), + example='["The weather in Paris is rainy and overcast, with temperatures around 57°F", "The weather in London is sunny and warm, with temperatures around 65°F"]', + deprecation=DeprecationInfo(replacement="gen_ai.output.messages"), ), "gen_ai.response.tokens_per_second": AttributeMetadata( brief="The total output tokens per seconds throughput", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=12345.67, ), "gen_ai.response.tool_calls": AttributeMetadata( brief="The tool calls in the model's response. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", - deprecation=DeprecationInfo( - replacement="gen_ai.output.messages" - ), + example='[{"name": "get_weather", "arguments": {"location": "Paris"}}]', + deprecation=DeprecationInfo(replacement="gen_ai.output.messages"), ), "gen_ai.system": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="openai", aliases=["ai.model.provider"], @@ -5902,84 +5819,64 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system.message": AttributeMetadata( brief="The system instructions passed to the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="You are a helpful assistant", - deprecation=DeprecationInfo( - replacement="gen_ai.system_instructions" - ), + deprecation=DeprecationInfo(replacement="gen_ai.system_instructions"), ), "gen_ai.system_instructions": AttributeMetadata( brief="The system instructions passed to the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="You are a helpful assistant", ), "gen_ai.tool.call.arguments": AttributeMetadata( brief="The arguments of the tool call. It has to be a stringified version of the arguments to the tool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="{\"location\": \"Paris\"}", + example='{"location": "Paris"}', ), "gen_ai.tool.call.result": AttributeMetadata( brief="The result of the tool call. It has to be a stringified version of the result of the tool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="rainy, 57°F", ), "gen_ai.tool.definitions": AttributeMetadata( brief="The list of source system tool definitions available to the GenAI agent or model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="[{\"type\": \"function\", \"name\": \"get_current_weather\", \"description\": \"Get the current weather in a given location\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"The city and state, e.g. San Francisco, CA\"}, \"unit\": {\"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"]}}, \"required\": [\"location\", \"unit\"]}}]", + example='[{"type": "function", "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "The city and state, e.g. San Francisco, CA"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["location", "unit"]}}]', ), "gen_ai.tool.description": AttributeMetadata( brief="The description of the tool being used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Searches the web for current information about a topic", ), "gen_ai.tool.input": AttributeMetadata( brief="The input of the tool being used. It has to be a stringified version of the input to the tool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, - example="{\"location\": \"Paris\"}", + example='{"location": "Paris"}', ), "gen_ai.tool.message": AttributeMetadata( brief="The response from a tool or function call passed to the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="rainy, 57°F", ), "gen_ai.tool.name": AttributeMetadata( brief="Name of the tool utilized by the agent.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Flights", aliases=["ai.function_call"], @@ -5987,100 +5884,76 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.output": AttributeMetadata( brief="The output of the tool being used. It has to be a stringified version of the output of the tool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="rainy, 57°F", ), "gen_ai.tool.type": AttributeMetadata( brief="The type of tool being used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="function", ), "gen_ai.usage.completion_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI response (completion).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=10, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.output_tokens" - ), - aliases=["ai.completion_tokens.used","gen_ai.usage.output_tokens"], + deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), + aliases=["ai.completion_tokens.used", "gen_ai.usage.output_tokens"], ), "gen_ai.usage.input_tokens": AttributeMetadata( brief="The number of tokens used to process the AI input (prompt) without cached input tokens.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=10, - aliases=["ai.prompt_tokens.used","gen_ai.usage.prompt_tokens"], + aliases=["ai.prompt_tokens.used", "gen_ai.usage.prompt_tokens"], ), "gen_ai.usage.input_tokens.cache_write": AttributeMetadata( brief="The number of tokens written to the cache when processing the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=100, ), "gen_ai.usage.input_tokens.cached": AttributeMetadata( brief="The number of cached tokens used to process the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=50, ), "gen_ai.usage.output_tokens": AttributeMetadata( brief="The number of tokens used for creating the AI output (without reasoning tokens).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=10, - aliases=["ai.completion_tokens.used","gen_ai.usage.completion_tokens"], + aliases=["ai.completion_tokens.used", "gen_ai.usage.completion_tokens"], ), "gen_ai.usage.output_tokens.reasoning": AttributeMetadata( brief="The number of tokens used for reasoning to create the AI output.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=75, ), "gen_ai.usage.prompt_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=20, - deprecation=DeprecationInfo( - replacement="gen_ai.usage.input_tokens" - ), - aliases=["ai.prompt_tokens.used","gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), + aliases=["ai.prompt_tokens.used", "gen_ai.usage.input_tokens"], ), "gen_ai.usage.total_tokens": AttributeMetadata( brief="The total number of tokens used to process the prompt. (input tokens plus output todkens)", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=20, aliases=["ai.total_tokens.used"], @@ -6088,49 +5961,37 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.user.message": AttributeMetadata( brief="The user message passed to the model.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="What's the weather in Paris?", ), "graphql.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="findBookById", ), "graphql.operation.type": AttributeMetadata( brief="The type of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="query", ), "http.client_ip": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo( - replacement="client.address" - ), + deprecation=DeprecationInfo(replacement="client.address"), aliases=["client.address"], ), "http.decoded_response_content_length": AttributeMetadata( brief="The decoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=456, sdks=["javascript-browser"], @@ -6138,50 +5999,43 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.flavor": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo( - replacement="network.protocol.version" - ), - aliases=["network.protocol.version","net.protocol.version"], + deprecation=DeprecationInfo(replacement="network.protocol.version"), + aliases=["network.protocol.version", "net.protocol.version"], ), "http.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="#details", ), "http.host": AttributeMetadata( brief="The domain name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage" + reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage", ), - aliases=["server.address","client.address","http.server_name","net.host.name"], + aliases=[ + "server.address", + "client.address", + "http.server_name", + "net.host.name", + ], ), "http.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="GET", - deprecation=DeprecationInfo( - replacement="http.request.method" - ), + deprecation=DeprecationInfo(replacement="http.request.method"), aliases=["http.request.method"], ), "http.query": AttributeMetadata( @@ -6189,7 +6043,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", ), is_in_otel=False, example="?foo=bar&bar=baz", @@ -6197,9 +6051,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connect_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.111, sdks=["javascript-browser"], @@ -6207,9 +6059,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connection_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.15, sdks=["javascript-browser"], @@ -6217,9 +6067,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.201, sdks=["javascript-browser"], @@ -6227,9 +6075,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.322, sdks=["javascript-browser"], @@ -6237,9 +6083,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.fetch_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.389, sdks=["javascript-browser"], @@ -6247,9 +6091,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.header.": AttributeMetadata( brief="HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, has_dynamic_suffix=True, example="http.request.header.custom-header=['foo', 'bar']", @@ -6257,19 +6099,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="GET", - aliases=["method","http.method"], + aliases=["method", "http.method"], ), "http.request.redirect_end": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829558.502, sdks=["javascript-browser"], @@ -6277,9 +6115,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.redirect_start": AttributeMetadata( brief="The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.495, sdks=["javascript-browser"], @@ -6287,9 +6123,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.request_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.51, sdks=["javascript-browser"], @@ -6297,18 +6131,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.resend_count": AttributeMetadata( brief="The ordinal number of request resending attempt (for any reason, including redirects).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=2, ), "http.request.response_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.89, sdks=["javascript-browser"], @@ -6316,9 +6146,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.response_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.7, sdks=["javascript-browser"], @@ -6326,9 +6154,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.secure_connection_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829555.73, sdks=["javascript-browser"], @@ -6336,9 +6162,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.time_to_first_byte": AttributeMetadata( brief="The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1.032, sdks=["javascript-browser"], @@ -6346,9 +6170,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.worker_start": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732829553.68, sdks=["javascript-browser"], @@ -6356,19 +6178,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.body.size": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=123, - aliases=["http.response_content_length","http.response.header.content-length"], + aliases=["http.response_content_length", "http.response.header.content-length"], ), "http.response.header.": AttributeMetadata( brief="HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, has_dynamic_suffix=True, example="http.response.header.custom-header=['foo', 'bar']", @@ -6376,19 +6194,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.header.content-length": AttributeMetadata( brief="The size of the message body sent to the recipient (in bytes)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="http.response.header.custom-header=['foo', 'bar']", - aliases=["http.response_content_length","http.response.body.size"], + aliases=["http.response_content_length", "http.response.body.size"], ), "http.response.size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=456, aliases=["http.response_transfer_size"], @@ -6396,9 +6210,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=404, aliases=["http.status_code"], @@ -6406,37 +6218,29 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response_content_length": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=123, deprecation=DeprecationInfo( - replacement="http.response.body.size", - status=DeprecationStatus.BACKFILL + replacement="http.response.body.size", status=DeprecationStatus.BACKFILL ), - aliases=["http.response.body.size","http.response.header.content-length"], + aliases=["http.response.body.size", "http.response.header.content-length"], ), "http.response_transfer_size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=456, deprecation=DeprecationInfo( - replacement="http.response.size", - status=DeprecationStatus.BACKFILL + replacement="http.response.size", status=DeprecationStatus.BACKFILL ), aliases=["http.response.size"], ), "http.route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/users/:id", aliases=["url.template"], @@ -6444,87 +6248,63 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="https", - deprecation=DeprecationInfo( - replacement="url.scheme" - ), + deprecation=DeprecationInfo(replacement="url.scheme"), aliases=["url.scheme"], ), "http.server_name": AttributeMetadata( brief="The server domain name", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo( - replacement="server.address" - ), - aliases=["server.address","net.host.name","http.host"], + deprecation=DeprecationInfo(replacement="server.address"), + aliases=["server.address", "net.host.name", "http.host"], ), "http.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=404, - deprecation=DeprecationInfo( - replacement="http.response.status_code" - ), + deprecation=DeprecationInfo(replacement="http.response.status_code"), aliases=["http.response.status_code"], ), "http.target": AttributeMetadata( brief="The pathname and query string of the URL.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/test?foo=bar#buzz", deprecation=DeprecationInfo( replacement="url.path", - reason="This attribute is being deprecated in favor of url.path and url.query" + reason="This attribute is being deprecated in favor of url.path and url.query", ), ), "http.url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo( - replacement="url.full" - ), - aliases=["url.full","url"], + deprecation=DeprecationInfo(replacement="url.full"), + aliases=["url.full", "url"], ), "http.user_agent": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", - deprecation=DeprecationInfo( - replacement="user_agent.original" - ), + deprecation=DeprecationInfo(replacement="user_agent.original"), aliases=["user_agent.original"], ), "id": AttributeMetadata( brief="A unique identifier for the span.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -6532,99 +6312,77 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.gc.action": AttributeMetadata( brief="Name of the garbage collector action.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="end of minor GC", ), "jvm.gc.name": AttributeMetadata( brief="Name of the garbage collector.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Young Generation", ), "jvm.memory.pool.name": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Old Gen", ), "jvm.memory.type": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="G1 Old Gen", ), "jvm.thread.daemon": AttributeMetadata( brief="Whether the thread is daemon or not.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=True, ), "jvm.thread.state": AttributeMetadata( brief="State of the thread.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="blocked", ), "lcp.element": AttributeMetadata( brief="The dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="img", ), "lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="#hero", ), "lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1234, ), "lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com", ), "logger.name": AttributeMetadata( brief="The name of the logger that generated this event.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="myLogger", ), @@ -6633,7 +6391,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Cancellation reasons may contain user-specific or sensitive information" + reason="Cancellation reasons may contain user-specific or sensitive information", ), is_in_otel=False, example="User cancelled the request", @@ -6641,18 +6399,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.cancelled.request_id": AttributeMetadata( brief="Request ID of the cancelled MCP operation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123", ), "mcp.client.name": AttributeMetadata( brief="Name of the MCP client application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="claude-desktop", ), @@ -6661,7 +6415,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Client titles may reveal user-specific application configurations or custom setups" + reason="Client titles may reveal user-specific application configurations or custom setups", ), is_in_otel=False, example="Claude Desktop", @@ -6669,36 +6423,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.client.version": AttributeMetadata( brief="Version of the MCP client application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0.0", ), "mcp.lifecycle.phase": AttributeMetadata( brief="Lifecycle phase indicator for MCP operations.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="initialization_complete", ), "mcp.logging.data_type": AttributeMetadata( brief="Data type of the logged message content.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="string", ), "mcp.logging.level": AttributeMetadata( brief="Log level for MCP logging operations.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="info", ), @@ -6707,7 +6453,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Logger names may be user-defined and could contain sensitive information" + reason="Logger names may be user-defined and could contain sensitive information", ), is_in_otel=False, example="mcp_server", @@ -6715,28 +6461,21 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.logging.message": AttributeMetadata( brief="Log message content from MCP logging operations.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="Log messages can contain user data" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="Log messages can contain user data"), is_in_otel=False, example="Tool execution completed successfully", ), "mcp.method.name": AttributeMetadata( brief="The name of the MCP request or notification method being called.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="tools/call", ), "mcp.progress.current": AttributeMetadata( brief="Current progress value of an MCP operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=50, ), @@ -6745,7 +6484,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Progress messages may contain user-specific or sensitive information" + reason="Progress messages may contain user-specific or sensitive information", ), is_in_otel=False, example="Processing 50 of 100 items", @@ -6753,27 +6492,21 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.progress.percentage": AttributeMetadata( brief="Calculated progress percentage of an MCP operation. Computed from current/total * 100.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=50, ), "mcp.progress.token": AttributeMetadata( brief="Token for tracking progress of an MCP operation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="progress-token-123", ), "mcp.progress.total": AttributeMetadata( brief="Total progress target value of an MCP operation.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=100, ), @@ -6782,7 +6515,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Prompt names may reveal user behavior patterns or sensitive operations" + reason="Prompt names may reveal user behavior patterns or sensitive operations", ), is_in_otel=False, example="summarize", @@ -6790,64 +6523,49 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.prompt.result.description": AttributeMetadata( brief="Description of the prompt result.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="A summary of the requested information", ), "mcp.prompt.result.message_content": AttributeMetadata( brief="Content of the message in the prompt result. Used for single message results only.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="Please provide a summary of the document", ), "mcp.prompt.result.message_count": AttributeMetadata( brief="Number of messages in the prompt result.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=3, ), "mcp.prompt.result.message_role": AttributeMetadata( brief="Role of the message in the prompt result. Used for single message results only.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="user", ), "mcp.protocol.ready": AttributeMetadata( brief="Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1, ), "mcp.protocol.version": AttributeMetadata( brief="MCP protocol version used in the session.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="2024-11-05", ), "mcp.request.argument.": AttributeMetadata( brief="MCP request argument with dynamic key suffix. The is replaced with the actual argument name. The value is a JSON-stringified representation of the argument value.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="Arguments contain user input" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="Arguments contain user input"), is_in_otel=False, has_dynamic_suffix=True, example="mcp.request.argument.query='weather in Paris'", @@ -6855,57 +6573,42 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.request.argument.name": AttributeMetadata( brief="Name argument from prompts/get MCP request.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="Prompt names can contain user input" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="Prompt names can contain user input"), is_in_otel=False, example="summarize", ), "mcp.request.argument.uri": AttributeMetadata( brief="URI argument from resources/read MCP request.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="URIs can contain user file paths" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain user file paths"), is_in_otel=False, example="file:///path/to/resource", ), "mcp.request.id": AttributeMetadata( brief="JSON-RPC request identifier for the MCP request. Unique within the MCP session.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1", ), "mcp.resource.protocol": AttributeMetadata( brief="Protocol of the resource URI being accessed, extracted from the URI.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="file", ), "mcp.resource.uri": AttributeMetadata( brief="The resource URI being accessed in an MCP operation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="URIs can contain sensitive file paths" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="URIs can contain sensitive file paths"), is_in_otel=False, example="file:///path/to/file.txt", ), "mcp.server.name": AttributeMetadata( brief="Name of the MCP server application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sentry-mcp-server", ), @@ -6914,7 +6617,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Server titles may reveal user-specific application configurations or custom setups" + reason="Server titles may reveal user-specific application configurations or custom setups", ), is_in_otel=False, example="Sentry MCP Server", @@ -6922,84 +6625,65 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "mcp.server.version": AttributeMetadata( brief="Version of the MCP server application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="0.1.0", ), "mcp.session.id": AttributeMetadata( brief="Identifier for the MCP session.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="550e8400-e29b-41d4-a716-446655440000", ), "mcp.tool.name": AttributeMetadata( brief="Name of the MCP tool being called.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="calculator", ), "mcp.tool.result.content": AttributeMetadata( brief="The content of the tool result.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE, - reason="Tool results can contain user data" - ), + pii=PiiInfo(isPii=IsPii.TRUE, reason="Tool results can contain user data"), is_in_otel=False, - example="{\"output\": \"rainy\", \"toolCallId\": \"1\"}", + example='{"output": "rainy", "toolCallId": "1"}', ), "mcp.tool.result.content_count": AttributeMetadata( brief="Number of content items in the tool result.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1, ), "mcp.tool.result.is_error": AttributeMetadata( brief="Whether a tool execution resulted in an error.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=False, ), "mcp.transport": AttributeMetadata( brief="Transport method used for MCP communication.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="stdio", ), "mdc.": AttributeMetadata( brief="Attributes from the Mapped Diagnostic Context (MDC) present at the moment the log record was created. The MDC is supported by all the most popular logging solutions in the Java ecosystem, and it's usually implemented as a thread-local map that stores context for e.g. a specific request.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="mdc.some_key='some_value'", - sdks=["java","java.logback","java.jul","java.log4j2"], + sdks=["java", "java.logback", "java.jul", "java.log4j2"], ), "messaging.destination.connection": AttributeMetadata( brief="The message destination connection.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="BestTopic", sdks=["php-laravel"], @@ -7007,9 +6691,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.destination.name": AttributeMetadata( brief="The message destination name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="BestTopic", sdks=["php-laravel"], @@ -7017,9 +6699,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.body.size": AttributeMetadata( brief="The size of the message body in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=839, sdks=["php-laravel"], @@ -7027,9 +6707,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.envelope.size": AttributeMetadata( brief="The size of the message body and metadata in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=1045, sdks=["php-laravel"], @@ -7037,9 +6715,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.id": AttributeMetadata( brief="A value used by the messaging system as an identifier for the message, represented as a string.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -7047,9 +6723,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.receive.latency": AttributeMetadata( brief="The latency between when the message was published and received.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1732847252, sdks=["php-laravel"], @@ -7057,9 +6731,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.retry.count": AttributeMetadata( brief="The amount of attempts to send the message.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=2, sdks=["php-laravel"], @@ -7067,18 +6739,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.operation.type": AttributeMetadata( brief="A string identifying the type of the messaging operation", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="create", ), "messaging.system": AttributeMetadata( brief="The messaging system as identified by the client instrumentation.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="activemq", sdks=["php-laravel"], @@ -7086,233 +6754,173 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GET", - deprecation=DeprecationInfo( - replacement="http.request.method" - ), + deprecation=DeprecationInfo(replacement="http.request.method"), aliases=["http.request.method"], - sdks=["javascript-browser","javascript-node"], + sdks=["javascript-browser", "javascript-node"], ), "navigation.type": AttributeMetadata( brief="The type of navigation done by a client-side router.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="router.push", ), "nel.elapsed_time": AttributeMetadata( brief="The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=100, ), "nel.phase": AttributeMetadata( - brief="If request failed, the phase of its network error. If request succeeded, \"application\".", + brief='If request failed, the phase of its network error. If request succeeded, "application".', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="application", ), "nel.referrer": AttributeMetadata( brief="request's referrer, as determined by the referrer policy associated with its client.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com/foo?bar=baz", ), "nel.sampling_function": AttributeMetadata( brief="The sampling function used to determine if the request should be sampled.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, ), "nel.type": AttributeMetadata( - brief="If request failed, the type of its network error. If request succeeded, \"ok\".", + brief='If request failed, the type of its network error. If request succeeded, "ok".', type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="dns.unreachable", ), "net.host.ip": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo( - replacement="network.local.address" - ), - aliases=["network.local.address","net.sock.host.addr"], + deprecation=DeprecationInfo(replacement="network.local.address"), + aliases=["network.local.address", "net.sock.host.addr"], ), "net.host.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo( - replacement="server.address" - ), - aliases=["server.address","http.server_name","http.host"], + deprecation=DeprecationInfo(replacement="server.address"), + aliases=["server.address", "http.server_name", "http.host"], ), "net.host.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=1337, - deprecation=DeprecationInfo( - replacement="server.port" - ), + deprecation=DeprecationInfo(replacement="server.port"), aliases=["server.port"], ), "net.peer.ip": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo( - replacement="network.peer.address" - ), - aliases=["network.peer.address","net.sock.peer.addr"], + deprecation=DeprecationInfo(replacement="network.peer.address"), + aliases=["network.peer.address", "net.sock.peer.addr"], ), "net.peer.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use server.address on client spans and client.address on server spans." + reason="Deprecated, use server.address on client spans and client.address on server spans.", ), ), "net.peer.port": AttributeMetadata( brief="Peer port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=1337, deprecation=DeprecationInfo( replacement="server.port", - reason="Deprecated, use server.port on client spans and client.port on server spans." + reason="Deprecated, use server.port on client spans and client.port on server spans.", ), ), "net.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="http", - deprecation=DeprecationInfo( - replacement="network.protocol.name" - ), + deprecation=DeprecationInfo(replacement="network.protocol.name"), aliases=["network.protocol.name"], ), "net.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo( - replacement="network.protocol.version" - ), - aliases=["network.protocol.version","http.flavor"], + deprecation=DeprecationInfo(replacement="network.protocol.version"), + aliases=["network.protocol.version", "http.flavor"], ), "net.sock.family": AttributeMetadata( brief="OSI transport and network layer", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="inet", deprecation=DeprecationInfo( replacement="network.transport", - reason="Deprecated, use network.transport and network.type." + reason="Deprecated, use network.transport and network.type.", ), ), "net.sock.host.addr": AttributeMetadata( brief="Local address of the network connection mapping to Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/var/my.sock", - deprecation=DeprecationInfo( - replacement="network.local.address" - ), - aliases=["network.local.address","net.host.ip"], + deprecation=DeprecationInfo(replacement="network.local.address"), + aliases=["network.local.address", "net.host.ip"], ), "net.sock.host.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=8080, - deprecation=DeprecationInfo( - replacement="network.local.port" - ), + deprecation=DeprecationInfo(replacement="network.local.port"), aliases=["network.local.port"], ), "net.sock.peer.addr": AttributeMetadata( brief="Peer address of the network connection - IP address", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo( - replacement="network.peer.address" - ), - aliases=["network.peer.address","net.peer.ip"], + deprecation=DeprecationInfo(replacement="network.peer.address"), + aliases=["network.peer.address", "net.peer.ip"], ), "net.sock.peer.name": AttributeMetadata( brief="Peer address of the network connection - Unix domain socket name", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/var/my.sock", deprecation=DeprecationInfo( @@ -7322,44 +6930,32 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=8080, - deprecation=DeprecationInfo( - replacement="network.peer.port" - ), + deprecation=DeprecationInfo(replacement="network.peer.port"), ), "net.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="tcp", - deprecation=DeprecationInfo( - replacement="network.transport" - ), + deprecation=DeprecationInfo(replacement="network.transport"), aliases=["network.transport"], ), "network.local.address": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="10.1.2.80", - aliases=["net.host.ip","net.sock.host.addr"], + aliases=["net.host.ip", "net.sock.host.addr"], ), "network.local.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=65400, aliases=["net.sock.host.port"], @@ -7367,28 +6963,22 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.peer.address": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="10.1.2.80", - aliases=["net.peer.ip","net.sock.peer.addr"], + aliases=["net.peer.ip", "net.sock.peer.addr"], ), "network.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=65400, ), "network.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="http", aliases=["net.protocol.name"], @@ -7396,19 +6986,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1.1", - aliases=["http.flavor","net.protocol.version"], + aliases=["http.flavor", "net.protocol.version"], ), "network.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="tcp", aliases=["net.transport"], @@ -7416,99 +7002,77 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.type": AttributeMetadata( brief="OSI network layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="ipv4", ), "os.build_id": AttributeMetadata( brief="The build ID of the operating system.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1234567890", ), "os.description": AttributeMetadata( brief="Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Ubuntu 18.04.1 LTS", ), "os.name": AttributeMetadata( brief="Human readable operating system name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Ubuntu", ), "os.type": AttributeMetadata( brief="The operating system type.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="linux", ), "os.version": AttributeMetadata( brief="The version of the operating system.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="18.04.2", ), "otel.scope.name": AttributeMetadata( brief="The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="io.opentelemetry.contrib.mongodb", ), "otel.scope.version": AttributeMetadata( brief="The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="2.4.5", ), "otel.status_code": AttributeMetadata( brief="Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="OK", ), "otel.status_description": AttributeMetadata( brief="Description of the Status if it has a value, otherwise not set.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="resource not found", ), "params.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="params.id='123'", @@ -7517,9 +7081,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "previous_route": AttributeMetadata( brief="Also used by mobile SDKs to indicate the previous route in the application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="HomeScreen", sdks=["javascript-reactnative"], @@ -7527,94 +7089,72 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.executable.name": AttributeMetadata( brief="The name of the executable that started the process.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="getsentry", ), "process.pid": AttributeMetadata( brief="The process ID of the running process.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=12345, ), "process.runtime.description": AttributeMetadata( brief="An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Eclipse OpenJ9 VM openj9-0.21.0", ), "process.runtime.name": AttributeMetadata( brief="The name of the runtime. Equivalent to `name` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="node", ), "process.runtime.version": AttributeMetadata( brief="The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="18.04.2", ), "profile_id": AttributeMetadata( brief="The id of the sentry profile.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123e4567e89b12d3a456426614174000", - deprecation=DeprecationInfo( - replacement="sentry.profile_id" - ), + deprecation=DeprecationInfo(replacement="sentry.profile_id"), aliases=["sentry.profile_id"], ), "query.": AttributeMetadata( brief="An item in a query string. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="query.id='123'", deprecation=DeprecationInfo( replacement="url.query", - reason="Instead of sending items individually in query., they should be sent all together with url.query." + reason="Instead of sending items individually in query., they should be sent all together with url.query.", ), ), "release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="production", - deprecation=DeprecationInfo( - replacement="sentry.release" - ), + deprecation=DeprecationInfo(replacement="sentry.release"), aliases=["sentry.release"], ), "remix.action_form_data.": AttributeMetadata( brief="Remix form data, being the form data key, the value being the form data value.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="http.response.header.text='test'", @@ -7623,35 +7163,26 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123e4567e89b12d3a456426614174000", - deprecation=DeprecationInfo( - replacement="sentry.replay_id" - ), + deprecation=DeprecationInfo(replacement="sentry.replay_id"), aliases=["sentry.replay_id"], ), "resource.deployment.environment.name": AttributeMetadata( brief="The software deployment environment name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example="production", deprecation=DeprecationInfo( - replacement="sentry.environment", - status=DeprecationStatus.BACKFILL + replacement="sentry.environment", status=DeprecationStatus.BACKFILL ), ), "resource.render_blocking_status": AttributeMetadata( brief="The render blocking status of the resource.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="non-blocking", sdks=["javascript-browser"], @@ -7659,193 +7190,147 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework. Also used by mobile SDKs to indicate the current route in the application.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="App\\Controller::indexAction", - deprecation=DeprecationInfo( - replacement="http.route" - ), + deprecation=DeprecationInfo(replacement="http.route"), aliases=["http.route"], - sdks=["php-laravel","javascript-reactnative"], + sdks=["php-laravel", "javascript-reactnative"], ), "rpc.grpc.status_code": AttributeMetadata( brief="The numeric status code of the gRPC request.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=2, ), "rpc.service": AttributeMetadata( brief="The full (logical) name of the service being called, including its package name, if applicable.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="myService.BestService", ), "sentry.action": AttributeMetadata( brief="Used as a generic attribute representing the action depending on the type of span. For instance, this is the database query operation for DB spans, and the request method for HTTP spans.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT", ), "sentry.browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Chrome", - deprecation=DeprecationInfo( - replacement="browser.name" - ), + deprecation=DeprecationInfo(replacement="browser.name"), aliases=["browser.name"], ), "sentry.browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="120.0.6099.130", - deprecation=DeprecationInfo( - replacement="browser.version" - ), + deprecation=DeprecationInfo(replacement="browser.version"), aliases=["browser.version"], ), "sentry.cancellation_reason": AttributeMetadata( brief="The reason why a span ended early.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="document.hidden", ), "sentry.category": AttributeMetadata( brief="The high-level category of a span, derived from the span operation or span attributes. This categorizes spans by their general purpose (e.g., database, HTTP, UI). Known values include: 'ai', 'ai.pipeline', 'app', 'browser', 'cache', 'console', 'db', 'event', 'file', 'function.aws', 'function.azure', 'function.gcp', 'function.nextjs', 'function.remix', 'graphql', 'grpc', 'http', 'measure', 'middleware', 'navigation', 'pageload', 'queue', 'resource', 'rpc', 'serialize', 'subprocess', 'template', 'topic', 'ui', 'ui.angular', 'ui.ember', 'ui.react', 'ui.svelte', 'ui.vue', 'view', 'websocket'.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="db", ), "sentry.client_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in the SDK.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, ), "sentry.description": AttributeMetadata( brief="The human-readable description of a span.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="index view query", ), "sentry.dist": AttributeMetadata( brief="The sentry dist.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0", ), "sentry.domain": AttributeMetadata( brief="Used as a generic attribute representing the domain depending on the type of span. For instance, this is the collection/table name for database spans, and the server address for HTTP spans.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="example.com", ), "sentry.dsc.environment": AttributeMetadata( brief="The environment from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="prod", ), "sentry.dsc.public_key": AttributeMetadata( brief="The public key from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="c51734c603c4430eb57cb0a5728a479d", ), "sentry.dsc.release": AttributeMetadata( brief="The release identifier from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="frontend@e8211be71b214afab5b85de4b4c54be3714952bb", ), "sentry.dsc.sample_rate": AttributeMetadata( brief="The sample rate from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1.0", ), "sentry.dsc.sampled": AttributeMetadata( brief="Whether the event was sampled according to the dynamic sampling context.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, ), "sentry.dsc.trace_id": AttributeMetadata( brief="The trace ID from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="047372980460430cbc78d9779df33a46", ), "sentry.dsc.transaction": AttributeMetadata( brief="The transaction name from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="/issues/errors-outages/", ), "sentry.environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="production", aliases=["environment"], @@ -7853,89 +7338,69 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.exclusive_time": AttributeMetadata( brief="The exclusive time duration of the span in milliseconds.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1234, ), "sentry.graphql.operation": AttributeMetadata( brief="Indicates the type of graphql operation, emitted by the Javascript SDK.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="getUserById", ), "sentry.group": AttributeMetadata( brief="Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, ), "sentry.http.prefetch": AttributeMetadata( brief="If an http request was a prefetch request.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, ), "sentry.idle_span_finish_reason": AttributeMetadata( brief="The reason why an idle span ended early.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="idleTimeout", ), "sentry.is_remote": AttributeMetadata( brief="Indicates whether a span's parent is remote.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, ), "sentry.kind": AttributeMetadata( brief="Used to clarify the relationship between parents and children, or to distinguish between spans, e.g. a `server` and `client` span with the same name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="server", ), "sentry.message.parameter.": AttributeMetadata( brief="A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="sentry.message.parameter.0='123'", ), "sentry.message.template": AttributeMetadata( brief="The parameterized template string.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Hello, {name}!", ), "sentry.module.": AttributeMetadata( brief="A module that was loaded in the process. The key is the name of the module.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="sentry.module.brianium/paratest='v7.7.0'", @@ -7943,9 +7408,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.route": AttributeMetadata( brief="A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="/posts/[id]/layout", sdks=["javascript"], @@ -7953,9 +7416,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.type": AttributeMetadata( brief="A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="generateMetadata", sdks=["javascript"], @@ -7963,71 +7424,55 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.normalized_db_query": AttributeMetadata( brief="The normalized version of `db.query.text`.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", ), "sentry.normalized_db_query.hash": AttributeMetadata( brief="The hash of `sentry.normalized_db_query`.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, ), "sentry.normalized_description": AttributeMetadata( brief="Used as a generic attribute representing the normalized `sentry.description`. This refers to the legacy use case of `sentry.description` where it holds relevant data depending on the type of span (e.g. database query, resource url, http request description, etc).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="SELECT .. FROM sentry_project WHERE (project_id = %s)", ), "sentry.observed_timestamp_nanos": AttributeMetadata( brief="The timestamp at which an envelope was received by Relay, in nanoseconds.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1544712660300000000", ), "sentry.op": AttributeMetadata( brief="The operation of a span.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="http.client", ), "sentry.origin": AttributeMetadata( brief="The origin of the instrumentation (e.g. span, log, etc.)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="auto.http.otel.fastify", ), "sentry.platform": AttributeMetadata( brief="The sdk platform that generated the event.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="php", ), "sentry.profile_id": AttributeMetadata( brief="The id of the sentry profile.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["profile_id"], @@ -8035,19 +7480,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="7.0.0", - aliases=["service.version","release"], + aliases=["service.version", "release"], ), "sentry.replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["replay_id"], @@ -8055,45 +7496,40 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.replay_is_buffering": AttributeMetadata( brief="A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, ), "sentry.sdk.integrations": AttributeMetadata( brief="A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, - example=["InboundFilters", "FunctionToString", "BrowserApiErrors", "Breadcrumbs"], + example=[ + "InboundFilters", + "FunctionToString", + "BrowserApiErrors", + "Breadcrumbs", + ], ), "sentry.sdk.name": AttributeMetadata( brief="The sentry sdk name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="@sentry/react", ), "sentry.sdk.version": AttributeMetadata( brief="The sentry sdk version.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="7.0.0", ), "sentry.segment.id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="051581bf3cb55c13", aliases=["sentry.segment_id"], @@ -8101,67 +7537,51 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment.name": AttributeMetadata( brief="The segment name of a span", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GET /user", ), "sentry.segment_id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="051581bf3cb55c13", - deprecation=DeprecationInfo( - replacement="sentry.segment.id" - ), + deprecation=DeprecationInfo(replacement="sentry.segment.id"), aliases=["sentry.segment.id"], ), "sentry.server_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in Relay.", type=AttributeType.DOUBLE, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=0.5, ), "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'`.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="route", ), "sentry.status.message": AttributeMetadata( brief="The from OTLP extracted status message.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="foobar", ), "sentry.trace.parent_span_id": AttributeMetadata( brief="The span id of the span that was active when the log was collected. This should not be set if there was no active span.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="b0e6f15b45c36b12", ), "sentry.transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="GET /", aliases=["transaction"], @@ -8169,19 +7589,15 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "server.address": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", - aliases=["http.server_name","net.host.name","http.host"], + aliases=["http.server_name", "net.host.name", "http.host"], ), "server.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=1337, aliases=["net.host.port"], @@ -8189,18 +7605,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "service.name": AttributeMetadata( brief="Logical name of the service.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="omegastar", ), "service.version": AttributeMetadata( brief="The version string of the service API or implementation. The format is not defined by these conventions.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="5.0.0", aliases=["sentry.release"], @@ -8208,27 +7620,21 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "thread.id": AttributeMetadata( brief="Current “managed” thread ID.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=56, ), "thread.name": AttributeMetadata( brief="Current thread name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="main", ), "timber.tag": AttributeMetadata( brief="The log tag provided by the timber logging framework.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="MyTag", sdks=["sentry.java.android"], @@ -8236,96 +7642,74 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="GET /", - deprecation=DeprecationInfo( - replacement="sentry.transaction" - ), + deprecation=DeprecationInfo(replacement="sentry.transaction"), aliases=["sentry.transaction"], ), "type": AttributeMetadata( brief="More granular type of the operation happening.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="fetch", - sdks=["javascript-browser","javascript-node"], + sdks=["javascript-browser", "javascript-node"], ), "ui.component_name": AttributeMetadata( brief="The name of the associated component.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="HomeButton", ), "ui.contributes_to_ttfd": AttributeMetadata( brief="Whether the span execution contributed to the TTFD (time to fully drawn) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, ), "ui.contributes_to_ttid": AttributeMetadata( brief="Whether the span execution contributed to the TTID (time to initial display) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=True, ), "url.domain": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="example.com", ), "url.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="details", ), "url.full": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - aliases=["http.url","url"], + aliases=["http.url", "url"], ), "url.path": AttributeMetadata( brief="The URI path component.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/foo", ), "url.path.parameter.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, has_dynamic_suffix=True, example="url.path.parameter.id='123'", @@ -8334,9 +7718,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=True, example=1337, ), @@ -8345,7 +7727,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", ), is_in_otel=True, example="foo=bar&bar=baz", @@ -8353,9 +7735,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="https", aliases=["http.scheme"], @@ -8363,9 +7743,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.template": AttributeMetadata( brief="The low-cardinality template of an absolute path reference.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="/users/:id", aliases=["http.route"], @@ -8373,122 +7751,94 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo( - replacement="url.full" - ), - aliases=["url.full","http.url"], - sdks=["javascript-browser","javascript-node"], + deprecation=DeprecationInfo(replacement="url.full"), + aliases=["url.full", "http.url"], + sdks=["javascript-browser", "javascript-node"], ), "user.email": AttributeMetadata( brief="User email address.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="test@example.com", ), "user.full_name": AttributeMetadata( brief="User's full name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="John Smith", ), "user.geo.city": AttributeMetadata( brief="Human readable city name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Toronto", ), "user.geo.country_code": AttributeMetadata( brief="Two-letter country code (ISO 3166-1 alpha-2).", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="CA", ), "user.geo.region": AttributeMetadata( brief="Human readable region name or code.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Canada", ), "user.geo.subdivision": AttributeMetadata( brief="Human readable subdivision name.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="Ontario", ), "user.hash": AttributeMetadata( brief="Unique user hash to correlate information for a user in anonymized form.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", ), "user.id": AttributeMetadata( brief="Unique identifier of the user.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="S-1-5-21-202424912787-2692429404-2351956786-1000", ), "user.ip_address": AttributeMetadata( brief="The IP address of the user.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="192.168.1.1", ), "user.name": AttributeMetadata( brief="Short name or login/username of the user.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example="j.smith", ), "user.roles": AttributeMetadata( brief="Array of user roles at the time of the event.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=True, example=["admin", "editor"], ), "user_agent.original": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", aliases=["http.user_agent"], @@ -8496,315 +7846,245 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "vercel.branch": AttributeMetadata( brief="Git branch name for Vercel project", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="main", ), "vercel.build_id": AttributeMetadata( brief="Identifier for the Vercel build (only present on build logs)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="bld_cotnkcr76", ), "vercel.deployment_id": AttributeMetadata( brief="Identifier for the Vercel deployment", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="dpl_233NRGRjVZX1caZrXWtz5g1TAksD", ), "vercel.destination": AttributeMetadata( brief="Origin of the external content in Vercel (only on external logs)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="https://vitals.vercel-insights.com/v1", ), "vercel.edge_type": AttributeMetadata( brief="Type of edge runtime in Vercel", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="edge-function", ), "vercel.entrypoint": AttributeMetadata( brief="Entrypoint for the request in Vercel", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="api/index.js", ), "vercel.execution_region": AttributeMetadata( brief="Region where the request is executed", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", ), "vercel.id": AttributeMetadata( brief="Unique identifier for the log entry in Vercel", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="1573817187330377061717300000", ), "vercel.ja3_digest": AttributeMetadata( brief="JA3 fingerprint digest of Vercel request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0", ), "vercel.ja4_digest": AttributeMetadata( brief="JA4 fingerprint digest", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="t13d1516h2_8daaf6152771_02713d6af862", ), "vercel.log_type": AttributeMetadata( brief="Vercel log output type", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="stdout", ), "vercel.project_id": AttributeMetadata( brief="Identifier for the Vercel project", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="gdufoJxB6b9b1fEqr1jUtFkyavUU", ), "vercel.project_name": AttributeMetadata( brief="Name of the Vercel project", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="my-app", ), "vercel.proxy.cache_id": AttributeMetadata( brief="Original request ID when request is served from cache", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="pdx1::v8g4b-1744143786684-93dafbc0f70d", ), "vercel.proxy.client_ip": AttributeMetadata( brief="Client IP address", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.TRUE - ), + pii=PiiInfo(isPii=IsPii.TRUE), is_in_otel=False, example="120.75.16.101", ), "vercel.proxy.host": AttributeMetadata( brief="Hostname of the request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="test.vercel.app", ), "vercel.proxy.lambda_region": AttributeMetadata( brief="Region where lambda function executed", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", ), "vercel.proxy.method": AttributeMetadata( brief="HTTP method of the request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="GET", ), "vercel.proxy.path": AttributeMetadata( brief="Request path with query parameters", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="/dynamic/some-value.json?route=some-value", ), "vercel.proxy.path_type": AttributeMetadata( brief="How the request was served based on its path and project configuration", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="func", ), "vercel.proxy.path_type_variant": AttributeMetadata( brief="Variant of the path type", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="api", ), "vercel.proxy.referer": AttributeMetadata( brief="Referer of the request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example="*.vercel.app", ), "vercel.proxy.region": AttributeMetadata( brief="Region where the request is processed", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1", ), "vercel.proxy.response_byte_size": AttributeMetadata( brief="Size of the response in bytes", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1024, ), "vercel.proxy.scheme": AttributeMetadata( brief="Protocol of the request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="https", ), "vercel.proxy.status_code": AttributeMetadata( brief="HTTP status code of the proxy request", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=200, ), "vercel.proxy.timestamp": AttributeMetadata( brief="Unix timestamp when the proxy request was made", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=1573817250172, ), "vercel.proxy.user_agent": AttributeMetadata( brief="User agent strings of the request", type=AttributeType.STRING_ARRAY, - pii=PiiInfo( - isPii=IsPii.MAYBE - ), + pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=False, example=["Mozilla/5.0..."], ), "vercel.proxy.vercel_cache": AttributeMetadata( brief="Cache status sent to the browser", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="REVALIDATED", ), "vercel.proxy.vercel_id": AttributeMetadata( brief="Vercel-specific identifier", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="sfo1::abc123", ), "vercel.proxy.waf_action": AttributeMetadata( brief="Action taken by firewall rules", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="deny", ), "vercel.proxy.waf_rule_id": AttributeMetadata( brief="ID of the firewall rule that matched", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="rule_gAHz8jtSB1Gy", ), "vercel.request_id": AttributeMetadata( brief="Identifier of the Vercel request", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="643af4e3-975a-4cc7-9e7a-1eda11539d90", ), "vercel.source": AttributeMetadata( brief="Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", type=AttributeType.STRING, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example="build", ), "vercel.status_code": AttributeMetadata( brief="HTTP status code of the request (-1 means no response returned and the lambda crashed)", type=AttributeType.INTEGER, - pii=PiiInfo( - isPii=IsPii.FALSE - ), + pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False, example=200, ), @@ -8815,429 +8095,433 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): If a key is not present in this dictionary, it means that attribute is not defined in the Sentry Semantic Conventions. """ -Attributes = TypedDict("Attributes", { - "ai.citations": List[str], - "ai.completion_tokens.used": int, - "ai.documents": List[str], - "ai.finish_reason": str, - "ai.frequency_penalty": float, - "ai.function_call": str, - "ai.generation_id": str, - "ai.input_messages": str, - "ai.is_search_required": bool, - "ai.metadata": str, - "ai.model.provider": str, - "ai.model_id": str, - "ai.pipeline.name": str, - "ai.preamble": str, - "ai.presence_penalty": float, - "ai.prompt_tokens.used": int, - "ai.raw_prompting": bool, - "ai.response_format": str, - "ai.responses": List[str], - "ai.search_queries": List[str], - "ai.search_results": List[str], - "ai.seed": str, - "ai.streaming": bool, - "ai.tags": str, - "ai.temperature": float, - "ai.texts": List[str], - "ai.tool_calls": List[str], - "ai.tools": List[str], - "ai.top_k": int, - "ai.top_p": float, - "ai.total_cost": float, - "ai.total_tokens.used": int, - "ai.warnings": List[str], - "app_start_type": str, - "blocked_main_thread": bool, - "browser.name": str, - "browser.report.type": str, - "browser.script.invoker": str, - "browser.script.invoker_type": str, - "browser.script.source_char_position": int, - "browser.version": str, - "cache.hit": bool, - "cache.item_size": int, - "cache.key": List[str], - "cache.operation": str, - "cache.ttl": int, - "channel": str, - "client.address": str, - "client.port": int, - "cloudflare.d1.duration": int, - "cloudflare.d1.rows_read": int, - "cloudflare.d1.rows_written": int, - "code.file.path": str, - "code.filepath": str, - "code.function": str, - "code.function.name": str, - "code.line.number": int, - "code.lineno": int, - "code.namespace": str, - "db.collection.name": str, - "db.name": str, - "db.namespace": str, - "db.operation": str, - "db.operation.name": str, - "db.query.parameter.": str, - "db.query.summary": str, - "db.query.text": str, - "db.redis.connection": str, - "db.redis.parameters": List[str], - "db.sql.bindings": List[str], - "db.statement": str, - "db.system": str, - "db.system.name": str, - "db.user": str, - "device.brand": str, - "device.family": str, - "device.model": str, - "environment": str, - "error.type": str, - "event.id": int, - "event.name": str, - "exception.escaped": bool, - "exception.message": str, - "exception.stacktrace": str, - "exception.type": str, - "faas.coldstart": bool, - "faas.cron": str, - "faas.time": str, - "faas.trigger": str, - "flag.evaluation.": bool, - "frames.delay": int, - "frames.frozen": int, - "frames.slow": int, - "frames.total": int, - "fs_error": str, - "gen_ai.agent.name": str, - "gen_ai.assistant.message": str, - "gen_ai.choice": str, - "gen_ai.cost.input_tokens": float, - "gen_ai.cost.output_tokens": float, - "gen_ai.cost.total_tokens": float, - "gen_ai.embeddings.input": str, - "gen_ai.input.messages": str, - "gen_ai.operation.name": str, - "gen_ai.operation.type": str, - "gen_ai.output.messages": str, - "gen_ai.pipeline.name": str, - "gen_ai.prompt": str, - "gen_ai.request.available_tools": str, - "gen_ai.request.frequency_penalty": float, - "gen_ai.request.max_tokens": int, - "gen_ai.request.messages": str, - "gen_ai.request.model": str, - "gen_ai.request.presence_penalty": float, - "gen_ai.request.seed": str, - "gen_ai.request.temperature": float, - "gen_ai.request.top_k": int, - "gen_ai.request.top_p": float, - "gen_ai.response.finish_reasons": str, - "gen_ai.response.id": str, - "gen_ai.response.model": str, - "gen_ai.response.streaming": bool, - "gen_ai.response.text": str, - "gen_ai.response.tokens_per_second": float, - "gen_ai.response.tool_calls": str, - "gen_ai.system": str, - "gen_ai.system.message": str, - "gen_ai.system_instructions": str, - "gen_ai.tool.call.arguments": str, - "gen_ai.tool.call.result": str, - "gen_ai.tool.definitions": str, - "gen_ai.tool.description": str, - "gen_ai.tool.input": str, - "gen_ai.tool.message": str, - "gen_ai.tool.name": str, - "gen_ai.tool.output": str, - "gen_ai.tool.type": str, - "gen_ai.usage.completion_tokens": int, - "gen_ai.usage.input_tokens": int, - "gen_ai.usage.input_tokens.cache_write": int, - "gen_ai.usage.input_tokens.cached": int, - "gen_ai.usage.output_tokens": int, - "gen_ai.usage.output_tokens.reasoning": int, - "gen_ai.usage.prompt_tokens": int, - "gen_ai.usage.total_tokens": int, - "gen_ai.user.message": str, - "graphql.operation.name": str, - "graphql.operation.type": str, - "http.client_ip": str, - "http.decoded_response_content_length": int, - "http.flavor": str, - "http.fragment": str, - "http.host": str, - "http.method": str, - "http.query": str, - "http.request.connect_start": float, - "http.request.connection_end": float, - "http.request.domain_lookup_end": float, - "http.request.domain_lookup_start": float, - "http.request.fetch_start": float, - "http.request.header.": List[str], - "http.request.method": str, - "http.request.redirect_end": float, - "http.request.redirect_start": float, - "http.request.request_start": float, - "http.request.resend_count": int, - "http.request.response_end": float, - "http.request.response_start": float, - "http.request.secure_connection_start": float, - "http.request.time_to_first_byte": float, - "http.request.worker_start": float, - "http.response.body.size": int, - "http.response.header.": List[str], - "http.response.header.content-length": str, - "http.response.size": int, - "http.response.status_code": int, - "http.response_content_length": int, - "http.response_transfer_size": int, - "http.route": str, - "http.scheme": str, - "http.server_name": str, - "http.status_code": int, - "http.target": str, - "http.url": str, - "http.user_agent": str, - "id": str, - "jvm.gc.action": str, - "jvm.gc.name": str, - "jvm.memory.pool.name": str, - "jvm.memory.type": str, - "jvm.thread.daemon": bool, - "jvm.thread.state": str, - "lcp.element": str, - "lcp.id": str, - "lcp.size": int, - "lcp.url": str, - "logger.name": str, - "mcp.cancelled.reason": str, - "mcp.cancelled.request_id": str, - "mcp.client.name": str, - "mcp.client.title": str, - "mcp.client.version": str, - "mcp.lifecycle.phase": str, - "mcp.logging.data_type": str, - "mcp.logging.level": str, - "mcp.logging.logger": str, - "mcp.logging.message": str, - "mcp.method.name": str, - "mcp.progress.current": int, - "mcp.progress.message": str, - "mcp.progress.percentage": float, - "mcp.progress.token": str, - "mcp.progress.total": int, - "mcp.prompt.name": str, - "mcp.prompt.result.description": str, - "mcp.prompt.result.message_content": str, - "mcp.prompt.result.message_count": int, - "mcp.prompt.result.message_role": str, - "mcp.protocol.ready": int, - "mcp.protocol.version": str, - "mcp.request.argument.": str, - "mcp.request.argument.name": str, - "mcp.request.argument.uri": str, - "mcp.request.id": str, - "mcp.resource.protocol": str, - "mcp.resource.uri": str, - "mcp.server.name": str, - "mcp.server.title": str, - "mcp.server.version": str, - "mcp.session.id": str, - "mcp.tool.name": str, - "mcp.tool.result.content": str, - "mcp.tool.result.content_count": int, - "mcp.tool.result.is_error": bool, - "mcp.transport": str, - "mdc.": str, - "messaging.destination.connection": str, - "messaging.destination.name": str, - "messaging.message.body.size": int, - "messaging.message.envelope.size": int, - "messaging.message.id": str, - "messaging.message.receive.latency": int, - "messaging.message.retry.count": int, - "messaging.operation.type": str, - "messaging.system": str, - "method": str, - "navigation.type": str, - "nel.elapsed_time": int, - "nel.phase": str, - "nel.referrer": str, - "nel.sampling_function": float, - "nel.type": str, - "net.host.ip": str, - "net.host.name": str, - "net.host.port": int, - "net.peer.ip": str, - "net.peer.name": str, - "net.peer.port": int, - "net.protocol.name": str, - "net.protocol.version": str, - "net.sock.family": str, - "net.sock.host.addr": str, - "net.sock.host.port": int, - "net.sock.peer.addr": str, - "net.sock.peer.name": str, - "net.sock.peer.port": int, - "net.transport": str, - "network.local.address": str, - "network.local.port": int, - "network.peer.address": str, - "network.peer.port": int, - "network.protocol.name": str, - "network.protocol.version": str, - "network.transport": str, - "network.type": str, - "os.build_id": str, - "os.description": str, - "os.name": str, - "os.type": str, - "os.version": str, - "otel.scope.name": str, - "otel.scope.version": str, - "otel.status_code": str, - "otel.status_description": str, - "params.": str, - "previous_route": str, - "process.executable.name": str, - "process.pid": int, - "process.runtime.description": str, - "process.runtime.name": str, - "process.runtime.version": str, - "profile_id": str, - "query.": str, - "release": str, - "remix.action_form_data.": str, - "replay_id": str, - "resource.deployment.environment.name": str, - "resource.render_blocking_status": str, - "route": str, - "rpc.grpc.status_code": int, - "rpc.service": str, - "sentry.action": str, - "sentry.browser.name": str, - "sentry.browser.version": str, - "sentry.cancellation_reason": str, - "sentry.category": str, - "sentry.client_sample_rate": float, - "sentry.description": str, - "sentry.dist": str, - "sentry.domain": str, - "sentry.dsc.environment": str, - "sentry.dsc.public_key": str, - "sentry.dsc.release": str, - "sentry.dsc.sample_rate": str, - "sentry.dsc.sampled": bool, - "sentry.dsc.trace_id": str, - "sentry.dsc.transaction": str, - "sentry.environment": str, - "sentry.exclusive_time": float, - "sentry.graphql.operation": str, - "sentry.group": str, - "sentry.http.prefetch": bool, - "sentry.idle_span_finish_reason": str, - "sentry.is_remote": bool, - "sentry.kind": str, - "sentry.message.parameter.": str, - "sentry.message.template": str, - "sentry.module.": str, - "sentry.nextjs.ssr.function.route": str, - "sentry.nextjs.ssr.function.type": str, - "sentry.normalized_db_query": str, - "sentry.normalized_db_query.hash": str, - "sentry.normalized_description": str, - "sentry.observed_timestamp_nanos": str, - "sentry.op": str, - "sentry.origin": str, - "sentry.platform": str, - "sentry.profile_id": str, - "sentry.release": str, - "sentry.replay_id": str, - "sentry.replay_is_buffering": bool, - "sentry.sdk.integrations": List[str], - "sentry.sdk.name": str, - "sentry.sdk.version": str, - "sentry.segment.id": str, - "sentry.segment.name": str, - "sentry.segment_id": str, - "sentry.server_sample_rate": float, - "sentry.span.source": str, - "sentry.status.message": str, - "sentry.trace.parent_span_id": str, - "sentry.transaction": str, - "server.address": str, - "server.port": int, - "service.name": str, - "service.version": str, - "thread.id": int, - "thread.name": str, - "timber.tag": str, - "transaction": str, - "type": str, - "ui.component_name": str, - "ui.contributes_to_ttfd": bool, - "ui.contributes_to_ttid": bool, - "url.domain": str, - "url.fragment": str, - "url.full": str, - "url.path": str, - "url.path.parameter.": str, - "url.port": int, - "url.query": str, - "url.scheme": str, - "url.template": str, - "url": str, - "user.email": str, - "user.full_name": str, - "user.geo.city": str, - "user.geo.country_code": str, - "user.geo.region": str, - "user.geo.subdivision": str, - "user.hash": str, - "user.id": str, - "user.ip_address": str, - "user.name": str, - "user.roles": List[str], - "user_agent.original": str, - "vercel.branch": str, - "vercel.build_id": str, - "vercel.deployment_id": str, - "vercel.destination": str, - "vercel.edge_type": str, - "vercel.entrypoint": str, - "vercel.execution_region": str, - "vercel.id": str, - "vercel.ja3_digest": str, - "vercel.ja4_digest": str, - "vercel.log_type": str, - "vercel.project_id": str, - "vercel.project_name": str, - "vercel.proxy.cache_id": str, - "vercel.proxy.client_ip": str, - "vercel.proxy.host": str, - "vercel.proxy.lambda_region": str, - "vercel.proxy.method": str, - "vercel.proxy.path": str, - "vercel.proxy.path_type": str, - "vercel.proxy.path_type_variant": str, - "vercel.proxy.referer": str, - "vercel.proxy.region": str, - "vercel.proxy.response_byte_size": int, - "vercel.proxy.scheme": str, - "vercel.proxy.status_code": int, - "vercel.proxy.timestamp": int, - "vercel.proxy.user_agent": List[str], - "vercel.proxy.vercel_cache": str, - "vercel.proxy.vercel_id": str, - "vercel.proxy.waf_action": str, - "vercel.proxy.waf_rule_id": str, - "vercel.request_id": str, - "vercel.source": str, - "vercel.status_code": int, -}, total=False) +Attributes = TypedDict( + "Attributes", + { + "ai.citations": List[str], + "ai.completion_tokens.used": int, + "ai.documents": List[str], + "ai.finish_reason": str, + "ai.frequency_penalty": float, + "ai.function_call": str, + "ai.generation_id": str, + "ai.input_messages": str, + "ai.is_search_required": bool, + "ai.metadata": str, + "ai.model.provider": str, + "ai.model_id": str, + "ai.pipeline.name": str, + "ai.preamble": str, + "ai.presence_penalty": float, + "ai.prompt_tokens.used": int, + "ai.raw_prompting": bool, + "ai.response_format": str, + "ai.responses": List[str], + "ai.search_queries": List[str], + "ai.search_results": List[str], + "ai.seed": str, + "ai.streaming": bool, + "ai.tags": str, + "ai.temperature": float, + "ai.texts": List[str], + "ai.tool_calls": List[str], + "ai.tools": List[str], + "ai.top_k": int, + "ai.top_p": float, + "ai.total_cost": float, + "ai.total_tokens.used": int, + "ai.warnings": List[str], + "app_start_type": str, + "blocked_main_thread": bool, + "browser.name": str, + "browser.report.type": str, + "browser.script.invoker": str, + "browser.script.invoker_type": str, + "browser.script.source_char_position": int, + "browser.version": str, + "cache.hit": bool, + "cache.item_size": int, + "cache.key": List[str], + "cache.operation": str, + "cache.ttl": int, + "channel": str, + "client.address": str, + "client.port": int, + "cloudflare.d1.duration": int, + "cloudflare.d1.rows_read": int, + "cloudflare.d1.rows_written": int, + "code.file.path": str, + "code.filepath": str, + "code.function": str, + "code.function.name": str, + "code.line.number": int, + "code.lineno": int, + "code.namespace": str, + "db.collection.name": str, + "db.name": str, + "db.namespace": str, + "db.operation": str, + "db.operation.name": str, + "db.query.parameter.": str, + "db.query.summary": str, + "db.query.text": str, + "db.redis.connection": str, + "db.redis.parameters": List[str], + "db.sql.bindings": List[str], + "db.statement": str, + "db.system": str, + "db.system.name": str, + "db.user": str, + "device.brand": str, + "device.family": str, + "device.model": str, + "environment": str, + "error.type": str, + "event.id": int, + "event.name": str, + "exception.escaped": bool, + "exception.message": str, + "exception.stacktrace": str, + "exception.type": str, + "faas.coldstart": bool, + "faas.cron": str, + "faas.time": str, + "faas.trigger": str, + "flag.evaluation.": bool, + "frames.delay": int, + "frames.frozen": int, + "frames.slow": int, + "frames.total": int, + "fs_error": str, + "gen_ai.agent.name": str, + "gen_ai.assistant.message": str, + "gen_ai.choice": str, + "gen_ai.cost.input_tokens": float, + "gen_ai.cost.output_tokens": float, + "gen_ai.cost.total_tokens": float, + "gen_ai.embeddings.input": str, + "gen_ai.input.messages": str, + "gen_ai.operation.name": str, + "gen_ai.operation.type": str, + "gen_ai.output.messages": str, + "gen_ai.pipeline.name": str, + "gen_ai.prompt": str, + "gen_ai.request.available_tools": str, + "gen_ai.request.frequency_penalty": float, + "gen_ai.request.max_tokens": int, + "gen_ai.request.messages": str, + "gen_ai.request.model": str, + "gen_ai.request.presence_penalty": float, + "gen_ai.request.seed": str, + "gen_ai.request.temperature": float, + "gen_ai.request.top_k": int, + "gen_ai.request.top_p": float, + "gen_ai.response.finish_reasons": str, + "gen_ai.response.id": str, + "gen_ai.response.model": str, + "gen_ai.response.streaming": bool, + "gen_ai.response.text": str, + "gen_ai.response.tokens_per_second": float, + "gen_ai.response.tool_calls": str, + "gen_ai.system": str, + "gen_ai.system.message": str, + "gen_ai.system_instructions": str, + "gen_ai.tool.call.arguments": str, + "gen_ai.tool.call.result": str, + "gen_ai.tool.definitions": str, + "gen_ai.tool.description": str, + "gen_ai.tool.input": str, + "gen_ai.tool.message": str, + "gen_ai.tool.name": str, + "gen_ai.tool.output": str, + "gen_ai.tool.type": str, + "gen_ai.usage.completion_tokens": int, + "gen_ai.usage.input_tokens": int, + "gen_ai.usage.input_tokens.cache_write": int, + "gen_ai.usage.input_tokens.cached": int, + "gen_ai.usage.output_tokens": int, + "gen_ai.usage.output_tokens.reasoning": int, + "gen_ai.usage.prompt_tokens": int, + "gen_ai.usage.total_tokens": int, + "gen_ai.user.message": str, + "graphql.operation.name": str, + "graphql.operation.type": str, + "http.client_ip": str, + "http.decoded_response_content_length": int, + "http.flavor": str, + "http.fragment": str, + "http.host": str, + "http.method": str, + "http.query": str, + "http.request.connect_start": float, + "http.request.connection_end": float, + "http.request.domain_lookup_end": float, + "http.request.domain_lookup_start": float, + "http.request.fetch_start": float, + "http.request.header.": List[str], + "http.request.method": str, + "http.request.redirect_end": float, + "http.request.redirect_start": float, + "http.request.request_start": float, + "http.request.resend_count": int, + "http.request.response_end": float, + "http.request.response_start": float, + "http.request.secure_connection_start": float, + "http.request.time_to_first_byte": float, + "http.request.worker_start": float, + "http.response.body.size": int, + "http.response.header.": List[str], + "http.response.header.content-length": str, + "http.response.size": int, + "http.response.status_code": int, + "http.response_content_length": int, + "http.response_transfer_size": int, + "http.route": str, + "http.scheme": str, + "http.server_name": str, + "http.status_code": int, + "http.target": str, + "http.url": str, + "http.user_agent": str, + "id": str, + "jvm.gc.action": str, + "jvm.gc.name": str, + "jvm.memory.pool.name": str, + "jvm.memory.type": str, + "jvm.thread.daemon": bool, + "jvm.thread.state": str, + "lcp.element": str, + "lcp.id": str, + "lcp.size": int, + "lcp.url": str, + "logger.name": str, + "mcp.cancelled.reason": str, + "mcp.cancelled.request_id": str, + "mcp.client.name": str, + "mcp.client.title": str, + "mcp.client.version": str, + "mcp.lifecycle.phase": str, + "mcp.logging.data_type": str, + "mcp.logging.level": str, + "mcp.logging.logger": str, + "mcp.logging.message": str, + "mcp.method.name": str, + "mcp.progress.current": int, + "mcp.progress.message": str, + "mcp.progress.percentage": float, + "mcp.progress.token": str, + "mcp.progress.total": int, + "mcp.prompt.name": str, + "mcp.prompt.result.description": str, + "mcp.prompt.result.message_content": str, + "mcp.prompt.result.message_count": int, + "mcp.prompt.result.message_role": str, + "mcp.protocol.ready": int, + "mcp.protocol.version": str, + "mcp.request.argument.": str, + "mcp.request.argument.name": str, + "mcp.request.argument.uri": str, + "mcp.request.id": str, + "mcp.resource.protocol": str, + "mcp.resource.uri": str, + "mcp.server.name": str, + "mcp.server.title": str, + "mcp.server.version": str, + "mcp.session.id": str, + "mcp.tool.name": str, + "mcp.tool.result.content": str, + "mcp.tool.result.content_count": int, + "mcp.tool.result.is_error": bool, + "mcp.transport": str, + "mdc.": str, + "messaging.destination.connection": str, + "messaging.destination.name": str, + "messaging.message.body.size": int, + "messaging.message.envelope.size": int, + "messaging.message.id": str, + "messaging.message.receive.latency": int, + "messaging.message.retry.count": int, + "messaging.operation.type": str, + "messaging.system": str, + "method": str, + "navigation.type": str, + "nel.elapsed_time": int, + "nel.phase": str, + "nel.referrer": str, + "nel.sampling_function": float, + "nel.type": str, + "net.host.ip": str, + "net.host.name": str, + "net.host.port": int, + "net.peer.ip": str, + "net.peer.name": str, + "net.peer.port": int, + "net.protocol.name": str, + "net.protocol.version": str, + "net.sock.family": str, + "net.sock.host.addr": str, + "net.sock.host.port": int, + "net.sock.peer.addr": str, + "net.sock.peer.name": str, + "net.sock.peer.port": int, + "net.transport": str, + "network.local.address": str, + "network.local.port": int, + "network.peer.address": str, + "network.peer.port": int, + "network.protocol.name": str, + "network.protocol.version": str, + "network.transport": str, + "network.type": str, + "os.build_id": str, + "os.description": str, + "os.name": str, + "os.type": str, + "os.version": str, + "otel.scope.name": str, + "otel.scope.version": str, + "otel.status_code": str, + "otel.status_description": str, + "params.": str, + "previous_route": str, + "process.executable.name": str, + "process.pid": int, + "process.runtime.description": str, + "process.runtime.name": str, + "process.runtime.version": str, + "profile_id": str, + "query.": str, + "release": str, + "remix.action_form_data.": str, + "replay_id": str, + "resource.deployment.environment.name": str, + "resource.render_blocking_status": str, + "route": str, + "rpc.grpc.status_code": int, + "rpc.service": str, + "sentry.action": str, + "sentry.browser.name": str, + "sentry.browser.version": str, + "sentry.cancellation_reason": str, + "sentry.category": str, + "sentry.client_sample_rate": float, + "sentry.description": str, + "sentry.dist": str, + "sentry.domain": str, + "sentry.dsc.environment": str, + "sentry.dsc.public_key": str, + "sentry.dsc.release": str, + "sentry.dsc.sample_rate": str, + "sentry.dsc.sampled": bool, + "sentry.dsc.trace_id": str, + "sentry.dsc.transaction": str, + "sentry.environment": str, + "sentry.exclusive_time": float, + "sentry.graphql.operation": str, + "sentry.group": str, + "sentry.http.prefetch": bool, + "sentry.idle_span_finish_reason": str, + "sentry.is_remote": bool, + "sentry.kind": str, + "sentry.message.parameter.": str, + "sentry.message.template": str, + "sentry.module.": str, + "sentry.nextjs.ssr.function.route": str, + "sentry.nextjs.ssr.function.type": str, + "sentry.normalized_db_query": str, + "sentry.normalized_db_query.hash": str, + "sentry.normalized_description": str, + "sentry.observed_timestamp_nanos": str, + "sentry.op": str, + "sentry.origin": str, + "sentry.platform": str, + "sentry.profile_id": str, + "sentry.release": str, + "sentry.replay_id": str, + "sentry.replay_is_buffering": bool, + "sentry.sdk.integrations": List[str], + "sentry.sdk.name": str, + "sentry.sdk.version": str, + "sentry.segment.id": str, + "sentry.segment.name": str, + "sentry.segment_id": str, + "sentry.server_sample_rate": float, + "sentry.span.source": str, + "sentry.status.message": str, + "sentry.trace.parent_span_id": str, + "sentry.transaction": str, + "server.address": str, + "server.port": int, + "service.name": str, + "service.version": str, + "thread.id": int, + "thread.name": str, + "timber.tag": str, + "transaction": str, + "type": str, + "ui.component_name": str, + "ui.contributes_to_ttfd": bool, + "ui.contributes_to_ttid": bool, + "url.domain": str, + "url.fragment": str, + "url.full": str, + "url.path": str, + "url.path.parameter.": str, + "url.port": int, + "url.query": str, + "url.scheme": str, + "url.template": str, + "url": str, + "user.email": str, + "user.full_name": str, + "user.geo.city": str, + "user.geo.country_code": str, + "user.geo.region": str, + "user.geo.subdivision": str, + "user.hash": str, + "user.id": str, + "user.ip_address": str, + "user.name": str, + "user.roles": List[str], + "user_agent.original": str, + "vercel.branch": str, + "vercel.build_id": str, + "vercel.deployment_id": str, + "vercel.destination": str, + "vercel.edge_type": str, + "vercel.entrypoint": str, + "vercel.execution_region": str, + "vercel.id": str, + "vercel.ja3_digest": str, + "vercel.ja4_digest": str, + "vercel.log_type": str, + "vercel.project_id": str, + "vercel.project_name": str, + "vercel.proxy.cache_id": str, + "vercel.proxy.client_ip": str, + "vercel.proxy.host": str, + "vercel.proxy.lambda_region": str, + "vercel.proxy.method": str, + "vercel.proxy.path": str, + "vercel.proxy.path_type": str, + "vercel.proxy.path_type_variant": str, + "vercel.proxy.referer": str, + "vercel.proxy.region": str, + "vercel.proxy.response_byte_size": int, + "vercel.proxy.scheme": str, + "vercel.proxy.status_code": int, + "vercel.proxy.timestamp": int, + "vercel.proxy.user_agent": List[str], + "vercel.proxy.vercel_cache": str, + "vercel.proxy.vercel_id": str, + "vercel.proxy.waf_action": str, + "vercel.proxy.waf_rule_id": str, + "vercel.request_id": str, + "vercel.source": str, + "vercel.status_code": int, + }, + total=False, +) """TypedDict representing a collection of attributes, including deprecated and non-deprecated ones.""" __all__ = [ @@ -9245,4 +8529,3 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "Attributes", "ATTRIBUTE_NAMES", ] - From c178fd2e624c306334241025adb10ba939455528 Mon Sep 17 00:00:00 2001 From: Ogi <86684834+obostjancic@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:37:11 +0100 Subject: [PATCH 4/7] fix is_in_otel --- generated/attributes/gen_ai.md | 12 +++++----- .../sentry-conventions/src/attributes.ts | 24 +++++++++---------- .../gen_ai/gen_ai__input__messages.json | 2 +- .../gen_ai/gen_ai__output__messages.json | 2 +- .../gen_ai/gen_ai__system_instructions.json | 2 +- .../gen_ai/gen_ai__tool__call__arguments.json | 2 +- .../gen_ai/gen_ai__tool__call__result.json | 2 +- .../gen_ai/gen_ai__tool__definitions.json | 2 +- python/src/sentry_conventions/attributes.py | 24 +++++++++---------- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/generated/attributes/gen_ai.md b/generated/attributes/gen_ai.md index fcef99b0..b2f3d395 100644 --- a/generated/attributes/gen_ai.md +++ b/generated/attributes/gen_ai.md @@ -143,7 +143,7 @@ The messages passed to the model. It has to be a stringified version of an array | --- | --- | | Type | `string` | | Has PII | maybe | -| Exists in OpenTelemetry | No | +| Exists in OpenTelemetry | Yes | | Example | `[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]` | ### gen_ai.operation.name @@ -176,7 +176,7 @@ The model's response messages. It has to be a stringified version of an array of | --- | --- | | Type | `string` | | Has PII | maybe | -| Exists in OpenTelemetry | No | +| Exists in OpenTelemetry | Yes | | Example | `[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]` | ### gen_ai.pipeline.name @@ -364,7 +364,7 @@ The system instructions passed to the model. | --- | --- | | Type | `string` | | Has PII | maybe | -| Exists in OpenTelemetry | No | +| Exists in OpenTelemetry | Yes | | Example | `You are a helpful assistant` | ### gen_ai.tool.call.arguments @@ -375,7 +375,7 @@ The arguments of the tool call. It has to be a stringified version of the argume | --- | --- | | Type | `string` | | Has PII | maybe | -| Exists in OpenTelemetry | No | +| Exists in OpenTelemetry | Yes | | Example | `{"location": "Paris"}` | ### gen_ai.tool.call.result @@ -386,7 +386,7 @@ The result of the tool call. It has to be a stringified version of the result of | --- | --- | | Type | `string` | | Has PII | maybe | -| Exists in OpenTelemetry | No | +| Exists in OpenTelemetry | Yes | | Example | `rainy, 57°F` | ### gen_ai.tool.definitions @@ -397,7 +397,7 @@ The list of source system tool definitions available to the GenAI agent or model | --- | --- | | Type | `string` | | Has PII | maybe | -| Exists in OpenTelemetry | No | +| Exists in OpenTelemetry | Yes | | 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"]}}]` | ### gen_ai.tool.description diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index a8d14e02..4bad2dbc 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -2154,7 +2154,7 @@ export type GEN_AI_EMBEDDINGS_INPUT_TYPE = string; * * Contains PII: maybe * - * Attribute defined in OTEL: No + * Attribute defined in OTEL: Yes * * @example "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" */ @@ -2214,7 +2214,7 @@ export type GEN_AI_OPERATION_TYPE_TYPE = string; * * Contains PII: maybe * - * Attribute defined in OTEL: No + * Attribute defined in OTEL: Yes * * @example "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]" */ @@ -2665,7 +2665,7 @@ export type GEN_AI_SYSTEM_TYPE = string; * * Contains PII: maybe * - * Attribute defined in OTEL: No + * Attribute defined in OTEL: Yes * * @example "You are a helpful assistant" */ @@ -2706,7 +2706,7 @@ export type GEN_AI_SYSTEM_MESSAGE_TYPE = string; * * Contains PII: maybe * - * Attribute defined in OTEL: No + * Attribute defined in OTEL: Yes * * @example "{\"location\": \"Paris\"}" */ @@ -2726,7 +2726,7 @@ export type GEN_AI_TOOL_CALL_ARGUMENTS_TYPE = string; * * Contains PII: maybe * - * Attribute defined in OTEL: No + * Attribute defined in OTEL: Yes * * @example "rainy, 57°F" */ @@ -2746,7 +2746,7 @@ export type GEN_AI_TOOL_CALL_RESULT_TYPE = string; * * Contains PII: maybe * - * Attribute defined in OTEL: No + * Attribute defined in OTEL: Yes * * @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\"]}}]" */ @@ -10740,7 +10740,7 @@ export const ATTRIBUTE_METADATA: Record = { pii: { isPii: 'maybe', }, - isInOtel: false, + isInOtel: true, example: '[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]', }, [GEN_AI_OPERATION_NAME]: { @@ -10769,7 +10769,7 @@ export const ATTRIBUTE_METADATA: Record = { pii: { isPii: 'maybe', }, - isInOtel: false, + 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"}]', }, @@ -10997,7 +10997,7 @@ export const ATTRIBUTE_METADATA: Record = { pii: { isPii: 'maybe', }, - isInOtel: false, + isInOtel: true, example: 'You are a helpful assistant', }, [GEN_AI_SYSTEM_MESSAGE]: { @@ -11018,7 +11018,7 @@ export const ATTRIBUTE_METADATA: Record = { pii: { isPii: 'maybe', }, - isInOtel: false, + isInOtel: true, example: '{"location": "Paris"}', }, [GEN_AI_TOOL_CALL_RESULT]: { @@ -11027,7 +11027,7 @@ export const ATTRIBUTE_METADATA: Record = { pii: { isPii: 'maybe', }, - isInOtel: false, + isInOtel: true, example: 'rainy, 57°F', }, [GEN_AI_TOOL_DEFINITIONS]: { @@ -11036,7 +11036,7 @@ export const ATTRIBUTE_METADATA: Record = { pii: { isPii: 'maybe', }, - isInOtel: false, + 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"]}}]', }, diff --git a/model/attributes/gen_ai/gen_ai__input__messages.json b/model/attributes/gen_ai/gen_ai__input__messages.json index 4598c422..6e897e30 100644 --- a/model/attributes/gen_ai/gen_ai__input__messages.json +++ b/model/attributes/gen_ai/gen_ai__input__messages.json @@ -5,6 +5,6 @@ "pii": { "key": "maybe" }, - "is_in_otel": false, + "is_in_otel": true, "example": "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" } diff --git a/model/attributes/gen_ai/gen_ai__output__messages.json b/model/attributes/gen_ai/gen_ai__output__messages.json index e9de4e44..d6a12379 100644 --- a/model/attributes/gen_ai/gen_ai__output__messages.json +++ b/model/attributes/gen_ai/gen_ai__output__messages.json @@ -5,6 +5,6 @@ "pii": { "key": "maybe" }, - "is_in_otel": false, + "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\"}]" } diff --git a/model/attributes/gen_ai/gen_ai__system_instructions.json b/model/attributes/gen_ai/gen_ai__system_instructions.json index 67351663..c2d98d09 100644 --- a/model/attributes/gen_ai/gen_ai__system_instructions.json +++ b/model/attributes/gen_ai/gen_ai__system_instructions.json @@ -5,6 +5,6 @@ "pii": { "key": "maybe" }, - "is_in_otel": false, + "is_in_otel": true, "example": "You are a helpful assistant" } diff --git a/model/attributes/gen_ai/gen_ai__tool__call__arguments.json b/model/attributes/gen_ai/gen_ai__tool__call__arguments.json index 6e3939cc..1d9892cf 100644 --- a/model/attributes/gen_ai/gen_ai__tool__call__arguments.json +++ b/model/attributes/gen_ai/gen_ai__tool__call__arguments.json @@ -5,6 +5,6 @@ "pii": { "key": "maybe" }, - "is_in_otel": false, + "is_in_otel": true, "example": "{\"location\": \"Paris\"}" } diff --git a/model/attributes/gen_ai/gen_ai__tool__call__result.json b/model/attributes/gen_ai/gen_ai__tool__call__result.json index 0cd57109..724f62b0 100644 --- a/model/attributes/gen_ai/gen_ai__tool__call__result.json +++ b/model/attributes/gen_ai/gen_ai__tool__call__result.json @@ -5,6 +5,6 @@ "pii": { "key": "maybe" }, - "is_in_otel": false, + "is_in_otel": true, "example": "rainy, 57°F" } diff --git a/model/attributes/gen_ai/gen_ai__tool__definitions.json b/model/attributes/gen_ai/gen_ai__tool__definitions.json index 5772ee55..7ab0f733 100644 --- a/model/attributes/gen_ai/gen_ai__tool__definitions.json +++ b/model/attributes/gen_ai/gen_ai__tool__definitions.json @@ -5,6 +5,6 @@ "pii": { "key": "maybe" }, - "is_in_otel": false, + "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\"]}}]" } diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 84538dcd..ab9e3397 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -1296,7 +1296,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe - Defined in OTEL: No + Defined in OTEL: Yes Example: "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" """ @@ -1326,7 +1326,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe - Defined in OTEL: No + Defined in OTEL: Yes Example: "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]" """ @@ -1587,7 +1587,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe - Defined in OTEL: No + Defined in OTEL: Yes Example: "You are a helpful assistant" """ @@ -1599,7 +1599,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe - Defined in OTEL: No + Defined in OTEL: Yes Example: "{\"location\": \"Paris\"}" """ @@ -1611,7 +1611,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe - Defined in OTEL: No + Defined in OTEL: Yes Example: "rainy, 57°F" """ @@ -1623,7 +1623,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe - Defined in OTEL: No + Defined in OTEL: Yes 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\"]}}]" """ @@ -5632,7 +5632,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), - is_in_otel=False, + is_in_otel=True, example='[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]', ), "gen_ai.operation.name": AttributeMetadata( @@ -5653,7 +5653,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): brief="The model's response messages. It has to be a stringified version of an array of message objects, which can include text responses and tool calls.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), - is_in_otel=False, + 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"}]', ), "gen_ai.pipeline.name": AttributeMetadata( @@ -5828,28 +5828,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): brief="The system instructions passed to the model.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), - is_in_otel=False, + is_in_otel=True, example="You are a helpful assistant", ), "gen_ai.tool.call.arguments": AttributeMetadata( brief="The arguments of the tool call. It has to be a stringified version of the arguments to the tool.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), - is_in_otel=False, + is_in_otel=True, example='{"location": "Paris"}', ), "gen_ai.tool.call.result": AttributeMetadata( brief="The result of the tool call. It has to be a stringified version of the result of the tool.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), - is_in_otel=False, + is_in_otel=True, example="rainy, 57°F", ), "gen_ai.tool.definitions": AttributeMetadata( brief="The list of source system tool definitions available to the GenAI agent or model.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), - is_in_otel=False, + 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"]}}]', ), "gen_ai.tool.description": AttributeMetadata( From c48647ed76ab388d0514dfecc14e72835a66e0b3 Mon Sep 17 00:00:00 2001 From: Ogi <86684834+obostjancic@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:45:55 +0100 Subject: [PATCH 5/7] changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 238c5181..5c0a46ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### Features - Add page listing all attributes ([#207](https://github.com/getsentry/sentry-conventions/pull/207)) +- Add new Gen AI attributes ([#221](https://github.com/getsentry/sentry-conventions/pull/221)) #### Changes to attributes @@ -55,12 +56,11 @@ - feat(sentry): Add sentry.observed_timestamp_nanos ([#137](https://github.com/getsentry/sentry-conventions/pull/137)) - dynamic-sampling: add field conventions for dynamic sampling context ([#128](https://github.com/getsentry/sentry-conventions/pull/128)) - chore(ai): Clean up of `sentry._internal.segment.contains_gen_ai_spans` ([#155](https://github.com/getsentry/sentry-conventions/pull/155)) -- feat(attributes): Add sentry._internal.replay_is_buffering ([#159](https://github.com/getsentry/sentry-conventions/pull/159)) +- feat(attributes): Add sentry.\_internal.replay_is_buffering ([#159](https://github.com/getsentry/sentry-conventions/pull/159)) - feat: Add vercel log drain attributes ([#163](https://github.com/getsentry/sentry-conventions/pull/163)) - feat(attributes) add MCP related attributes ([#164](https://github.com/getsentry/sentry-conventions/pull/164)) - feat(attributes): Add MDC log attributes ([#167](https://github.com/getsentry/sentry-conventions/pull/167)) - ### Fixes - fix(name): Remove duplicate GraphQL op ([#152](https://github.com/getsentry/sentry-conventions/pull/152)) From c0a9adf7cecfae4721247dbf7dc6c1cb33f88a73 Mon Sep 17 00:00:00 2001 From: Ogi <86684834+obostjancic@users.noreply.github.com> Date: Mon, 19 Jan 2026 16:46:18 +0100 Subject: [PATCH 6/7] changelog fix --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c0a46ee..b4f95319 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,13 +3,13 @@ ### Features - Add page listing all attributes ([#207](https://github.com/getsentry/sentry-conventions/pull/207)) -- Add new Gen AI attributes ([#221](https://github.com/getsentry/sentry-conventions/pull/221)) #### Changes to attributes - feat(ai): Add gen_ai.usage.input_tokens.cache_write ([#217](https://github.com/getsentry/sentry-conventions/pull/217)) - feat(attributes): Add sentry.normalized_db_query.hash ([#200](https://github.com/getsentry/sentry-conventions/pull/200)) - feat(attributes): Add sentry.category attribute ([#218](https://github.com/getsentry/sentry-conventions/pull/218)) +- Add new Gen AI attributes ([#221](https://github.com/getsentry/sentry-conventions/pull/221)) ## 0.3.1 From da28d7ea12d6d1313d373489cacf2604f72dfa8a Mon Sep 17 00:00:00 2001 From: Ogi <86684834+obostjancic@users.noreply.github.com> Date: Tue, 20 Jan 2026 10:43:10 +0100 Subject: [PATCH 7/7] change input messages schema --- generated/attributes/gen_ai.md | 2 +- javascript/sentry-conventions/src/attributes.ts | 5 +++-- model/attributes/gen_ai/gen_ai__input__messages.json | 2 +- python/src/sentry_conventions/attributes.py | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/generated/attributes/gen_ai.md b/generated/attributes/gen_ai.md index b2f3d395..2635540c 100644 --- a/generated/attributes/gen_ai.md +++ b/generated/attributes/gen_ai.md @@ -144,7 +144,7 @@ The messages passed to the model. It has to be a stringified version of an array | Type | `string` | | Has PII | maybe | | Exists in OpenTelemetry | Yes | -| Example | `[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]` | +| 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"}]}]` | ### gen_ai.operation.name diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 4bad2dbc..26232b2b 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -2156,7 +2156,7 @@ export type GEN_AI_EMBEDDINGS_INPUT_TYPE = string; * * Attribute defined in OTEL: Yes * - * @example "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" + * @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'; @@ -10741,7 +10741,8 @@ export const ATTRIBUTE_METADATA: Record = { isPii: 'maybe', }, isInOtel: true, - example: '[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]', + 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"}]}]', }, [GEN_AI_OPERATION_NAME]: { brief: 'The name of the operation being performed.', diff --git a/model/attributes/gen_ai/gen_ai__input__messages.json b/model/attributes/gen_ai/gen_ai__input__messages.json index 6e897e30..15b0584c 100644 --- a/model/attributes/gen_ai/gen_ai__input__messages.json +++ b/model/attributes/gen_ai/gen_ai__input__messages.json @@ -6,5 +6,5 @@ "key": "maybe" }, "is_in_otel": true, - "example": "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" + "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\"}]}]" } diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index ab9e3397..a541d592 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -1297,7 +1297,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: Yes - Example: "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"What is the weather in Paris?\"}]}]" + 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\"}]}]" """ # Path: model/attributes/gen_ai/gen_ai__operation__name.json @@ -5633,7 +5633,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, - example='[{"role": "user", "parts": [{"type": "text", "content": "What is the weather in Paris?"}]}]', + 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"}]}]', ), "gen_ai.operation.name": AttributeMetadata( brief="The name of the operation being performed.",