From 0e89b2fbddc27c250cc8a1bcf036eb1ecfcedd9a Mon Sep 17 00:00:00 2001 From: Michi Hoffmann Date: Thu, 9 Jul 2026 22:44:56 +0200 Subject: [PATCH 1/6] feat(attributes): Add `server_address` (deprecated) in favor of `server.address` Add server_address as a deprecated attribute pointing to server.address as the correct OTel-aligned replacement. Update server.address aliases to include server_address for symmetry. Co-Authored-By: Claude Opus 4.6 --- .../sentry-conventions/src/attributes.ts | 11215 ++++++++-------- model/attributes/server/server__address.json | 2 +- model/attributes/server_address.json | 24 + python/src/sentry_conventions/attributes.py | 39 +- 4 files changed, 5836 insertions(+), 5444 deletions(-) create mode 100644 model/attributes/server_address.json diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 041ac192..ea05387e 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -12,7 +12,7 @@ * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["Citation 1","Citation 2"] */ export const AI_CITATIONS = 'ai.citations'; @@ -58,7 +58,7 @@ export type AI_COMPLETION_TOKENS_USED_TYPE = number; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["document1.txt","document2.pdf"] */ export const AI_DOCUMENTS = 'ai.documents'; @@ -200,7 +200,7 @@ export type AI_INPUT_MESSAGES_TYPE = string; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example false */ export const AI_IS_SEARCH_REQUIRED = 'ai.is_search_required'; @@ -222,7 +222,7 @@ export type AI_IS_SEARCH_REQUIRED_TYPE = boolean; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example "{\"user_id\": 123, \"session_id\": \"abc123\"}" */ export const AI_METADATA = 'ai.metadata'; @@ -388,7 +388,7 @@ export type AI_PROMPT_TOKENS_USED_TYPE = number; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example true */ export const AI_RAW_PROMPTING = 'ai.raw_prompting'; @@ -432,7 +432,7 @@ export type AI_RESPONSES_TYPE = Array; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example "json_object" */ export const AI_RESPONSE_FORMAT = 'ai.response_format'; @@ -454,7 +454,7 @@ export type AI_RESPONSE_FORMAT_TYPE = string; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["climate change effects","renewable energy"] */ export const AI_SEARCH_QUERIES = 'ai.search_queries'; @@ -476,7 +476,7 @@ export type AI_SEARCH_QUERIES_TYPE = Array; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["search_result_1, search_result_2"] */ export const AI_SEARCH_RESULTS = 'ai.search_results'; @@ -546,7 +546,7 @@ export type AI_STREAMING_TYPE = boolean; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example "{\"executed_function\": \"add_integers\"}" */ export const AI_TAGS = 'ai.tags'; @@ -756,7 +756,7 @@ export type AI_TOTAL_TOKENS_USED_TYPE = number; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["Token limit exceeded"] */ export const AI_WARNINGS = 'ai.warnings'; @@ -12760,7 +12760,7 @@ export type SENTRY_TRACE_LIFECYCLE_TYPE = string; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example "b0e6f15b45c36b12" */ export const SENTRY_TRACE_PARENT_SPAN_ID = 'sentry.trace.parent_span_id'; @@ -13011,7 +13011,7 @@ export type SENTRY_USER_USERNAME_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * Aliases: {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host` + * Aliases: {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host`, {@link _SERVER_ADDRESS} `server_address` * * @example "example.com" */ @@ -13022,6 +13022,30 @@ export const SERVER_ADDRESS = 'server.address'; */ export type SERVER_ADDRESS_TYPE = string; +// Path: model/attributes/server_address.json + +/** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. `server_address` + * + * Attribute Value Type: `string` {@link _SERVER_ADDRESS_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * Aliases: {@link SERVER_ADDRESS} `server.address` + * + * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. + * @example "example.com" + */ +export const _SERVER_ADDRESS = 'server_address'; + +/** + * Type for {@link _SERVER_ADDRESS} server_address + */ +export type _SERVER_ADDRESS_TYPE = string; + // Path: model/attributes/server/server__port.json /** @@ -14940,6 +14964,7 @@ export const VERCEL_STATUS_CODE = 'vercel.status_code'; */ export type VERCEL_STATUS_CODE_TYPE = number; + export type AttributeType = | 'string' | 'boolean' @@ -14951,9 +14976,14 @@ export type AttributeType = | 'double[]' | 'any'; -export type ApplyScrubbing = 'auto' | 'manual' | 'never'; +export type ApplyScrubbing = + | 'auto' + | 'manual' + | 'never'; -export type AttributeVisibility = 'public' | 'internal'; +export type AttributeVisibility = + | 'public' + | 'internal'; export interface ApplyScrubbingInfo { /** How PII scrubbing should be applied to the attribute value */ @@ -15004,10391 +15034,10692 @@ export interface AttributeMetadata { } export const ATTRIBUTE_TYPE: Record = { - 'ai.citations': 'string[]', - 'ai.completion_tokens.used': 'integer', - 'ai.documents': 'string[]', - 'ai.finish_reason': 'string', - 'ai.frequency_penalty': 'double', - 'ai.function_call': 'string', - 'ai.generation_id': 'string', - 'ai.input_messages': 'string', - 'ai.is_search_required': 'boolean', - 'ai.metadata': 'string', - 'ai.model_id': 'string', - 'ai.model.provider': 'string', - 'ai.pipeline.name': 'string', - 'ai.preamble': 'string', - 'ai.presence_penalty': 'double', - 'ai.prompt_tokens.used': 'integer', - 'ai.raw_prompting': 'boolean', - 'ai.responses': 'string[]', - 'ai.response_format': 'string', - 'ai.search_queries': 'string[]', - 'ai.search_results': 'string[]', - 'ai.seed': 'string', - 'ai.streaming': 'boolean', - 'ai.tags': 'string', - 'ai.temperature': 'double', - 'ai.texts': 'string[]', - 'ai.tools': 'string[]', - 'ai.tool_calls': 'string[]', - 'ai.top_k': 'integer', - 'ai.top_p': 'double', - 'ai.total_cost': 'double', - 'ai.total_tokens.used': 'integer', - 'ai.warnings': 'string[]', - 'angular.version': 'string', - 'app.app_build': 'string', - 'app.app_identifier': 'string', - 'app.app_name': 'string', - 'app.app_start_time': 'string', - 'app.app_version': 'string', - 'app.build': 'string', - 'app.identifier': 'string', - 'app.in_foreground': 'boolean', - 'app.name': 'string', - app_start_cold: 'double', - 'app.start_time': 'string', - app_start_type: 'string', - app_start_warm: 'double', - 'app.version': 'string', - 'app.vitals.frames.delay.value': 'integer', - 'app.vitals.frames.frozen.count': 'integer', - 'app.vitals.frames.slow.count': 'integer', - 'app.vitals.frames.total.count': 'integer', - 'app.vitals.start.cold.value': 'double', - 'app.vitals.start.prewarmed': 'boolean', - 'app.vitals.start.reason': 'string', - 'app.vitals.start.screen': 'string', - 'app.vitals.start.type': 'string', - 'app.vitals.start.warm.value': 'double', - 'app.vitals.ttfd.value': 'double', - 'app.vitals.ttid.value': 'double', - 'art.gc.blocking_count': 'integer', - 'art.gc.blocking_time': 'double', - 'art.gc.pre_oome_count': 'integer', - 'art.gc.total_count': 'integer', - 'art.gc.total_time': 'double', - 'art.gc.waiting_time': 'double', - 'art.memory.free': 'integer', - 'art.memory.free_until_gc': 'integer', - 'art.memory.free_until_oome': 'integer', - 'art.memory.max': 'integer', - 'art.memory.total': 'integer', - 'aws.cloudwatch.logs.log_group': 'string', - 'aws.cloudwatch.logs.log_stream': 'string', - 'aws.cloudwatch.logs.url': 'string', - 'aws.lambda.aws_request_id': 'string', - 'aws.lambda.execution_duration_in_millis': 'double', - 'aws.lambda.function_name': 'string', - 'aws.lambda.function_version': 'string', - 'aws.lambda.invoked_arn': 'string', - 'aws.lambda.invoked_function_arn': 'string', - 'aws.lambda.remaining_time_in_millis': 'double', - 'aws.log.group.names': 'string[]', - 'aws.log.stream.names': 'string[]', - blocked_main_thread: 'boolean', - 'browser.name': 'string', - 'browser.performance.navigation.activation_start': 'double', - 'browser.performance.time_origin': 'double', - 'browser.report.type': 'string', - 'browser.script.invoker': 'string', - 'browser.script.invoker_type': 'string', - 'browser.script.source_char_position': 'integer', - 'browser.version': 'string', - 'browser.web_vital.cls.report_event': 'string', - 'browser.web_vital.cls.source.': 'string', - 'browser.web_vital.cls.value': 'double', - 'browser.web_vital.fcp.value': 'double', - 'browser.web_vital.fp.value': 'double', - 'browser.web_vital.inp.value': 'double', - 'browser.web_vital.lcp.element': 'string', - 'browser.web_vital.lcp.id': 'string', - 'browser.web_vital.lcp.load_time': 'integer', - 'browser.web_vital.lcp.render_time': 'integer', - 'browser.web_vital.lcp.report_event': 'string', - 'browser.web_vital.lcp.size': 'integer', - 'browser.web_vital.lcp.url': 'string', - 'browser.web_vital.lcp.value': 'double', - 'browser.web_vital.ttfb.request_time': 'double', - 'browser.web_vital.ttfb.value': 'double', - 'cache.hit': 'boolean', - 'cache.item_size': 'integer', - 'cache.key': 'string[]', - 'cache.operation': 'string', - 'cache.ttl': 'integer', - 'cache.write': 'boolean', - channel: 'string', - 'client.address': 'string', - 'client.port': 'integer', - 'cloudflare.d1.duration': 'integer', - 'cloudflare.d1.query_type': 'string', - 'cloudflare.d1.rows_read': 'integer', - 'cloudflare.d1.rows_written': 'integer', - 'cloudflare.durable_object.query.bindings': 'integer', - 'cloudflare.durable_object.response.rows_read': 'integer', - 'cloudflare.durable_object.response.rows_written': 'integer', - 'cloudflare.r2.bucket': 'string', - 'cloudflare.r2.operation': 'string', - 'cloudflare.r2.request.delimiter': 'string', - 'cloudflare.r2.request.key': 'string', - 'cloudflare.r2.request.part_number': 'integer', - 'cloudflare.r2.request.prefix': 'string', - 'cloudflare.workflow.attempt': 'integer', - 'cloudflare.workflow.retries.backoff': 'string', - 'cloudflare.workflow.retries.delay': 'string', - 'cloudflare.workflow.retries.limit': 'integer', - 'cloudflare.workflow.timeout': 'string', - 'cloud.account.id': 'string', - 'cloud.availability_zone': 'string', - 'cloud.platform': 'string', - 'cloud.provider': 'string', - 'cloud.region': 'string', - 'cloud.resource_id': 'string', - cls: 'double', - 'cls.source.': 'string', - 'code.filepath': 'string', - 'code.file.path': 'string', - 'code.function': 'string', - 'code.function.name': 'string', - 'code.lineno': 'integer', - 'code.line.number': 'integer', - 'code.namespace': 'string', - connectionType: 'string', - 'connection.rtt': 'integer', - 'culture.calendar': 'string', - 'culture.display_name': 'string', - 'culture.is_24_hour_format': 'boolean', - 'culture.locale': 'string', - 'culture.timezone': 'string', - 'db.collection.name': 'string', - 'db.driver.name': 'string', - 'db.name': 'string', - 'db.namespace': 'string', - 'db.operation': 'string', - 'db.operation.batch.size': 'integer', - 'db.operation.name': 'string', - 'db.query.parameter.': 'string', - 'db.query.summary': 'string', - 'db.query.text': 'string', - 'db.redis.connection': 'string', - 'db.redis.key': 'string', - 'db.redis.parameters': 'string[]', - 'db.response.status_code': 'string', - 'db.sql.bindings': 'string[]', - 'db.statement': 'string', - 'db.stored_procedure.name': 'string', - 'db.system': 'string', - 'db.system.name': 'string', - 'db.user': 'string', - deviceMemory: 'string', - 'device.archs': 'string[]', - 'device.battery_level': 'double', - 'device.battery_temperature': 'double', - 'device.boot_time': 'string', - 'device.brand': 'string', - 'device.charging': 'boolean', - 'device.chipset': 'string', - 'device.class': 'string', - 'device.connection_type': 'string', - 'device.cpu_description': 'string', - 'device.external_free_storage': 'integer', - 'device.external_storage_size': 'integer', - 'device.family': 'string', - 'device.free_memory': 'integer', - 'device.free_storage': 'integer', - 'device.id': 'string', - 'device.locale': 'string', - 'device.low_memory': 'boolean', - 'device.low_power_mode': 'boolean', - 'device.manufacturer': 'string', - 'device.memory.estimated_capacity': 'integer', - 'device.memory_size': 'integer', - 'device.model': 'string', - 'device.model_id': 'string', - 'device.name': 'string', - 'device.online': 'boolean', - 'device.orientation': 'string', - 'device.processor_count': 'integer', - 'device.processor_frequency': 'double', - 'device.screen_density': 'double', - 'device.screen_dpi': 'integer', - 'device.screen_height_pixels': 'integer', - 'device.screen_width_pixels': 'integer', - 'device.simulator': 'boolean', - 'device.storage_size': 'integer', - 'device.thermal_state': 'string', - 'device.timezone': 'string', - 'device.usable_memory': 'integer', - effectiveConnectionType: 'string', - environment: 'string', - 'error.type': 'string', - 'event.id': 'integer', - 'event.name': 'string', - 'exception.escaped': 'boolean', - 'exception.message': 'string', - 'exception.stacktrace': 'string', - 'exception.type': 'string', - 'faas.coldstart': 'boolean', - 'faas.cron': 'string', - 'faas.duration_in_ms': 'integer', - 'faas.entry_point': 'string', - 'faas.execution': 'string', - 'faas.id': 'string', - 'faas.identity': 'string', - 'faas.invocation_id': 'string', - 'faas.name': 'string', - 'faas.time': 'string', - 'faas.trigger': 'string', - 'faas.version': 'string', - fcp: 'double', - 'flag.evaluation.': 'boolean', - fp: 'double', - 'frames.delay': 'integer', - 'frames.frozen': 'integer', - frames_frozen_rate: 'double', - 'frames.slow': 'integer', - frames_slow_rate: 'double', - 'frames.total': 'integer', - fs_error: 'string', - 'gcp.function.context.event_id': 'string', - 'gcp.function.context.event_type': 'string', - 'gcp.function.context.id': 'string', - 'gcp.function.context.resource': 'string', - 'gcp.function.context.source': 'string', - 'gcp.function.context.specversion': 'string', - 'gcp.function.context.time': 'string', - 'gcp.function.context.timestamp': 'string', - 'gcp.function.context.type': 'string', - 'gcp.project.id': 'string', - 'gen_ai.agent.name': 'string', - 'gen_ai.context.utilization': 'double', - 'gen_ai.context.window_size': 'integer', - 'gen_ai.conversation.id': 'string', - 'gen_ai.cost.cache_creation.input_tokens': 'double', - 'gen_ai.cost.cache_read.input_tokens': 'double', - 'gen_ai.cost.input_tokens': 'double', - 'gen_ai.cost.output_tokens': 'double', - 'gen_ai.cost.reasoning.output_tokens': 'double', - 'gen_ai.cost.total_tokens': 'double', - 'gen_ai.embeddings.input': 'string', - 'gen_ai.function_id': '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.prompt.name': 'string', - 'gen_ai.provider.name': 'string', - 'gen_ai.request.available_tools': 'string', - 'gen_ai.request.frequency_penalty': 'double', - 'gen_ai.request.max_tokens': 'integer', - 'gen_ai.request.messages': 'string', - 'gen_ai.request.model': 'string', - 'gen_ai.request.presence_penalty': 'double', - 'gen_ai.request.reasoning_effort': 'string', - 'gen_ai.request.seed': 'string', - 'gen_ai.request.temperature': 'double', - 'gen_ai.request.top_k': 'integer', - 'gen_ai.request.top_p': 'double', - 'gen_ai.response.finish_reasons': 'string', - 'gen_ai.response.id': 'string', - 'gen_ai.response.model': 'string', - 'gen_ai.response.streaming': 'boolean', - 'gen_ai.response.text': 'string', - 'gen_ai.response.time_to_first_chunk': 'double', - 'gen_ai.response.time_to_first_token': 'double', - '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', - 'gen_ai.tool.name': 'string', - 'gen_ai.tool.output': 'string', - 'gen_ai.tool.type': 'string', - 'gen_ai.usage.cache_creation.input_tokens': 'integer', - 'gen_ai.usage.cache_read.input_tokens': 'integer', - 'gen_ai.usage.completion_tokens': 'integer', - 'gen_ai.usage.input_tokens': 'integer', - 'gen_ai.usage.input_tokens.cached': 'integer', - 'gen_ai.usage.input_tokens.cache_write': 'integer', - 'gen_ai.usage.output_tokens': 'integer', - 'gen_ai.usage.output_tokens.reasoning': 'integer', - 'gen_ai.usage.prompt_tokens': 'integer', - 'gen_ai.usage.reasoning.output_tokens': 'integer', - 'gen_ai.usage.total_tokens': 'integer', - 'graphql.document': 'string', - 'graphql.operation.name': 'string', - 'graphql.operation.type': 'string', - hardwareConcurrency: 'string', - 'http.client_ip': 'string', - 'http.decoded_response_content_length': 'integer', - 'http.flavor': 'string', - 'http.fragment': 'string', - 'http.host': 'string', - 'http.method': 'string', - 'http.query': 'string', - 'http.request.body.data': 'string', - 'http.request.connection_end': 'double', - 'http.request.connect_start': 'double', - 'http.request.domain_lookup_end': 'double', - 'http.request.domain_lookup_start': 'double', - 'http.request.fetch_start': 'double', - 'http.request.header.': 'string[]', - 'http.request.method': 'string', - 'http.request_method': 'string', - 'http.request.redirect_end': 'double', - 'http.request.redirect_start': 'double', - 'http.request.request_start': 'double', - 'http.request.resend_count': 'integer', - 'http.request.response_end': 'double', - 'http.request.response_start': 'double', - 'http.request.same_origin': 'boolean', - 'http.request.secure_connection_start': 'double', - 'http.request.time_to_first_byte': 'double', - 'http.request.worker_start': 'double', - 'http.response.body.size': 'integer', - 'http.response_content_length': 'integer', - 'http.response.header.content-length': 'string', - 'http.response.header.': 'string[]', - 'http.response.size': 'integer', - 'http.response.status_code': 'integer', - 'http.response_transfer_size': 'integer', - 'http.route': 'string', - 'http.scheme': 'string', - 'http.server_name': 'string', - 'http.server.request.time_in_queue': 'double', - 'http.status_code': 'integer', - 'http.target': 'string', - 'http.url': 'string', - 'http.user_agent': 'string', - id: 'string', - inp: 'double', - 'jsonrpc.protocol.version': 'string', - 'jsonrpc.request.id': 'string', - 'jvm.gc.action': 'string', - 'jvm.gc.name': 'string', - 'jvm.memory.pool.name': 'string', - 'jvm.memory.type': 'string', - 'jvm.thread.daemon': 'boolean', - 'jvm.thread.state': 'string', - lcp: 'double', - 'lcp.element': 'string', - 'lcp.id': 'string', - 'lcp.loadTime': 'integer', - 'lcp.renderTime': 'integer', - 'lcp.size': 'integer', - 'lcp.url': 'string', - 'logger.name': 'string', - 'mcp.cancelled.reason': 'string', - 'mcp.cancelled.request_id': 'string', - 'mcp.client.name': 'string', - 'mcp.client.title': 'string', - 'mcp.client.version': 'string', - 'mcp.lifecycle.phase': 'string', - 'mcp.logging.data_type': 'string', - 'mcp.logging.level': 'string', - 'mcp.logging.logger': 'string', - 'mcp.logging.message': 'string', - 'mcp.method.name': 'string', - 'mcp.progress.current': 'integer', - 'mcp.progress.message': 'string', - 'mcp.progress.percentage': 'double', - 'mcp.progress.token': 'string', - 'mcp.progress.total': 'integer', - 'mcp.prompt.name': 'string', - 'mcp.prompt.result.description': 'string', - 'mcp.prompt.result.message_content': 'string', - 'mcp.prompt.result.message_count': 'integer', - 'mcp.prompt.result.message_role': 'string', - 'mcp.protocol.ready': 'integer', - 'mcp.protocol.version': 'string', - 'mcp.request.argument.': 'string', - 'mcp.request.argument.name': 'string', - 'mcp.request.argument.uri': 'string', - 'mcp.request.id': 'string', - 'mcp.resource.protocol': 'string', - 'mcp.resource.uri': 'string', - 'mcp.server.name': 'string', - 'mcp.server.title': 'string', - 'mcp.server.version': 'string', - 'mcp.session.id': 'string', - 'mcp.tool.name': 'string', - 'mcp.tool.result.content': 'string', - 'mcp.tool.result.content_count': 'integer', - 'mcp.tool.result.is_error': 'boolean', - 'mcp.transport': 'string', - 'mdc.': 'string', - 'messaging.batch.message_count': 'integer', - 'messaging.destination.connection': 'string', - 'messaging.destination.name': 'string', - 'messaging.message.body.size': 'integer', - 'messaging.message.conversation_id': 'string', - 'messaging.message.envelope.size': 'integer', - 'messaging.message.id': 'string', - 'messaging.message.receive.latency': 'integer', - 'messaging.message.retry.count': 'integer', - 'messaging.operation.name': 'string', - 'messaging.operation.type': 'string', - 'messaging.rabbitmq.destination.routing_key': 'string', - 'messaging.system': 'string', - method: 'string', - 'middleware.name': 'string', - 'navigation.type': 'string', - 'nel.elapsed_time': 'integer', - 'nel.phase': 'string', - 'nel.referrer': 'string', - 'nel.sampling_function': 'double', - 'nel.type': 'string', - 'network.connection.effective_type': 'string', - 'network.connection.rtt': 'integer', - 'network.connection.type': 'string', - 'network.local.address': 'string', - 'network.local.port': 'integer', - 'network.peer.address': 'string', - 'network.peer.port': 'integer', - 'network.protocol.name': 'string', - 'network.protocol.version': 'string', - 'network.transport': 'string', - 'network.type': 'string', - 'net.host.ip': 'string', - 'net.host.name': 'string', - 'net.host.port': 'integer', - 'net.peer.ip': 'string', - 'net.peer.name': 'string', - 'net.peer.port': 'integer', - 'net.protocol.name': 'string', - 'net.protocol.version': 'string', - 'net.sock.family': 'string', - 'net.sock.host.addr': 'string', - 'net.sock.host.port': 'integer', - 'net.sock.peer.addr': 'string', - 'net.sock.peer.name': 'string', - 'net.sock.peer.port': 'integer', - 'net.transport': 'string', - 'os.build': 'string', - 'os.build_id': 'string', - 'os.description': 'string', - 'os.kernel_version': 'string', - 'os.name': 'string', - 'os.raw_description': 'string', - 'os.rooted': 'boolean', - 'os.theme': 'string', - 'os.type': 'string', - 'os.version': 'string', - 'otel.kind': 'string', - 'otel.scope.name': 'string', - 'otel.scope.version': 'string', - 'otel.status_code': 'string', - 'otel.status_description': 'string', - 'params.': 'string', - 'performance.activationStart': 'double', - 'performance.timeOrigin': 'double', - previous_route: 'string', - 'process.command_args': 'string[]', - 'process.executable.name': 'string', - 'process.pid': 'integer', - 'process.runtime.description': 'string', - 'process.runtime.engine.name': 'string', - 'process.runtime.engine.version': 'string', - 'process.runtime.name': 'string', - 'process.runtime.version': 'string', - 'query.': 'string', - 'react.version': 'string', - release: 'string', - 'remix.action_form_data.': 'string', - replay_id: 'string', - 'resource.deployment.environment': 'string', - 'resource.deployment.environment.name': 'string', - 'resource.render_blocking_status': 'string', - route: 'string', - 'rpc.grpc.status_code': 'integer', - 'rpc.method': 'string', - 'rpc.response.status_code': 'string', - 'rpc.service': 'string', - 'runtime.build': 'string', - 'runtime.name': 'string', - 'runtime.raw_description': 'string', - 'runtime.version': 'string', - 'score.': 'double', - 'score.ratio.': 'double', - 'score.total': 'double', - 'score.weight.': 'double', - 'sentry.action': 'string', - 'sentry.browser.name': 'string', - 'sentry.browser.version': 'string', - 'sentry.cancellation_reason': 'string', - 'sentry.category': 'string', - 'sentry.client_sample_rate': 'double', - 'sentry.description': 'string', - 'sentry.dist': 'string', - 'sentry.domain': 'string', - 'sentry.dsc.environment': 'string', - 'sentry.dsc.project_id': 'string', - 'sentry.dsc.public_key': 'string', - 'sentry.dsc.release': 'string', - 'sentry.dsc.sampled': 'boolean', - 'sentry.dsc.sample_rate': 'string', - 'sentry.dsc.trace_id': 'string', - 'sentry.dsc.transaction': 'string', - 'sentry.environment': 'string', - 'sentry.exclusive_time': 'double', - 'sentry.graphql.operation': 'string', - 'sentry.group': 'string', - 'sentry.http.prefetch': 'boolean', - 'sentry.idle_span_finish_reason': 'string', - 'sentry.is_remote': 'boolean', - 'sentry.kind': 'string', - 'sentry.main_thread': 'boolean', - 'sentry.message.parameter.': 'string', - 'sentry.message.template': 'string', - 'sentry.metric.source': 'string', - 'sentry.mobile': 'boolean', - 'sentry.module.': 'string', - 'sentry.nextjs.ssr.function.route': 'string', - 'sentry.nextjs.ssr.function.type': 'string', - 'sentry.normalized_db_query': 'string', - 'sentry.normalized_db_query.hash': 'string', - 'sentry.normalized_description': 'string', - 'sentry.observed_timestamp_nanos': 'string', - 'sentry.op': 'string', - 'sentry.origin': 'string', - 'sentry.platform': 'string', - 'sentry.profiler_id': 'string', - 'sentry.profile_id': 'string', - 'sentry.release': 'string', - 'sentry.replay_id': 'string', - 'sentry.replay_is_buffering': 'boolean', - 'sentry.report_event': 'string', - 'sentry.sdk.integrations': 'string[]', - 'sentry.sdk.name': 'string', - 'sentry.sdk.version': 'string', - 'sentry.segment.id': 'string', - 'sentry.segment_id': 'string', - 'sentry.segment.name': 'string', - 'sentry.server_sample_rate': 'double', - 'sentry.source': 'string', - 'sentry.span.source': 'string', - 'sentry.status': 'string', - 'sentry.status_code': 'integer', - 'sentry.status.message': 'string', - 'sentry.thread.id': 'integer', - 'sentry.timestamp.sequence': 'integer', - 'sentry.trace_lifecycle': 'string', - 'sentry.trace.parent_span_id': 'string', - 'sentry.trace.status': 'string', - 'sentry.transaction': 'string', - 'sentry.user.email': 'string', - 'sentry.user.geo.city': 'string', - 'sentry.user.geo.country_code': 'string', - 'sentry.user.geo.region': 'string', - 'sentry.user.geo.subdivision': 'string', - 'sentry.user.id': 'string', - 'sentry.user.ip': 'string', - 'sentry.user.username': 'string', - 'server.address': 'string', - 'server.port': 'integer', - 'service.name': 'string', - 'service.version': 'string', - 'session.id': 'string', - stall_percentage: 'double', - stall_total_time: 'double', - 'state.type': 'string', - 'thread.id': 'integer', - 'thread.name': 'string', - 'timber.tag': 'string', - time_to_full_display: 'double', - time_to_initial_display: 'double', - transaction: 'string', - 'trpc.procedure_path': 'string', - 'trpc.procedure_type': 'string', - ttfb: 'double', - 'ttfb.requestTime': 'double', - type: 'string', - 'ui.component_name': 'string', - 'ui.contributes_to_ttfd': 'boolean', - 'ui.contributes_to_ttid': 'boolean', - 'ui.element.height': 'integer', - 'ui.element.id': 'string', - 'ui.element.identifier': 'string', - 'ui.element.load_time': 'double', - 'ui.element.paint_type': 'string', - 'ui.element.render_time': 'double', - 'ui.element.type': 'string', - 'ui.element.url': 'string', - 'ui.element.width': 'integer', - url: 'string', - 'url.domain': 'string', - 'url.fragment': 'string', - 'url.full': 'string', - 'url.path': 'string', - 'url.path.parameter.': 'string', - 'url.port': 'integer', - 'url.query': 'string', - 'url.same_origin': 'boolean', - 'url.scheme': 'string', - 'url.template': 'string', - 'user_agent.original': 'string', - 'user.email': 'string', - 'user.full_name': 'string', - 'user.geo.city': 'string', - 'user.geo.country_code': 'string', - 'user.geo.region': 'string', - 'user.geo.subdivision': 'string', - 'user.hash': 'string', - 'user.id': 'string', - 'user.ip_address': 'string', - 'user.name': 'string', - 'user.roles': 'string[]', - 'vercel.branch': 'string', - 'vercel.build_id': 'string', - 'vercel.deployment_id': 'string', - 'vercel.destination': 'string', - 'vercel.edge_type': 'string', - 'vercel.entrypoint': 'string', - 'vercel.execution_region': 'string', - 'vercel.id': 'string', - 'vercel.ja3_digest': 'string', - 'vercel.ja4_digest': 'string', - 'vercel.log_type': 'string', - 'vercel.path': 'string', - 'vercel.project_id': 'string', - 'vercel.project_name': 'string', - 'vercel.proxy.cache_id': 'string', - 'vercel.proxy.client_ip': 'string', - 'vercel.proxy.host': 'string', - 'vercel.proxy.lambda_region': 'string', - 'vercel.proxy.method': 'string', - 'vercel.proxy.path': 'string', - 'vercel.proxy.path_type': 'string', - 'vercel.proxy.path_type_variant': 'string', - 'vercel.proxy.referer': 'string', - 'vercel.proxy.region': 'string', - 'vercel.proxy.response_byte_size': 'integer', - 'vercel.proxy.scheme': 'string', - 'vercel.proxy.status_code': 'integer', - 'vercel.proxy.timestamp': 'integer', - 'vercel.proxy.user_agent': 'string[]', - 'vercel.proxy.vercel_cache': 'string', - 'vercel.proxy.vercel_id': 'string', - 'vercel.proxy.waf_action': 'string', - 'vercel.proxy.waf_rule_id': 'string', - 'vercel.request_id': 'string', - 'vercel.source': 'string', - 'vercel.status_code': 'integer', + "ai.citations": 'string[]', + "ai.completion_tokens.used": 'integer', + "ai.documents": 'string[]', + "ai.finish_reason": 'string', + "ai.frequency_penalty": 'double', + "ai.function_call": 'string', + "ai.generation_id": 'string', + "ai.input_messages": 'string', + "ai.is_search_required": 'boolean', + "ai.metadata": 'string', + "ai.model_id": 'string', + "ai.model.provider": 'string', + "ai.pipeline.name": 'string', + "ai.preamble": 'string', + "ai.presence_penalty": 'double', + "ai.prompt_tokens.used": 'integer', + "ai.raw_prompting": 'boolean', + "ai.responses": 'string[]', + "ai.response_format": 'string', + "ai.search_queries": 'string[]', + "ai.search_results": 'string[]', + "ai.seed": 'string', + "ai.streaming": 'boolean', + "ai.tags": 'string', + "ai.temperature": 'double', + "ai.texts": 'string[]', + "ai.tools": 'string[]', + "ai.tool_calls": 'string[]', + "ai.top_k": 'integer', + "ai.top_p": 'double', + "ai.total_cost": 'double', + "ai.total_tokens.used": 'integer', + "ai.warnings": 'string[]', + "angular.version": 'string', + "app.app_build": 'string', + "app.app_identifier": 'string', + "app.app_name": 'string', + "app.app_start_time": 'string', + "app.app_version": 'string', + "app.build": 'string', + "app.identifier": 'string', + "app.in_foreground": 'boolean', + "app.name": 'string', + "app_start_cold": 'double', + "app.start_time": 'string', + "app_start_type": 'string', + "app_start_warm": 'double', + "app.version": 'string', + "app.vitals.frames.delay.value": 'integer', + "app.vitals.frames.frozen.count": 'integer', + "app.vitals.frames.slow.count": 'integer', + "app.vitals.frames.total.count": 'integer', + "app.vitals.start.cold.value": 'double', + "app.vitals.start.prewarmed": 'boolean', + "app.vitals.start.reason": 'string', + "app.vitals.start.screen": 'string', + "app.vitals.start.type": 'string', + "app.vitals.start.warm.value": 'double', + "app.vitals.ttfd.value": 'double', + "app.vitals.ttid.value": 'double', + "art.gc.blocking_count": 'integer', + "art.gc.blocking_time": 'double', + "art.gc.pre_oome_count": 'integer', + "art.gc.total_count": 'integer', + "art.gc.total_time": 'double', + "art.gc.waiting_time": 'double', + "art.memory.free": 'integer', + "art.memory.free_until_gc": 'integer', + "art.memory.free_until_oome": 'integer', + "art.memory.max": 'integer', + "art.memory.total": 'integer', + "aws.cloudwatch.logs.log_group": 'string', + "aws.cloudwatch.logs.log_stream": 'string', + "aws.cloudwatch.logs.url": 'string', + "aws.lambda.aws_request_id": 'string', + "aws.lambda.execution_duration_in_millis": 'double', + "aws.lambda.function_name": 'string', + "aws.lambda.function_version": 'string', + "aws.lambda.invoked_arn": 'string', + "aws.lambda.invoked_function_arn": 'string', + "aws.lambda.remaining_time_in_millis": 'double', + "aws.log.group.names": 'string[]', + "aws.log.stream.names": 'string[]', + "blocked_main_thread": 'boolean', + "browser.name": 'string', + "browser.performance.navigation.activation_start": 'double', + "browser.performance.time_origin": 'double', + "browser.report.type": 'string', + "browser.script.invoker": 'string', + "browser.script.invoker_type": 'string', + "browser.script.source_char_position": 'integer', + "browser.version": 'string', + "browser.web_vital.cls.report_event": 'string', + "browser.web_vital.cls.source.": 'string', + "browser.web_vital.cls.value": 'double', + "browser.web_vital.fcp.value": 'double', + "browser.web_vital.fp.value": 'double', + "browser.web_vital.inp.value": 'double', + "browser.web_vital.lcp.element": 'string', + "browser.web_vital.lcp.id": 'string', + "browser.web_vital.lcp.load_time": 'integer', + "browser.web_vital.lcp.render_time": 'integer', + "browser.web_vital.lcp.report_event": 'string', + "browser.web_vital.lcp.size": 'integer', + "browser.web_vital.lcp.url": 'string', + "browser.web_vital.lcp.value": 'double', + "browser.web_vital.ttfb.request_time": 'double', + "browser.web_vital.ttfb.value": 'double', + "cache.hit": 'boolean', + "cache.item_size": 'integer', + "cache.key": 'string[]', + "cache.operation": 'string', + "cache.ttl": 'integer', + "cache.write": 'boolean', + "channel": 'string', + "client.address": 'string', + "client.port": 'integer', + "cloudflare.d1.duration": 'integer', + "cloudflare.d1.query_type": 'string', + "cloudflare.d1.rows_read": 'integer', + "cloudflare.d1.rows_written": 'integer', + "cloudflare.durable_object.query.bindings": 'integer', + "cloudflare.durable_object.response.rows_read": 'integer', + "cloudflare.durable_object.response.rows_written": 'integer', + "cloudflare.r2.bucket": 'string', + "cloudflare.r2.operation": 'string', + "cloudflare.r2.request.delimiter": 'string', + "cloudflare.r2.request.key": 'string', + "cloudflare.r2.request.part_number": 'integer', + "cloudflare.r2.request.prefix": 'string', + "cloudflare.workflow.attempt": 'integer', + "cloudflare.workflow.retries.backoff": 'string', + "cloudflare.workflow.retries.delay": 'string', + "cloudflare.workflow.retries.limit": 'integer', + "cloudflare.workflow.timeout": 'string', + "cloud.account.id": 'string', + "cloud.availability_zone": 'string', + "cloud.platform": 'string', + "cloud.provider": 'string', + "cloud.region": 'string', + "cloud.resource_id": 'string', + "cls": 'double', + "cls.source.": 'string', + "code.filepath": 'string', + "code.file.path": 'string', + "code.function": 'string', + "code.function.name": 'string', + "code.lineno": 'integer', + "code.line.number": 'integer', + "code.namespace": 'string', + "connectionType": 'string', + "connection.rtt": 'integer', + "culture.calendar": 'string', + "culture.display_name": 'string', + "culture.is_24_hour_format": 'boolean', + "culture.locale": 'string', + "culture.timezone": 'string', + "db.collection.name": 'string', + "db.driver.name": 'string', + "db.name": 'string', + "db.namespace": 'string', + "db.operation": 'string', + "db.operation.batch.size": 'integer', + "db.operation.name": 'string', + "db.query.parameter.": 'string', + "db.query.summary": 'string', + "db.query.text": 'string', + "db.redis.connection": 'string', + "db.redis.key": 'string', + "db.redis.parameters": 'string[]', + "db.response.status_code": 'string', + "db.sql.bindings": 'string[]', + "db.statement": 'string', + "db.stored_procedure.name": 'string', + "db.system": 'string', + "db.system.name": 'string', + "db.user": 'string', + "deviceMemory": 'string', + "device.archs": 'string[]', + "device.battery_level": 'double', + "device.battery_temperature": 'double', + "device.boot_time": 'string', + "device.brand": 'string', + "device.charging": 'boolean', + "device.chipset": 'string', + "device.class": 'string', + "device.connection_type": 'string', + "device.cpu_description": 'string', + "device.external_free_storage": 'integer', + "device.external_storage_size": 'integer', + "device.family": 'string', + "device.free_memory": 'integer', + "device.free_storage": 'integer', + "device.id": 'string', + "device.locale": 'string', + "device.low_memory": 'boolean', + "device.low_power_mode": 'boolean', + "device.manufacturer": 'string', + "device.memory.estimated_capacity": 'integer', + "device.memory_size": 'integer', + "device.model": 'string', + "device.model_id": 'string', + "device.name": 'string', + "device.online": 'boolean', + "device.orientation": 'string', + "device.processor_count": 'integer', + "device.processor_frequency": 'double', + "device.screen_density": 'double', + "device.screen_dpi": 'integer', + "device.screen_height_pixels": 'integer', + "device.screen_width_pixels": 'integer', + "device.simulator": 'boolean', + "device.storage_size": 'integer', + "device.thermal_state": 'string', + "device.timezone": 'string', + "device.usable_memory": 'integer', + "effectiveConnectionType": 'string', + "environment": 'string', + "error.type": 'string', + "event.id": 'integer', + "event.name": 'string', + "exception.escaped": 'boolean', + "exception.message": 'string', + "exception.stacktrace": 'string', + "exception.type": 'string', + "faas.coldstart": 'boolean', + "faas.cron": 'string', + "faas.duration_in_ms": 'integer', + "faas.entry_point": 'string', + "faas.execution": 'string', + "faas.id": 'string', + "faas.identity": 'string', + "faas.invocation_id": 'string', + "faas.name": 'string', + "faas.time": 'string', + "faas.trigger": 'string', + "faas.version": 'string', + "fcp": 'double', + "flag.evaluation.": 'boolean', + "fp": 'double', + "frames.delay": 'integer', + "frames.frozen": 'integer', + "frames_frozen_rate": 'double', + "frames.slow": 'integer', + "frames_slow_rate": 'double', + "frames.total": 'integer', + "fs_error": 'string', + "gcp.function.context.event_id": 'string', + "gcp.function.context.event_type": 'string', + "gcp.function.context.id": 'string', + "gcp.function.context.resource": 'string', + "gcp.function.context.source": 'string', + "gcp.function.context.specversion": 'string', + "gcp.function.context.time": 'string', + "gcp.function.context.timestamp": 'string', + "gcp.function.context.type": 'string', + "gcp.project.id": 'string', + "gen_ai.agent.name": 'string', + "gen_ai.context.utilization": 'double', + "gen_ai.context.window_size": 'integer', + "gen_ai.conversation.id": 'string', + "gen_ai.cost.cache_creation.input_tokens": 'double', + "gen_ai.cost.cache_read.input_tokens": 'double', + "gen_ai.cost.input_tokens": 'double', + "gen_ai.cost.output_tokens": 'double', + "gen_ai.cost.reasoning.output_tokens": 'double', + "gen_ai.cost.total_tokens": 'double', + "gen_ai.embeddings.input": 'string', + "gen_ai.function_id": '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.prompt.name": 'string', + "gen_ai.provider.name": 'string', + "gen_ai.request.available_tools": 'string', + "gen_ai.request.frequency_penalty": 'double', + "gen_ai.request.max_tokens": 'integer', + "gen_ai.request.messages": 'string', + "gen_ai.request.model": 'string', + "gen_ai.request.presence_penalty": 'double', + "gen_ai.request.reasoning_effort": 'string', + "gen_ai.request.seed": 'string', + "gen_ai.request.temperature": 'double', + "gen_ai.request.top_k": 'integer', + "gen_ai.request.top_p": 'double', + "gen_ai.response.finish_reasons": 'string', + "gen_ai.response.id": 'string', + "gen_ai.response.model": 'string', + "gen_ai.response.streaming": 'boolean', + "gen_ai.response.text": 'string', + "gen_ai.response.time_to_first_chunk": 'double', + "gen_ai.response.time_to_first_token": 'double', + "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', + "gen_ai.tool.name": 'string', + "gen_ai.tool.output": 'string', + "gen_ai.tool.type": 'string', + "gen_ai.usage.cache_creation.input_tokens": 'integer', + "gen_ai.usage.cache_read.input_tokens": 'integer', + "gen_ai.usage.completion_tokens": 'integer', + "gen_ai.usage.input_tokens": 'integer', + "gen_ai.usage.input_tokens.cached": 'integer', + "gen_ai.usage.input_tokens.cache_write": 'integer', + "gen_ai.usage.output_tokens": 'integer', + "gen_ai.usage.output_tokens.reasoning": 'integer', + "gen_ai.usage.prompt_tokens": 'integer', + "gen_ai.usage.reasoning.output_tokens": 'integer', + "gen_ai.usage.total_tokens": 'integer', + "graphql.document": 'string', + "graphql.operation.name": 'string', + "graphql.operation.type": 'string', + "hardwareConcurrency": 'string', + "http.client_ip": 'string', + "http.decoded_response_content_length": 'integer', + "http.flavor": 'string', + "http.fragment": 'string', + "http.host": 'string', + "http.method": 'string', + "http.query": 'string', + "http.request.body.data": 'string', + "http.request.connection_end": 'double', + "http.request.connect_start": 'double', + "http.request.domain_lookup_end": 'double', + "http.request.domain_lookup_start": 'double', + "http.request.fetch_start": 'double', + "http.request.header.": 'string[]', + "http.request.method": 'string', + "http.request_method": 'string', + "http.request.redirect_end": 'double', + "http.request.redirect_start": 'double', + "http.request.request_start": 'double', + "http.request.resend_count": 'integer', + "http.request.response_end": 'double', + "http.request.response_start": 'double', + "http.request.same_origin": 'boolean', + "http.request.secure_connection_start": 'double', + "http.request.time_to_first_byte": 'double', + "http.request.worker_start": 'double', + "http.response.body.size": 'integer', + "http.response_content_length": 'integer', + "http.response.header.content-length": 'string', + "http.response.header.": 'string[]', + "http.response.size": 'integer', + "http.response.status_code": 'integer', + "http.response_transfer_size": 'integer', + "http.route": 'string', + "http.scheme": 'string', + "http.server_name": 'string', + "http.server.request.time_in_queue": 'double', + "http.status_code": 'integer', + "http.target": 'string', + "http.url": 'string', + "http.user_agent": 'string', + "id": 'string', + "inp": 'double', + "jsonrpc.protocol.version": 'string', + "jsonrpc.request.id": 'string', + "jvm.gc.action": 'string', + "jvm.gc.name": 'string', + "jvm.memory.pool.name": 'string', + "jvm.memory.type": 'string', + "jvm.thread.daemon": 'boolean', + "jvm.thread.state": 'string', + "lcp": 'double', + "lcp.element": 'string', + "lcp.id": 'string', + "lcp.loadTime": 'integer', + "lcp.renderTime": 'integer', + "lcp.size": 'integer', + "lcp.url": 'string', + "logger.name": 'string', + "mcp.cancelled.reason": 'string', + "mcp.cancelled.request_id": 'string', + "mcp.client.name": 'string', + "mcp.client.title": 'string', + "mcp.client.version": 'string', + "mcp.lifecycle.phase": 'string', + "mcp.logging.data_type": 'string', + "mcp.logging.level": 'string', + "mcp.logging.logger": 'string', + "mcp.logging.message": 'string', + "mcp.method.name": 'string', + "mcp.progress.current": 'integer', + "mcp.progress.message": 'string', + "mcp.progress.percentage": 'double', + "mcp.progress.token": 'string', + "mcp.progress.total": 'integer', + "mcp.prompt.name": 'string', + "mcp.prompt.result.description": 'string', + "mcp.prompt.result.message_content": 'string', + "mcp.prompt.result.message_count": 'integer', + "mcp.prompt.result.message_role": 'string', + "mcp.protocol.ready": 'integer', + "mcp.protocol.version": 'string', + "mcp.request.argument.": 'string', + "mcp.request.argument.name": 'string', + "mcp.request.argument.uri": 'string', + "mcp.request.id": 'string', + "mcp.resource.protocol": 'string', + "mcp.resource.uri": 'string', + "mcp.server.name": 'string', + "mcp.server.title": 'string', + "mcp.server.version": 'string', + "mcp.session.id": 'string', + "mcp.tool.name": 'string', + "mcp.tool.result.content": 'string', + "mcp.tool.result.content_count": 'integer', + "mcp.tool.result.is_error": 'boolean', + "mcp.transport": 'string', + "mdc.": 'string', + "messaging.batch.message_count": 'integer', + "messaging.destination.connection": 'string', + "messaging.destination.name": 'string', + "messaging.message.body.size": 'integer', + "messaging.message.conversation_id": 'string', + "messaging.message.envelope.size": 'integer', + "messaging.message.id": 'string', + "messaging.message.receive.latency": 'integer', + "messaging.message.retry.count": 'integer', + "messaging.operation.name": 'string', + "messaging.operation.type": 'string', + "messaging.rabbitmq.destination.routing_key": 'string', + "messaging.system": 'string', + "method": 'string', + "middleware.name": 'string', + "navigation.type": 'string', + "nel.elapsed_time": 'integer', + "nel.phase": 'string', + "nel.referrer": 'string', + "nel.sampling_function": 'double', + "nel.type": 'string', + "network.connection.effective_type": 'string', + "network.connection.rtt": 'integer', + "network.connection.type": 'string', + "network.local.address": 'string', + "network.local.port": 'integer', + "network.peer.address": 'string', + "network.peer.port": 'integer', + "network.protocol.name": 'string', + "network.protocol.version": 'string', + "network.transport": 'string', + "network.type": 'string', + "net.host.ip": 'string', + "net.host.name": 'string', + "net.host.port": 'integer', + "net.peer.ip": 'string', + "net.peer.name": 'string', + "net.peer.port": 'integer', + "net.protocol.name": 'string', + "net.protocol.version": 'string', + "net.sock.family": 'string', + "net.sock.host.addr": 'string', + "net.sock.host.port": 'integer', + "net.sock.peer.addr": 'string', + "net.sock.peer.name": 'string', + "net.sock.peer.port": 'integer', + "net.transport": 'string', + "os.build": 'string', + "os.build_id": 'string', + "os.description": 'string', + "os.kernel_version": 'string', + "os.name": 'string', + "os.raw_description": 'string', + "os.rooted": 'boolean', + "os.theme": 'string', + "os.type": 'string', + "os.version": 'string', + "otel.kind": 'string', + "otel.scope.name": 'string', + "otel.scope.version": 'string', + "otel.status_code": 'string', + "otel.status_description": 'string', + "params.": 'string', + "performance.activationStart": 'double', + "performance.timeOrigin": 'double', + "previous_route": 'string', + "process.command_args": 'string[]', + "process.executable.name": 'string', + "process.pid": 'integer', + "process.runtime.description": 'string', + "process.runtime.engine.name": 'string', + "process.runtime.engine.version": 'string', + "process.runtime.name": 'string', + "process.runtime.version": 'string', + "query.": 'string', + "react.version": 'string', + "release": 'string', + "remix.action_form_data.": 'string', + "replay_id": 'string', + "resource.deployment.environment": 'string', + "resource.deployment.environment.name": 'string', + "resource.render_blocking_status": 'string', + "route": 'string', + "rpc.grpc.status_code": 'integer', + "rpc.method": 'string', + "rpc.response.status_code": 'string', + "rpc.service": 'string', + "runtime.build": 'string', + "runtime.name": 'string', + "runtime.raw_description": 'string', + "runtime.version": 'string', + "score.": 'double', + "score.ratio.": 'double', + "score.total": 'double', + "score.weight.": 'double', + "sentry.action": 'string', + "sentry.browser.name": 'string', + "sentry.browser.version": 'string', + "sentry.cancellation_reason": 'string', + "sentry.category": 'string', + "sentry.client_sample_rate": 'double', + "sentry.description": 'string', + "sentry.dist": 'string', + "sentry.domain": 'string', + "sentry.dsc.environment": 'string', + "sentry.dsc.project_id": 'string', + "sentry.dsc.public_key": 'string', + "sentry.dsc.release": 'string', + "sentry.dsc.sampled": 'boolean', + "sentry.dsc.sample_rate": 'string', + "sentry.dsc.trace_id": 'string', + "sentry.dsc.transaction": 'string', + "sentry.environment": 'string', + "sentry.exclusive_time": 'double', + "sentry.graphql.operation": 'string', + "sentry.group": 'string', + "sentry.http.prefetch": 'boolean', + "sentry.idle_span_finish_reason": 'string', + "sentry.is_remote": 'boolean', + "sentry.kind": 'string', + "sentry.main_thread": 'boolean', + "sentry.message.parameter.": 'string', + "sentry.message.template": 'string', + "sentry.metric.source": 'string', + "sentry.mobile": 'boolean', + "sentry.module.": 'string', + "sentry.nextjs.ssr.function.route": 'string', + "sentry.nextjs.ssr.function.type": 'string', + "sentry.normalized_db_query": 'string', + "sentry.normalized_db_query.hash": 'string', + "sentry.normalized_description": 'string', + "sentry.observed_timestamp_nanos": 'string', + "sentry.op": 'string', + "sentry.origin": 'string', + "sentry.platform": 'string', + "sentry.profiler_id": 'string', + "sentry.profile_id": 'string', + "sentry.release": 'string', + "sentry.replay_id": 'string', + "sentry.replay_is_buffering": 'boolean', + "sentry.report_event": 'string', + "sentry.sdk.integrations": 'string[]', + "sentry.sdk.name": 'string', + "sentry.sdk.version": 'string', + "sentry.segment.id": 'string', + "sentry.segment_id": 'string', + "sentry.segment.name": 'string', + "sentry.server_sample_rate": 'double', + "sentry.source": 'string', + "sentry.span.source": 'string', + "sentry.status": 'string', + "sentry.status_code": 'integer', + "sentry.status.message": 'string', + "sentry.thread.id": 'integer', + "sentry.timestamp.sequence": 'integer', + "sentry.trace_lifecycle": 'string', + "sentry.trace.parent_span_id": 'string', + "sentry.trace.status": 'string', + "sentry.transaction": 'string', + "sentry.user.email": 'string', + "sentry.user.geo.city": 'string', + "sentry.user.geo.country_code": 'string', + "sentry.user.geo.region": 'string', + "sentry.user.geo.subdivision": 'string', + "sentry.user.id": 'string', + "sentry.user.ip": 'string', + "sentry.user.username": 'string', + "server.address": 'string', + "server_address": 'string', + "server.port": 'integer', + "service.name": 'string', + "service.version": 'string', + "session.id": 'string', + "stall_percentage": 'double', + "stall_total_time": 'double', + "state.type": 'string', + "thread.id": 'integer', + "thread.name": 'string', + "timber.tag": 'string', + "time_to_full_display": 'double', + "time_to_initial_display": 'double', + "transaction": 'string', + "trpc.procedure_path": 'string', + "trpc.procedure_type": 'string', + "ttfb": 'double', + "ttfb.requestTime": 'double', + "type": 'string', + "ui.component_name": 'string', + "ui.contributes_to_ttfd": 'boolean', + "ui.contributes_to_ttid": 'boolean', + "ui.element.height": 'integer', + "ui.element.id": 'string', + "ui.element.identifier": 'string', + "ui.element.load_time": 'double', + "ui.element.paint_type": 'string', + "ui.element.render_time": 'double', + "ui.element.type": 'string', + "ui.element.url": 'string', + "ui.element.width": 'integer', + "url": 'string', + "url.domain": 'string', + "url.fragment": 'string', + "url.full": 'string', + "url.path": 'string', + "url.path.parameter.": 'string', + "url.port": 'integer', + "url.query": 'string', + "url.same_origin": 'boolean', + "url.scheme": 'string', + "url.template": 'string', + "user_agent.original": 'string', + "user.email": 'string', + "user.full_name": 'string', + "user.geo.city": 'string', + "user.geo.country_code": 'string', + "user.geo.region": 'string', + "user.geo.subdivision": 'string', + "user.hash": 'string', + "user.id": 'string', + "user.ip_address": 'string', + "user.name": 'string', + "user.roles": 'string[]', + "vercel.branch": 'string', + "vercel.build_id": 'string', + "vercel.deployment_id": 'string', + "vercel.destination": 'string', + "vercel.edge_type": 'string', + "vercel.entrypoint": 'string', + "vercel.execution_region": 'string', + "vercel.id": 'string', + "vercel.ja3_digest": 'string', + "vercel.ja4_digest": 'string', + "vercel.log_type": 'string', + "vercel.path": 'string', + "vercel.project_id": 'string', + "vercel.project_name": 'string', + "vercel.proxy.cache_id": 'string', + "vercel.proxy.client_ip": 'string', + "vercel.proxy.host": 'string', + "vercel.proxy.lambda_region": 'string', + "vercel.proxy.method": 'string', + "vercel.proxy.path": 'string', + "vercel.proxy.path_type": 'string', + "vercel.proxy.path_type_variant": 'string', + "vercel.proxy.referer": 'string', + "vercel.proxy.region": 'string', + "vercel.proxy.response_byte_size": 'integer', + "vercel.proxy.scheme": 'string', + "vercel.proxy.status_code": 'integer', + "vercel.proxy.timestamp": 'integer', + "vercel.proxy.user_agent": 'string[]', + "vercel.proxy.vercel_cache": 'string', + "vercel.proxy.vercel_id": 'string', + "vercel.proxy.waf_action": 'string', + "vercel.proxy.waf_rule_id": 'string', + "vercel.request_id": 'string', + "vercel.source": 'string', + "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 ANGULAR_VERSION - | typeof APP_APP_BUILD - | typeof APP_APP_IDENTIFIER - | typeof APP_APP_NAME - | typeof APP_APP_START_TIME - | typeof APP_APP_VERSION - | typeof APP_BUILD - | typeof APP_IDENTIFIER - | typeof APP_IN_FOREGROUND - | typeof APP_NAME - | typeof APP_START_COLD - | typeof APP_START_TIME - | typeof APP_START_TYPE - | typeof APP_START_WARM - | typeof APP_VERSION - | typeof APP_VITALS_FRAMES_DELAY_VALUE - | typeof APP_VITALS_FRAMES_FROZEN_COUNT - | typeof APP_VITALS_FRAMES_SLOW_COUNT - | typeof APP_VITALS_FRAMES_TOTAL_COUNT - | typeof APP_VITALS_START_COLD_VALUE - | typeof APP_VITALS_START_PREWARMED - | typeof APP_VITALS_START_REASON - | typeof APP_VITALS_START_SCREEN - | typeof APP_VITALS_START_TYPE - | typeof APP_VITALS_START_WARM_VALUE - | typeof APP_VITALS_TTFD_VALUE - | typeof APP_VITALS_TTID_VALUE - | typeof ART_GC_BLOCKING_COUNT - | typeof ART_GC_BLOCKING_TIME - | typeof ART_GC_PRE_OOME_COUNT - | typeof ART_GC_TOTAL_COUNT - | typeof ART_GC_TOTAL_TIME - | typeof ART_GC_WAITING_TIME - | typeof ART_MEMORY_FREE - | typeof ART_MEMORY_FREE_UNTIL_GC - | typeof ART_MEMORY_FREE_UNTIL_OOME - | typeof ART_MEMORY_MAX - | typeof ART_MEMORY_TOTAL - | typeof AWS_CLOUDWATCH_LOGS_LOG_GROUP - | typeof AWS_CLOUDWATCH_LOGS_LOG_STREAM - | typeof AWS_CLOUDWATCH_LOGS_URL - | typeof AWS_LAMBDA_AWS_REQUEST_ID - | typeof AWS_LAMBDA_EXECUTION_DURATION_IN_MILLIS - | typeof AWS_LAMBDA_FUNCTION_NAME - | typeof AWS_LAMBDA_FUNCTION_VERSION - | typeof AWS_LAMBDA_INVOKED_ARN - | typeof AWS_LAMBDA_INVOKED_FUNCTION_ARN - | typeof AWS_LAMBDA_REMAINING_TIME_IN_MILLIS - | typeof AWS_LOG_GROUP_NAMES - | typeof AWS_LOG_STREAM_NAMES - | typeof BLOCKED_MAIN_THREAD - | typeof BROWSER_NAME - | typeof BROWSER_PERFORMANCE_NAVIGATION_ACTIVATION_START - | typeof BROWSER_PERFORMANCE_TIME_ORIGIN - | typeof BROWSER_REPORT_TYPE - | typeof BROWSER_SCRIPT_INVOKER - | typeof BROWSER_SCRIPT_INVOKER_TYPE - | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION - | typeof BROWSER_VERSION - | typeof BROWSER_WEB_VITAL_CLS_REPORT_EVENT - | typeof BROWSER_WEB_VITAL_CLS_SOURCE_KEY - | typeof BROWSER_WEB_VITAL_CLS_VALUE - | typeof BROWSER_WEB_VITAL_FCP_VALUE - | typeof BROWSER_WEB_VITAL_FP_VALUE - | typeof BROWSER_WEB_VITAL_INP_VALUE - | typeof BROWSER_WEB_VITAL_LCP_ELEMENT - | typeof BROWSER_WEB_VITAL_LCP_ID - | typeof BROWSER_WEB_VITAL_LCP_LOAD_TIME - | typeof BROWSER_WEB_VITAL_LCP_RENDER_TIME - | typeof BROWSER_WEB_VITAL_LCP_REPORT_EVENT - | typeof BROWSER_WEB_VITAL_LCP_SIZE - | typeof BROWSER_WEB_VITAL_LCP_URL - | typeof BROWSER_WEB_VITAL_LCP_VALUE - | typeof BROWSER_WEB_VITAL_TTFB_REQUEST_TIME - | typeof BROWSER_WEB_VITAL_TTFB_VALUE - | typeof CACHE_HIT - | typeof CACHE_ITEM_SIZE - | typeof CACHE_KEY - | typeof CACHE_OPERATION - | typeof CACHE_TTL - | typeof CACHE_WRITE - | typeof CHANNEL - | typeof CLIENT_ADDRESS - | typeof CLIENT_PORT - | typeof CLOUDFLARE_D1_DURATION - | typeof CLOUDFLARE_D1_QUERY_TYPE - | typeof CLOUDFLARE_D1_ROWS_READ - | typeof CLOUDFLARE_D1_ROWS_WRITTEN - | typeof CLOUDFLARE_DURABLE_OBJECT_QUERY_BINDINGS - | typeof CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_READ - | typeof CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_WRITTEN - | typeof CLOUDFLARE_R2_BUCKET - | typeof CLOUDFLARE_R2_OPERATION - | typeof CLOUDFLARE_R2_REQUEST_DELIMITER - | typeof CLOUDFLARE_R2_REQUEST_KEY - | typeof CLOUDFLARE_R2_REQUEST_PART_NUMBER - | typeof CLOUDFLARE_R2_REQUEST_PREFIX - | typeof CLOUDFLARE_WORKFLOW_ATTEMPT - | typeof CLOUDFLARE_WORKFLOW_RETRIES_BACKOFF - | typeof CLOUDFLARE_WORKFLOW_RETRIES_DELAY - | typeof CLOUDFLARE_WORKFLOW_RETRIES_LIMIT - | typeof CLOUDFLARE_WORKFLOW_TIMEOUT - | typeof CLOUD_ACCOUNT_ID - | typeof CLOUD_AVAILABILITY_ZONE - | typeof CLOUD_PLATFORM - | typeof CLOUD_PROVIDER - | typeof CLOUD_REGION - | typeof CLOUD_RESOURCE_ID - | typeof CLS - | typeof CLS_SOURCE_KEY - | 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 CONNECTIONTYPE - | typeof CONNECTION_RTT - | typeof CULTURE_CALENDAR - | typeof CULTURE_DISPLAY_NAME - | typeof CULTURE_IS_24_HOUR_FORMAT - | typeof CULTURE_LOCALE - | typeof CULTURE_TIMEZONE - | typeof DB_COLLECTION_NAME - | typeof DB_DRIVER_NAME - | typeof DB_NAME - | typeof DB_NAMESPACE - | typeof DB_OPERATION - | typeof DB_OPERATION_BATCH_SIZE - | typeof DB_OPERATION_NAME - | typeof DB_QUERY_PARAMETER_KEY - | typeof DB_QUERY_SUMMARY - | typeof DB_QUERY_TEXT - | typeof DB_REDIS_CONNECTION - | typeof DB_REDIS_KEY - | typeof DB_REDIS_PARAMETERS - | typeof DB_RESPONSE_STATUS_CODE - | typeof DB_SQL_BINDINGS - | typeof DB_STATEMENT - | typeof DB_STORED_PROCEDURE_NAME - | typeof DB_SYSTEM - | typeof DB_SYSTEM_NAME - | typeof DB_USER - | typeof DEVICEMEMORY - | typeof DEVICE_ARCHS - | typeof DEVICE_BATTERY_LEVEL - | typeof DEVICE_BATTERY_TEMPERATURE - | typeof DEVICE_BOOT_TIME - | typeof DEVICE_BRAND - | typeof DEVICE_CHARGING - | typeof DEVICE_CHIPSET - | typeof DEVICE_CLASS - | typeof DEVICE_CONNECTION_TYPE - | typeof DEVICE_CPU_DESCRIPTION - | typeof DEVICE_EXTERNAL_FREE_STORAGE - | typeof DEVICE_EXTERNAL_STORAGE_SIZE - | typeof DEVICE_FAMILY - | typeof DEVICE_FREE_MEMORY - | typeof DEVICE_FREE_STORAGE - | typeof DEVICE_ID - | typeof DEVICE_LOCALE - | typeof DEVICE_LOW_MEMORY - | typeof DEVICE_LOW_POWER_MODE - | typeof DEVICE_MANUFACTURER - | typeof DEVICE_MEMORY_ESTIMATED_CAPACITY - | typeof DEVICE_MEMORY_SIZE - | typeof DEVICE_MODEL - | typeof DEVICE_MODEL_ID - | typeof DEVICE_NAME - | typeof DEVICE_ONLINE - | typeof DEVICE_ORIENTATION - | typeof DEVICE_PROCESSOR_COUNT - | typeof DEVICE_PROCESSOR_FREQUENCY - | typeof DEVICE_SCREEN_DENSITY - | typeof DEVICE_SCREEN_DPI - | typeof DEVICE_SCREEN_HEIGHT_PIXELS - | typeof DEVICE_SCREEN_WIDTH_PIXELS - | typeof DEVICE_SIMULATOR - | typeof DEVICE_STORAGE_SIZE - | typeof DEVICE_THERMAL_STATE - | typeof DEVICE_TIMEZONE - | typeof DEVICE_USABLE_MEMORY - | typeof EFFECTIVECONNECTIONTYPE - | typeof ENVIRONMENT - | typeof ERROR_TYPE - | 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_DURATION_IN_MS - | typeof FAAS_ENTRY_POINT - | typeof FAAS_EXECUTION - | typeof FAAS_ID - | typeof FAAS_IDENTITY - | typeof FAAS_INVOCATION_ID - | typeof FAAS_NAME - | typeof FAAS_TIME - | typeof FAAS_TRIGGER - | typeof FAAS_VERSION - | typeof FCP - | typeof FLAG_EVALUATION_KEY - | typeof FP - | typeof FRAMES_DELAY - | typeof FRAMES_FROZEN - | typeof FRAMES_FROZEN_RATE - | typeof FRAMES_SLOW - | typeof FRAMES_SLOW_RATE - | typeof FRAMES_TOTAL - | typeof FS_ERROR - | typeof GCP_FUNCTION_CONTEXT_EVENT_ID - | typeof GCP_FUNCTION_CONTEXT_EVENT_TYPE - | typeof GCP_FUNCTION_CONTEXT_ID - | typeof GCP_FUNCTION_CONTEXT_RESOURCE - | typeof GCP_FUNCTION_CONTEXT_SOURCE - | typeof GCP_FUNCTION_CONTEXT_SPECVERSION - | typeof GCP_FUNCTION_CONTEXT_TIME - | typeof GCP_FUNCTION_CONTEXT_TIMESTAMP - | typeof GCP_FUNCTION_CONTEXT_TYPE - | typeof GCP_PROJECT_ID - | typeof GEN_AI_AGENT_NAME - | typeof GEN_AI_CONTEXT_UTILIZATION - | typeof GEN_AI_CONTEXT_WINDOW_SIZE - | typeof GEN_AI_CONVERSATION_ID - | typeof GEN_AI_COST_CACHE_CREATION_INPUT_TOKENS - | typeof GEN_AI_COST_CACHE_READ_INPUT_TOKENS - | typeof GEN_AI_COST_INPUT_TOKENS - | typeof GEN_AI_COST_OUTPUT_TOKENS - | typeof GEN_AI_COST_REASONING_OUTPUT_TOKENS - | typeof GEN_AI_COST_TOTAL_TOKENS - | typeof GEN_AI_EMBEDDINGS_INPUT - | typeof GEN_AI_FUNCTION_ID - | 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_PROMPT_NAME - | typeof GEN_AI_PROVIDER_NAME - | 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_REASONING_EFFORT - | 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_TIME_TO_FIRST_CHUNK - | typeof GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN - | 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_CACHE_CREATION_INPUT_TOKENS - | typeof GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS - | 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_REASONING_OUTPUT_TOKENS - | typeof GEN_AI_USAGE_TOTAL_TOKENS - | typeof GRAPHQL_DOCUMENT - | typeof GRAPHQL_OPERATION_NAME - | typeof GRAPHQL_OPERATION_TYPE - | typeof HARDWARECONCURRENCY - | 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_BODY_DATA - | 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_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_SAME_ORIGIN - | 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_SERVER_REQUEST_TIME_IN_QUEUE - | typeof HTTP_STATUS_CODE - | typeof HTTP_TARGET - | typeof HTTP_URL - | typeof HTTP_USER_AGENT - | typeof ID - | typeof INP - | typeof JSONRPC_PROTOCOL_VERSION - | typeof JSONRPC_REQUEST_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 - | typeof LCP_ELEMENT - | typeof LCP_ID - | typeof LCP_LOADTIME - | typeof LCP_RENDERTIME - | 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_BATCH_MESSAGE_COUNT - | typeof MESSAGING_DESTINATION_CONNECTION - | typeof MESSAGING_DESTINATION_NAME - | typeof MESSAGING_MESSAGE_BODY_SIZE - | typeof MESSAGING_MESSAGE_CONVERSATION_ID - | typeof MESSAGING_MESSAGE_ENVELOPE_SIZE - | typeof MESSAGING_MESSAGE_ID - | typeof MESSAGING_MESSAGE_RECEIVE_LATENCY - | typeof MESSAGING_MESSAGE_RETRY_COUNT - | typeof MESSAGING_OPERATION_NAME - | typeof MESSAGING_OPERATION_TYPE - | typeof MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY - | typeof MESSAGING_SYSTEM - | typeof METHOD - | typeof MIDDLEWARE_NAME - | typeof NAVIGATION_TYPE - | typeof NEL_ELAPSED_TIME - | typeof NEL_PHASE - | typeof NEL_REFERRER - | typeof NEL_SAMPLING_FUNCTION - | typeof NEL_TYPE - | typeof NETWORK_CONNECTION_EFFECTIVE_TYPE - | typeof NETWORK_CONNECTION_RTT - | typeof NETWORK_CONNECTION_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 - | typeof OS_BUILD_ID - | typeof OS_DESCRIPTION - | typeof OS_KERNEL_VERSION - | typeof OS_NAME - | typeof OS_RAW_DESCRIPTION - | typeof OS_ROOTED - | typeof OS_THEME - | typeof OS_TYPE - | typeof OS_VERSION - | typeof OTEL_KIND - | typeof OTEL_SCOPE_NAME - | typeof OTEL_SCOPE_VERSION - | typeof OTEL_STATUS_CODE - | typeof OTEL_STATUS_DESCRIPTION - | typeof PARAMS_KEY - | typeof PERFORMANCE_ACTIVATIONSTART - | typeof PERFORMANCE_TIMEORIGIN - | typeof PREVIOUS_ROUTE - | typeof PROCESS_COMMAND_ARGS - | typeof PROCESS_EXECUTABLE_NAME - | typeof PROCESS_PID - | typeof PROCESS_RUNTIME_DESCRIPTION - | typeof PROCESS_RUNTIME_ENGINE_NAME - | typeof PROCESS_RUNTIME_ENGINE_VERSION - | typeof PROCESS_RUNTIME_NAME - | typeof PROCESS_RUNTIME_VERSION - | typeof QUERY_KEY - | typeof REACT_VERSION - | typeof RELEASE - | typeof REMIX_ACTION_FORM_DATA_KEY - | typeof REPLAY_ID - | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT - | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME - | typeof RESOURCE_RENDER_BLOCKING_STATUS - | typeof ROUTE - | typeof RPC_GRPC_STATUS_CODE - | typeof RPC_METHOD - | typeof RPC_RESPONSE_STATUS_CODE - | typeof RPC_SERVICE - | typeof RUNTIME_BUILD - | typeof RUNTIME_NAME - | typeof RUNTIME_RAW_DESCRIPTION - | typeof RUNTIME_VERSION - | typeof SCORE_KEY - | typeof SCORE_RATIO_KEY - | typeof SCORE_TOTAL - | typeof SCORE_WEIGHT_KEY - | 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_PROJECT_ID - | 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_MAIN_THREAD - | typeof SENTRY_MESSAGE_PARAMETER_KEY - | typeof SENTRY_MESSAGE_TEMPLATE - | typeof SENTRY_METRIC_SOURCE - | typeof SENTRY_MOBILE - | 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_PROFILER_ID - | typeof SENTRY_PROFILE_ID - | typeof SENTRY_RELEASE - | typeof SENTRY_REPLAY_ID - | typeof SENTRY_REPLAY_IS_BUFFERING - | typeof SENTRY_REPORT_EVENT - | 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_SOURCE - | typeof SENTRY_SPAN_SOURCE - | typeof SENTRY_STATUS - | typeof SENTRY_STATUS_CODE - | typeof SENTRY_STATUS_MESSAGE - | typeof SENTRY_THREAD_ID - | typeof SENTRY_TIMESTAMP_SEQUENCE - | typeof SENTRY_TRACE_LIFECYCLE - | typeof SENTRY_TRACE_PARENT_SPAN_ID - | typeof SENTRY_TRACE_STATUS - | typeof SENTRY_TRANSACTION - | typeof SENTRY_USER_EMAIL - | typeof SENTRY_USER_GEO_CITY - | typeof SENTRY_USER_GEO_COUNTRY_CODE - | typeof SENTRY_USER_GEO_REGION - | typeof SENTRY_USER_GEO_SUBDIVISION - | typeof SENTRY_USER_ID - | typeof SENTRY_USER_IP - | typeof SENTRY_USER_USERNAME - | typeof SERVER_ADDRESS - | typeof SERVER_PORT - | typeof SERVICE_NAME - | typeof SERVICE_VERSION - | typeof SESSION_ID - | typeof STALL_PERCENTAGE - | typeof STALL_TOTAL_TIME - | typeof STATE_TYPE - | typeof THREAD_ID - | typeof THREAD_NAME - | typeof TIMBER_TAG - | typeof TIME_TO_FULL_DISPLAY - | typeof TIME_TO_INITIAL_DISPLAY - | typeof TRANSACTION - | typeof TRPC_PROCEDURE_PATH - | typeof TRPC_PROCEDURE_TYPE - | typeof TTFB - | typeof TTFB_REQUESTTIME - | typeof TYPE - | typeof UI_COMPONENT_NAME - | typeof UI_CONTRIBUTES_TO_TTFD - | typeof UI_CONTRIBUTES_TO_TTID - | typeof UI_ELEMENT_HEIGHT - | typeof UI_ELEMENT_ID - | typeof UI_ELEMENT_IDENTIFIER - | typeof UI_ELEMENT_LOAD_TIME - | typeof UI_ELEMENT_PAINT_TYPE - | typeof UI_ELEMENT_RENDER_TIME - | typeof UI_ELEMENT_TYPE - | typeof UI_ELEMENT_URL - | typeof UI_ELEMENT_WIDTH - | typeof URL - | typeof URL_DOMAIN - | typeof URL_FRAGMENT - | typeof URL_FULL - | typeof URL_PATH - | typeof URL_PATH_PARAMETER_KEY - | typeof URL_PORT - | typeof URL_QUERY - | typeof URL_SAME_ORIGIN - | 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_PATH - | 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 ANGULAR_VERSION | typeof APP_APP_BUILD | typeof APP_APP_IDENTIFIER | typeof APP_APP_NAME | typeof APP_APP_START_TIME | typeof APP_APP_VERSION | typeof APP_BUILD | typeof APP_IDENTIFIER | typeof APP_IN_FOREGROUND | typeof APP_NAME | typeof APP_START_COLD | typeof APP_START_TIME | typeof APP_START_TYPE | typeof APP_START_WARM | typeof APP_VERSION | typeof APP_VITALS_FRAMES_DELAY_VALUE | typeof APP_VITALS_FRAMES_FROZEN_COUNT | typeof APP_VITALS_FRAMES_SLOW_COUNT | typeof APP_VITALS_FRAMES_TOTAL_COUNT | typeof APP_VITALS_START_COLD_VALUE | typeof APP_VITALS_START_PREWARMED | typeof APP_VITALS_START_REASON | typeof APP_VITALS_START_SCREEN | typeof APP_VITALS_START_TYPE | typeof APP_VITALS_START_WARM_VALUE | typeof APP_VITALS_TTFD_VALUE | typeof APP_VITALS_TTID_VALUE | typeof ART_GC_BLOCKING_COUNT | typeof ART_GC_BLOCKING_TIME | typeof ART_GC_PRE_OOME_COUNT | typeof ART_GC_TOTAL_COUNT | typeof ART_GC_TOTAL_TIME | typeof ART_GC_WAITING_TIME | typeof ART_MEMORY_FREE | typeof ART_MEMORY_FREE_UNTIL_GC | typeof ART_MEMORY_FREE_UNTIL_OOME | typeof ART_MEMORY_MAX | typeof ART_MEMORY_TOTAL | typeof AWS_CLOUDWATCH_LOGS_LOG_GROUP | typeof AWS_CLOUDWATCH_LOGS_LOG_STREAM | typeof AWS_CLOUDWATCH_LOGS_URL | typeof AWS_LAMBDA_AWS_REQUEST_ID | typeof AWS_LAMBDA_EXECUTION_DURATION_IN_MILLIS | typeof AWS_LAMBDA_FUNCTION_NAME | typeof AWS_LAMBDA_FUNCTION_VERSION | typeof AWS_LAMBDA_INVOKED_ARN | typeof AWS_LAMBDA_INVOKED_FUNCTION_ARN | typeof AWS_LAMBDA_REMAINING_TIME_IN_MILLIS | typeof AWS_LOG_GROUP_NAMES | typeof AWS_LOG_STREAM_NAMES | typeof BLOCKED_MAIN_THREAD | typeof BROWSER_NAME | typeof BROWSER_PERFORMANCE_NAVIGATION_ACTIVATION_START | typeof BROWSER_PERFORMANCE_TIME_ORIGIN | typeof BROWSER_REPORT_TYPE | typeof BROWSER_SCRIPT_INVOKER | typeof BROWSER_SCRIPT_INVOKER_TYPE | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION | typeof BROWSER_VERSION | typeof BROWSER_WEB_VITAL_CLS_REPORT_EVENT | typeof BROWSER_WEB_VITAL_CLS_SOURCE_KEY | typeof BROWSER_WEB_VITAL_CLS_VALUE | typeof BROWSER_WEB_VITAL_FCP_VALUE | typeof BROWSER_WEB_VITAL_FP_VALUE | typeof BROWSER_WEB_VITAL_INP_VALUE | typeof BROWSER_WEB_VITAL_LCP_ELEMENT | typeof BROWSER_WEB_VITAL_LCP_ID | typeof BROWSER_WEB_VITAL_LCP_LOAD_TIME | typeof BROWSER_WEB_VITAL_LCP_RENDER_TIME | typeof BROWSER_WEB_VITAL_LCP_REPORT_EVENT | typeof BROWSER_WEB_VITAL_LCP_SIZE | typeof BROWSER_WEB_VITAL_LCP_URL | typeof BROWSER_WEB_VITAL_LCP_VALUE | typeof BROWSER_WEB_VITAL_TTFB_REQUEST_TIME | typeof BROWSER_WEB_VITAL_TTFB_VALUE | typeof CACHE_HIT | typeof CACHE_ITEM_SIZE | typeof CACHE_KEY | typeof CACHE_OPERATION | typeof CACHE_TTL | typeof CACHE_WRITE | typeof CHANNEL | typeof CLIENT_ADDRESS | typeof CLIENT_PORT | typeof CLOUDFLARE_D1_DURATION | typeof CLOUDFLARE_D1_QUERY_TYPE | typeof CLOUDFLARE_D1_ROWS_READ | typeof CLOUDFLARE_D1_ROWS_WRITTEN | typeof CLOUDFLARE_DURABLE_OBJECT_QUERY_BINDINGS | typeof CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_READ | typeof CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_WRITTEN | typeof CLOUDFLARE_R2_BUCKET | typeof CLOUDFLARE_R2_OPERATION | typeof CLOUDFLARE_R2_REQUEST_DELIMITER | typeof CLOUDFLARE_R2_REQUEST_KEY | typeof CLOUDFLARE_R2_REQUEST_PART_NUMBER | typeof CLOUDFLARE_R2_REQUEST_PREFIX | typeof CLOUDFLARE_WORKFLOW_ATTEMPT | typeof CLOUDFLARE_WORKFLOW_RETRIES_BACKOFF | typeof CLOUDFLARE_WORKFLOW_RETRIES_DELAY | typeof CLOUDFLARE_WORKFLOW_RETRIES_LIMIT | typeof CLOUDFLARE_WORKFLOW_TIMEOUT | typeof CLOUD_ACCOUNT_ID | typeof CLOUD_AVAILABILITY_ZONE | typeof CLOUD_PLATFORM | typeof CLOUD_PROVIDER | typeof CLOUD_REGION | typeof CLOUD_RESOURCE_ID | typeof CLS | typeof CLS_SOURCE_KEY | 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 CONNECTIONTYPE | typeof CONNECTION_RTT | typeof CULTURE_CALENDAR | typeof CULTURE_DISPLAY_NAME | typeof CULTURE_IS_24_HOUR_FORMAT | typeof CULTURE_LOCALE | typeof CULTURE_TIMEZONE | typeof DB_COLLECTION_NAME | typeof DB_DRIVER_NAME | typeof DB_NAME | typeof DB_NAMESPACE | typeof DB_OPERATION | typeof DB_OPERATION_BATCH_SIZE | typeof DB_OPERATION_NAME | typeof DB_QUERY_PARAMETER_KEY | typeof DB_QUERY_SUMMARY | typeof DB_QUERY_TEXT | typeof DB_REDIS_CONNECTION | typeof DB_REDIS_KEY | typeof DB_REDIS_PARAMETERS | typeof DB_RESPONSE_STATUS_CODE | typeof DB_SQL_BINDINGS | typeof DB_STATEMENT | typeof DB_STORED_PROCEDURE_NAME | typeof DB_SYSTEM | typeof DB_SYSTEM_NAME | typeof DB_USER | typeof DEVICEMEMORY | typeof DEVICE_ARCHS | typeof DEVICE_BATTERY_LEVEL | typeof DEVICE_BATTERY_TEMPERATURE | typeof DEVICE_BOOT_TIME | typeof DEVICE_BRAND | typeof DEVICE_CHARGING | typeof DEVICE_CHIPSET | typeof DEVICE_CLASS | typeof DEVICE_CONNECTION_TYPE | typeof DEVICE_CPU_DESCRIPTION | typeof DEVICE_EXTERNAL_FREE_STORAGE | typeof DEVICE_EXTERNAL_STORAGE_SIZE | typeof DEVICE_FAMILY | typeof DEVICE_FREE_MEMORY | typeof DEVICE_FREE_STORAGE | typeof DEVICE_ID | typeof DEVICE_LOCALE | typeof DEVICE_LOW_MEMORY | typeof DEVICE_LOW_POWER_MODE | typeof DEVICE_MANUFACTURER | typeof DEVICE_MEMORY_ESTIMATED_CAPACITY | typeof DEVICE_MEMORY_SIZE | typeof DEVICE_MODEL | typeof DEVICE_MODEL_ID | typeof DEVICE_NAME | typeof DEVICE_ONLINE | typeof DEVICE_ORIENTATION | typeof DEVICE_PROCESSOR_COUNT | typeof DEVICE_PROCESSOR_FREQUENCY | typeof DEVICE_SCREEN_DENSITY | typeof DEVICE_SCREEN_DPI | typeof DEVICE_SCREEN_HEIGHT_PIXELS | typeof DEVICE_SCREEN_WIDTH_PIXELS | typeof DEVICE_SIMULATOR | typeof DEVICE_STORAGE_SIZE | typeof DEVICE_THERMAL_STATE | typeof DEVICE_TIMEZONE | typeof DEVICE_USABLE_MEMORY | typeof EFFECTIVECONNECTIONTYPE | typeof ENVIRONMENT | typeof ERROR_TYPE | 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_DURATION_IN_MS | typeof FAAS_ENTRY_POINT | typeof FAAS_EXECUTION | typeof FAAS_ID | typeof FAAS_IDENTITY | typeof FAAS_INVOCATION_ID | typeof FAAS_NAME | typeof FAAS_TIME | typeof FAAS_TRIGGER | typeof FAAS_VERSION | typeof FCP | typeof FLAG_EVALUATION_KEY | typeof FP | typeof FRAMES_DELAY | typeof FRAMES_FROZEN | typeof FRAMES_FROZEN_RATE | typeof FRAMES_SLOW | typeof FRAMES_SLOW_RATE | typeof FRAMES_TOTAL | typeof FS_ERROR | typeof GCP_FUNCTION_CONTEXT_EVENT_ID | typeof GCP_FUNCTION_CONTEXT_EVENT_TYPE | typeof GCP_FUNCTION_CONTEXT_ID | typeof GCP_FUNCTION_CONTEXT_RESOURCE | typeof GCP_FUNCTION_CONTEXT_SOURCE | typeof GCP_FUNCTION_CONTEXT_SPECVERSION | typeof GCP_FUNCTION_CONTEXT_TIME | typeof GCP_FUNCTION_CONTEXT_TIMESTAMP | typeof GCP_FUNCTION_CONTEXT_TYPE | typeof GCP_PROJECT_ID | typeof GEN_AI_AGENT_NAME | typeof GEN_AI_CONTEXT_UTILIZATION | typeof GEN_AI_CONTEXT_WINDOW_SIZE | typeof GEN_AI_CONVERSATION_ID | typeof GEN_AI_COST_CACHE_CREATION_INPUT_TOKENS | typeof GEN_AI_COST_CACHE_READ_INPUT_TOKENS | typeof GEN_AI_COST_INPUT_TOKENS | typeof GEN_AI_COST_OUTPUT_TOKENS | typeof GEN_AI_COST_REASONING_OUTPUT_TOKENS | typeof GEN_AI_COST_TOTAL_TOKENS | typeof GEN_AI_EMBEDDINGS_INPUT | typeof GEN_AI_FUNCTION_ID | 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_PROMPT_NAME | typeof GEN_AI_PROVIDER_NAME | 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_REASONING_EFFORT | 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_TIME_TO_FIRST_CHUNK | typeof GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN | 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_CACHE_CREATION_INPUT_TOKENS | typeof GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS | 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_REASONING_OUTPUT_TOKENS | typeof GEN_AI_USAGE_TOTAL_TOKENS | typeof GRAPHQL_DOCUMENT | typeof GRAPHQL_OPERATION_NAME | typeof GRAPHQL_OPERATION_TYPE | typeof HARDWARECONCURRENCY | 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_BODY_DATA | 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_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_SAME_ORIGIN | 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_SERVER_REQUEST_TIME_IN_QUEUE | typeof HTTP_STATUS_CODE | typeof HTTP_TARGET | typeof HTTP_URL | typeof HTTP_USER_AGENT | typeof ID | typeof INP | typeof JSONRPC_PROTOCOL_VERSION | typeof JSONRPC_REQUEST_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 | typeof LCP_ELEMENT | typeof LCP_ID | typeof LCP_LOADTIME | typeof LCP_RENDERTIME | 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_BATCH_MESSAGE_COUNT | typeof MESSAGING_DESTINATION_CONNECTION | typeof MESSAGING_DESTINATION_NAME | typeof MESSAGING_MESSAGE_BODY_SIZE | typeof MESSAGING_MESSAGE_CONVERSATION_ID | typeof MESSAGING_MESSAGE_ENVELOPE_SIZE | typeof MESSAGING_MESSAGE_ID | typeof MESSAGING_MESSAGE_RECEIVE_LATENCY | typeof MESSAGING_MESSAGE_RETRY_COUNT | typeof MESSAGING_OPERATION_NAME | typeof MESSAGING_OPERATION_TYPE | typeof MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY | typeof MESSAGING_SYSTEM | typeof METHOD | typeof MIDDLEWARE_NAME | typeof NAVIGATION_TYPE | typeof NEL_ELAPSED_TIME | typeof NEL_PHASE | typeof NEL_REFERRER | typeof NEL_SAMPLING_FUNCTION | typeof NEL_TYPE | typeof NETWORK_CONNECTION_EFFECTIVE_TYPE | typeof NETWORK_CONNECTION_RTT | typeof NETWORK_CONNECTION_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 | typeof OS_BUILD_ID | typeof OS_DESCRIPTION | typeof OS_KERNEL_VERSION | typeof OS_NAME | typeof OS_RAW_DESCRIPTION | typeof OS_ROOTED | typeof OS_THEME | typeof OS_TYPE | typeof OS_VERSION | typeof OTEL_KIND | typeof OTEL_SCOPE_NAME | typeof OTEL_SCOPE_VERSION | typeof OTEL_STATUS_CODE | typeof OTEL_STATUS_DESCRIPTION | typeof PARAMS_KEY | typeof PERFORMANCE_ACTIVATIONSTART | typeof PERFORMANCE_TIMEORIGIN | typeof PREVIOUS_ROUTE | typeof PROCESS_COMMAND_ARGS | typeof PROCESS_EXECUTABLE_NAME | typeof PROCESS_PID | typeof PROCESS_RUNTIME_DESCRIPTION | typeof PROCESS_RUNTIME_ENGINE_NAME | typeof PROCESS_RUNTIME_ENGINE_VERSION | typeof PROCESS_RUNTIME_NAME | typeof PROCESS_RUNTIME_VERSION | typeof QUERY_KEY | typeof REACT_VERSION | typeof RELEASE | typeof REMIX_ACTION_FORM_DATA_KEY | typeof REPLAY_ID | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME | typeof RESOURCE_RENDER_BLOCKING_STATUS | typeof ROUTE | typeof RPC_GRPC_STATUS_CODE | typeof RPC_METHOD | typeof RPC_RESPONSE_STATUS_CODE | typeof RPC_SERVICE | typeof RUNTIME_BUILD | typeof RUNTIME_NAME | typeof RUNTIME_RAW_DESCRIPTION | typeof RUNTIME_VERSION | typeof SCORE_KEY | typeof SCORE_RATIO_KEY | typeof SCORE_TOTAL | typeof SCORE_WEIGHT_KEY | 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_PROJECT_ID | 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_MAIN_THREAD | typeof SENTRY_MESSAGE_PARAMETER_KEY | typeof SENTRY_MESSAGE_TEMPLATE | typeof SENTRY_METRIC_SOURCE | typeof SENTRY_MOBILE | 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_PROFILER_ID | typeof SENTRY_PROFILE_ID | typeof SENTRY_RELEASE | typeof SENTRY_REPLAY_ID | typeof SENTRY_REPLAY_IS_BUFFERING | typeof SENTRY_REPORT_EVENT | 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_SOURCE | typeof SENTRY_SPAN_SOURCE | typeof SENTRY_STATUS | typeof SENTRY_STATUS_CODE | typeof SENTRY_STATUS_MESSAGE | typeof SENTRY_THREAD_ID | typeof SENTRY_TIMESTAMP_SEQUENCE | typeof SENTRY_TRACE_LIFECYCLE | typeof SENTRY_TRACE_PARENT_SPAN_ID | typeof SENTRY_TRACE_STATUS | typeof SENTRY_TRANSACTION | typeof SENTRY_USER_EMAIL | typeof SENTRY_USER_GEO_CITY | typeof SENTRY_USER_GEO_COUNTRY_CODE | typeof SENTRY_USER_GEO_REGION | typeof SENTRY_USER_GEO_SUBDIVISION | typeof SENTRY_USER_ID | typeof SENTRY_USER_IP | typeof SENTRY_USER_USERNAME | typeof SERVER_ADDRESS | typeof _SERVER_ADDRESS | typeof SERVER_PORT | typeof SERVICE_NAME | typeof SERVICE_VERSION | typeof SESSION_ID | typeof STALL_PERCENTAGE | typeof STALL_TOTAL_TIME | typeof STATE_TYPE | typeof THREAD_ID | typeof THREAD_NAME | typeof TIMBER_TAG | typeof TIME_TO_FULL_DISPLAY | typeof TIME_TO_INITIAL_DISPLAY | typeof TRANSACTION | typeof TRPC_PROCEDURE_PATH | typeof TRPC_PROCEDURE_TYPE | typeof TTFB | typeof TTFB_REQUESTTIME | typeof TYPE | typeof UI_COMPONENT_NAME | typeof UI_CONTRIBUTES_TO_TTFD | typeof UI_CONTRIBUTES_TO_TTID | typeof UI_ELEMENT_HEIGHT | typeof UI_ELEMENT_ID | typeof UI_ELEMENT_IDENTIFIER | typeof UI_ELEMENT_LOAD_TIME | typeof UI_ELEMENT_PAINT_TYPE | typeof UI_ELEMENT_RENDER_TIME | typeof UI_ELEMENT_TYPE | typeof UI_ELEMENT_URL | typeof UI_ELEMENT_WIDTH | typeof URL | typeof URL_DOMAIN | typeof URL_FRAGMENT | typeof URL_FULL | typeof URL_PATH | typeof URL_PATH_PARAMETER_KEY | typeof URL_PORT | typeof URL_QUERY | typeof URL_SAME_ORIGIN | 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_PATH | 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.', + "ai.citations": { + brief: "References or sources cited by the AI model in its response.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: ['Citation 1', 'Citation 2'], + example: ["Citation 1","Citation 2"], deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - 'ai.completion_tokens.used': { - brief: 'The number of tokens used to respond to the message.', + "ai.completion_tokens.used": { + brief: "The number of tokens used to respond to the message.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', 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'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61] }, { version: '0.0.0' }], + aliases: ["gen_ai.usage.output_tokens", "gen_ai.usage.completion_tokens"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57, 61] }, + { version: "0.0.0" }, + ], }, - 'ai.documents': { - brief: 'Documents or content chunks used as context for the AI model.', + "ai.documents": { + brief: "Documents or content chunks used as context for the AI model.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: ['document1.txt', 'document2.pdf'], + example: ["document1.txt","document2.pdf"], deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - 'ai.finish_reason': { - brief: 'The reason why the model stopped generating.', + "ai.finish_reason": { + brief: "The reason why the model stopped generating.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'COMPLETE', + example: "COMPLETE", deprecation: { - replacement: 'gen_ai.response.finish_reasons', + replacement: "gen_ai.response.finish_reasons" }, - aliases: ['gen_ai.response.finish_reasons'], - changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], + aliases: ["gen_ai.response.finish_reasons"], + changelog: [ + { version: "0.1.0", prs: [55, 57, 61, 108, 127] }, + ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.5, deprecation: { - replacement: 'gen_ai.request.frequency_penalty', + replacement: "gen_ai.request.frequency_penalty" }, - aliases: ['gen_ai.request.frequency_penalty'], + aliases: ["gen_ai.request.frequency_penalty"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [55, 57, 61, 108] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [55, 57, 61, 108] }, ], }, - 'ai.function_call': { - brief: - 'For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls', + "ai.function_call": { + brief: "For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'function_name', + example: "function_name", deprecation: { - replacement: 'gen_ai.tool.name', + replacement: "gen_ai.tool.name" }, - aliases: ['gen_ai.tool.name', 'mcp.tool.name'], - changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108] }], + aliases: ["gen_ai.tool.name", "mcp.tool.name"], + changelog: [ + { version: "0.1.0", prs: [55, 57, 61, 108] }, + ], }, - 'ai.generation_id': { - brief: 'Unique identifier for the completion.', + "ai.generation_id": { + brief: "Unique identifier for the completion.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'gen_123abc', + example: "gen_123abc", deprecation: { - replacement: 'gen_ai.response.id', + replacement: "gen_ai.response.id" }, - aliases: ['gen_ai.response.id'], - changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], + aliases: ["gen_ai.response.id"], + changelog: [ + { version: "0.1.0", prs: [55, 57, 61, 108, 127] }, + ], }, - 'ai.input_messages': { - brief: 'The input messages sent to the model', + "ai.input_messages": { + brief: "The input messages sent to the model", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '[{"role": "user", "message": "hello"}]', + example: "[{\"role\": \"user\", \"message\": \"hello\"}]", deprecation: { - replacement: 'gen_ai.input.messages', + replacement: "gen_ai.input.messages" }, - aliases: ['gen_ai.request.messages'], - changelog: [{ version: '0.1.0', prs: [65, 119] }, { version: '0.0.0' }], + aliases: ["gen_ai.request.messages"], + changelog: [ + { version: "0.1.0", prs: [65, 119] }, + { version: "0.0.0" }, + ], }, - 'ai.is_search_required': { - brief: 'Boolean indicating if the model needs to perform a search.', + "ai.is_search_required": { + brief: "Boolean indicating if the model needs to perform a search.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: false, deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - 'ai.metadata': { - brief: 'Extra metadata passed to an AI pipeline step.', + "ai.metadata": { + brief: "Extra metadata passed to an AI pipeline step.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '{"user_id": 123, "session_id": "abc123"}', + example: "{\"user_id\": 123, \"session_id\": \"abc123\"}", deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55, 127] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55, 127] }, ], }, - 'ai.model_id': { - brief: 'The vendor-specific ID of the model used.', + "ai.model_id": { + brief: "The vendor-specific ID of the model used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'gpt-4', + example: "gpt-4", deprecation: { - replacement: 'gen_ai.response.model', + replacement: "gen_ai.response.model" }, - aliases: ['gen_ai.response.model'], - changelog: [{ version: '0.1.0', prs: [57, 61, 127] }, { version: '0.0.0' }], + aliases: ["gen_ai.response.model"], + changelog: [ + { version: "0.1.0", prs: [57, 61, 127] }, + { version: "0.0.0" }, + ], }, - 'ai.model.provider': { - brief: 'The provider of the model.', + "ai.model.provider": { + brief: "The provider of the model.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'openai', + example: "openai", deprecation: { - replacement: 'gen_ai.provider.name', + replacement: "gen_ai.provider.name" }, - aliases: ['gen_ai.provider.name', 'gen_ai.system'], + aliases: ["gen_ai.provider.name", "gen_ai.system"], changelog: [ - { version: '0.4.0', prs: [253] }, - { version: '0.1.0', prs: [57, 61, 108, 127] }, + { version: "0.4.0", prs: [253] }, + { version: "0.1.0", prs: [57, 61, 108, 127] }, ], }, - 'ai.pipeline.name': { - brief: 'The name of the AI pipeline.', + "ai.pipeline.name": { + brief: "The name of the AI pipeline.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Autofix Pipeline', + example: "Autofix Pipeline", deprecation: { - replacement: 'gen_ai.pipeline.name', + replacement: "gen_ai.pipeline.name" }, - aliases: ['gen_ai.pipeline.name'], - changelog: [{ version: '0.1.0', prs: [53, 76, 108, 127] }], + aliases: ["gen_ai.pipeline.name"], + changelog: [ + { version: "0.1.0", prs: [53, 76, 108, 127] }, + ], }, - '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.", + "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.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'You are now a clown.', + example: "You are now a clown.", deprecation: { - replacement: 'gen_ai.system_instructions', + replacement: "gen_ai.system_instructions" }, - aliases: ['gen_ai.system_instructions'], + aliases: ["gen_ai.system_instructions"], changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.5, deprecation: { - replacement: 'gen_ai.request.presence_penalty', + replacement: "gen_ai.request.presence_penalty" }, - aliases: ['gen_ai.request.presence_penalty'], + aliases: ["gen_ai.request.presence_penalty"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [55, 57, 61, 108] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [55, 57, 61, 108] }, ], }, - 'ai.prompt_tokens.used': { - brief: 'The number of tokens used to process just the prompt.', + "ai.prompt_tokens.used": { + brief: "The number of tokens used to process just the prompt.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', 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'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61] }, { version: '0.0.0' }], + aliases: ["gen_ai.usage.prompt_tokens", "gen_ai.usage.input_tokens"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57, 61] }, + { version: "0.0.0" }, + ], }, - 'ai.raw_prompting': { - brief: 'When enabled, the user’s prompt will be sent to the model without any pre-processing.', + "ai.raw_prompting": { + brief: "When enabled, the user’s prompt will be sent to the model without any pre-processing.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - 'ai.responses': { - brief: 'The response messages sent back by the AI model.', + "ai.responses": { + brief: "The response messages sent back by the AI model.", type: 'string[]', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: ['hello', 'world'], + example: ["hello","world"], deprecation: { - replacement: 'gen_ai.output.messages', + replacement: "gen_ai.output.messages" }, - changelog: [{ version: '0.1.0', prs: [65, 127] }, { version: '0.0.0' }], + changelog: [ + { version: "0.1.0", prs: [65, 127] }, + { version: "0.0.0" }, + ], }, - 'ai.response_format': { - brief: 'For an AI model call, the format of the response', + "ai.response_format": { + brief: "For an AI model call, the format of the response", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'json_object', + example: "json_object", deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55, 127] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55, 127] }, ], }, - 'ai.search_queries': { - brief: 'Queries used to search for relevant context or documents.', + "ai.search_queries": { + brief: "Queries used to search for relevant context or documents.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: ['climate change effects', 'renewable energy'], + example: ["climate change effects","renewable energy"], deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - 'ai.search_results': { - brief: 'Results returned from search queries for context.', + "ai.search_results": { + brief: "Results returned from search queries for context.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: ['search_result_1, search_result_2'], + example: ["search_result_1, search_result_2"], deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - 'ai.seed': { - brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', + "ai.seed": { + brief: "The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1234567890', + example: "1234567890", deprecation: { - replacement: 'gen_ai.request.seed', + replacement: "gen_ai.request.seed" }, - aliases: ['gen_ai.request.seed'], - changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], + aliases: ["gen_ai.request.seed"], + changelog: [ + { version: "0.1.0", prs: [55, 57, 61, 108, 127] }, + ], }, - 'ai.streaming': { - brief: 'Whether the request was streamed back.', + "ai.streaming": { + brief: "Whether the request was streamed back.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, deprecation: { - replacement: 'gen_ai.response.streaming', + replacement: "gen_ai.response.streaming" }, - aliases: ['gen_ai.response.streaming'], - changelog: [{ version: '0.1.0', prs: [76, 108] }, { version: '0.0.0' }], + aliases: ["gen_ai.response.streaming"], + changelog: [ + { version: "0.1.0", prs: [76, 108] }, + { version: "0.0.0" }, + ], }, - 'ai.tags': { - brief: 'Tags that describe an AI pipeline step.', + "ai.tags": { + brief: "Tags that describe an AI pipeline step.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '{"executed_function": "add_integers"}', + example: "{\"executed_function\": \"add_integers\"}", deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55, 127] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55, 127] }, ], }, - 'ai.temperature': { - brief: - 'For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.', + "ai.temperature": { + brief: "For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.1, deprecation: { - replacement: 'gen_ai.request.temperature', + replacement: "gen_ai.request.temperature" }, - aliases: ['gen_ai.request.temperature'], + aliases: ["gen_ai.request.temperature"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [55, 57, 61, 108] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [55, 57, 61, 108] }, ], }, - 'ai.texts': { - brief: 'Raw text inputs provided to the model.', + "ai.texts": { + brief: "Raw text inputs provided to the model.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: ['Hello, how are you?', 'What is the capital of France?'], + example: ["Hello, how are you?","What is the capital of France?"], deprecation: { - replacement: 'gen_ai.input.messages', + replacement: "gen_ai.input.messages" }, - aliases: ['gen_ai.input.messages'], + aliases: ["gen_ai.input.messages"], changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - 'ai.tools': { - brief: 'For an AI model call, the functions that are available', + "ai.tools": { + brief: "For an AI model call, the functions that are available", type: 'string[]', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: ['function_1', 'function_2'], + example: ["function_1","function_2"], deprecation: { - replacement: 'gen_ai.tool.definitions', + replacement: "gen_ai.tool.definitions" }, - changelog: [{ version: '0.1.0', prs: [55, 65, 127] }], + changelog: [ + { version: "0.1.0", prs: [55, 65, 127] }, + ], }, - 'ai.tool_calls': { - brief: 'For an AI model call, the tool calls that were made.', + "ai.tool_calls": { + brief: "For an AI model call, the tool calls that were made.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: ['tool_call_1', 'tool_call_2'], + example: ["tool_call_1","tool_call_2"], deprecation: { - replacement: 'gen_ai.output.messages', + replacement: "gen_ai.output.messages" }, - changelog: [{ version: '0.1.0', prs: [55, 65] }], + changelog: [ + { version: "0.1.0", prs: [55, 65] }, + ], }, - '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).', + "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).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 35, deprecation: { - replacement: 'gen_ai.request.top_k', + replacement: "gen_ai.request.top_k" }, - aliases: ['gen_ai.request.top_k'], + aliases: ["gen_ai.request.top_k"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [55, 57, 61, 108] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [55, 57, 61, 108] }, ], }, - '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).', + "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).", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.7, deprecation: { - replacement: 'gen_ai.request.top_p', + replacement: "gen_ai.request.top_p" }, - aliases: ['gen_ai.request.top_p'], + aliases: ["gen_ai.request.top_p"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [55, 57, 61, 108] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [55, 57, 61, 108] }, ], }, - 'ai.total_cost': { - brief: 'The total cost for the tokens used.', + "ai.total_cost": { + brief: "The total cost for the tokens used.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12.34, deprecation: { - replacement: 'gen_ai.cost.total_tokens', + replacement: "gen_ai.cost.total_tokens" }, - aliases: ['gen_ai.cost.total_tokens'], + aliases: ["gen_ai.cost.total_tokens"], changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [53] }, + { version: "0.5.0", prs: [264] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [53] }, ], }, - 'ai.total_tokens.used': { - brief: 'The total number of tokens used to process the prompt.', + "ai.total_tokens.used": { + brief: "The total number of tokens used to process the prompt.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 30, deprecation: { - replacement: 'gen_ai.usage.total_tokens', + replacement: "gen_ai.usage.total_tokens" }, - aliases: ['gen_ai.usage.total_tokens'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61, 108] }, { version: '0.0.0' }], + aliases: ["gen_ai.usage.total_tokens"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57, 61, 108] }, + { version: "0.0.0" }, + ], }, - 'ai.warnings': { - brief: 'Warning messages generated during model execution.', + "ai.warnings": { + brief: "Warning messages generated during model execution.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: ['Token limit exceeded'], + example: ["Token limit exceeded"], deprecation: {}, changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.1.0', prs: [55] }, + { version: "0.5.0", prs: [264] }, + { version: "0.1.0", prs: [55] }, ], }, - 'angular.version': { - brief: 'The version of the Angular framework', + "angular.version": { + brief: "The version of the Angular framework", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '17.1.0', - changelog: [{ version: '0.7.0', prs: [367], description: 'Added angular.version attribute' }], + example: "17.1.0", + changelog: [ + { version: "0.7.0", prs: [367], description: "Added angular.version attribute" }, + ], }, - 'app.app_build': { - brief: 'Internal build identifier, as it appears on the platform.', + "app.app_build": { + brief: "Internal build identifier, as it appears on the platform.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1', + example: "1", deprecation: { - replacement: 'app.build', - reason: 'Deprecated in favor of app.build', + replacement: "app.build", + reason: "Deprecated in favor of app.build" }, - aliases: ['app.build'], + aliases: ["app.build"], changelog: [ - { version: '0.5.0', prs: [296], description: 'Added and deprecated app.app_build in favor of app.build' }, + { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_build in favor of app.build" }, ], }, - 'app.app_identifier': { - brief: 'Version-independent application identifier, often a dotted bundle ID.', + "app.app_identifier": { + brief: "Version-independent application identifier, often a dotted bundle ID.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'com.example.myapp', + example: "com.example.myapp", deprecation: { - replacement: 'app.identifier', - reason: 'Deprecated in favor of app.identifier', + replacement: "app.identifier", + reason: "Deprecated in favor of app.identifier" }, - aliases: ['app.identifier'], + aliases: ["app.identifier"], changelog: [ - { - version: '0.5.0', - prs: [296], - description: 'Added and deprecated app.app_identifier in favor of app.identifier', - }, + { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_identifier in favor of app.identifier" }, ], }, - 'app.app_name': { - brief: 'Human readable application name, as it appears on the platform.', + "app.app_name": { + brief: "Human readable application name, as it appears on the platform.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'My App', + example: "My App", deprecation: { - replacement: 'app.name', - reason: 'Deprecated in favor of app.name', + replacement: "app.name", + reason: "Deprecated in favor of app.name" }, - aliases: ['app.name'], + aliases: ["app.name"], changelog: [ - { version: '0.5.0', prs: [296], description: 'Added and deprecated app.app_name in favor of app.name' }, + { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_name in favor of app.name" }, ], }, - 'app.app_start_time': { - brief: 'Formatted UTC timestamp when the user started the application.', + "app.app_start_time": { + brief: "Formatted UTC timestamp when the user started the application.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '2025-01-01T00:00:00.000Z', + example: "2025-01-01T00:00:00.000Z", deprecation: { - replacement: 'app.start_time', - reason: 'Deprecated in favor of app.start_time', + replacement: "app.start_time", + reason: "Deprecated in favor of app.start_time" }, - aliases: ['app.start_time'], + aliases: ["app.start_time"], changelog: [ - { - version: '0.5.0', - prs: [296], - description: 'Added and deprecated app.app_start_time in favor of app.start_time', - }, + { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_start_time in favor of app.start_time" }, ], }, - 'app.app_version': { - brief: 'Human readable application version, as it appears on the platform.', + "app.app_version": { + brief: "Human readable application version, as it appears on the platform.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1.0.0', + example: "1.0.0", deprecation: { - replacement: 'app.version', - reason: 'Deprecated in favor of app.version', + replacement: "app.version", + reason: "Deprecated in favor of app.version" }, - aliases: ['app.version'], + aliases: ["app.version"], changelog: [ - { version: '0.5.0', prs: [296], description: 'Added and deprecated app.app_version in favor of app.version' }, + { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_version in favor of app.version" }, ], }, - 'app.build': { - brief: 'Internal build identifier, as it appears on the platform.', + "app.build": { + brief: "Internal build identifier, as it appears on the platform.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1', - aliases: ['app.app_build'], - changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.build attribute' }], + example: "1", + aliases: ["app.app_build"], + changelog: [ + { version: "0.5.0", prs: [296], description: "Added app.build attribute" }, + ], }, - 'app.identifier': { - brief: 'Version-independent application identifier, often a dotted bundle ID.', + "app.identifier": { + brief: "Version-independent application identifier, often a dotted bundle ID.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'com.example.myapp', - aliases: ['app.app_identifier'], - changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.identifier attribute' }], + example: "com.example.myapp", + aliases: ["app.app_identifier"], + changelog: [ + { version: "0.5.0", prs: [296], description: "Added app.identifier attribute" }, + ], }, - 'app.in_foreground': { - brief: 'Whether the application is currently in the foreground.', + "app.in_foreground": { + brief: "Whether the application is currently in the foreground.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.in_foreground attribute' }], + changelog: [ + { version: "0.5.0", prs: [296], description: "Added app.in_foreground attribute" }, + ], }, - 'app.name': { - brief: 'Human readable application name, as it appears on the platform.', + "app.name": { + brief: "Human readable application name, as it appears on the platform.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'My App', - aliases: ['app.app_name'], - changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.name attribute' }], + example: "My App", + aliases: ["app.app_name"], + changelog: [ + { version: "0.5.0", prs: [296], description: "Added app.name attribute" }, + ], }, - app_start_cold: { - brief: 'The duration of a cold app start in milliseconds', + "app_start_cold": { + brief: "The duration of a cold app start in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, deprecation: { - replacement: 'app.vitals.start.cold.value', - reason: - 'Replaced by app.vitals.start.cold.value to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.start.cold.value", + reason: "Replaced by app.vitals.start.cold.value to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.start.cold.value'], + aliases: ["app.vitals.start.cold.value"], changelog: [ - { version: '0.5.0', prs: [323], description: 'Added and deprecated in favor of app.vitals.start.cold.value' }, + { version: "0.5.0", prs: [323], description: "Added and deprecated in favor of app.vitals.start.cold.value" }, ], }, - 'app.start_time': { - brief: 'Formatted UTC timestamp when the user started the application.', + "app.start_time": { + brief: "Formatted UTC timestamp when the user started the application.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '2025-01-01T00:00:00.000Z', - aliases: ['app.app_start_time'], - changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.start_time attribute' }], + example: "2025-01-01T00:00:00.000Z", + aliases: ["app.app_start_time"], + changelog: [ + { version: "0.5.0", prs: [296], description: "Added app.start_time attribute" }, + ], }, - app_start_type: { - brief: 'Mobile app start variant. Either cold or warm.', + "app_start_type": { + brief: "Mobile app start variant. Either cold or warm.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'cold', + example: "cold", deprecation: { - replacement: 'app.vitals.start.type', - reason: - 'Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.start.type", + reason: "Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.start.type'], + aliases: ["app.vitals.start.type"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.start.type' }, - { version: '0.1.0', prs: [127] }, - { version: '0.0.0' }, + { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.start.type" }, + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, ], }, - app_start_warm: { - brief: 'The duration of a warm app start in milliseconds', + "app_start_warm": { + brief: "The duration of a warm app start in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, deprecation: { - replacement: 'app.vitals.start.warm.value', - reason: - 'Replaced by app.vitals.start.warm.value to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.start.warm.value", + reason: "Replaced by app.vitals.start.warm.value to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.start.warm.value'], + aliases: ["app.vitals.start.warm.value"], changelog: [ - { version: '0.5.0', prs: [323], description: 'Added and deprecated in favor of app.vitals.start.warm.value' }, + { version: "0.5.0", prs: [323], description: "Added and deprecated in favor of app.vitals.start.warm.value" }, ], }, - 'app.version': { - brief: 'Human readable application version, as it appears on the platform.', + "app.version": { + brief: "Human readable application version, as it appears on the platform.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1.0.0', - aliases: ['app.app_version'], - changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.version attribute' }], + example: "1.0.0", + aliases: ["app.app_version"], + changelog: [ + { version: "0.5.0", prs: [296], description: "Added app.version attribute" }, + ], }, - 'app.vitals.frames.delay.value': { - 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/).', + "app.vitals.frames.delay.value": { + 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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 5, - aliases: ['frames.delay'], + aliases: ["frames.delay"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Added app.vitals.frames.delay.value to replace frames.delay' }, + { version: "0.5.0", prs: [313], description: "Added app.vitals.frames.delay.value to replace frames.delay" }, ], }, - 'app.vitals.frames.frozen.count': { - brief: 'The number of frozen frames rendered during the lifetime of the span.', + "app.vitals.frames.frozen.count": { + brief: "The number of frozen frames rendered during the lifetime of the span.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 3, - aliases: ['frames.frozen'], + aliases: ["frames.frozen"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Added app.vitals.frames.frozen.count to replace frames.frozen' }, + { version: "0.5.0", prs: [313], description: "Added app.vitals.frames.frozen.count to replace frames.frozen" }, ], }, - 'app.vitals.frames.slow.count': { - brief: 'The number of slow frames rendered during the lifetime of the span.', + "app.vitals.frames.slow.count": { + brief: "The number of slow frames rendered during the lifetime of the span.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, - aliases: ['frames.slow'], + aliases: ["frames.slow"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Added app.vitals.frames.slow.count to replace frames.slow' }, + { version: "0.5.0", prs: [313], description: "Added app.vitals.frames.slow.count to replace frames.slow" }, ], }, - 'app.vitals.frames.total.count': { - brief: 'The number of total frames rendered during the lifetime of the span.', + "app.vitals.frames.total.count": { + brief: "The number of total frames rendered during the lifetime of the span.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 60, - aliases: ['frames.total'], + aliases: ["frames.total"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Added app.vitals.frames.total.count to replace frames.total' }, + { version: "0.5.0", prs: [313], description: "Added app.vitals.frames.total.count to replace frames.total" }, ], }, - 'app.vitals.start.cold.value': { - brief: 'The duration of a cold app start in milliseconds', + "app.vitals.start.cold.value": { + brief: "The duration of a cold app start in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, - aliases: ['app_start_cold'], - changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.start.cold.value attribute' }], + aliases: ["app_start_cold"], + changelog: [ + { version: "0.5.0", prs: [313], description: "Added app.vitals.start.cold.value attribute" }, + ], }, - 'app.vitals.start.prewarmed': { - brief: 'Whether the app start was prewarmed.', + "app.vitals.start.prewarmed": { + brief: "Whether the app start was prewarmed.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.11.0', prs: [379], description: 'Added app.vitals.start.prewarmed attribute' }], + changelog: [ + { version: "0.11.0", prs: [379], description: "Added app.vitals.start.prewarmed attribute" }, + ], }, - 'app.vitals.start.reason': { - brief: 'The reason that triggered the app start.', + "app.vitals.start.reason": { + brief: "The reason that triggered the app start.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'push', - changelog: [{ version: '0.7.0', prs: [353], description: 'Added app.vitals.start.reason attribute' }], + example: "push", + changelog: [ + { version: "0.7.0", prs: [353], description: "Added app.vitals.start.reason attribute" }, + ], }, - 'app.vitals.start.screen': { - brief: - 'The screen that is rendered when the app start is complete. This is the screen the user first sees and can interact with after launch. The absence of this attribute on the app start span indicates a background app start where no UI was rendered.', + "app.vitals.start.screen": { + brief: "The screen that is rendered when the app start is complete. This is the screen the user first sees and can interact with after launch. The absence of this attribute on the app start span indicates a background app start where no UI was rendered.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'MainActivity', - changelog: [{ version: '0.7.0', prs: [353], description: 'Added app.vitals.start.screen attribute' }], + example: "MainActivity", + changelog: [ + { version: "0.7.0", prs: [353], description: "Added app.vitals.start.screen attribute" }, + ], }, - 'app.vitals.start.type': { - brief: 'The type of app start, for example `cold` or `warm`', + "app.vitals.start.type": { + brief: "The type of app start, for example `cold` or `warm`", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'cold', - aliases: ['app_start_type'], - changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.start.type attribute' }], + example: "cold", + aliases: ["app_start_type"], + changelog: [ + { version: "0.5.0", prs: [313], description: "Added app.vitals.start.type attribute" }, + ], }, - 'app.vitals.start.warm.value': { - brief: 'The duration of a warm app start in milliseconds', + "app.vitals.start.warm.value": { + brief: "The duration of a warm app start in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, - aliases: ['app_start_warm'], - changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.start.warm.value attribute' }], + aliases: ["app_start_warm"], + changelog: [ + { version: "0.5.0", prs: [313], description: "Added app.vitals.start.warm.value attribute" }, + ], }, - 'app.vitals.ttfd.value': { - brief: 'The duration of time to full display in milliseconds', + "app.vitals.ttfd.value": { + brief: "The duration of time to full display in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, - aliases: ['time_to_full_display'], - changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.ttfd.value attribute' }], + aliases: ["time_to_full_display"], + changelog: [ + { version: "0.5.0", prs: [313], description: "Added app.vitals.ttfd.value attribute" }, + ], }, - 'app.vitals.ttid.value': { - brief: 'The duration of time to initial display in milliseconds', + "app.vitals.ttid.value": { + brief: "The duration of time to initial display in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, - aliases: ['time_to_initial_display'], - changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.ttid.value attribute' }], + aliases: ["time_to_initial_display"], + changelog: [ + { version: "0.5.0", prs: [313], description: "Added app.vitals.ttid.value attribute" }, + ], }, - 'art.gc.blocking_count': { - brief: 'Total number of blocking (stop-the-world) garbage collections performed by the Android Runtime', + "art.gc.blocking_count": { + brief: "Total number of blocking (stop-the-world) garbage collections performed by the Android Runtime", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.blocking_count attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.gc.blocking_count attribute" }, + ], }, - 'art.gc.blocking_time': { - brief: 'Total time spent in blocking (stop-the-world) garbage collections by the Android Runtime, in milliseconds', + "art.gc.blocking_time": { + brief: "Total time spent in blocking (stop-the-world) garbage collections by the Android Runtime, in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 11.873, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.blocking_time attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.gc.blocking_time attribute" }, + ], }, - 'art.gc.pre_oome_count': { - brief: - 'Total number of garbage collections triggered as a last resort before an OutOfMemoryError by the Android Runtime', + "art.gc.pre_oome_count": { + brief: "Total number of garbage collections triggered as a last resort before an OutOfMemoryError by the Android Runtime", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.pre_oome_count attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.gc.pre_oome_count attribute" }, + ], }, - 'art.gc.total_count': { - brief: 'Total number of garbage collections performed by the Android Runtime', + "art.gc.total_count": { + brief: "Total number of garbage collections performed by the Android Runtime", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.total_count attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.gc.total_count attribute" }, + ], }, - 'art.gc.total_time': { - brief: 'Total time spent in garbage collection by the Android Runtime, in milliseconds', + "art.gc.total_time": { + brief: "Total time spent in garbage collection by the Android Runtime, in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 11.807, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.total_time attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.gc.total_time attribute" }, + ], }, - 'art.gc.waiting_time': { - brief: - 'Total time threads spent waiting for garbage collection to complete in the Android Runtime, in milliseconds', + "art.gc.waiting_time": { + brief: "Total time threads spent waiting for garbage collection to complete in the Android Runtime, in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 8.054, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.waiting_time attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.gc.waiting_time attribute" }, + ], }, - 'art.memory.free': { - brief: 'Free memory available to the process as reported by the Android Runtime, in bytes', + "art.memory.free": { + brief: "Free memory available to the process as reported by the Android Runtime, in bytes", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 3181568, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.free attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.memory.free attribute" }, + ], }, - 'art.memory.free_until_gc': { - brief: 'Free memory available before a garbage collection would be triggered by the Android Runtime, in bytes', + "art.memory.free_until_gc": { + brief: "Free memory available before a garbage collection would be triggered by the Android Runtime, in bytes", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 3181568, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.free_until_gc attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.memory.free_until_gc attribute" }, + ], }, - 'art.memory.free_until_oome': { - brief: 'Free memory available before an OutOfMemoryError would be thrown by the Android Runtime, in bytes', + "art.memory.free_until_oome": { + brief: "Free memory available before an OutOfMemoryError would be thrown by the Android Runtime, in bytes", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 196083712, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.free_until_oome attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.memory.free_until_oome attribute" }, + ], }, - 'art.memory.max': { - brief: 'Maximum memory the process is allowed to use as reported by the Android Runtime, in bytes', + "art.memory.max": { + brief: "Maximum memory the process is allowed to use as reported by the Android Runtime, in bytes", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 201326592, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.max attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.memory.max attribute" }, + ], }, - 'art.memory.total': { - brief: 'Total memory currently allocated to the process by the Android Runtime, in bytes', + "art.memory.total": { + brief: "Total memory currently allocated to the process by the Android Runtime, in bytes", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 7774208, - changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.total attribute' }], + changelog: [ + { version: "0.11.0", prs: [382], description: "Added art.memory.total attribute" }, + ], }, - 'aws.cloudwatch.logs.log_group': { - brief: 'The name of the CloudWatch Logs log group', + "aws.cloudwatch.logs.log_group": { + brief: "The name of the CloudWatch Logs log group", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '/aws/lambda/my-function', - changelog: [{ version: '0.7.0', prs: [369], description: 'Added aws.cloudwatch.logs.log_group attribute' }], + example: "/aws/lambda/my-function", + changelog: [ + { version: "0.7.0", prs: [369], description: "Added aws.cloudwatch.logs.log_group attribute" }, + ], }, - 'aws.cloudwatch.logs.log_stream': { - brief: 'The name of the CloudWatch Logs log stream', + "aws.cloudwatch.logs.log_stream": { + brief: "The name of the CloudWatch Logs log stream", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '2024/01/01/[$LATEST]abcdef1234567890', - changelog: [{ version: '0.7.0', prs: [369], description: 'Added aws.cloudwatch.logs.log_stream attribute' }], + example: "2024/01/01/[$LATEST]abcdef1234567890", + changelog: [ + { version: "0.7.0", prs: [369], description: "Added aws.cloudwatch.logs.log_stream attribute" }, + ], }, - 'aws.cloudwatch.logs.url': { - brief: 'The URL to the CloudWatch Logs log group', + "aws.cloudwatch.logs.url": { + brief: "The URL to the CloudWatch Logs log group", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/my-log-group', - changelog: [{ version: '0.7.0', prs: [369], description: 'Added aws.cloudwatch.logs.url attribute' }], + example: "https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/my-log-group", + changelog: [ + { version: "0.7.0", prs: [369], description: "Added aws.cloudwatch.logs.url attribute" }, + ], }, - 'aws.lambda.aws_request_id': { - brief: 'The AWS request ID as received by the Lambda function runtime', + "aws.lambda.aws_request_id": { + brief: "The AWS request ID as received by the Lambda function runtime", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '8476a536-e9f4-11e8-9739-2dfe598c3fcd', + example: "8476a536-e9f4-11e8-9739-2dfe598c3fcd", deprecation: { - replacement: 'faas.invocation_id', - reason: 'This attribute is being deprecated in favor of faas.invocation_id', + replacement: "faas.invocation_id", + reason: "This attribute is being deprecated in favor of faas.invocation_id" }, - aliases: ['faas.invocation_id', 'faas.execution'], + aliases: ["faas.invocation_id", "faas.execution"], changelog: [ - { version: 'next', prs: [473], description: 'Added faas.execution as an alias' }, - { - version: '0.11.1', - prs: [414, 424], - description: 'Deprecated aws.lambda.aws_request_id in favor of faas.invocation_id', - }, - { version: '0.7.0', prs: [369], description: 'Added aws.lambda.aws_request_id attribute' }, + { version: "next", prs: [473], description: "Added faas.execution as an alias" }, + { version: "0.11.1", prs: [414, 424], description: "Deprecated aws.lambda.aws_request_id in favor of faas.invocation_id" }, + { version: "0.7.0", prs: [369], description: "Added aws.lambda.aws_request_id attribute" }, ], }, - 'aws.lambda.execution_duration_in_millis': { - brief: 'The execution duration of the Lambda function invocation in milliseconds', + "aws.lambda.execution_duration_in_millis": { + brief: "The execution duration of the Lambda function invocation in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, changelog: [ - { version: '0.7.0', prs: [369], description: 'Added aws.lambda.execution_duration_in_millis attribute' }, + { version: "0.7.0", prs: [369], description: "Added aws.lambda.execution_duration_in_millis attribute" }, ], }, - 'aws.lambda.function_name': { - brief: 'The name of the Lambda function', + "aws.lambda.function_name": { + brief: "The name of the Lambda function", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'my-function', + example: "my-function", deprecation: { - replacement: 'faas.name', - reason: 'Use the OTel-aligned faas.name attribute instead', + replacement: "faas.name", + reason: "Use the OTel-aligned faas.name attribute instead" }, - aliases: ['faas.name'], + aliases: ["faas.name"], changelog: [ - { version: '0.11.1', prs: [414], description: 'Deprecated aws.lambda.function_name in favor of faas.name' }, - { version: '0.7.0', prs: [369], description: 'Added aws.lambda.function_name attribute' }, + { version: "0.11.1", prs: [414], description: "Deprecated aws.lambda.function_name in favor of faas.name" }, + { version: "0.7.0", prs: [369], description: "Added aws.lambda.function_name attribute" }, ], }, - 'aws.lambda.function_version': { - brief: 'The version of the Lambda function', + "aws.lambda.function_version": { + brief: "The version of the Lambda function", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '$LATEST', + example: "$LATEST", deprecation: { - replacement: 'faas.version', - reason: 'Use the OTel-aligned faas.version attribute instead', + replacement: "faas.version", + reason: "Use the OTel-aligned faas.version attribute instead" }, - aliases: ['faas.version'], + aliases: ["faas.version"], changelog: [ - { - version: '0.11.1', - prs: [414, 424], - description: 'Deprecated aws.lambda.function_version in favor of faas.version', - }, - { version: '0.7.0', prs: [369], description: 'Added aws.lambda.function_version attribute' }, + { version: "0.11.1", prs: [414, 424], description: "Deprecated aws.lambda.function_version in favor of faas.version" }, + { version: "0.7.0", prs: [369], description: "Added aws.lambda.function_version attribute" }, ], }, - 'aws.lambda.invoked_arn': { - brief: 'The full ARN of the Lambda function that was invoked', + "aws.lambda.invoked_arn": { + brief: "The full ARN of the Lambda function that was invoked", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'arn:aws:lambda:us-east-1:123456789012:function:my-function', - aliases: ['aws.lambda.invoked_function_arn'], - changelog: [{ version: '0.11.1', prs: [414] }], + example: "arn:aws:lambda:us-east-1:123456789012:function:my-function", + aliases: ["aws.lambda.invoked_function_arn"], + changelog: [ + { version: "0.11.1", prs: [414] }, + ], }, - 'aws.lambda.invoked_function_arn': { - brief: 'The full ARN of the Lambda function that was invoked', + "aws.lambda.invoked_function_arn": { + brief: "The full ARN of the Lambda function that was invoked", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'arn:aws:lambda:us-east-1:123456789012:function:my-function', + example: "arn:aws:lambda:us-east-1:123456789012:function:my-function", deprecation: { - replacement: 'aws.lambda.invoked_arn', - reason: 'This attribute is being deprecated in favor of aws.lambda.invoked_arn', + replacement: "aws.lambda.invoked_arn", + reason: "This attribute is being deprecated in favor of aws.lambda.invoked_arn" }, - aliases: ['aws.lambda.invoked_arn'], + aliases: ["aws.lambda.invoked_arn"], changelog: [ - { - version: '0.11.1', - prs: [414], - description: 'Deprecated aws.lambda.invoked_function_arn in favor of aws.lambda.invoked_arn', - }, - { version: '0.7.0', prs: [369], description: 'Added aws.lambda.invoked_function_arn attribute' }, + { version: "0.11.1", prs: [414], description: "Deprecated aws.lambda.invoked_function_arn in favor of aws.lambda.invoked_arn" }, + { version: "0.7.0", prs: [369], description: "Added aws.lambda.invoked_function_arn attribute" }, ], }, - 'aws.lambda.remaining_time_in_millis': { - brief: 'The remaining time in milliseconds before the Lambda function times out', + "aws.lambda.remaining_time_in_millis": { + brief: "The remaining time in milliseconds before the Lambda function times out", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 5000, - changelog: [{ version: '0.7.0', prs: [369], description: 'Added aws.lambda.remaining_time_in_millis attribute' }], + changelog: [ + { version: "0.7.0", prs: [369], description: "Added aws.lambda.remaining_time_in_millis attribute" }, + ], }, - 'aws.log.group.names': { - brief: 'The name(s) of the AWS log group(s) an application is writing to.', + "aws.log.group.names": { + brief: "The name(s) of the AWS log group(s) an application is writing to.", type: 'string[]', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: ['/aws/lambda/my-function', 'opentelemetry-service'], - changelog: [{ version: '0.11.1', prs: [414] }], + example: ["/aws/lambda/my-function","opentelemetry-service"], + changelog: [ + { version: "0.11.1", prs: [414] }, + ], }, - 'aws.log.stream.names': { - brief: 'The name(s) of the AWS log stream(s) an application is writing to.', + "aws.log.stream.names": { + brief: "The name(s) of the AWS log stream(s) an application is writing to.", type: 'string[]', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: ['logs/main/10838bed-421f-43ef-870a-f43feacbbb5b'], - changelog: [{ version: '0.11.1', prs: [414] }], + example: ["logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"], + changelog: [ + { version: "0.11.1", prs: [414] }, + ], }, - blocked_main_thread: { - brief: 'Whether the main thread was blocked by the span.', + "blocked_main_thread": { + brief: "Whether the main thread was blocked by the span.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'browser.name': { - brief: 'The name of the browser.', + "browser.name": { + brief: "The name of the browser.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Chrome', - aliases: ['sentry.browser.name'], - changelog: [{ version: '0.1.0', prs: [127, 139] }, { version: '0.0.0' }], + example: "Chrome", + aliases: ["sentry.browser.name"], + changelog: [ + { version: "0.1.0", prs: [127, 139] }, + { version: "0.0.0" }, + ], }, - 'browser.performance.navigation.activation_start': { - brief: 'The time between initiating a navigation to a page and the browser activating the page', + "browser.performance.navigation.activation_start": { + brief: "The time between initiating a navigation to a page and the browser activating the page", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1.983, - aliases: ['performance.activationStart'], + aliases: ["performance.activationStart"], changelog: [ - { version: '0.5.0', prs: [321], description: 'Added browser.performance.navigation.activation_start attribute' }, + { version: "0.5.0", prs: [321], description: "Added browser.performance.navigation.activation_start attribute" }, ], }, - 'browser.performance.time_origin': { + "browser.performance.time_origin": { brief: "The browser's performance.timeOrigin timestamp representing the time when the pageload was initiated", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1776185678.886, - aliases: ['performance.timeOrigin'], + aliases: ["performance.timeOrigin"], changelog: [ - { version: '0.5.0', prs: [321], description: 'Added browser.performance.time_origin attribute attribute' }, + { version: "0.5.0", prs: [321], description: "Added browser.performance.time_origin attribute attribute" }, ], }, - 'browser.report.type': { - brief: 'A browser report sent via reporting API..', + "browser.report.type": { + brief: "A browser report sent via reporting API..", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'network-error', - changelog: [{ version: '0.1.0', prs: [68, 127] }], + example: "network-error", + changelog: [ + { version: "0.1.0", prs: [68, 127] }, + ], }, - 'browser.script.invoker': { - brief: 'How a script was called in the browser.', + "browser.script.invoker": { + brief: "How a script was called in the browser.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Window.requestAnimationFrame', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "Window.requestAnimationFrame", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'browser.script.invoker_type': { - brief: 'Browser script entry point type.', + "browser.script.invoker_type": { + brief: "Browser script entry point type.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'event-listener', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "event-listener", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'browser.script.source_char_position': { - brief: 'A number representing the script character position of the script.', + "browser.script.source_char_position": { + brief: "A number representing the script character position of the script.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 678, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'browser.version': { - brief: 'The version of the browser.', + "browser.version": { + brief: "The version of the browser.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '120.0.6099.130', - aliases: ['sentry.browser.version'], - changelog: [{ version: '0.1.0', prs: [59, 127, 139] }], + example: "120.0.6099.130", + aliases: ["sentry.browser.version"], + changelog: [ + { version: "0.1.0", prs: [59, 127, 139] }, + ], }, - 'browser.web_vital.cls.report_event': { - brief: 'The event that caused the SDK to report CLS (pagehide or navigation)', + "browser.web_vital.cls.report_event": { + brief: "The event that caused the SDK to report CLS (pagehide or navigation)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'navigation', - changelog: [{ version: '0.5.0', prs: [319], description: 'Added browser.web_vital.cls.report_event attribute' }], + example: "navigation", + changelog: [ + { version: "0.5.0", prs: [319], description: "Added browser.web_vital.cls.report_event attribute" }, + ], }, - 'browser.web_vital.cls.source.': { - brief: 'The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N', + "browser.web_vital.cls.source.": { + brief: "The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: 'body > div#app', - aliases: ['cls.source.'], - changelog: [{ version: '0.5.0', prs: [234] }], + example: "body > div#app", + aliases: ["cls.source."], + changelog: [ + { version: "0.5.0", prs: [234] }, + ], }, - 'browser.web_vital.cls.value': { - brief: 'The value of the recorded Cumulative Layout Shift (CLS) web vital', + "browser.web_vital.cls.value": { + brief: "The value of the recorded Cumulative Layout Shift (CLS) web vital", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.2361, - aliases: ['cls'], - changelog: [{ version: '0.5.0', prs: [229], description: 'Added browser.web_vital.cls.value attribute' }], + aliases: ["cls"], + changelog: [ + { version: "0.5.0", prs: [229], description: "Added browser.web_vital.cls.value attribute" }, + ], }, - 'browser.web_vital.fcp.value': { - brief: 'The time it takes for the browser to render the first piece of meaningful content on the screen', + "browser.web_vital.fcp.value": { + brief: "The time it takes for the browser to render the first piece of meaningful content on the screen", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 547.6951, - aliases: ['fcp'], - changelog: [{ version: '0.5.0', prs: [235] }], + aliases: ["fcp"], + changelog: [ + { version: "0.5.0", prs: [235] }, + ], }, - 'browser.web_vital.fp.value': { - brief: 'The time in milliseconds it takes for the browser to render the first pixel on the screen', + "browser.web_vital.fp.value": { + brief: "The time in milliseconds it takes for the browser to render the first pixel on the screen", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 477.1926, - aliases: ['fp'], - changelog: [{ version: '0.5.0', prs: [235] }], + aliases: ["fp"], + changelog: [ + { version: "0.5.0", prs: [235] }, + ], }, - 'browser.web_vital.inp.value': { - brief: 'The value of the recorded Interaction to Next Paint (INP) web vital', + "browser.web_vital.inp.value": { + brief: "The value of the recorded Interaction to Next Paint (INP) web vital", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 200, - aliases: ['inp'], - changelog: [{ version: '0.5.0', prs: [229], description: 'Added browser.web_vital.inp.value attribute' }], + aliases: ["inp"], + changelog: [ + { version: "0.5.0", prs: [229], description: "Added browser.web_vital.inp.value attribute" }, + ], }, - 'browser.web_vital.lcp.element': { - brief: 'The HTML element selector or component name for which LCP was reported', + "browser.web_vital.lcp.element": { + brief: "The HTML element selector or component name for which LCP was reported", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'body > div#app > div#container > div', - aliases: ['lcp.element'], - changelog: [{ version: '0.5.0', prs: [233] }], + example: "body > div#app > div#container > div", + aliases: ["lcp.element"], + changelog: [ + { version: "0.5.0", prs: [233] }, + ], }, - 'browser.web_vital.lcp.id': { - brief: 'The id of the dom element responsible for the largest contentful paint', + "browser.web_vital.lcp.id": { + brief: "The id of the dom element responsible for the largest contentful paint", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '#gero', - aliases: ['lcp.id'], - changelog: [{ version: '0.5.0', prs: [233] }], + example: "#gero", + aliases: ["lcp.id"], + changelog: [ + { version: "0.5.0", prs: [233] }, + ], }, - 'browser.web_vital.lcp.load_time': { - brief: 'The time it took for the LCP element to be loaded', + "browser.web_vital.lcp.load_time": { + brief: "The time it took for the LCP element to be loaded", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1402, - aliases: ['lcp.loadTime'], - changelog: [{ version: '0.5.0', prs: [233] }], + aliases: ["lcp.loadTime"], + changelog: [ + { version: "0.5.0", prs: [233] }, + ], }, - 'browser.web_vital.lcp.render_time': { - brief: 'The time it took for the LCP element to be rendered', + "browser.web_vital.lcp.render_time": { + brief: "The time it took for the LCP element to be rendered", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1685, - aliases: ['lcp.renderTime'], - changelog: [{ version: '0.5.0', prs: [233] }], + aliases: ["lcp.renderTime"], + changelog: [ + { version: "0.5.0", prs: [233] }, + ], }, - 'browser.web_vital.lcp.report_event': { - brief: 'The event that caused the SDK to report LCP (pagehide or navigation)', + "browser.web_vital.lcp.report_event": { + brief: "The event that caused the SDK to report LCP (pagehide or navigation)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'pagehide', - changelog: [{ version: '0.5.0', prs: [319], description: 'Added browser.web_vital.lcp.report_event attribute' }], + example: "pagehide", + changelog: [ + { version: "0.5.0", prs: [319], description: "Added browser.web_vital.lcp.report_event attribute" }, + ], }, - 'browser.web_vital.lcp.size': { - brief: 'The size of the largest contentful paint element', + "browser.web_vital.lcp.size": { + brief: "The size of the largest contentful paint element", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1024, - aliases: ['lcp.size'], - changelog: [{ version: '0.5.0', prs: [233] }], + aliases: ["lcp.size"], + changelog: [ + { version: "0.5.0", prs: [233] }, + ], }, - 'browser.web_vital.lcp.url': { - brief: 'The url of the dom element responsible for the largest contentful paint', + "browser.web_vital.lcp.url": { + brief: "The url of the dom element responsible for the largest contentful paint", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'https://example.com/static/img.png', - aliases: ['lcp.url'], - changelog: [{ version: '0.5.0', prs: [233] }], + example: "https://example.com/static/img.png", + aliases: ["lcp.url"], + changelog: [ + { version: "0.5.0", prs: [233] }, + ], }, - 'browser.web_vital.lcp.value': { - brief: 'The value of the recorded Largest Contentful Paint (LCP) web vital', + "browser.web_vital.lcp.value": { + brief: "The value of the recorded Largest Contentful Paint (LCP) web vital", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2500, - aliases: ['lcp'], - changelog: [{ version: '0.5.0', prs: [229], description: 'Added browser.web_vital.lcp.value attribute' }], + aliases: ["lcp"], + changelog: [ + { version: "0.5.0", prs: [229], description: "Added browser.web_vital.lcp.value attribute" }, + ], }, - 'browser.web_vital.ttfb.request_time': { - brief: - "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", + "browser.web_vital.ttfb.request_time": { + brief: "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1554.5814, - aliases: ['ttfb.requestTime'], - changelog: [{ version: '0.5.0', prs: [235] }], + aliases: ["ttfb.requestTime"], + changelog: [ + { version: "0.5.0", prs: [235] }, + ], }, - 'browser.web_vital.ttfb.value': { - brief: 'The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds', + "browser.web_vital.ttfb.value": { + brief: "The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 194.3322, - aliases: ['ttfb'], - changelog: [{ version: '0.5.0', prs: [235] }], + aliases: ["ttfb"], + changelog: [ + { version: "0.5.0", prs: [235] }, + ], }, - 'cache.hit': { - brief: 'If the cache was hit during this span.', + "cache.hit": { + brief: "If the cache was hit during this span.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'cache.item_size': { - brief: 'The size of the requested item in the cache. In bytes.', + "cache.item_size": { + brief: "The size of the requested item in the cache. In bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 58, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'cache.key': { - brief: 'The key of the cache accessed.', + "cache.key": { + brief: "The key of the cache accessed.", type: 'string[]', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: ['my-cache-key', 'my-other-cache-key'], - changelog: [{ version: '0.0.0' }], + example: ["my-cache-key","my-other-cache-key"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'cache.operation': { - brief: 'The operation being performed on the cache.', + "cache.operation": { + brief: "The operation being performed on the cache.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'get', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "get", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'cache.ttl': { - brief: 'The ttl of the cache in seconds', + "cache.ttl": { + brief: "The ttl of the cache in seconds", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 120, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'cache.write': { - brief: 'If the cache operation resulted in a write to the cache.', + "cache.write": { + brief: "If the cache operation resulted in a write to the cache.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.5.0' }], + changelog: [ + { version: "0.5.0" }, + ], }, - channel: { - brief: 'The channel name that is being used.', + "channel": { + brief: "The channel name that is being used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'mail', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "mail", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'client.address': { - brief: - 'Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + "client.address": { + brief: "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'example.com', - aliases: ['http.client_ip'], - changelog: [{ version: '0.1.0', prs: [106, 127] }, { version: '0.0.0' }], + example: "example.com", + aliases: ["http.client_ip"], + changelog: [ + { version: "0.1.0", prs: [106, 127] }, + { version: "0.0.0" }, + ], }, - 'client.port': { - brief: 'Client port number.', + "client.port": { + brief: "Client port number.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 5432, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'cloudflare.d1.duration': { - brief: 'The duration of a Cloudflare D1 operation.', + "cloudflare.d1.duration": { + brief: "The duration of a Cloudflare D1 operation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 543, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'cloudflare.d1.query_type': { - brief: 'The type of query executed in a Cloudflare D1 operation', + "cloudflare.d1.query_type": { + brief: "The type of query executed in a Cloudflare D1 operation", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'run', + example: "run", deprecation: { - replacement: 'db.operation.name', + replacement: "db.operation.name" }, - aliases: ['db.operation.name', 'db.operation'], - changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.d1.query_type attribute' }], + aliases: ["db.operation.name", "db.operation"], + changelog: [ + { version: "0.11.0", prs: [392], description: "Added cloudflare.d1.query_type attribute" }, + ], }, - 'cloudflare.d1.rows_read': { - brief: 'The number of rows read in a Cloudflare D1 operation.', + "cloudflare.d1.rows_read": { + brief: "The number of rows read in a Cloudflare D1 operation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'cloudflare.d1.rows_written': { - brief: 'The number of rows written in a Cloudflare D1 operation.', + "cloudflare.d1.rows_written": { + brief: "The number of rows written in a Cloudflare D1 operation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'cloudflare.durable_object.query.bindings': { - brief: 'The number of bound parameters passed to the SQL exec call.', + "cloudflare.durable_object.query.bindings": { + brief: "The number of bound parameters passed to the SQL exec call.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2, changelog: [ - { version: '0.13.0', prs: [435], description: 'Added cloudflare.durable_object.query.bindings attribute' }, + { version: "0.13.0", prs: [435], description: "Added cloudflare.durable_object.query.bindings attribute" }, ], }, - 'cloudflare.durable_object.response.rows_read': { - brief: 'The number of rows read by a Cloudflare Durable Object SQL operation.', + "cloudflare.durable_object.response.rows_read": { + brief: "The number of rows read by a Cloudflare Durable Object SQL operation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12, changelog: [ - { version: '0.13.0', prs: [435], description: 'Added cloudflare.durable_object.response.rows_read attribute' }, + { version: "0.13.0", prs: [435], description: "Added cloudflare.durable_object.response.rows_read attribute" }, ], }, - 'cloudflare.durable_object.response.rows_written': { - brief: 'The number of rows written by a Cloudflare Durable Object SQL operation.', + "cloudflare.durable_object.response.rows_written": { + brief: "The number of rows written by a Cloudflare Durable Object SQL operation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, changelog: [ - { version: '0.13.0', prs: [435], description: 'Added cloudflare.durable_object.response.rows_written attribute' }, + { version: "0.13.0", prs: [435], description: "Added cloudflare.durable_object.response.rows_written attribute" }, ], }, - 'cloudflare.r2.bucket': { - brief: 'The name of the Cloudflare R2 bucket binding', + "cloudflare.r2.bucket": { + brief: "The name of the Cloudflare R2 bucket binding", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'MY_BUCKET', - changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.bucket attribute' }], + example: "MY_BUCKET", + changelog: [ + { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.bucket attribute" }, + ], }, - 'cloudflare.r2.operation': { - brief: 'The R2 API operation being performed', + "cloudflare.r2.operation": { + brief: "The R2 API operation being performed", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'GetObject', - changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.operation attribute' }], + example: "GetObject", + changelog: [ + { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.operation attribute" }, + ], }, - 'cloudflare.r2.request.delimiter': { - brief: 'The delimiter used to group objects in an R2 list operation', + "cloudflare.r2.request.delimiter": { + brief: "The delimiter used to group objects in an R2 list operation", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '/', - changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.request.delimiter attribute' }], + example: "/", + changelog: [ + { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.request.delimiter attribute" }, + ], }, - 'cloudflare.r2.request.key': { - brief: 'The object key used in the R2 operation', + "cloudflare.r2.request.key": { + brief: "The object key used in the R2 operation", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'my-file.txt', - changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.request.key attribute' }], + example: "my-file.txt", + changelog: [ + { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.request.key attribute" }, + ], }, - 'cloudflare.r2.request.part_number': { - brief: 'The part number in a multipart upload operation', + "cloudflare.r2.request.part_number": { + brief: "The part number in a multipart upload operation", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, - changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.request.part_number attribute' }], + changelog: [ + { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.request.part_number attribute" }, + ], }, - 'cloudflare.r2.request.prefix': { - brief: 'The prefix used to filter objects in an R2 list operation', + "cloudflare.r2.request.prefix": { + brief: "The prefix used to filter objects in an R2 list operation", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'images/', - changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.request.prefix attribute' }], + example: "images/", + changelog: [ + { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.request.prefix attribute" }, + ], }, - 'cloudflare.workflow.attempt': { - brief: 'The current attempt number for a Cloudflare Workflow step', + "cloudflare.workflow.attempt": { + brief: "The current attempt number for a Cloudflare Workflow step", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, - changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.attempt attribute' }], + changelog: [ + { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.attempt attribute" }, + ], }, - 'cloudflare.workflow.retries.backoff': { - brief: 'The backoff strategy for Cloudflare Workflow step retries', + "cloudflare.workflow.retries.backoff": { + brief: "The backoff strategy for Cloudflare Workflow step retries", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'exponential', - changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.retries.backoff attribute' }], + example: "exponential", + changelog: [ + { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.retries.backoff attribute" }, + ], }, - 'cloudflare.workflow.retries.delay': { - brief: 'The delay between Cloudflare Workflow step retries', + "cloudflare.workflow.retries.delay": { + brief: "The delay between Cloudflare Workflow step retries", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '5 seconds', - changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.retries.delay attribute' }], + example: "5 seconds", + changelog: [ + { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.retries.delay attribute" }, + ], }, - 'cloudflare.workflow.retries.limit': { - brief: 'The maximum number of retries for a Cloudflare Workflow step', + "cloudflare.workflow.retries.limit": { + brief: "The maximum number of retries for a Cloudflare Workflow step", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 3, - changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.retries.limit attribute' }], + changelog: [ + { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.retries.limit attribute" }, + ], }, - 'cloudflare.workflow.timeout': { - brief: 'The timeout duration for a Cloudflare Workflow step', + "cloudflare.workflow.timeout": { + brief: "The timeout duration for a Cloudflare Workflow step", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1 minute', - changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.timeout attribute' }], + example: "1 minute", + changelog: [ + { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.timeout attribute" }, + ], }, - 'cloud.account.id': { - brief: 'The cloud account ID the resource is assigned to', + "cloud.account.id": { + brief: "The cloud account ID the resource is assigned to", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '123456789012', - changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.account.id attribute' }], + example: "123456789012", + changelog: [ + { version: "0.7.0", prs: [364], description: "Added cloud.account.id attribute" }, + ], }, - 'cloud.availability_zone': { - brief: 'Cloud regions often have multiple, isolated locations known as zones to increase availability', + "cloud.availability_zone": { + brief: "Cloud regions often have multiple, isolated locations known as zones to increase availability", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'us-east-1c', - changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.availability_zone attribute' }], + example: "us-east-1c", + changelog: [ + { version: "0.7.0", prs: [364], description: "Added cloud.availability_zone attribute" }, + ], }, - 'cloud.platform': { - brief: 'The cloud platform in use', + "cloud.platform": { + brief: "The cloud platform in use", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'aws_lambda', - changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.platform attribute' }], + example: "aws_lambda", + changelog: [ + { version: "0.7.0", prs: [364], description: "Added cloud.platform attribute" }, + ], }, - 'cloud.provider': { - brief: 'Name of the cloud provider', + "cloud.provider": { + brief: "Name of the cloud provider", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'aws', - changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.provider attribute' }], + example: "aws", + changelog: [ + { version: "0.7.0", prs: [364], description: "Added cloud.provider attribute" }, + ], }, - 'cloud.region': { - brief: 'The geographical region the resource is running', + "cloud.region": { + brief: "The geographical region the resource is running", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'us-east-1', - changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.region attribute' }], + example: "us-east-1", + changelog: [ + { version: "0.7.0", prs: [364], description: "Added cloud.region attribute" }, + ], }, - 'cloud.resource_id': { - brief: 'Cloud provider-specific native identifier of the monitored cloud resource', + "cloud.resource_id": { + brief: "Cloud provider-specific native identifier of the monitored cloud resource", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function', - aliases: ['faas.id'], + example: "arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function", + aliases: ["faas.id"], changelog: [ - { version: 'next', prs: [475], description: 'Added faas.id as an alias' }, - { version: '0.11.1', prs: [414] }, - ], - additionalContext: [ - 'This can be an identifier for a resource in AWS, GCP, or Azure. There may be some overlap in values found here with other attributes. For instance, an AWS lambda ARN may be found here as well as in `aws.lambda.invoked_arn`. OTEL recommends setting them alongside each other.', + { version: "next", prs: [475], description: "Added faas.id as an alias" }, + { version: "0.11.1", prs: [414] }, ], + additionalContext: ["This can be an identifier for a resource in AWS, GCP, or Azure. There may be some overlap in values found here with other attributes. For instance, an AWS lambda ARN may be found here as well as in `aws.lambda.invoked_arn`. OTEL recommends setting them alongside each other."], }, - cls: { - brief: 'The value of the recorded Cumulative Layout Shift (CLS) web vital', + "cls": { + brief: "The value of the recorded Cumulative Layout Shift (CLS) web vital", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.2361, deprecation: { - replacement: 'browser.web_vital.cls.value', - reason: 'The CLS web vital is now recorded as a browser.web_vital.cls.value attribute.', + replacement: "browser.web_vital.cls.value", + reason: "The CLS web vital is now recorded as a browser.web_vital.cls.value attribute." }, - aliases: ['browser.web_vital.cls.value'], + aliases: ["browser.web_vital.cls.value"], changelog: [ - { - version: '0.5.0', - prs: [229], - description: "Added and deprecated attribute to document JS SDK's current behaviour", - }, + { version: "0.5.0", prs: [229], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, ], }, - 'cls.source.': { - brief: 'The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N', + "cls.source.": { + brief: "The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: 'body > div#app', + example: "body > div#app", deprecation: { - replacement: 'browser.web_vital.cls.source.', - reason: 'The CLS source is now recorded as a browser.web_vital.cls.source. attribute.', + replacement: "browser.web_vital.cls.source.", + reason: "The CLS source is now recorded as a browser.web_vital.cls.source. attribute." }, - aliases: ['browser.web_vital.cls.source.'], - changelog: [{ version: '0.5.0', prs: [234] }], + aliases: ["browser.web_vital.cls.source."], + changelog: [ + { version: "0.5.0", prs: [234] }, + ], }, - 'code.filepath': { - brief: - 'The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).', + "code.filepath": { + brief: "The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - 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'], - changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + aliases: ["code.file.path"], + changelog: [ + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'code.file.path': { - brief: - 'The source code file name that identifies the code unit as uniquely as possible (preferably an absolute 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).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '/app/myapplication/http/handler/server.py', - aliases: ['code.filepath'], - changelog: [{ version: '0.0.0' }], + example: "/app/myapplication/http/handler/server.py", + aliases: ["code.filepath"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'code.function': { + "code.function": { brief: "The method or function name, or equivalent (usually rightmost part of the code unit's name).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'server_request', - aliases: ['code.function.name'], - changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], + example: "server_request", + aliases: ["code.function.name"], + changelog: [ + { version: "0.1.0", prs: [61, 74] }, + { version: "0.0.0" }, + ], }, - 'code.function.name': { - brief: 'The method or function fully-qualified name without arguments.', + "code.function.name": { + brief: "The method or function fully-qualified name without arguments.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'server_request', - aliases: ['code.function'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "server_request", + aliases: ["code.function"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'code.lineno': { - brief: - 'The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in 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", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 42, deprecation: { - replacement: 'code.line.number', + replacement: "code.line.number" }, - aliases: ['code.line.number'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61, 108] }, { version: '0.0.0' }], + aliases: ["code.line.number"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61, 108] }, + { version: "0.0.0" }, + ], }, - 'code.line.number': { - brief: - 'The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function', + "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", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 42, - aliases: ['code.lineno'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + aliases: ["code.lineno"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - '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.", + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'http.handler', - changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], + example: "http.handler", + changelog: [ + { version: "0.1.0", prs: [61, 74] }, + { version: "0.0.0" }, + ], }, - connectionType: { - brief: 'Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).', + "connectionType": { + brief: "Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'wifi', + example: "wifi", deprecation: { - replacement: 'network.connection.type', - reason: 'Old namespace-less attribute, to be replaced with network.connection.type for span-first future', + replacement: "network.connection.type", + reason: "Old namespace-less attribute, to be replaced with network.connection.type for span-first future" }, - aliases: ['network.connection.type', 'device.connection_type'], + aliases: ["network.connection.type", "device.connection_type"], changelog: [ - { - version: '0.5.0', - prs: [279], - description: "Added and deprecated attribute to document JS SDK's current behaviour", - }, + { version: "0.5.0", prs: [279], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, ], }, - 'connection.rtt': { - brief: 'Specifies the estimated effective round-trip time of the current connection, in milliseconds.', + "connection.rtt": { + brief: "Specifies the estimated effective round-trip time of the current connection, in milliseconds.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 100, deprecation: { - replacement: 'network.connection.rtt', - reason: - 'Old attribute name (no official namespace), to be replaced with network.connection.rtt for span-first future', + replacement: "network.connection.rtt", + reason: "Old attribute name (no official namespace), to be replaced with network.connection.rtt for span-first future" }, - aliases: ['network.connection.rtt'], + aliases: ["network.connection.rtt"], changelog: [ - { - version: '0.5.0', - prs: [279], - description: "Added and deprecated attribute to document JS SDK's current behaviour", - }, + { version: "0.5.0", prs: [279], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, ], }, - 'culture.calendar': { - brief: 'The calendar system used by the culture.', + "culture.calendar": { + brief: "The calendar system used by the culture.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'GregorianCalendar', - changelog: [{ version: '0.4.0', prs: [243] }], + example: "GregorianCalendar", + changelog: [ + { version: "0.4.0", prs: [243] }, + ], }, - 'culture.display_name': { - brief: 'Human readable name of the culture.', + "culture.display_name": { + brief: "Human readable name of the culture.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'English (United States)', - changelog: [{ version: '0.4.0', prs: [243] }], + example: "English (United States)", + changelog: [ + { version: "0.4.0", prs: [243] }, + ], }, - 'culture.is_24_hour_format': { - brief: 'Whether the culture uses 24-hour time format.', + "culture.is_24_hour_format": { + brief: "Whether the culture uses 24-hour time format.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.4.0', prs: [243] }], + changelog: [ + { version: "0.4.0", prs: [243] }, + ], }, - 'culture.locale': { - brief: 'The locale identifier following RFC 4646.', + "culture.locale": { + brief: "The locale identifier following RFC 4646.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'en-US', - changelog: [{ version: '0.4.0', prs: [243] }], + example: "en-US", + changelog: [ + { version: "0.4.0", prs: [243] }, + ], }, - 'culture.timezone': { - brief: 'The timezone of the culture, as a geographic timezone identifier.', + "culture.timezone": { + brief: "The timezone of the culture, as a geographic timezone identifier.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Europe/Vienna', - changelog: [{ version: '0.4.0', prs: [243] }], + example: "Europe/Vienna", + changelog: [ + { version: "0.4.0", prs: [243] }, + ], }, - 'db.collection.name': { - brief: 'The name of a collection (table, container) within the database.', + "db.collection.name": { + brief: "The name of a collection (table, container) within the database.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'users', - changelog: [{ version: '0.1.0', prs: [106, 127] }, { version: '0.0.0' }], + example: "users", + changelog: [ + { version: "0.1.0", prs: [106, 127] }, + { version: "0.0.0" }, + ], }, - 'db.driver.name': { - brief: 'The name of the driver used for the database connection.', + "db.driver.name": { + brief: "The name of the driver used for the database connection.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'psycopg2', - changelog: [{ version: '0.5.0', prs: [297], description: 'Added db.driver.name attribute' }], + example: "psycopg2", + changelog: [ + { version: "0.5.0", prs: [297], description: "Added db.driver.name attribute" }, + ], }, - 'db.name': { - brief: 'The name of the database being accessed.', + "db.name": { + brief: "The name of the database being accessed.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'customers', + example: "customers", deprecation: { - replacement: 'db.namespace', + replacement: "db.namespace" }, - aliases: ['db.namespace'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["db.namespace"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'db.namespace': { - brief: 'The name of the database being accessed.', + "db.namespace": { + brief: "The name of the database being accessed.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'customers', - aliases: ['db.name'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "customers", + aliases: ["db.name"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'db.operation': { - brief: 'The name of the operation being executed.', + "db.operation": { + brief: "The name of the operation being executed.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'SELECT', + example: "SELECT", deprecation: { - replacement: 'db.operation.name', + replacement: "db.operation.name" }, - aliases: ['db.operation.name', 'cloudflare.d1.query_type'], - changelog: [{ version: '0.4.0', prs: [199] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["db.operation.name", "cloudflare.d1.query_type"], + changelog: [ + { version: "0.4.0", prs: [199] }, + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'db.operation.batch.size': { - brief: - 'The number of queries included in a batch operation. Operations are only considered batches when they contain two or more operations, and so db.operation.batch.size SHOULD never be 1.', + "db.operation.batch.size": { + brief: "The number of queries included in a batch operation. Operations are only considered batches when they contain two or more operations, and so db.operation.batch.size SHOULD never be 1.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 3, - changelog: [{ version: '0.11.0', prs: [407], description: 'Added db.operation.batch.size attribute' }], + changelog: [ + { version: "0.11.0", prs: [407], description: "Added db.operation.batch.size attribute" }, + ], }, - 'db.operation.name': { - brief: 'The name of the operation being executed.', + "db.operation.name": { + brief: "The name of the operation being executed.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'SELECT', - aliases: ['db.operation', 'cloudflare.d1.query_type'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "SELECT", + aliases: ["db.operation", "cloudflare.d1.query_type"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'db.query.parameter.': { - 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.', + "db.query.parameter.": { + 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', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', hasDynamicSuffix: true, example: "db.query.parameter.foo='123'", - changelog: [{ version: '0.1.0', prs: [103, 127] }], + changelog: [ + { version: "0.1.0", prs: [103, 127] }, + ], }, - 'db.query.summary': { - brief: - 'A shortened representation of operation(s) in the full query. This attribute must be low-cardinality and should only contain the operation table names.', + "db.query.summary": { + brief: "A shortened representation of operation(s) in the full query. This attribute must be low-cardinality and should only contain the operation table names.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'SELECT users', - changelog: [{ version: '0.4.0', prs: [208] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "SELECT users", + changelog: [ + { version: "0.4.0", prs: [208] }, + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'db.query.text': { - brief: - 'The database parameterized query being executed. Any parameter values (filters, insertion values, etc) should be replaced with parameter placeholders. If applicable, use `db.query.parameter.` to add the parameter value.', + "db.query.text": { + brief: "The database parameterized query being executed. Any parameter values (filters, insertion values, etc) should be replaced with parameter placeholders. If applicable, use `db.query.parameter.` to add the parameter value.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'SELECT * FROM users WHERE id = $1', - aliases: ['db.statement'], - changelog: [{ version: '0.4.0', prs: [208] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "SELECT * FROM users WHERE id = $1", + aliases: ["db.statement"], + changelog: [ + { version: "0.4.0", prs: [208] }, + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'db.redis.connection': { - brief: 'The redis connection name.', + "db.redis.connection": { + brief: "The redis connection name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'my-redis-instance', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "my-redis-instance", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'db.redis.key': { - brief: 'The key the Redis command is operating on.', + "db.redis.key": { + brief: "The key the Redis command is operating on.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'user:2047:city', - changelog: [{ version: '0.6.0', prs: [326], description: 'Added db.redis.key attribute' }], + example: "user:2047:city", + changelog: [ + { version: "0.6.0", prs: [326], description: "Added db.redis.key attribute" }, + ], }, - 'db.redis.parameters': { - brief: 'The array of command parameters given to a redis command.', + "db.redis.parameters": { + brief: "The array of command parameters given to a redis command.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: ['test', '*'], - changelog: [{ version: '0.0.0' }], + example: ["test","*"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'db.response.status_code': { - brief: - 'Database response status code. The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.', + "db.response.status_code": { + brief: "Database response status code. The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'ORA-17002', - changelog: [{ version: 'next', prs: [462], description: 'Added db.response.status_code attribute' }], + example: "ORA-17002", + changelog: [ + { version: "next", prs: [462], description: "Added db.response.status_code attribute" }, + ], }, - 'db.sql.bindings': { - brief: 'The array of query bindings.', + "db.sql.bindings": { + brief: "The array of query bindings.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - 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.." }, - changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + changelog: [ + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'db.statement': { - brief: 'The database statement being executed.', + "db.statement": { + brief: "The database statement being executed.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'SELECT * FROM users', + example: "SELECT * FROM users", deprecation: { - replacement: 'db.query.text', + replacement: "db.query.text" }, - aliases: ['db.query.text'], - changelog: [{ version: '0.4.0', prs: [199] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["db.query.text"], + changelog: [ + { version: "0.4.0", prs: [199] }, + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'db.stored_procedure.name': { - brief: 'The name of a stored procedure being called.', + "db.stored_procedure.name": { + brief: "The name of a stored procedure being called.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'GetUserById', - changelog: [{ version: '0.11.0', prs: [398] }], + example: "GetUserById", + changelog: [ + { version: "0.11.0", prs: [398] }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'postgresql', + example: "postgresql", deprecation: { - replacement: 'db.system.name', + replacement: "db.system.name" }, - aliases: ['db.system.name'], - changelog: [{ version: '0.4.0', prs: [199, 224] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["db.system.name"], + changelog: [ + { version: "0.4.0", prs: [199, 224] }, + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'db.system.name': { - brief: - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'postgresql', - aliases: ['db.system'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "postgresql", + aliases: ["db.system"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'db.user': { - brief: 'The database user.', + "db.user": { + brief: "The database user.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'fancy_user', - changelog: [{ version: '0.0.0' }], + example: "fancy_user", + changelog: [ + { version: "0.0.0" }, + ], }, - deviceMemory: { - brief: 'The estimated total memory capacity of the device, only a rough estimation in gigabytes.', + "deviceMemory": { + brief: "The estimated total memory capacity of the device, only a rough estimation in gigabytes.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '8 GB', + example: "8 GB", deprecation: { - replacement: 'device.memory.estimated_capacity', - reason: - 'Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future', + replacement: "device.memory.estimated_capacity", + reason: "Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future" }, - aliases: ['device.memory.estimated_capacity'], + aliases: ["device.memory.estimated_capacity"], changelog: [ - { - version: '0.5.0', - prs: [281], - description: "Added and deprecated attribute to document JS SDK's current behaviour", - }, + { version: "0.5.0", prs: [281], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, ], }, - 'device.archs': { - brief: 'The CPU architectures of the device.', + "device.archs": { + brief: "The CPU architectures of the device.", type: 'string[]', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: ['arm64-v8a', 'armeabi-v7a', 'armeabi'], - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.archs attribute' }], + example: ["arm64-v8a","armeabi-v7a","armeabi"], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.archs attribute" }, + ], }, - 'device.battery_level': { - brief: 'The battery level of the device as a percentage (0-100).', + "device.battery_level": { + brief: "The battery level of the device as a percentage (0-100).", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 100, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.battery_level attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.battery_level attribute" }, + ], }, - 'device.battery_temperature': { - brief: 'The battery temperature of the device in Celsius.', + "device.battery_temperature": { + brief: "The battery temperature of the device in Celsius.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 25, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.battery_temperature attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.battery_temperature attribute" }, + ], }, - 'device.boot_time': { - brief: 'A formatted UTC timestamp when the system was booted.', + "device.boot_time": { + brief: "A formatted UTC timestamp when the system was booted.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '2018-02-08T12:52:12Z', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.boot_time attribute' }], + example: "2018-02-08T12:52:12Z", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.boot_time attribute" }, + ], }, - 'device.brand': { - brief: 'The brand of the device.', + "device.brand": { + brief: "The brand of the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Apple', - changelog: [{ version: '0.1.0', prs: [116, 127] }], + example: "Apple", + changelog: [ + { version: "0.1.0", prs: [116, 127] }, + ], }, - 'device.charging': { - brief: 'Whether the device was charging or not.', + "device.charging": { + brief: "Whether the device was charging or not.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: false, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.charging attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.charging attribute" }, + ], }, - 'device.chipset': { - brief: 'The chipset of the device.', + "device.chipset": { + brief: "The chipset of the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Qualcomm SM8550', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.chipset attribute' }], + example: "Qualcomm SM8550", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.chipset attribute" }, + ], }, - 'device.class': { - brief: - 'The classification of the device. For example, `low`, `medium`, or `high`. Typically inferred by Relay - SDKs generally do not need to set this directly.', + "device.class": { + brief: "The classification of the device. For example, `low`, `medium`, or `high`. Typically inferred by Relay - SDKs generally do not need to set this directly.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'medium', - changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.class attribute' }], + example: "medium", + changelog: [ + { version: "0.5.0", prs: [300], description: "Added device.class attribute" }, + ], }, - 'device.connection_type': { - brief: 'The internet connection type currently being used by the device.', + "device.connection_type": { + brief: "The internet connection type currently being used by the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'wifi', + example: "wifi", deprecation: { - replacement: 'network.connection.type', - reason: 'This attribute is being deprecated in favor of network.connection.type', + replacement: "network.connection.type", + reason: "This attribute is being deprecated in favor of network.connection.type" }, - aliases: ['network.connection.type', 'connectionType'], + aliases: ["network.connection.type", "connectionType"], changelog: [ - { - version: '0.5.0', - prs: [303], - description: 'Added and deprecated device.connection_type in favor of network.connection.type', - }, + { version: "0.5.0", prs: [303], description: "Added and deprecated device.connection_type in favor of network.connection.type" }, ], }, - 'device.cpu_description': { - brief: 'A description of the CPU of the device.', + "device.cpu_description": { + brief: "A description of the CPU of the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.cpu_description attribute' }], + example: "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.cpu_description attribute" }, + ], }, - 'device.external_free_storage': { - brief: 'External storage free size in bytes.', + "device.external_free_storage": { + brief: "External storage free size in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 67108864000, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.external_free_storage attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.external_free_storage attribute" }, + ], }, - 'device.external_storage_size': { - brief: 'External storage total size in bytes.', + "device.external_storage_size": { + brief: "External storage total size in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 134217728000, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.external_storage_size attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.external_storage_size attribute" }, + ], }, - 'device.family': { - brief: 'The family of the device.', + "device.family": { + brief: "The family of the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'iPhone', - changelog: [{ version: '0.1.0', prs: [116, 127] }], + example: "iPhone", + changelog: [ + { version: "0.1.0", prs: [116, 127] }, + ], }, - 'device.free_memory': { - brief: 'Free system memory in bytes.', + "device.free_memory": { + brief: "Free system memory in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2147483648, - changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.free_memory attribute' }], + changelog: [ + { version: "0.5.0", prs: [300], description: "Added device.free_memory attribute" }, + ], }, - 'device.free_storage': { - brief: 'Free device storage in bytes.', + "device.free_storage": { + brief: "Free device storage in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 107374182400, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.free_storage attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.free_storage attribute" }, + ], }, - 'device.id': { - brief: 'Unique device identifier.', + "device.id": { + brief: "Unique device identifier.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.id attribute' }], + example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.id attribute" }, + ], }, - 'device.locale': { - brief: 'The locale of the device.', + "device.locale": { + brief: "The locale of the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'en-US', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.locale attribute' }], + example: "en-US", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.locale attribute" }, + ], }, - 'device.low_memory': { - brief: 'Whether the device was low on memory.', + "device.low_memory": { + brief: "Whether the device was low on memory.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: false, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.low_memory attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.low_memory attribute" }, + ], }, - 'device.low_power_mode': { - brief: 'Whether the device is in Low Power Mode.', + "device.low_power_mode": { + brief: "Whether the device is in Low Power Mode.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.6.0', prs: [314], description: 'Added device.low_power_mode attribute' }], + changelog: [ + { version: "0.6.0", prs: [314], description: "Added device.low_power_mode attribute" }, + ], }, - 'device.manufacturer': { - brief: 'The manufacturer of the device.', + "device.manufacturer": { + brief: "The manufacturer of the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'Google', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.manufacturer attribute' }], + example: "Google", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.manufacturer attribute" }, + ], }, - 'device.memory.estimated_capacity': { - brief: - 'The estimated total memory capacity of the device, only a rough estimation in gigabytes. Browsers report estimations in buckets of powers of 2, mostly capped at 8 GB', + "device.memory.estimated_capacity": { + brief: "The estimated total memory capacity of the device, only a rough estimation in gigabytes. Browsers report estimations in buckets of powers of 2, mostly capped at 8 GB", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 8, - aliases: ['deviceMemory'], + aliases: ["deviceMemory"], changelog: [ - { - version: '0.5.0', - prs: [281], - description: 'Added attribute device.memory.estimated_capacity to be used instead of deviceMemory', - }, + { version: "0.5.0", prs: [281], description: "Added attribute device.memory.estimated_capacity to be used instead of deviceMemory" }, ], }, - 'device.memory_size': { - brief: 'Total system memory available in bytes.', + "device.memory_size": { + brief: "Total system memory available in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 17179869184, - changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.memory_size attribute' }], + changelog: [ + { version: "0.5.0", prs: [300], description: "Added device.memory_size attribute" }, + ], }, - 'device.model': { - brief: 'The model of the device.', + "device.model": { + brief: "The model of the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'iPhone 15 Pro Max', - changelog: [{ version: '0.1.0', prs: [116, 127] }], + example: "iPhone 15 Pro Max", + changelog: [ + { version: "0.1.0", prs: [116, 127] }, + ], }, - 'device.model_id': { - brief: 'An internal hardware revision to identify the device exactly.', + "device.model_id": { + brief: "An internal hardware revision to identify the device exactly.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'N861AP', - changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.model_id attribute' }], + example: "N861AP", + changelog: [ + { version: "0.5.0", prs: [300], description: "Added device.model_id attribute" }, + ], }, - 'device.name': { - brief: - 'The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname.', + "device.name": { + brief: "The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'localhost', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.name attribute' }], + example: "localhost", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.name attribute" }, + ], }, - 'device.online': { - brief: 'Whether the device was online or not.', + "device.online": { + brief: "Whether the device was online or not.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.online attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.online attribute" }, + ], }, - 'device.orientation': { - brief: 'The orientation of the device, either "portrait" or "landscape".', + "device.orientation": { + brief: "The orientation of the device, either \"portrait\" or \"landscape\".", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'portrait', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.orientation attribute' }], + example: "portrait", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.orientation attribute" }, + ], }, - 'device.processor_count': { - brief: 'Number of "logical processors".', + "device.processor_count": { + brief: "Number of \"logical processors\".", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 8, - aliases: ['hardwareConcurrency'], + aliases: ["hardwareConcurrency"], changelog: [ - { - version: '0.5.0', - prs: [300], - description: 'Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count', - }, + { version: "0.5.0", prs: [300], description: "Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count" }, ], }, - 'device.processor_frequency': { - brief: 'Processor frequency in MHz.', + "device.processor_frequency": { + brief: "Processor frequency in MHz.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2400, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.processor_frequency attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.processor_frequency attribute" }, + ], }, - 'device.screen_density': { - brief: 'The screen density of the device.', + "device.screen_density": { + brief: "The screen density of the device.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2.625, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.screen_density attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.screen_density attribute" }, + ], }, - 'device.screen_dpi': { - brief: 'The screen density in dots-per-inch (DPI) of the device.', + "device.screen_dpi": { + brief: "The screen density in dots-per-inch (DPI) of the device.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 420, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.screen_dpi attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.screen_dpi attribute" }, + ], }, - 'device.screen_height_pixels': { - brief: 'The height of the device screen in pixels.', + "device.screen_height_pixels": { + brief: "The height of the device screen in pixels.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2400, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.screen_height_pixels attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.screen_height_pixels attribute" }, + ], }, - 'device.screen_width_pixels': { - brief: 'The width of the device screen in pixels.', + "device.screen_width_pixels": { + brief: "The width of the device screen in pixels.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1080, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.screen_width_pixels attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.screen_width_pixels attribute" }, + ], }, - 'device.simulator': { - brief: 'Whether the device is a simulator or an actual device.', + "device.simulator": { + brief: "Whether the device is a simulator or an actual device.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: false, - changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.simulator attribute' }], + changelog: [ + { version: "0.5.0", prs: [300], description: "Added device.simulator attribute" }, + ], }, - 'device.storage_size': { - brief: 'Total device storage in bytes.', + "device.storage_size": { + brief: "Total device storage in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 274877906944, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.storage_size attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.storage_size attribute" }, + ], }, - 'device.thermal_state': { - brief: - "The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`.", + "device.thermal_state": { + brief: "The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'nominal', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.thermal_state attribute' }], + example: "nominal", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.thermal_state attribute" }, + ], }, - 'device.timezone': { - brief: 'The timezone of the device.', + "device.timezone": { + brief: "The timezone of the device.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Europe/Vienna', - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.timezone attribute' }], + example: "Europe/Vienna", + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.timezone attribute" }, + ], }, - 'device.usable_memory': { - brief: 'Memory usable for the app in bytes.', + "device.usable_memory": { + brief: "Memory usable for the app in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2147483648, - changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.usable_memory attribute' }], + changelog: [ + { version: "0.5.0", prs: [303], description: "Added device.usable_memory attribute" }, + ], }, - effectiveConnectionType: { - brief: 'Specifies the estimated effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).', + "effectiveConnectionType": { + brief: "Specifies the estimated effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '4g', + example: "4g", deprecation: { - replacement: 'network.connection.effective_type', - reason: - 'Old namespace-less attribute, to be replaced with network.connection.effective_type for span-first future', + replacement: "network.connection.effective_type", + reason: "Old namespace-less attribute, to be replaced with network.connection.effective_type for span-first future" }, - aliases: ['network.connection.effective_type'], + aliases: ["network.connection.effective_type"], changelog: [ - { - version: '0.5.0', - prs: [279], - description: "Added and deprecated attribute to document JS SDK's current behaviour", - }, + { version: "0.5.0", prs: [279], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, ], }, - environment: { - brief: 'The sentry environment.', + "environment": { + brief: "The sentry environment.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'production', + example: "production", deprecation: { - replacement: 'sentry.environment', + replacement: "sentry.environment" }, - aliases: ['sentry.environment'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["sentry.environment"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'error.type': { - brief: 'Describes a class of error the operation ended with.', + "error.type": { + brief: "Describes a class of error the operation ended with.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'timeout', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "timeout", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'event.id': { - brief: 'The unique identifier for this event (log record)', + "event.id": { + brief: "The unique identifier for this event (log record)", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234567890, - changelog: [{ version: '0.1.0', prs: [101] }], + changelog: [ + { version: "0.1.0", prs: [101] }, + ], }, - 'event.name': { - brief: 'The name that uniquely identifies this event (log record)', + "event.name": { + brief: "The name that uniquely identifies this event (log record)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Process Payload', - changelog: [{ version: '0.1.0', prs: [101, 127] }], + example: "Process Payload", + changelog: [ + { version: "0.1.0", prs: [101, 127] }, + ], }, - '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.', + "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.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: true, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'exception.message': { - brief: 'The error message.', + "exception.message": { + brief: "The error message.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'ENOENT: no such file or directory', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "ENOENT: no such file or directory", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: - 'Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "Exception in thread \"main\" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'exception.type': { - brief: - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'OSError', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "OSError", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'faas.coldstart': { - brief: 'A boolean that is true if the serverless function is executed for the first time (aka cold-start).', + "faas.coldstart": { + brief: "A boolean that is true if the serverless function is executed for the first time (aka cold-start).", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: true, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'faas.cron': { - brief: 'A string containing the schedule period as Cron Expression.', + "faas.cron": { + brief: "A string containing the schedule period as Cron Expression.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '0/5 * * * ? *', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "0/5 * * * ? *", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'faas.duration_in_ms': { - brief: 'The duration a function took to run, in milliseconds.', + "faas.duration_in_ms": { + brief: "The duration a function took to run, in milliseconds.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 120, - changelog: [{ version: '0.11.0', prs: [403] }], + changelog: [ + { version: "0.11.0", prs: [403] }, + ], }, - 'faas.entry_point': { + "faas.entry_point": { brief: "The code that's run when the cloud provider invokes your function.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'my_main_function', - changelog: [{ version: '0.11.0', prs: [403, 415] }], + example: "my_main_function", + changelog: [ + { version: "0.11.0", prs: [403, 415] }, + ], }, - 'faas.execution': { - brief: 'The execution ID of the current function execution.', + "faas.execution": { + brief: "The execution ID of the current function execution.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28', + example: "af9d5aa4-a685-4c5f-a22b-444f80b3cc28", deprecation: { - replacement: 'faas.invocation_id', - reason: - 'This attribute is being deprecated in favor of faas.invocation_id, which is the OTel-aligned replacement.', + replacement: "faas.invocation_id", + reason: "This attribute is being deprecated in favor of faas.invocation_id, which is the OTel-aligned replacement." }, - aliases: ['faas.invocation_id', 'aws.lambda.aws_request_id'], + aliases: ["faas.invocation_id", "aws.lambda.aws_request_id"], changelog: [ - { - version: 'next', - prs: [473], - description: 'Added faas.execution attribute, deprecated in favor of faas.invocation_id', - }, + { version: "next", prs: [473], description: "Added faas.execution attribute, deprecated in favor of faas.invocation_id" }, ], }, - 'faas.id': { - brief: 'The unique ID of the single function that this runtime instance executes.', + "faas.id": { + brief: "The unique ID of the single function that this runtime instance executes.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function', + example: "arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function", deprecation: { - replacement: 'cloud.resource_id', - reason: - 'This attribute is being deprecated in favor of cloud.resource_id, which is the OTel-aligned replacement (renamed in OTel semantic conventions v1.19.0).', + replacement: "cloud.resource_id", + reason: "This attribute is being deprecated in favor of cloud.resource_id, which is the OTel-aligned replacement (renamed in OTel semantic conventions v1.19.0)." }, - aliases: ['cloud.resource_id'], + aliases: ["cloud.resource_id"], changelog: [ - { version: 'next', prs: [475], description: 'Added faas.id attribute, deprecated in favor of cloud.resource_id' }, + { version: "next", prs: [475], description: "Added faas.id attribute, deprecated in favor of cloud.resource_id" }, ], }, - 'faas.identity': { - brief: - 'The Service Account (GCP), IAM Execution Role (AWS), or Managed Identity (Azure) used by the serverless function when interacting with other cloud services', + "faas.identity": { + brief: "The Service Account (GCP), IAM Execution Role (AWS), or Managed Identity (Azure) used by the serverless function when interacting with other cloud services", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: - 'name@project.iam.gserviceaccount.com (GCP), arn:aws:iam::123456789012:role/role-name (AWS), 00000000-0000-0000-0000-000000000000 (Azure)', - changelog: [{ version: '0.11.0', prs: [403] }], + example: "name@project.iam.gserviceaccount.com (GCP), arn:aws:iam::123456789012:role/role-name (AWS), 00000000-0000-0000-0000-000000000000 (Azure)", + changelog: [ + { version: "0.11.0", prs: [403] }, + ], }, - 'faas.invocation_id': { - brief: 'The invocation ID of the current function invocation.', + "faas.invocation_id": { + brief: "The invocation ID of the current function invocation.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28', - aliases: ['aws.lambda.aws_request_id', 'faas.execution'], + example: "af9d5aa4-a685-4c5f-a22b-444f80b3cc28", + aliases: ["aws.lambda.aws_request_id", "faas.execution"], changelog: [ - { version: 'next', prs: [473], description: 'Added faas.execution as an alias' }, - { version: '0.11.1', prs: [414, 424] }, + { version: "next", prs: [473], description: "Added faas.execution as an alias" }, + { version: "0.11.1", prs: [414, 424] }, ], }, - 'faas.name': { - brief: 'The name of the serverless function', + "faas.name": { + brief: "The name of the serverless function", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'my_function', - aliases: ['aws.lambda.function_name'], - changelog: [{ version: '0.11.0', prs: [403, 415] }], + example: "my_function", + aliases: ["aws.lambda.function_name"], + changelog: [ + { version: "0.11.0", prs: [403, 415] }, + ], }, - 'faas.time': { - brief: 'A string containing the function invocation time in the ISO 8601 format expressed in UTC.', + "faas.time": { + brief: "A string containing the function invocation time in the ISO 8601 format expressed in UTC.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '2020-01-23T13:47:06Z', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "2020-01-23T13:47:06Z", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'faas.trigger': { - brief: 'Type of the trigger which caused this function invocation.', + "faas.trigger": { + brief: "Type of the trigger which caused this function invocation.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'timer', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "timer", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'faas.version': { - brief: 'The version of the function that was invoked', + "faas.version": { + brief: "The version of the function that was invoked", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '$LATEST', - aliases: ['aws.lambda.function_version'], - changelog: [{ version: '0.11.1', prs: [414, 424] }], + example: "$LATEST", + aliases: ["aws.lambda.function_version"], + changelog: [ + { version: "0.11.1", prs: [414, 424] }, + ], }, - fcp: { - brief: 'The time it takes for the browser to render the first piece of meaningful content on the screen', + "fcp": { + brief: "The time it takes for the browser to render the first piece of meaningful content on the screen", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 547.6951, deprecation: { - replacement: 'browser.web_vital.fcp.value', - reason: 'This attribute is being deprecated in favor of browser.web_vital.fcp.value', + replacement: "browser.web_vital.fcp.value", + reason: "This attribute is being deprecated in favor of browser.web_vital.fcp.value" }, - aliases: ['browser.web_vital.fcp.value'], - changelog: [{ version: '0.5.0', prs: [235] }], + aliases: ["browser.web_vital.fcp.value"], + changelog: [ + { version: "0.5.0", prs: [235] }, + ], }, - 'flag.evaluation.': { - 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.', + "flag.evaluation.": { + 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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: 'flag.evaluation.is_new_ui=true', - changelog: [{ version: '0.1.0', prs: [103] }], + example: "flag.evaluation.is_new_ui=true", + changelog: [ + { version: "0.1.0", prs: [103] }, + ], }, - fp: { - brief: 'The time it takes for the browser to render the first pixel on the screen', + "fp": { + brief: "The time it takes for the browser to render the first pixel on the screen", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 477.1926, deprecation: { - replacement: 'browser.web_vital.fp.value', - reason: 'This attribute is being deprecated in favor of browser.web_vital.fp.value', + replacement: "browser.web_vital.fp.value", + reason: "This attribute is being deprecated in favor of browser.web_vital.fp.value" }, - aliases: ['browser.web_vital.fp.value'], - changelog: [{ version: '0.5.0', prs: [235] }], + aliases: ["browser.web_vital.fp.value"], + changelog: [ + { version: "0.5.0", prs: [235] }, + ], }, - '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/).', + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 5, deprecation: { - replacement: 'app.vitals.frames.delay.value', - reason: - 'Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.frames.delay.value", + reason: "Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.frames.delay.value'], + aliases: ["app.vitals.frames.delay.value"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.frames.delay.value' }, - { version: '0.4.0', prs: [228] }, - { version: '0.0.0' }, + { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.frames.delay.value" }, + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, ], }, - 'frames.frozen': { - brief: 'The number of frozen frames rendered during the lifetime of the span.', + "frames.frozen": { + brief: "The number of frozen frames rendered during the lifetime of the span.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 3, deprecation: { - replacement: 'app.vitals.frames.frozen.count', - reason: - 'Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.frames.frozen.count", + reason: "Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.frames.frozen.count'], + aliases: ["app.vitals.frames.frozen.count"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.frames.frozen.count' }, - { version: '0.4.0', prs: [228] }, - { version: '0.0.0' }, + { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.frames.frozen.count" }, + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, ], }, - frames_frozen_rate: { - brief: - 'The rate of frozen frames, or `app_vitals.frames.frozen.count` divided by `app_vitals.frames.total.count`. This is computed by Relay.', + "frames_frozen_rate": { + brief: "The rate of frozen frames, or `app_vitals.frames.frozen.count` divided by `app_vitals.frames.total.count`. This is computed by Relay.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - changelog: [{ version: '0.7.0', prs: [362], description: 'Added frames_frozen_rate attribute' }], + changelog: [ + { version: "0.7.0", prs: [362], description: "Added frames_frozen_rate attribute" }, + ], }, - 'frames.slow': { - brief: 'The number of slow frames rendered during the lifetime of the span.', + "frames.slow": { + brief: "The number of slow frames rendered during the lifetime of the span.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, deprecation: { - replacement: 'app.vitals.frames.slow.count', - reason: - 'Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.frames.slow.count", + reason: "Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.frames.slow.count'], + aliases: ["app.vitals.frames.slow.count"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.frames.slow.count' }, - { version: '0.4.0', prs: [228] }, - { version: '0.0.0' }, + { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.frames.slow.count" }, + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, ], }, - frames_slow_rate: { - brief: - 'The rate of slow frames, or `app_vitals.frames.slow.count` divided by `app_vitals.frames.total.count`. This is computed by Relay.', + "frames_slow_rate": { + brief: "The rate of slow frames, or `app_vitals.frames.slow.count` divided by `app_vitals.frames.total.count`. This is computed by Relay.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - changelog: [{ version: '0.7.0', prs: [362], description: 'Added frames_slow_rate attribute' }], + changelog: [ + { version: "0.7.0", prs: [362], description: "Added frames_slow_rate attribute" }, + ], }, - 'frames.total': { - brief: 'The number of total frames rendered during the lifetime of the span.', + "frames.total": { + brief: "The number of total frames rendered during the lifetime of the span.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 60, deprecation: { - replacement: 'app.vitals.frames.total.count', - reason: - 'Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.frames.total.count", + reason: "Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.frames.total.count'], + aliases: ["app.vitals.frames.total.count"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.frames.total.count' }, - { version: '0.4.0', prs: [228] }, - { version: '0.0.0' }, + { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.frames.total.count" }, + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, ], }, - fs_error: { - brief: 'The error message of a file system error.', + "fs_error": { + brief: "The error message of a file system error.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - 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." }, - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'gcp.function.context.event_id': { - brief: 'The event ID from the legacy GCP Cloud Function context (1st gen)', + "gcp.function.context.event_id": { + brief: "The event ID from the legacy GCP Cloud Function context (1st gen)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1234567890', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.event_id attribute' }], + example: "1234567890", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.event_id attribute" }, + ], }, - 'gcp.function.context.event_type': { - brief: 'The type of the GCP Cloud Function event', + "gcp.function.context.event_type": { + brief: "The type of the GCP Cloud Function event", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'google.pubsub.topic.publish', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.event_type attribute' }], + example: "google.pubsub.topic.publish", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.event_type attribute" }, + ], }, - 'gcp.function.context.id': { - brief: 'The unique event ID from the GCP CloudEvents context (2nd gen Cloud Functions)', + "gcp.function.context.id": { + brief: "The unique event ID from the GCP CloudEvents context (2nd gen Cloud Functions)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1234567890', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.id attribute' }], + example: "1234567890", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.id attribute" }, + ], }, - 'gcp.function.context.resource': { - brief: 'The resource that triggered the GCP Cloud Function event', + "gcp.function.context.resource": { + brief: "The resource that triggered the GCP Cloud Function event", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'projects/my-project/topics/my-topic', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.resource attribute' }], + example: "projects/my-project/topics/my-topic", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.resource attribute" }, + ], }, - 'gcp.function.context.source': { - brief: 'The source of the GCP Cloud Function event', + "gcp.function.context.source": { + brief: "The source of the GCP Cloud Function event", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '//pubsub.googleapis.com/projects/my-project/topics/my-topic', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.source attribute' }], + example: "//pubsub.googleapis.com/projects/my-project/topics/my-topic", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.source attribute" }, + ], }, - 'gcp.function.context.specversion': { - brief: 'The CloudEvents specification version of the GCP Cloud Function event', + "gcp.function.context.specversion": { + brief: "The CloudEvents specification version of the GCP Cloud Function event", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1.0', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.specversion attribute' }], + example: "1.0", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.specversion attribute" }, + ], }, - 'gcp.function.context.time': { - brief: 'The timestamp of the GCP Cloud Function event', + "gcp.function.context.time": { + brief: "The timestamp of the GCP Cloud Function event", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '2024-01-01T00:00:00.000Z', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.time attribute' }], + example: "2024-01-01T00:00:00.000Z", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.time attribute" }, + ], }, - 'gcp.function.context.timestamp': { - brief: 'The legacy timestamp of the GCP Cloud Function event', + "gcp.function.context.timestamp": { + brief: "The legacy timestamp of the GCP Cloud Function event", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '2024-01-01T00:00:00.000Z', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.timestamp attribute' }], + example: "2024-01-01T00:00:00.000Z", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.timestamp attribute" }, + ], }, - 'gcp.function.context.type': { - brief: 'The type of the GCP Cloud Function event context', + "gcp.function.context.type": { + brief: "The type of the GCP Cloud Function event context", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'cloud_functions.context', - changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.type attribute' }], + example: "cloud_functions.context", + changelog: [ + { version: "0.7.0", prs: [371], description: "Added gcp.function.context.type attribute" }, + ], }, - 'gcp.project.id': { - brief: 'The ID of the project in GCP that this resource is associated with', + "gcp.project.id": { + brief: "The ID of the project in GCP that this resource is associated with", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'my-project-123', - changelog: [{ version: '0.11.0', prs: [403] }], + example: "my-project-123", + changelog: [ + { version: "0.11.0", prs: [403] }, + ], }, - 'gen_ai.agent.name': { - brief: 'The name of the agent being used.', + "gen_ai.agent.name": { + brief: "The name of the agent being used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'ResearchAssistant', - changelog: [{ version: '0.1.0', prs: [62, 127] }], + example: "ResearchAssistant", + changelog: [ + { version: "0.1.0", prs: [62, 127] }, + ], }, - 'gen_ai.context.utilization': { - brief: 'The fraction of the model context window utilized by this generation.', + "gen_ai.context.utilization": { + brief: "The fraction of the model context window utilized by this generation.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.75, - changelog: [{ version: '0.5.0', prs: [315], description: 'Added gen_ai.context.utilization attribute' }], + changelog: [ + { version: "0.5.0", prs: [315], description: "Added gen_ai.context.utilization attribute" }, + ], }, - 'gen_ai.context.window_size': { - brief: 'The maximum context window size supported by the model for this generation.', + "gen_ai.context.window_size": { + brief: "The maximum context window size supported by the model for this generation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 128000, - changelog: [{ version: '0.5.0', prs: [315], description: 'Added gen_ai.context.window_size attribute' }], + changelog: [ + { version: "0.5.0", prs: [315], description: "Added gen_ai.context.window_size attribute" }, + ], }, - 'gen_ai.conversation.id': { - brief: - 'The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.', + "gen_ai.conversation.id": { + brief: "The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'conv_5j66UpCpwteGg4YSxUnt7lPY', - changelog: [{ version: '0.4.0', prs: [250] }], + example: "conv_5j66UpCpwteGg4YSxUnt7lPY", + changelog: [ + { version: "0.4.0", prs: [250] }, + ], }, - 'gen_ai.cost.cache_creation.input_tokens': { - brief: 'The cost of input tokens written to cache in USD.', + "gen_ai.cost.cache_creation.input_tokens": { + brief: "The cost of input tokens written to cache in USD.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12.34, - changelog: [{ version: '0.16.0', description: 'Added gen_ai.cost.cache_creation.input_tokens attribute' }], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - "Despite the name 'cost.cache_creation.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_creation.input_tokens.", - 'This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens — it is already included.', + changelog: [ + { version: "0.16.0", description: "Added gen_ai.cost.cache_creation.input_tokens attribute" }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.cache_creation.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_creation.input_tokens.","This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens — it is already included."], }, - 'gen_ai.cost.cache_read.input_tokens': { - brief: 'The cost of cached input tokens in USD.', + "gen_ai.cost.cache_read.input_tokens": { + brief: "The cost of cached input tokens in USD.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12.34, - changelog: [{ version: '0.16.0', description: 'Added gen_ai.cost.cache_read.input_tokens attribute' }], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - "Despite the name 'cost.cache_read.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_read.input_tokens.", - 'This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens — it is already included.', + changelog: [ + { version: "0.16.0", description: "Added gen_ai.cost.cache_read.input_tokens attribute" }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.cache_read.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_read.input_tokens.","This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens — it is already included."], }, - 'gen_ai.cost.input_tokens': { - brief: 'The total cost of all input tokens in USD (includes cached and cache creation tokens).', + "gen_ai.cost.input_tokens": { + brief: "The total cost of all input tokens in USD (includes cached and cache creation tokens).", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 123.45, changelog: [ - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [112] }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - "Despite the name 'cost.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.input_tokens.", - 'This is the total cost of all input tokens, including cached and cache creation tokens at their respective rates. For the cached portion, see gen_ai.cost.cache_read.input_tokens. For the cache creation portion, see gen_ai.cost.cache_creation.input_tokens.', + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [112] }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.input_tokens.","This is the total cost of all input tokens, including cached and cache creation tokens at their respective rates. For the cached portion, see gen_ai.cost.cache_read.input_tokens. For the cache creation portion, see gen_ai.cost.cache_creation.input_tokens."], }, - 'gen_ai.cost.output_tokens': { - brief: 'The total cost of all output tokens in USD (includes reasoning tokens).', + "gen_ai.cost.output_tokens": { + brief: "The total cost of all output tokens in USD (includes reasoning tokens).", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 123.45, changelog: [ - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [112] }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - "Despite the name 'cost.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.output_tokens.", - 'This is the total cost of all output tokens, including reasoning tokens at their respective rate. For the reasoning portion, see gen_ai.cost.reasoning.output_tokens.', + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [112] }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.output_tokens.","This is the total cost of all output tokens, including reasoning tokens at their respective rate. For the reasoning portion, see gen_ai.cost.reasoning.output_tokens."], }, - 'gen_ai.cost.reasoning.output_tokens': { - brief: 'The cost of reasoning output tokens in USD.', + "gen_ai.cost.reasoning.output_tokens": { + brief: "The cost of reasoning output tokens in USD.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12.34, - changelog: [{ version: '0.16.0', description: 'Added gen_ai.cost.reasoning.output_tokens attribute' }], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - "Despite the name 'cost.reasoning.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.reasoning.output_tokens.", - 'This is a subset of gen_ai.cost.output_tokens, not an independent cost. Do not sum this with gen_ai.cost.output_tokens — it is already included.', + changelog: [ + { version: "0.16.0", description: "Added gen_ai.cost.reasoning.output_tokens attribute" }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.reasoning.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.reasoning.output_tokens.","This is a subset of gen_ai.cost.output_tokens, not an independent cost. Do not sum this with gen_ai.cost.output_tokens — it is already included."], }, - 'gen_ai.cost.total_tokens': { - brief: 'The total cost for the tokens used.', + "gen_ai.cost.total_tokens": { + brief: "The total cost for the tokens used.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12.34, - aliases: ['ai.total_cost'], + aliases: ["ai.total_cost"], changelog: [ - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.5.0', prs: [264] }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [126] }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - "Despite the name 'cost.total_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.total_tokens.", + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.5.0", prs: [264] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [126] }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.total_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.total_tokens."], }, - 'gen_ai.embeddings.input': { - brief: 'The input to the embeddings model.', + "gen_ai.embeddings.input": { + brief: "The input to the embeddings model.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: "What's the weather in Paris?", - changelog: [{ version: '0.3.1', prs: [195] }], + changelog: [ + { version: "0.3.1", prs: [195] }, + ], }, - 'gen_ai.function_id': { - brief: - 'Framework-specific tracing label for the execution of a function or other unit of execution in a generative AI system.', + "gen_ai.function_id": { + brief: "Framework-specific tracing label for the execution of a function or other unit of execution in a generative AI system.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'my-awesome-function', - changelog: [{ version: '0.5.0', prs: [308], description: 'Added gen_ai.function_id attribute' }], + example: "my-awesome-function", + changelog: [ + { version: "0.5.0", prs: [308], description: "Added gen_ai.function_id attribute" }, + ], }, - '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:"..."}`.', + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: - '[{"role": "user", "parts": [{"type": "text", "content": "Weather in Paris?"}]}, {"role": "assistant", "parts": [{"type": "tool_call", "id": "call_VSPygqKTWdrhaFErNvMV18Yl", "name": "get_weather", "arguments": {"location": "Paris"}}]}, {"role": "tool", "parts": [{"type": "tool_call_response", "id": "call_VSPygqKTWdrhaFErNvMV18Yl", "result": "rainy, 57°F"}]}]', - aliases: ['ai.texts'], + example: "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Weather in Paris?\"}]}, {\"role\": \"assistant\", \"parts\": [{\"type\": \"tool_call\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]}, {\"role\": \"tool\", \"parts\": [{\"type\": \"tool_call_response\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"result\": \"rainy, 57°F\"}]}]", + aliases: ["ai.texts"], changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.4.0', prs: [221] }, + { version: "0.5.0", prs: [264] }, + { version: "0.4.0", prs: [221] }, ], }, - 'gen_ai.operation.name': { - brief: - "The name of the operation being performed. It has the following list of well-known values: 'chat', 'create_agent', 'embeddings', 'execute_tool', 'generate_content', 'invoke_agent', 'text_completion'. If one of them applies, then that value MUST be used. Otherwise a custom value MAY be used.", + "gen_ai.operation.name": { + brief: "The name of the operation being performed. It has the following list of well-known values: 'chat', 'create_agent', 'embeddings', 'execute_tool', 'generate_content', 'invoke_agent', 'text_completion'. If one of them applies, then that value MUST be used. Otherwise a custom value MAY be used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'chat', + example: "chat", changelog: [ - { version: '0.4.0', prs: [225] }, - { version: '0.1.0', prs: [62, 127] }, + { version: "0.4.0", prs: [225] }, + { version: "0.1.0", prs: [62, 127] }, ], }, - 'gen_ai.operation.type': { - brief: - "The type of AI operation. Must be one of 'agent' (invoke_agent and create_agent spans), 'ai_client' (any LLM call), 'tool' (execute_tool spans), 'handoff' (handoff spans), 'other' (input and output processors, skill loading, guardrails etc.) . Added during ingestion based on span.op and gen_ai.operation.type. Used to filter and aggregate data in the UI", + "gen_ai.operation.type": { + brief: "The type of AI operation. Must be one of 'agent' (invoke_agent and create_agent spans), 'ai_client' (any LLM call), 'tool' (execute_tool spans), 'handoff' (handoff spans), 'other' (input and output processors, skill loading, guardrails etc.) . Added during ingestion based on span.op and gen_ai.operation.type. Used to filter and aggregate data in the UI", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'tool', + example: "tool", changelog: [ - { version: '0.4.0', prs: [257] }, - { version: '0.1.0', prs: [113, 127] }, + { version: "0.4.0", prs: [257] }, + { version: "0.1.0", prs: [113, 127] }, ], }, - '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.", + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: - '[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]', - changelog: [{ version: '0.4.0', prs: [221] }], + example: "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]", + changelog: [ + { version: "0.4.0", prs: [221] }, + ], }, - 'gen_ai.pipeline.name': { - brief: 'Name of the AI pipeline or chain being executed.', + "gen_ai.pipeline.name": { + brief: "Name of the AI pipeline or chain being executed.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Autofix Pipeline', - aliases: ['ai.pipeline.name'], - changelog: [{ version: '0.1.0', prs: [76, 127] }], + example: "Autofix Pipeline", + aliases: ["ai.pipeline.name"], + changelog: [ + { version: "0.1.0", prs: [76, 127] }, + ], }, - 'gen_ai.prompt': { - brief: 'The input messages sent to the model', + "gen_ai.prompt": { + brief: "The input messages sent to the model", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - 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." }, - changelog: [{ version: '0.1.0', prs: [74, 108, 119] }, { version: '0.0.0' }], + changelog: [ + { version: "0.1.0", prs: [74, 108, 119] }, + { version: "0.0.0" }, + ], }, - 'gen_ai.prompt.name': { - brief: 'The name of the prompt that uniquely identifies it.', + "gen_ai.prompt.name": { + brief: "The name of the prompt that uniquely identifies it.", type: 'string', applyScrubbing: { key: 'manual', - reason: 'Prompt names may reveal user behavior patterns or sensitive operations', + reason: "Prompt names may reveal user behavior patterns or sensitive operations" }, isInOtel: true, visibility: 'public', - example: 'summarize_text', - aliases: ['mcp.prompt.name'], - changelog: [{ version: '0.12.0', prs: [420], description: 'Added gen_ai.prompt.name attribute' }], + example: "summarize_text", + aliases: ["mcp.prompt.name"], + changelog: [ + { version: "0.12.0", prs: [420], description: "Added gen_ai.prompt.name attribute" }, + ], }, - 'gen_ai.provider.name': { - brief: 'The Generative AI provider as identified by the client or server instrumentation.', + "gen_ai.provider.name": { + brief: "The Generative AI provider as identified by the client or server instrumentation.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'openai', - aliases: ['ai.model.provider', 'gen_ai.system'], - changelog: [{ version: '0.4.0', prs: [253] }], + example: "openai", + aliases: ["ai.model.provider", "gen_ai.system"], + changelog: [ + { version: "0.4.0", prs: [253] }, + ], }, - 'gen_ai.request.available_tools': { - brief: 'The available tools for the model. It has to be a stringified version of an array of objects.', + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - 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" }, changelog: [ - { version: '0.4.0', prs: [221] }, - { version: '0.1.0', prs: [63, 127] }, + { version: "0.4.0", prs: [221] }, + { version: "0.1.0", prs: [63, 127] }, ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 0.5, - aliases: ['ai.frequency_penalty'], + aliases: ["ai.frequency_penalty"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [57] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57] }, ], }, - 'gen_ai.request.max_tokens': { - brief: 'The maximum number of tokens to generate in the response.', + "gen_ai.request.max_tokens": { + brief: "The maximum number of tokens to generate in the response.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 2048, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [62] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [62] }, ], }, - '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:"..."}`.', + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - 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'], + aliases: ["ai.input_messages"], changelog: [ - { version: '0.4.0', prs: [221] }, - { version: '0.1.0', prs: [63, 74, 108, 119, 122] }, + { version: "0.4.0", prs: [221] }, + { version: "0.1.0", prs: [63, 74, 108, 119, 122] }, ], }, - 'gen_ai.request.model': { - brief: 'The model identifier being used for the request.', + "gen_ai.request.model": { + brief: "The model identifier being used for the request.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'gpt-4-turbo-preview', - changelog: [{ version: '0.1.0', prs: [62, 127] }], + example: "gpt-4-turbo-preview", + changelog: [ + { version: "0.1.0", prs: [62, 127] }, + ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 0.5, - aliases: ['ai.presence_penalty'], + aliases: ["ai.presence_penalty"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [57] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57] }, ], }, - 'gen_ai.request.reasoning_effort': { - brief: 'Constrains the effort on reasoning for reasoning models. Supported values vary by provider.', + "gen_ai.request.reasoning_effort": { + brief: "Constrains the effort on reasoning for reasoning models. Supported values vary by provider.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'high', - changelog: [{ version: '0.13.0', prs: [334], description: 'Added gen_ai.request.reasoning_effort attribute' }], + example: "high", + changelog: [ + { version: "0.13.0", prs: [334], description: "Added gen_ai.request.reasoning_effort attribute" }, + ], }, - 'gen_ai.request.seed': { - brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', + "gen_ai.request.seed": { + brief: "The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '1234567890', - aliases: ['ai.seed'], - changelog: [{ version: '0.1.0', prs: [57, 127] }], + example: "1234567890", + aliases: ["ai.seed"], + changelog: [ + { version: "0.1.0", prs: [57, 127] }, + ], }, - 'gen_ai.request.temperature': { - brief: - 'For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.', + "gen_ai.request.temperature": { + brief: "For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 0.1, - aliases: ['ai.temperature'], + aliases: ["ai.temperature"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [57] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57] }, ], }, - '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).', + "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).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 35, - aliases: ['ai.top_k'], + aliases: ["ai.top_k"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [57] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57] }, ], }, - '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).', + "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).", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 0.7, - aliases: ['ai.top_p'], + aliases: ["ai.top_p"], changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [57] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57] }, ], }, - 'gen_ai.response.finish_reasons': { - brief: 'The reason why the model stopped generating.', + "gen_ai.response.finish_reasons": { + brief: "The reason why the model stopped generating.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'COMPLETE', - aliases: ['ai.finish_reason'], - changelog: [{ version: '0.1.0', prs: [57, 127] }], + example: "COMPLETE", + aliases: ["ai.finish_reason"], + changelog: [ + { version: "0.1.0", prs: [57, 127] }, + ], }, - 'gen_ai.response.id': { - brief: 'Unique identifier for the completion.', + "gen_ai.response.id": { + brief: "Unique identifier for the completion.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'gen_123abc', - aliases: ['ai.generation_id'], - changelog: [{ version: '0.1.0', prs: [57, 127] }], + example: "gen_123abc", + aliases: ["ai.generation_id"], + changelog: [ + { version: "0.1.0", prs: [57, 127] }, + ], }, - 'gen_ai.response.model': { - brief: 'The vendor-specific ID of the model used.', + "gen_ai.response.model": { + brief: "The vendor-specific ID of the model used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'gpt-4', - aliases: ['ai.model_id'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "gpt-4", + aliases: ["ai.model_id"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'gen_ai.response.streaming': { + "gen_ai.response.streaming": { brief: "Whether or not the AI model call's response was streamed back asynchronously", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - aliases: ['ai.streaming'], - changelog: [{ version: '0.1.0', prs: [76] }], + aliases: ["ai.streaming"], + changelog: [ + { version: "0.1.0", prs: [76] }, + ], }, - '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.", + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - 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" }, changelog: [ - { version: '0.4.0', prs: [221] }, - { version: '0.1.0', prs: [63, 74] }, + { version: "0.4.0", prs: [221] }, + { version: "0.1.0", prs: [63, 74] }, ], }, - 'gen_ai.response.time_to_first_chunk': { - brief: 'Time in seconds when the first response content chunk arrived in streaming responses.', + "gen_ai.response.time_to_first_chunk": { + brief: "Time in seconds when the first response content chunk arrived in streaming responses.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 0.6853435, - aliases: ['gen_ai.response.time_to_first_token'], - changelog: [{ version: '0.11.0', prs: [418], description: 'Added gen_ai.response.time_to_first_chunk attribute' }], + aliases: ["gen_ai.response.time_to_first_token"], + changelog: [ + { version: "0.11.0", prs: [418], description: "Added gen_ai.response.time_to_first_chunk attribute" }, + ], }, - 'gen_ai.response.time_to_first_token': { - brief: 'Time in seconds when the first response content chunk arrived in streaming responses.', + "gen_ai.response.time_to_first_token": { + brief: "Time in seconds when the first response content chunk arrived in streaming responses.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.6853435, deprecation: { - replacement: 'gen_ai.response.time_to_first_chunk', + replacement: "gen_ai.response.time_to_first_chunk" }, - aliases: ['gen_ai.response.time_to_first_chunk'], + aliases: ["gen_ai.response.time_to_first_chunk"], changelog: [ - { version: '0.11.0', prs: [418], description: 'Deprecate in favor of gen_ai.response.time_to_first_chunk' }, - { version: '0.4.0', prs: [227] }, + { version: "0.11.0", prs: [418], description: "Deprecate in favor of gen_ai.response.time_to_first_chunk" }, + { version: "0.4.0", prs: [227] }, ], }, - 'gen_ai.response.tokens_per_second': { - brief: 'The total output tokens per seconds throughput', + "gen_ai.response.tokens_per_second": { + brief: "The total output tokens per seconds throughput", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 12345.67, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [66] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [66] }, ], }, - 'gen_ai.response.tool_calls': { + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - 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" }, changelog: [ - { version: '0.4.0', prs: [221] }, - { version: '0.1.0', prs: [63, 74] }, + { version: "0.4.0", prs: [221] }, + { version: "0.1.0", prs: [63, 74] }, ], }, - 'gen_ai.system': { - brief: 'The provider of the model.', + "gen_ai.system": { + brief: "The provider of the model.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'openai', + example: "openai", deprecation: { - replacement: 'gen_ai.provider.name', + replacement: "gen_ai.provider.name" }, - aliases: ['ai.model.provider', 'gen_ai.provider.name'], + aliases: ["ai.model.provider", "gen_ai.provider.name"], changelog: [ - { version: '0.4.0', prs: [253] }, - { version: '0.1.0', prs: [57, 127] }, + { version: "0.4.0", prs: [253] }, + { version: "0.1.0", prs: [57, 127] }, ], }, - 'gen_ai.system_instructions': { - brief: 'The system instructions passed to the model.', + "gen_ai.system_instructions": { + brief: "The system instructions passed to the model.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'You are a helpful assistant', - aliases: ['ai.preamble'], + example: "You are a helpful assistant", + aliases: ["ai.preamble"], changelog: [ - { version: '0.5.0', prs: [264] }, - { version: '0.4.0', prs: [221] }, + { version: "0.5.0", prs: [264] }, + { version: "0.4.0", prs: [221] }, ], }, - 'gen_ai.system.message': { - brief: 'The system instructions passed to the model.', + "gen_ai.system.message": { + brief: "The system instructions passed to the model.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'You are a helpful assistant', + example: "You are a helpful assistant", deprecation: { - replacement: 'gen_ai.system_instructions', + replacement: "gen_ai.system_instructions" }, changelog: [ - { version: '0.4.0', prs: [221] }, - { version: '0.1.0', prs: [62] }, + { version: "0.4.0", prs: [221] }, + { version: "0.1.0", prs: [62] }, ], }, - 'gen_ai.tool.call.arguments': { - brief: 'The arguments of the tool call. It has to be a stringified version of the arguments to the tool.', + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '{"location": "Paris"}', - aliases: ['gen_ai.tool.input'], + example: "{\"location\": \"Paris\"}", + aliases: ["gen_ai.tool.input"], changelog: [ - { version: '0.5.0', prs: [265] }, - { version: '0.4.0', prs: [221] }, + { version: "0.5.0", prs: [265] }, + { version: "0.4.0", prs: [221] }, ], }, - 'gen_ai.tool.call.result': { - brief: 'The result of the tool call. It has to be a stringified version of the result of the tool.', + "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', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'rainy, 57°F', - aliases: ['gen_ai.tool.output', 'gen_ai.tool.message', 'mcp.tool.result.content'], + example: "rainy, 57°F", + aliases: ["gen_ai.tool.output", "gen_ai.tool.message", "mcp.tool.result.content"], changelog: [ - { version: '0.5.0', prs: [265] }, - { version: '0.4.0', prs: [221] }, + { version: "0.5.0", prs: [265] }, + { version: "0.4.0", prs: [221] }, ], }, - 'gen_ai.tool.definitions': { - brief: 'The list of source system tool definitions available to the GenAI agent or model.', + "gen_ai.tool.definitions": { + brief: "The list of source system tool definitions available to the GenAI agent or model.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: - '[{"type": "function", "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "The city and state, e.g. San Francisco, CA"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["location", "unit"]}}]', - changelog: [{ version: '0.4.0', prs: [221] }], + example: "[{\"type\": \"function\", \"name\": \"get_current_weather\", \"description\": \"Get the current weather in a given location\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"The city and state, e.g. San Francisco, CA\"}, \"unit\": {\"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"]}}, \"required\": [\"location\", \"unit\"]}}]", + changelog: [ + { version: "0.4.0", prs: [221] }, + ], }, - 'gen_ai.tool.description': { - brief: 'The description of the tool being used.', + "gen_ai.tool.description": { + brief: "The description of the tool being used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'Searches the web for current information about a topic', - changelog: [{ version: '0.1.0', prs: [62, 127] }], + example: "Searches the web for current information about a topic", + changelog: [ + { version: "0.1.0", prs: [62, 127] }, + ], }, - 'gen_ai.tool.input': { - brief: 'The input of the tool being used. It has to be a stringified version of the input to the tool.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '{"location": "Paris"}', + example: "{\"location\": \"Paris\"}", deprecation: { - replacement: 'gen_ai.tool.call.arguments', + replacement: "gen_ai.tool.call.arguments" }, - aliases: ['gen_ai.tool.call.arguments'], + aliases: ["gen_ai.tool.call.arguments"], changelog: [ - { version: '0.5.0', prs: [265] }, - { version: '0.1.0', prs: [63, 74] }, + { version: "0.5.0", prs: [265] }, + { version: "0.1.0", prs: [63, 74] }, ], }, - 'gen_ai.tool.message': { - brief: 'The response from a tool or function call passed to the model.', + "gen_ai.tool.message": { + brief: "The response from a tool or function call passed to the model.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'rainy, 57°F', + example: "rainy, 57°F", deprecation: { - replacement: 'gen_ai.tool.call.result', + replacement: "gen_ai.tool.call.result" }, - aliases: ['gen_ai.tool.call.result', 'gen_ai.tool.output', 'mcp.tool.result.content'], + aliases: ["gen_ai.tool.call.result", "gen_ai.tool.output", "mcp.tool.result.content"], changelog: [ - { version: '0.5.0', prs: [265] }, - { version: '0.1.0', prs: [62] }, + { version: "0.5.0", prs: [265] }, + { version: "0.1.0", prs: [62] }, ], }, - 'gen_ai.tool.name': { - brief: 'Name of the tool utilized by the agent.', + "gen_ai.tool.name": { + brief: "Name of the tool utilized by the agent.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'Flights', - aliases: ['ai.function_call', 'mcp.tool.name'], - changelog: [{ version: '0.1.0', prs: [57, 127] }], + example: "Flights", + aliases: ["ai.function_call", "mcp.tool.name"], + changelog: [ + { version: "0.1.0", prs: [57, 127] }, + ], }, - 'gen_ai.tool.output': { - brief: 'The output of the tool being used. It has to be a stringified version of the output of the tool.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'rainy, 57°F', + example: "rainy, 57°F", deprecation: { - replacement: 'gen_ai.tool.call.result', + replacement: "gen_ai.tool.call.result" }, - aliases: ['gen_ai.tool.call.result', 'gen_ai.tool.message', 'mcp.tool.result.content'], + aliases: ["gen_ai.tool.call.result", "gen_ai.tool.message", "mcp.tool.result.content"], changelog: [ - { version: '0.5.0', prs: [265] }, - { version: '0.1.0', prs: [63, 74] }, + { version: "0.5.0", prs: [265] }, + { version: "0.1.0", prs: [63, 74] }, ], }, - 'gen_ai.tool.type': { - brief: 'The type of tool being used.', + "gen_ai.tool.type": { + brief: "The type of tool being used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'function', + example: "function", deprecation: { - reason: 'The gen_ai.tool.type attribute is deprecated and should no longer be set.', + reason: "The gen_ai.tool.type attribute is deprecated and should no longer be set." }, - changelog: [{ version: '0.1.0', prs: [62, 127] }], + changelog: [ + { version: "0.1.0", prs: [62, 127] }, + ], }, - 'gen_ai.usage.cache_creation.input_tokens': { - brief: 'The number of tokens written to the cache when processing the AI input (prompt).', + "gen_ai.usage.cache_creation.input_tokens": { + brief: "The number of tokens written to the cache when processing the AI input (prompt).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 100, - aliases: ['gen_ai.usage.input_tokens.cache_write'], + aliases: ["gen_ai.usage.input_tokens.cache_write"], changelog: [ - { version: '0.11.0', prs: [418], description: 'Added gen_ai.usage.cache_creation.input_tokens attribute' }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + { version: "0.11.0", prs: [418], description: "Added gen_ai.usage.cache_creation.input_tokens attribute" }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans."], }, - 'gen_ai.usage.cache_read.input_tokens': { - brief: 'The number of cached tokens used to process the AI input (prompt).', + "gen_ai.usage.cache_read.input_tokens": { + brief: "The number of cached tokens used to process the AI input (prompt).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 50, - aliases: ['gen_ai.usage.input_tokens.cached'], - changelog: [{ version: '0.11.0', prs: [418], description: 'Added gen_ai.usage.cache_read.input_tokens attribute' }], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - 'This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens — it is already included.', + aliases: ["gen_ai.usage.input_tokens.cached"], + changelog: [ + { version: "0.11.0", prs: [418], description: "Added gen_ai.usage.cache_read.input_tokens attribute" }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens — it is already included."], }, - 'gen_ai.usage.completion_tokens': { - brief: 'The number of tokens used in the GenAI response (completion).', + "gen_ai.usage.completion_tokens": { + brief: "The number of tokens used in the GenAI response (completion).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', 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'], + aliases: ["ai.completion_tokens.used", "gen_ai.usage.output_tokens"], changelog: [ - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [61] }, - { version: '0.0.0' }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans."], }, - 'gen_ai.usage.input_tokens': { - brief: 'The number of tokens used to process the AI input (prompt) including cached input tokens.', + "gen_ai.usage.input_tokens": { + brief: "The number of tokens used to process the AI input (prompt) including cached input tokens.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 10, - aliases: ['ai.prompt_tokens.used', 'gen_ai.usage.prompt_tokens'], - changelog: [ - { - version: '0.11.0', - prs: [418], - description: 'Update additional_context to reference gen_ai.usage.cache_read.input_tokens', - }, - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.5.0', prs: [261] }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [112] }, - { version: '0.0.0' }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - 'This count includes cached input tokens. gen_ai.usage.cache_read.input_tokens is a subset of this value, not an independent count — do not sum them together.', - ], - }, - 'gen_ai.usage.input_tokens.cached': { - brief: 'The number of cached tokens used to process the AI input (prompt).', + aliases: ["ai.prompt_tokens.used", "gen_ai.usage.prompt_tokens"], + changelog: [ + { version: "0.11.0", prs: [418], description: "Update additional_context to reference gen_ai.usage.cache_read.input_tokens" }, + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.5.0", prs: [261] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [112] }, + { version: "0.0.0" }, + ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This count includes cached input tokens. gen_ai.usage.cache_read.input_tokens is a subset of this value, not an independent count — do not sum them together."], + }, + "gen_ai.usage.input_tokens.cached": { + brief: "The number of cached tokens used to process the AI input (prompt).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 50, deprecation: { - replacement: 'gen_ai.usage.cache_read.input_tokens', + replacement: "gen_ai.usage.cache_read.input_tokens" }, - aliases: ['gen_ai.usage.cache_read.input_tokens'], + aliases: ["gen_ai.usage.cache_read.input_tokens"], changelog: [ - { version: '0.11.0', prs: [418], description: 'Deprecate in favor of gen_ai.usage.cache_read.input_tokens' }, - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [62, 112] }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - 'This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens — it is already included.', + { version: "0.11.0", prs: [418], description: "Deprecate in favor of gen_ai.usage.cache_read.input_tokens" }, + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [62, 112] }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens — it is already included."], }, - 'gen_ai.usage.input_tokens.cache_write': { - brief: 'The number of tokens written to the cache when processing the AI input (prompt).', + "gen_ai.usage.input_tokens.cache_write": { + brief: "The number of tokens written to the cache when processing the AI input (prompt).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 100, deprecation: { - replacement: 'gen_ai.usage.cache_creation.input_tokens', + replacement: "gen_ai.usage.cache_creation.input_tokens" }, - aliases: ['gen_ai.usage.cache_creation.input_tokens'], + aliases: ["gen_ai.usage.cache_creation.input_tokens"], changelog: [ - { version: '0.11.0', prs: [418], description: 'Deprecate in favor of gen_ai.usage.cache_creation.input_tokens' }, - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.4.0', prs: [217, 228] }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + { version: "0.11.0", prs: [418], description: "Deprecate in favor of gen_ai.usage.cache_creation.input_tokens" }, + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.4.0", prs: [217, 228] }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans."], }, - 'gen_ai.usage.output_tokens': { - brief: 'The number of tokens used for creating the AI output (including reasoning tokens).', + "gen_ai.usage.output_tokens": { + brief: "The number of tokens used for creating the AI output (including reasoning tokens).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 10, - aliases: ['ai.completion_tokens.used', 'gen_ai.usage.completion_tokens'], - changelog: [ - { - version: '0.11.0', - prs: [418], - description: 'Update additional_context to reference gen_ai.usage.reasoning.output_tokens', - }, - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.5.0', prs: [261] }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [112] }, - { version: '0.0.0' }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - 'This count includes reasoning tokens. gen_ai.usage.reasoning.output_tokens is a subset of this value, not an independent count — do not sum them together.', - ], - }, - 'gen_ai.usage.output_tokens.reasoning': { - brief: 'The number of tokens used for reasoning to create the AI output.', + aliases: ["ai.completion_tokens.used", "gen_ai.usage.completion_tokens"], + changelog: [ + { version: "0.11.0", prs: [418], description: "Update additional_context to reference gen_ai.usage.reasoning.output_tokens" }, + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.5.0", prs: [261] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [112] }, + { version: "0.0.0" }, + ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This count includes reasoning tokens. gen_ai.usage.reasoning.output_tokens is a subset of this value, not an independent count — do not sum them together."], + }, + "gen_ai.usage.output_tokens.reasoning": { + brief: "The number of tokens used for reasoning to create the AI output.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 75, deprecation: { - replacement: 'gen_ai.usage.reasoning.output_tokens', + replacement: "gen_ai.usage.reasoning.output_tokens" }, - aliases: ['gen_ai.usage.reasoning.output_tokens'], + aliases: ["gen_ai.usage.reasoning.output_tokens"], changelog: [ - { version: '0.11.0', prs: [418], description: 'Deprecate in favor of gen_ai.usage.reasoning.output_tokens' }, - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [62, 112] }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - 'This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens — it is already included.', + { version: "0.11.0", prs: [418], description: "Deprecate in favor of gen_ai.usage.reasoning.output_tokens" }, + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [62, 112] }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens — it is already included."], }, - 'gen_ai.usage.prompt_tokens': { - brief: 'The number of tokens used in the GenAI input (prompt).', + "gen_ai.usage.prompt_tokens": { + brief: "The number of tokens used in the GenAI input (prompt).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', 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'], + aliases: ["ai.prompt_tokens.used", "gen_ai.usage.input_tokens"], changelog: [ - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [61] }, - { version: '0.0.0' }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans."], }, - 'gen_ai.usage.reasoning.output_tokens': { - brief: 'The number of tokens used for reasoning to create the AI output.', + "gen_ai.usage.reasoning.output_tokens": { + brief: "The number of tokens used for reasoning to create the AI output.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 75, - aliases: ['gen_ai.usage.output_tokens.reasoning'], - changelog: [{ version: '0.11.0', prs: [418], description: 'Added gen_ai.usage.reasoning.output_tokens attribute' }], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - 'This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens — it is already included.', + aliases: ["gen_ai.usage.output_tokens.reasoning"], + changelog: [ + { version: "0.11.0", prs: [418], description: "Added gen_ai.usage.reasoning.output_tokens attribute" }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens — it is already included."], }, - 'gen_ai.usage.total_tokens': { - brief: 'The total number of tokens used to process the prompt. (input tokens plus output todkens)', + "gen_ai.usage.total_tokens": { + brief: "The total number of tokens used to process the prompt. (input tokens plus output todkens)", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 20, - aliases: ['ai.total_tokens.used'], + aliases: ["ai.total_tokens.used"], changelog: [ - { version: '0.9.0', prs: [397], description: 'Add additional_context' }, - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [57] }, - ], - additionalContext: [ - 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', - 'This is the sum of gen_ai.usage.input_tokens and gen_ai.usage.output_tokens. Do not sum this with either of them — they are already included.', + { version: "0.9.0", prs: [397], description: "Add additional_context" }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [57] }, ], + additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is the sum of gen_ai.usage.input_tokens and gen_ai.usage.output_tokens. Do not sum this with either of them — they are already included."], }, - 'graphql.document': { - brief: 'The GraphQL document being executed.', + "graphql.document": { + brief: "The GraphQL document being executed.", type: 'string', applyScrubbing: { key: 'auto', - reason: - 'The document may contain sensitive information in arguments or variables. Instrumentation should redact sensitive information when possible.', + reason: "The document may contain sensitive information in arguments or variables. Instrumentation should redact sensitive information when possible." }, isInOtel: true, visibility: 'public', - example: 'query findBookById { bookById(id: ?) { name } }', + example: "query findBookById { bookById(id: ?) { name } }", changelog: [ - { - version: '0.7.0', - description: 'Adds the `graphql.document` attribute to track the GraphQL document being executed.', - }, + { version: "0.7.0", description: "Adds the `graphql.document` attribute to track the GraphQL document being executed." }, ], }, - 'graphql.operation.name': { - brief: 'The name of the operation being executed.', + "graphql.operation.name": { + brief: "The name of the operation being executed.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'findBookById', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "findBookById", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'graphql.operation.type': { - brief: 'The type of the operation being executed.', + "graphql.operation.type": { + brief: "The type of the operation being executed.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'query', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "query", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - hardwareConcurrency: { - brief: 'The number of logical CPU cores available.', + "hardwareConcurrency": { + brief: "The number of logical CPU cores available.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '14', + example: "14", deprecation: { - replacement: 'device.processor_count', - reason: 'Old namespace-less attribute, to be replaced with device.processor_count for span-first future', + replacement: "device.processor_count", + reason: "Old namespace-less attribute, to be replaced with device.processor_count for span-first future" }, - aliases: ['device.processor_count'], + aliases: ["device.processor_count"], changelog: [ - { - version: '0.5.0', - prs: [281, 300], - description: "Added and deprecated attribute to document JS SDK's current behaviour", - }, + { version: "0.5.0", prs: [281, 300], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, ], }, - 'http.client_ip': { - brief: - 'Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + "http.client_ip": { + brief: "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'example.com', + example: "example.com", deprecation: { - replacement: 'client.address', + replacement: "client.address" }, - aliases: ['client.address'], - changelog: [{ version: '0.1.0', prs: [61, 106, 127] }, { version: '0.0.0' }], + aliases: ["client.address"], + changelog: [ + { version: "0.1.0", prs: [61, 106, 127] }, + { version: "0.0.0" }, + ], }, - 'http.decoded_response_content_length': { - brief: 'The decoded body size of the response (in bytes).', + "http.decoded_response_content_length": { + brief: "The decoded body size of the response (in bytes).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 456, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'http.flavor': { - brief: 'The actual version of the protocol used for network communication.', + "http.flavor": { + brief: "The actual version of the protocol used for network communication.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '1.1', + example: "1.1", deprecation: { - replacement: 'network.protocol.version', + replacement: "network.protocol.version" }, - aliases: ['network.protocol.version', 'net.protocol.version'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["network.protocol.version", "net.protocol.version"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'http.fragment': { - brief: - 'The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.', + "http.fragment": { + brief: "The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: '#details', - changelog: [{ version: '0.0.0' }], + example: "#details", + changelog: [ + { version: "0.0.0" }, + ], }, - 'http.host': { - brief: 'The domain name.', + "http.host": { + brief: "The domain name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - 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'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["server.address", "client.address", "http.server_name", "net.host.name"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'http.method': { - brief: 'The HTTP method used.', + "http.method": { + brief: "The HTTP method used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'GET', + example: "GET", deprecation: { - replacement: 'http.request.method', + replacement: "http.request.method" }, - aliases: ['http.request.method', 'http.request_method', 'method'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["http.request.method", "http.request_method", "method"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'http.query': { - brief: - 'The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.', + "http.query": { + brief: "The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.", type: 'string', applyScrubbing: { key: 'auto', - 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, visibility: 'public', - example: '?foo=bar&bar=baz', - changelog: [{ version: '0.0.0' }], + example: "?foo=bar&bar=baz", + changelog: [ + { version: "0.0.0" }, + ], }, - 'http.request.body.data': { - brief: 'HTTP request body data. Can be given as string or structural data of any format.', + "http.request.body.data": { + brief: "HTTP request body data. Can be given as string or structural data of any format.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: '[{"role": "user", "message": "hello"}]', - changelog: [{ version: '0.6.0', prs: [336], description: 'Added http.request.body.data attribute' }], + example: "[{\"role\": \"user\", \"message\": \"hello\"}]", + changelog: [ + { version: "0.6.0", prs: [336], description: "Added http.request.body.data attribute" }, + ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.15, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.111, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - 'http.request.domain_lookup_end': { - brief: - 'The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.', + "http.request.domain_lookup_end": { + brief: "The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.201, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - 'http.request.domain_lookup_start': { - brief: - 'The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.', + "http.request.domain_lookup_start": { + brief: "The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.322, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - 'http.request.fetch_start': { - brief: 'The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.', + "http.request.fetch_start": { + brief: "The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.389, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - 'http.request.header.': { - brief: - 'HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.', + "http.request.header.": { + brief: "HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', hasDynamicSuffix: true, example: "http.request.header.custom-header=['foo', 'bar']", changelog: [ - { version: '0.4.0', prs: [201, 204] }, - { version: '0.1.0', prs: [103] }, + { version: "0.4.0", prs: [201, 204] }, + { version: "0.1.0", prs: [103] }, ], }, - 'http.request.method': { - brief: 'The HTTP method used.', + "http.request.method": { + brief: "The HTTP method used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'GET', - aliases: ['method', 'http.method', 'http.request_method'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "GET", + aliases: ["method", "http.method", "http.request_method"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'http.request_method': { - brief: 'The HTTP method used.', + "http.request_method": { + brief: "The HTTP method used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'GET', + example: "GET", deprecation: { - replacement: 'http.request.method', + replacement: "http.request.method" }, - aliases: ['method', 'http.method', 'http.request.method'], - changelog: [{ version: '0.6.0', prs: [343], description: 'Added http.request_method attribute' }], + aliases: ["method", "http.method", "http.request.method"], + changelog: [ + { version: "0.6.0", prs: [343], description: "Added http.request_method attribute" }, + ], }, - 'http.request.redirect_end': { - brief: - 'The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect', + "http.request.redirect_end": { + brief: "The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829558.502, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [130, 134] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [130, 134] }, ], }, - 'http.request.redirect_start': { - brief: 'The UNIX timestamp representing the start time of the fetch which that initiates the redirect.', + "http.request.redirect_start": { + brief: "The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.495, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.51, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - 'http.request.resend_count': { - brief: 'The ordinal number of request resending attempt (for any reason, including redirects).', + "http.request.resend_count": { + brief: "The ordinal number of request resending attempt (for any reason, including redirects).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.89, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.7, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - 'http.request.same_origin': { + "http.request.same_origin": { brief: "Indicates that a URL has the same origin as the current page's origin in the browser.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - aliases: ['url.same_origin'], - changelog: [{ version: 'next', prs: [456], description: 'Added http.request.same_origin attribute' }], + aliases: ["url.same_origin"], + changelog: [ + { version: "next", prs: [456], description: "Added http.request.same_origin attribute" }, + ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829555.73, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [134] }, + { version: "0.0.0" }, + ], }, - '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", + "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", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1.032, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [131] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [131] }, ], }, - '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.', + "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.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732829553.68, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [130, 134] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [130, 134] }, ], }, - 'http.response.body.size': { - brief: 'The encoded body size of the response (in bytes).', + "http.response.body.size": { + brief: "The encoded body size of the response (in bytes).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 123, - aliases: ['http.response_content_length', 'http.response.header.content-length'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [106] }, { version: '0.0.0' }], + aliases: ["http.response_content_length", "http.response.header.content-length"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [106] }, + { version: "0.0.0" }, + ], }, - 'http.response_content_length': { - brief: 'The encoded body size of the response (in bytes).', + "http.response_content_length": { + brief: "The encoded body size of the response (in bytes).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 123, deprecation: { - replacement: 'http.response.body.size', + replacement: "http.response.body.size" }, - aliases: ['http.response.body.size', 'http.response.header.content-length'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61, 106] }, { version: '0.0.0' }], + aliases: ["http.response.body.size", "http.response.header.content-length"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61, 106] }, + { version: "0.0.0" }, + ], }, - 'http.response.header.content-length': { - brief: 'The size of the message body sent to the recipient (in bytes)', + "http.response.header.content-length": { + brief: "The size of the message body sent to the recipient (in bytes)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: "http.response.header.custom-header=['foo', 'bar']", - aliases: ['http.response_content_length', 'http.response.body.size'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + aliases: ["http.response_content_length", "http.response.body.size"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'http.response.header.': { - brief: - 'HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.', + "http.response.header.": { + brief: "HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', hasDynamicSuffix: true, example: "http.response.header.custom-header=['foo', 'bar']", changelog: [ - { version: '0.4.0', prs: [201, 204] }, - { version: '0.1.0', prs: [103] }, + { version: "0.4.0", prs: [201, 204] }, + { version: "0.1.0", prs: [103] }, ], }, - 'http.response.size': { - brief: 'The transfer size of the response (in bytes).', + "http.response.size": { + brief: "The transfer size of the response (in bytes).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 456, - aliases: ['http.response_transfer_size'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + aliases: ["http.response_transfer_size"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'http.response.status_code': { - brief: 'The status code of the HTTP response.', + "http.response.status_code": { + brief: "The status code of the HTTP response.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 404, - aliases: ['http.status_code'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + aliases: ["http.status_code"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'http.response_transfer_size': { - brief: 'The transfer size of the response (in bytes).', + "http.response_transfer_size": { + brief: "The transfer size of the response (in bytes).", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 456, deprecation: { - replacement: 'http.response.size', + replacement: "http.response.size" }, - aliases: ['http.response.size'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + aliases: ["http.response.size"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'http.route': { - brief: 'The matched route, that is, the path template in the format used by the respective server framework.', + "http.route": { + brief: "The matched route, that is, the path template in the format used by the respective server framework.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '/users/:id', - aliases: ['url.template'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "/users/:id", + aliases: ["url.template"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'http.scheme': { - brief: 'The URI scheme component identifying the used protocol.', + "http.scheme": { + brief: "The URI scheme component identifying the used protocol.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'https', + example: "https", deprecation: { - replacement: 'url.scheme', + replacement: "url.scheme" }, - aliases: ['url.scheme'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["url.scheme"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'http.server_name': { - brief: 'The server domain name', + "http.server_name": { + brief: "The server domain name", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'example.com', + example: "example.com", deprecation: { - replacement: 'server.address', + replacement: "server.address" }, - aliases: ['server.address', 'net.host.name', 'http.host'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["server.address", "net.host.name", "http.host"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'http.server.request.time_in_queue': { - brief: - 'The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.', + "http.server.request.time_in_queue": { + brief: "The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 50, - changelog: [{ version: '0.5.0', prs: [267] }], + changelog: [ + { version: "0.5.0", prs: [267] }, + ], }, - 'http.status_code': { - brief: 'The status code of the HTTP response.', + "http.status_code": { + brief: "The status code of the HTTP response.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 404, deprecation: { - replacement: 'http.response.status_code', + replacement: "http.response.status_code" }, - aliases: ['http.response.status_code'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + aliases: ["http.response.status_code"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'http.target': { - brief: 'The pathname and query string of the URL.', + "http.target": { + brief: "The pathname and query string of the URL.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - 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" }, - changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + changelog: [ + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'http.url': { - brief: 'The URL of the resource that was fetched.', + "http.url": { + brief: "The URL of the resource that was fetched.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - 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'], - changelog: [{ version: '0.1.0', prs: [61, 108] }, { version: '0.0.0' }], + aliases: ["url.full", "url"], + changelog: [ + { version: "0.1.0", prs: [61, 108] }, + { version: "0.0.0" }, + ], }, - 'http.user_agent': { - brief: 'Value of the HTTP User-Agent header sent by the client.', + "http.user_agent": { + brief: "Value of the HTTP User-Agent header sent by the client.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - 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'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["user_agent.original"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - id: { - brief: 'A unique identifier for the span.', + "id": { + brief: "A unique identifier for the span.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'f47ac10b58cc4372a5670e02b2c3d479', - changelog: [{ version: '0.0.0' }], + example: "f47ac10b58cc4372a5670e02b2c3d479", + changelog: [ + { version: "0.0.0" }, + ], }, - inp: { - brief: 'The value of the recorded Interaction to Next Paint (INP) web vital', + "inp": { + brief: "The value of the recorded Interaction to Next Paint (INP) web vital", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 200, deprecation: { - replacement: 'browser.web_vital.inp.value', - reason: 'The INP web vital is now recorded as a browser.web_vital.inp.value attribute.', + replacement: "browser.web_vital.inp.value", + reason: "The INP web vital is now recorded as a browser.web_vital.inp.value attribute." }, - aliases: ['browser.web_vital.inp.value'], + aliases: ["browser.web_vital.inp.value"], changelog: [ - { - version: '0.5.0', - prs: [229], - description: "Added and deprecated attribute to document JS SDK's current behaviour", - }, + { version: "0.5.0", prs: [229], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, ], }, - 'jsonrpc.protocol.version': { - brief: 'The version of the JSON-RPC protocol used.', + "jsonrpc.protocol.version": { + brief: "The version of the JSON-RPC protocol used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '2.0', - changelog: [{ version: '0.12.0', prs: [420], description: 'Added jsonrpc.protocol.version attribute' }], + example: "2.0", + changelog: [ + { version: "0.12.0", prs: [420], description: "Added jsonrpc.protocol.version attribute" }, + ], }, - 'jsonrpc.request.id': { - brief: 'The JSON-RPC request identifier. Unique within the session.', + "jsonrpc.request.id": { + brief: "The JSON-RPC request identifier. Unique within the session.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '1', - aliases: ['mcp.request.id'], - changelog: [{ version: '0.12.0', prs: [420], description: 'Added jsonrpc.request.id attribute' }], + example: "1", + aliases: ["mcp.request.id"], + changelog: [ + { version: "0.12.0", prs: [420], description: "Added jsonrpc.request.id attribute" }, + ], }, - 'jvm.gc.action': { - brief: 'Name of the garbage collector action.', + "jvm.gc.action": { + brief: "Name of the garbage collector action.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'end of minor GC', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "end of minor GC", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'jvm.gc.name': { - brief: 'Name of the garbage collector.', + "jvm.gc.name": { + brief: "Name of the garbage collector.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'G1 Young Generation', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "G1 Young Generation", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'jvm.memory.pool.name': { - brief: 'Name of the memory pool.', + "jvm.memory.pool.name": { + brief: "Name of the memory pool.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'G1 Old Gen', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "G1 Old Gen", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'jvm.memory.type': { - brief: 'Name of the memory pool.', + "jvm.memory.type": { + brief: "Name of the memory pool.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'G1 Old Gen', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "G1 Old Gen", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'jvm.thread.daemon': { - brief: 'Whether the thread is daemon or not.', + "jvm.thread.daemon": { + brief: "Whether the thread is daemon or not.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: true, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'jvm.thread.state': { - brief: 'State of the thread.', + "jvm.thread.state": { + brief: "State of the thread.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'blocked', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "blocked", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - lcp: { - brief: 'The value of the recorded Largest Contentful Paint (LCP) web vital', + "lcp": { + brief: "The value of the recorded Largest Contentful Paint (LCP) web vital", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2500, deprecation: { - replacement: 'browser.web_vital.lcp.value', - reason: 'The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute.', + replacement: "browser.web_vital.lcp.value", + reason: "The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute." }, - aliases: ['browser.web_vital.lcp.value'], + aliases: ["browser.web_vital.lcp.value"], changelog: [ - { - version: '0.5.0', - prs: [229], - description: "Added and deprecated attribute to document JS SDK's current behaviour", - }, + { version: "0.5.0", prs: [229], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, ], }, - 'lcp.element': { - brief: 'The dom element responsible for the largest contentful paint.', + "lcp.element": { + brief: "The dom element responsible for the largest contentful paint.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'img', + example: "img", deprecation: { - replacement: 'browser.web_vital.lcp.element', - reason: 'The LCP element is now recorded as a browser.web_vital.lcp.element attribute.', + replacement: "browser.web_vital.lcp.element", + reason: "The LCP element is now recorded as a browser.web_vital.lcp.element attribute." }, - aliases: ['browser.web_vital.lcp.element'], - changelog: [{ version: '0.5.0', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + aliases: ["browser.web_vital.lcp.element"], + changelog: [ + { version: "0.5.0", prs: [233] }, + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'lcp.id': { - brief: 'The id of the dom element responsible for the largest contentful paint.', + "lcp.id": { + brief: "The id of the dom element responsible for the largest contentful paint.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '#hero', + example: "#hero", deprecation: { - replacement: 'browser.web_vital.lcp.id', - reason: 'The LCP id is now recorded as a browser.web_vital.lcp.id attribute.', + replacement: "browser.web_vital.lcp.id", + reason: "The LCP id is now recorded as a browser.web_vital.lcp.id attribute." }, - aliases: ['browser.web_vital.lcp.id'], - changelog: [{ version: '0.5.0', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + aliases: ["browser.web_vital.lcp.id"], + changelog: [ + { version: "0.5.0", prs: [233] }, + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'lcp.loadTime': { - brief: 'The time it took for the LCP element to be loaded', + "lcp.loadTime": { + brief: "The time it took for the LCP element to be loaded", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1402, deprecation: { - replacement: 'browser.web_vital.lcp.load_time', - reason: 'The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.', + replacement: "browser.web_vital.lcp.load_time", + reason: "The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute." }, - aliases: ['browser.web_vital.lcp.load_time'], - changelog: [{ version: '0.5.0', prs: [233] }], + aliases: ["browser.web_vital.lcp.load_time"], + changelog: [ + { version: "0.5.0", prs: [233] }, + ], }, - 'lcp.renderTime': { - brief: 'The time it took for the LCP element to be rendered', + "lcp.renderTime": { + brief: "The time it took for the LCP element to be rendered", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1685, deprecation: { - replacement: 'browser.web_vital.lcp.render_time', - reason: 'The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.', + replacement: "browser.web_vital.lcp.render_time", + reason: "The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute." }, - aliases: ['browser.web_vital.lcp.render_time'], - changelog: [{ version: '0.5.0', prs: [233] }], + aliases: ["browser.web_vital.lcp.render_time"], + changelog: [ + { version: "0.5.0", prs: [233] }, + ], }, - 'lcp.size': { - brief: 'The size of the largest contentful paint element.', + "lcp.size": { + brief: "The size of the largest contentful paint element.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234, deprecation: { - replacement: 'browser.web_vital.lcp.size', - reason: 'The LCP size is now recorded as a browser.web_vital.lcp.size attribute.', + replacement: "browser.web_vital.lcp.size", + reason: "The LCP size is now recorded as a browser.web_vital.lcp.size attribute." }, - aliases: ['browser.web_vital.lcp.size'], - changelog: [{ version: '0.5.0', prs: [233] }, { version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + aliases: ["browser.web_vital.lcp.size"], + changelog: [ + { version: "0.5.0", prs: [233] }, + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'lcp.url': { - brief: 'The url of the dom element responsible for the largest contentful paint.', + "lcp.url": { + brief: "The url of the dom element responsible for the largest contentful paint.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'https://example.com', + example: "https://example.com", deprecation: { - replacement: 'browser.web_vital.lcp.url', - reason: 'The LCP url is now recorded as a browser.web_vital.lcp.url attribute.', + replacement: "browser.web_vital.lcp.url", + reason: "The LCP url is now recorded as a browser.web_vital.lcp.url attribute." }, - aliases: ['browser.web_vital.lcp.url'], - changelog: [{ version: '0.5.0', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + aliases: ["browser.web_vital.lcp.url"], + changelog: [ + { version: "0.5.0", prs: [233] }, + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'logger.name': { - brief: 'The name of the logger that generated this event.', + "logger.name": { + brief: "The name of the logger that generated this event.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'myLogger', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "myLogger", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'mcp.cancelled.reason': { - brief: 'Reason for the cancellation of an MCP operation.', + "mcp.cancelled.reason": { + brief: "Reason for the cancellation of an MCP operation.", type: 'string', applyScrubbing: { key: 'manual', - reason: 'Cancellation reasons may contain user-specific or sensitive information', + reason: "Cancellation reasons may contain user-specific or sensitive information" }, isInOtel: false, visibility: 'public', - example: 'User cancelled the request', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "User cancelled the request", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.cancelled.request_id': { - brief: 'Request ID of the cancelled MCP operation.', + "mcp.cancelled.request_id": { + brief: "Request ID of the cancelled MCP operation.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '123', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "123", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.client.name': { - brief: 'Name of the MCP client application.', + "mcp.client.name": { + brief: "Name of the MCP client application.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'claude-desktop', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "claude-desktop", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.client.title': { - brief: 'Display title of the MCP client application.', + "mcp.client.title": { + brief: "Display title of the MCP client application.", type: 'string', applyScrubbing: { key: 'manual', - 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, visibility: 'public', - example: 'Claude Desktop', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "Claude Desktop", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.client.version': { - brief: 'Version of the MCP client application.', + "mcp.client.version": { + brief: "Version of the MCP client application.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1.0.0', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "1.0.0", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.lifecycle.phase': { - brief: 'Lifecycle phase indicator for MCP operations.', + "mcp.lifecycle.phase": { + brief: "Lifecycle phase indicator for MCP operations.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'initialization_complete', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "initialization_complete", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.logging.data_type': { - brief: 'Data type of the logged message content.', + "mcp.logging.data_type": { + brief: "Data type of the logged message content.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'string', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "string", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.logging.level': { - brief: 'Log level for MCP logging operations.', + "mcp.logging.level": { + brief: "Log level for MCP logging operations.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'info', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "info", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.logging.logger': { - brief: 'Logger name for MCP logging operations.', + "mcp.logging.logger": { + brief: "Logger name for MCP logging operations.", type: 'string', applyScrubbing: { key: 'manual', - 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, visibility: 'public', - example: 'mcp_server', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "mcp_server", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.logging.message': { - brief: 'Log message content from MCP logging operations.', + "mcp.logging.message": { + brief: "Log message content from MCP logging operations.", type: 'string', applyScrubbing: { key: 'auto', - reason: 'Log messages can contain user data', + reason: "Log messages can contain user data" }, isInOtel: false, visibility: 'public', - example: 'Tool execution completed successfully', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "Tool execution completed successfully", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.method.name': { - brief: 'The name of the MCP request or notification method being called.', + "mcp.method.name": { + brief: "The name of the MCP request or notification method being called.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'tools/call', + example: "tools/call", changelog: [ - { version: '0.12.0', prs: [420], description: 'Set is_in_otel=true, attribute exists in OTel MCP registry' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Set is_in_otel=true, attribute exists in OTel MCP registry" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.progress.current': { - brief: 'Current progress value of an MCP operation.', + "mcp.progress.current": { + brief: "Current progress value of an MCP operation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 50, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.3.0', prs: [171] }, + { version: "0.4.0", prs: [228] }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.progress.message': { - brief: 'Progress message describing the current state of an MCP operation.', + "mcp.progress.message": { + brief: "Progress message describing the current state of an MCP operation.", type: 'string', applyScrubbing: { key: 'manual', - reason: 'Progress messages may contain user-specific or sensitive information', + reason: "Progress messages may contain user-specific or sensitive information" }, isInOtel: false, visibility: 'public', - example: 'Processing 50 of 100 items', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "Processing 50 of 100 items", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.progress.percentage': { - brief: 'Calculated progress percentage of an MCP operation. Computed from current/total * 100.', + "mcp.progress.percentage": { + brief: "Calculated progress percentage of an MCP operation. Computed from current/total * 100.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 50, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.3.0', prs: [171] }, + { version: "0.4.0", prs: [228] }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.progress.token': { - brief: 'Token for tracking progress of an MCP operation.', + "mcp.progress.token": { + brief: "Token for tracking progress of an MCP operation.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'progress-token-123', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "progress-token-123", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.progress.total': { - brief: 'Total progress target value of an MCP operation.', + "mcp.progress.total": { + brief: "Total progress target value of an MCP operation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 100, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.3.0', prs: [171] }, + { version: "0.4.0", prs: [228] }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.prompt.name': { - brief: 'Name of the MCP prompt template being used.', + "mcp.prompt.name": { + brief: "Name of the MCP prompt template being used.", type: 'string', applyScrubbing: { key: 'manual', - reason: 'Prompt names may reveal user behavior patterns or sensitive operations', + reason: "Prompt names may reveal user behavior patterns or sensitive operations" }, isInOtel: false, visibility: 'public', - example: 'summarize', + example: "summarize", deprecation: { - replacement: 'gen_ai.prompt.name', - reason: 'OTel uses gen_ai.prompt.name for MCP prompt names', + replacement: "gen_ai.prompt.name", + reason: "OTel uses gen_ai.prompt.name for MCP prompt names" }, - aliases: ['gen_ai.prompt.name'], + aliases: ["gen_ai.prompt.name"], changelog: [ - { version: '0.12.0', prs: [420], description: 'Deprecated in favor of gen_ai.prompt.name' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Deprecated in favor of gen_ai.prompt.name" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.prompt.result.description': { - brief: 'Description of the prompt result.', + "mcp.prompt.result.description": { + brief: "Description of the prompt result.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'A summary of the requested information', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "A summary of the requested information", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.prompt.result.message_content': { - brief: 'Content of the message in the prompt result. Used for single message results only.', + "mcp.prompt.result.message_content": { + brief: "Content of the message in the prompt result. Used for single message results only.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'Please provide a summary of the document', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "Please provide a summary of the document", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.prompt.result.message_count': { - brief: 'Number of messages in the prompt result.', + "mcp.prompt.result.message_count": { + brief: "Number of messages in the prompt result.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 3, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.3.0', prs: [171] }, + { version: "0.4.0", prs: [228] }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.prompt.result.message_role': { - brief: 'Role of the message in the prompt result. Used for single message results only.', + "mcp.prompt.result.message_role": { + brief: "Role of the message in the prompt result. Used for single message results only.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'user', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "user", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.protocol.ready': { - brief: 'Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.', + "mcp.protocol.ready": { + brief: "Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.3.0', prs: [171] }, + { version: "0.4.0", prs: [228] }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.protocol.version': { - brief: 'MCP protocol version used in the session.', + "mcp.protocol.version": { + brief: "MCP protocol version used in the session.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '2024-11-05', + example: "2024-11-05", changelog: [ - { version: '0.12.0', prs: [420], description: 'Set is_in_otel=true, attribute exists in OTel MCP registry' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Set is_in_otel=true, attribute exists in OTel MCP registry" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.request.argument.': { - 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.', + "mcp.request.argument.": { + 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', applyScrubbing: { key: 'auto', - reason: 'Arguments contain user input', + reason: "Arguments contain user input" }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "mcp.request.argument.query='weather in Paris'", - changelog: [{ version: '0.3.0', prs: [176] }], + changelog: [ + { version: "0.3.0", prs: [176] }, + ], }, - 'mcp.request.argument.name': { - brief: 'Name argument from prompts/get MCP request.', + "mcp.request.argument.name": { + brief: "Name argument from prompts/get MCP request.", type: 'string', applyScrubbing: { key: 'auto', - reason: 'Prompt names can contain user input', + reason: "Prompt names can contain user input" }, isInOtel: false, visibility: 'public', - example: 'summarize', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "summarize", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.request.argument.uri': { - brief: 'URI argument from resources/read MCP request.', + "mcp.request.argument.uri": { + brief: "URI argument from resources/read MCP request.", type: 'string', applyScrubbing: { key: 'auto', - reason: 'URIs can contain user file paths', + reason: "URIs can contain user file paths" }, isInOtel: false, visibility: 'public', - example: 'file:///path/to/resource', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "file:///path/to/resource", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.request.id': { - brief: 'JSON-RPC request identifier for the MCP request. Unique within the MCP session.', + "mcp.request.id": { + brief: "JSON-RPC request identifier for the MCP request. Unique within the MCP session.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1', + example: "1", deprecation: { - replacement: 'jsonrpc.request.id', - reason: 'OTel models MCP as JSON-RPC, uses jsonrpc.request.id', + replacement: "jsonrpc.request.id", + reason: "OTel models MCP as JSON-RPC, uses jsonrpc.request.id" }, - aliases: ['jsonrpc.request.id'], + aliases: ["jsonrpc.request.id"], changelog: [ - { version: '0.12.0', prs: [420], description: 'Deprecated in favor of jsonrpc.request.id' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Deprecated in favor of jsonrpc.request.id" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.resource.protocol': { - brief: 'Protocol of the resource URI being accessed, extracted from the URI.', + "mcp.resource.protocol": { + brief: "Protocol of the resource URI being accessed, extracted from the URI.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'file', + example: "file", deprecation: { - replacement: 'network.protocol.name', - reason: 'OTel uses the generic network.protocol.name attribute', + replacement: "network.protocol.name", + reason: "OTel uses the generic network.protocol.name attribute" }, - aliases: ['network.protocol.name', 'net.protocol.name'], + aliases: ["network.protocol.name", "net.protocol.name"], changelog: [ - { version: '0.12.0', prs: [420], description: 'Deprecated in favor of network.protocol.name' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Deprecated in favor of network.protocol.name" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.resource.uri': { - brief: 'The resource URI being accessed in an MCP operation.', + "mcp.resource.uri": { + brief: "The resource URI being accessed in an MCP operation.", type: 'string', applyScrubbing: { key: 'auto', - reason: 'URIs can contain sensitive file paths', + reason: "URIs can contain sensitive file paths" }, isInOtel: true, visibility: 'public', - example: 'file:///path/to/file.txt', + example: "file:///path/to/file.txt", changelog: [ - { version: '0.12.0', prs: [420], description: 'Set is_in_otel=true, attribute exists in OTel MCP registry' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Set is_in_otel=true, attribute exists in OTel MCP registry" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.server.name': { - brief: 'Name of the MCP server application.', + "mcp.server.name": { + brief: "Name of the MCP server application.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'sentry-mcp-server', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "sentry-mcp-server", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.server.title': { - brief: 'Display title of the MCP server application.', + "mcp.server.title": { + brief: "Display title of the MCP server application.", type: 'string', applyScrubbing: { key: 'manual', - 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, visibility: 'public', - example: 'Sentry MCP Server', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "Sentry MCP Server", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.server.version': { - brief: 'Version of the MCP server application.', + "mcp.server.version": { + brief: "Version of the MCP server application.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '0.1.0', - changelog: [{ version: '0.3.0', prs: [171] }], + example: "0.1.0", + changelog: [ + { version: "0.3.0", prs: [171] }, + ], }, - 'mcp.session.id': { - brief: 'Identifier for the MCP session.', + "mcp.session.id": { + brief: "Identifier for the MCP session.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '550e8400-e29b-41d4-a716-446655440000', + example: "550e8400-e29b-41d4-a716-446655440000", changelog: [ - { version: '0.12.0', prs: [420], description: 'Set is_in_otel=true, attribute exists in OTel MCP registry' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Set is_in_otel=true, attribute exists in OTel MCP registry" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.tool.name': { - brief: 'Name of the MCP tool being called.', + "mcp.tool.name": { + brief: "Name of the MCP tool being called.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'calculator', + example: "calculator", deprecation: { - replacement: 'gen_ai.tool.name', - reason: 'OTel uses gen_ai.tool.name for MCP tool names', + replacement: "gen_ai.tool.name", + reason: "OTel uses gen_ai.tool.name for MCP tool names" }, - aliases: ['gen_ai.tool.name', 'ai.function_call'], + aliases: ["gen_ai.tool.name", "ai.function_call"], changelog: [ - { version: '0.12.0', prs: [420], description: 'Deprecated in favor of gen_ai.tool.name' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Deprecated in favor of gen_ai.tool.name" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.tool.result.content': { - brief: 'The content of the tool result.', + "mcp.tool.result.content": { + brief: "The content of the tool result.", type: 'string', applyScrubbing: { key: 'auto', - reason: 'Tool results can contain user data', + reason: "Tool results can contain user data" }, isInOtel: false, visibility: 'public', - example: '{"output": "rainy", "toolCallId": "1"}', + example: "{\"output\": \"rainy\", \"toolCallId\": \"1\"}", deprecation: { - replacement: 'gen_ai.tool.call.result', - reason: 'OTel uses gen_ai.tool.call.result for MCP tool results', + replacement: "gen_ai.tool.call.result", + reason: "OTel uses gen_ai.tool.call.result for MCP tool results" }, - aliases: ['gen_ai.tool.call.result', 'gen_ai.tool.message', 'gen_ai.tool.output'], + aliases: ["gen_ai.tool.call.result", "gen_ai.tool.message", "gen_ai.tool.output"], changelog: [ - { version: '0.12.0', prs: [420], description: 'Deprecated in favor of gen_ai.tool.call.result' }, - { version: '0.3.0', prs: [171] }, - { version: '0.2.0', prs: [164] }, + { version: "0.12.0", prs: [420], description: "Deprecated in favor of gen_ai.tool.call.result" }, + { version: "0.3.0", prs: [171] }, + { version: "0.2.0", prs: [164] }, ], }, - 'mcp.tool.result.content_count': { - brief: 'Number of content items in the tool result.', + "mcp.tool.result.content_count": { + brief: "Number of content items in the tool result.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.3.0', prs: [171] }, + { version: "0.4.0", prs: [228] }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.tool.result.is_error': { - brief: 'Whether a tool execution resulted in an error.', + "mcp.tool.result.is_error": { + brief: "Whether a tool execution resulted in an error.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: false, deprecation: { - replacement: 'error.type', - reason: - "OTel uses error.type set to 'tool_error' when isError is true. Cannot be automatically backfilled due to type mismatch (boolean vs string).", + replacement: "error.type", + reason: "OTel uses error.type set to 'tool_error' when isError is true. Cannot be automatically backfilled due to type mismatch (boolean vs string)." }, changelog: [ - { version: '0.12.0', prs: [420], description: 'Deprecated in favor of error.type' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Deprecated in favor of error.type" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mcp.transport': { - brief: 'Transport method used for MCP communication.', + "mcp.transport": { + brief: "Transport method used for MCP communication.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'stdio', + example: "stdio", deprecation: { - replacement: 'network.transport', - reason: 'OTel uses the generic network.transport attribute', + replacement: "network.transport", + reason: "OTel uses the generic network.transport attribute" }, - aliases: ['network.transport', 'net.transport'], + aliases: ["network.transport", "net.transport"], changelog: [ - { version: '0.12.0', prs: [420], description: 'Deprecated in favor of network.transport' }, - { version: '0.3.0', prs: [171] }, + { version: "0.12.0", prs: [420], description: "Deprecated in favor of network.transport" }, + { version: "0.3.0", prs: [171] }, ], }, - 'mdc.': { - 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.", + "mdc.": { + 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', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "mdc.some_key='some_value'", - changelog: [{ version: '0.3.0', prs: [176] }], + changelog: [ + { version: "0.3.0", prs: [176] }, + ], }, - 'messaging.batch.message_count': { - brief: 'The number of messages sent, received, or processed in the scope of the batching operation.', + "messaging.batch.message_count": { + brief: "The number of messages sent, received, or processed in the scope of the batching operation.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 10, - changelog: [{ version: '0.6.0', prs: [341], description: 'Added messaging.batch.message_count attribute' }], + changelog: [ + { version: "0.6.0", prs: [341], description: "Added messaging.batch.message_count attribute" }, + ], }, - 'messaging.destination.connection': { - brief: 'The message destination connection.', + "messaging.destination.connection": { + brief: "The message destination connection.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'BestTopic', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "BestTopic", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'messaging.destination.name': { - brief: 'The message destination name.', + "messaging.destination.name": { + brief: "The message destination name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'BestTopic', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "BestTopic", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'messaging.message.body.size': { - brief: 'The size of the message body in bytes.', + "messaging.message.body.size": { + brief: "The size of the message body in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 839, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'messaging.message.conversation_id': { - brief: - 'The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".', + "messaging.message.conversation_id": { + brief: "The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called \"Correlation ID\".", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'MyConversationId', - changelog: [{ version: 'next', prs: [468], description: 'Added messaging.message.conversation_id attribute' }], + example: "MyConversationId", + changelog: [ + { version: "next", prs: [468], description: "Added messaging.message.conversation_id attribute" }, + ], }, - 'messaging.message.envelope.size': { - brief: 'The size of the message body and metadata in bytes.', + "messaging.message.envelope.size": { + brief: "The size of the message body and metadata in bytes.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 1045, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'messaging.message.id': { - brief: 'A value used by the messaging system as an identifier for the message, represented as a string.', + "messaging.message.id": { + brief: "A value used by the messaging system as an identifier for the message, represented as a string.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'f47ac10b58cc4372a5670e02b2c3d479', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "f47ac10b58cc4372a5670e02b2c3d479", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'messaging.message.receive.latency': { - brief: 'The latency between when the message was published and received.', + "messaging.message.receive.latency": { + brief: "The latency between when the message was published and received.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1732847252, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'messaging.message.retry.count': { - brief: 'The amount of attempts to send the message.', + "messaging.message.retry.count": { + brief: "The amount of attempts to send the message.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 2, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'messaging.operation.name': { - brief: 'The name of the messaging operation being performed', + "messaging.operation.name": { + brief: "The name of the messaging operation being performed", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'send', - changelog: [{ version: '0.11.0', prs: [392], description: 'Added messaging.operation.name attribute' }], + example: "send", + changelog: [ + { version: "0.11.0", prs: [392], description: "Added messaging.operation.name attribute" }, + ], }, - 'messaging.operation.type': { - brief: 'A string identifying the type of the messaging operation', + "messaging.operation.type": { + brief: "A string identifying the type of the messaging operation", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'create', - changelog: [{ version: '0.1.0', prs: [51, 127] }], + example: "create", + changelog: [ + { version: "0.1.0", prs: [51, 127] }, + ], }, - 'messaging.rabbitmq.destination.routing_key': { - brief: 'RabbitMQ message routing key.', + "messaging.rabbitmq.destination.routing_key": { + brief: "RabbitMQ message routing key.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'myKey', + example: "myKey", changelog: [ - { version: 'next', prs: [468], description: 'Added messaging.rabbitmq.destination.routing_key attribute' }, + { version: "next", prs: [468], description: "Added messaging.rabbitmq.destination.routing_key attribute" }, ], }, - 'messaging.system': { - brief: 'The messaging system as identified by the client instrumentation.', + "messaging.system": { + brief: "The messaging system as identified by the client instrumentation.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'activemq', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "activemq", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - method: { - brief: 'The HTTP method used.', + "method": { + brief: "The HTTP method used.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'GET', + example: "GET", deprecation: { - replacement: 'http.request.method', + replacement: "http.request.method" }, - aliases: ['http.request.method', 'http.request_method', 'http.method'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["http.request.method", "http.request_method", "http.method"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'middleware.name': { - brief: 'The name of the middleware.', + "middleware.name": { + brief: "The name of the middleware.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'AuthenticationMiddleware', - changelog: [{ version: '0.6.0', prs: [336], description: 'Added middleware.name attribute' }], + example: "AuthenticationMiddleware", + changelog: [ + { version: "0.6.0", prs: [336], description: "Added middleware.name attribute" }, + ], }, - 'navigation.type': { - brief: 'The type of navigation done by a client-side router.', + "navigation.type": { + brief: "The type of navigation done by a client-side router.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'router.push', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "router.push", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 100, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [68] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [68] }, ], }, - 'nel.phase': { - brief: 'If request failed, the phase of its network error. If request succeeded, "application".', + "nel.phase": { + brief: "If request failed, the phase of its network error. If request succeeded, \"application\".", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'application', - changelog: [{ version: '0.1.0', prs: [68, 127] }], + example: "application", + changelog: [ + { version: "0.1.0", prs: [68, 127] }, + ], }, - 'nel.referrer': { + "nel.referrer": { brief: "request's referrer, as determined by the referrer policy associated with its client.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'https://example.com/foo?bar=baz', - changelog: [{ version: '0.1.0', prs: [68, 127] }], + example: "https://example.com/foo?bar=baz", + changelog: [ + { version: "0.1.0", prs: [68, 127] }, + ], }, - 'nel.sampling_function': { - brief: 'The sampling function used to determine if the request should be sampled.', + "nel.sampling_function": { + brief: "The sampling function used to determine if the request should be sampled.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 0.5, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.1.0', prs: [68] }, + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [68] }, ], }, - 'nel.type': { - brief: 'If request failed, the type of its network error. If request succeeded, "ok".', + "nel.type": { + brief: "If request failed, the type of its network error. If request succeeded, \"ok\".", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'dns.unreachable', - changelog: [{ version: '0.1.0', prs: [68, 127] }], + example: "dns.unreachable", + changelog: [ + { version: "0.1.0", prs: [68, 127] }, + ], }, - 'network.connection.effective_type': { - brief: 'Specifies the effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).', + "network.connection.effective_type": { + brief: "Specifies the effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '4g', - aliases: ['effectiveConnectionType'], + example: "4g", + aliases: ["effectiveConnectionType"], changelog: [ - { - version: '0.5.0', - prs: [279], - description: 'Added attribute network.connection.effective_type to be used instead of effectiveConnectionType', - }, + { version: "0.5.0", prs: [279], description: "Added attribute network.connection.effective_type to be used instead of effectiveConnectionType" }, ], }, - 'network.connection.rtt': { - brief: 'Specifies the estimated effective round-trip time of the current connection, in milliseconds.', + "network.connection.rtt": { + brief: "Specifies the estimated effective round-trip time of the current connection, in milliseconds.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 100, - aliases: ['connection.rtt'], + aliases: ["connection.rtt"], changelog: [ - { - version: '0.5.0', - prs: [279], - description: 'Added attribute network.connection.rtt to be used instead of connection.rtt', - }, + { version: "0.5.0", prs: [279], description: "Added attribute network.connection.rtt to be used instead of connection.rtt" }, ], }, - 'network.connection.type': { - brief: 'Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).', + "network.connection.type": { + brief: "Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'wifi', - aliases: ['device.connection_type', 'connectionType'], + example: "wifi", + aliases: ["device.connection_type", "connectionType"], changelog: [ - { - version: '0.5.0', - prs: [279], - description: 'Added attribute network.connection.type to be used instead of connectionType', - }, + { version: "0.5.0", prs: [279], description: "Added attribute network.connection.type to be used instead of connectionType" }, ], }, - 'network.local.address': { - brief: 'Local address of the network connection - IP address or Unix domain socket name.', + "network.local.address": { + brief: "Local address of the network connection - IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '10.1.2.80', - aliases: ['net.host.ip', 'net.sock.host.addr'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "10.1.2.80", + aliases: ["net.host.ip", "net.sock.host.addr"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'network.local.port': { - brief: 'Local port number of the network connection.', + "network.local.port": { + brief: "Local port number of the network connection.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 65400, - aliases: ['net.sock.host.port'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + aliases: ["net.sock.host.port"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'network.peer.address': { - brief: 'Peer address of the network connection - IP address or Unix domain socket name.', + "network.peer.address": { + brief: "Peer address of the network connection - IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: '10.1.2.80', - aliases: ['net.peer.ip', 'net.sock.peer.addr'], - changelog: [{ version: '0.1.0', prs: [108, 127] }, { version: '0.0.0' }], + example: "10.1.2.80", + aliases: ["net.peer.ip", "net.sock.peer.addr"], + changelog: [ + { version: "0.1.0", prs: [108, 127] }, + { version: "0.0.0" }, + ], }, - 'network.peer.port': { - brief: 'Peer port number of the network connection.', + "network.peer.port": { + brief: "Peer port number of the network connection.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 65400, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'network.protocol.name': { - brief: 'OSI application layer or non-OSI equivalent.', + "network.protocol.name": { + brief: "OSI application layer or non-OSI equivalent.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'http', - aliases: ['net.protocol.name', 'mcp.resource.protocol'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "http", + aliases: ["net.protocol.name", "mcp.resource.protocol"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'network.protocol.version': { - brief: 'The actual version of the protocol used for network communication.', + "network.protocol.version": { + brief: "The actual version of the protocol used for network communication.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '1.1', - aliases: ['http.flavor', 'net.protocol.version'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "1.1", + aliases: ["http.flavor", "net.protocol.version"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'network.transport': { - brief: 'OSI transport layer or inter-process communication method.', + "network.transport": { + brief: "OSI transport layer or inter-process communication method.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'tcp', - aliases: ['net.transport', 'mcp.transport'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "tcp", + aliases: ["net.transport", "mcp.transport"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'network.type': { - brief: 'OSI network layer or non-OSI equivalent.', + "network.type": { + brief: "OSI network layer or non-OSI equivalent.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'ipv4', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "ipv4", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'net.host.ip': { - brief: 'Local address of the network connection - IP address or Unix domain socket name.', + "net.host.ip": { + brief: "Local address of the network connection - IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - 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'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["network.local.address", "net.sock.host.addr"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'net.host.name': { - brief: - 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + "net.host.name": { + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'example.com', + example: "example.com", deprecation: { - replacement: 'server.address', + replacement: "server.address" }, - aliases: ['server.address', 'http.server_name', 'http.host'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["server.address", "http.server_name", "http.host"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'net.host.port': { - brief: 'Server port number.', + "net.host.port": { + brief: "Server port number.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 1337, deprecation: { - replacement: 'server.port', + replacement: "server.port" }, - aliases: ['server.port'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + aliases: ["server.port"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'net.peer.ip': { - brief: 'Peer address of the network connection - IP address or Unix domain socket name.', + "net.peer.ip": { + brief: "Peer address of the network connection - IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - 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'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["network.peer.address", "net.sock.peer.addr"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'net.peer.name': { - brief: - 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + "net.peer.name": { + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - 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." }, - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'net.peer.port': { - brief: 'Peer port number.', + "net.peer.port": { + brief: "Peer port number.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', 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." }, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'net.protocol.name': { - brief: 'OSI application layer or non-OSI equivalent.', + "net.protocol.name": { + brief: "OSI application layer or non-OSI equivalent.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'http', + example: "http", deprecation: { - replacement: 'network.protocol.name', + replacement: "network.protocol.name" }, - aliases: ['network.protocol.name', 'mcp.resource.protocol'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["network.protocol.name", "mcp.resource.protocol"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'net.protocol.version': { - brief: 'The actual version of the protocol used for network communication.', + "net.protocol.version": { + brief: "The actual version of the protocol used for network communication.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '1.1', + example: "1.1", deprecation: { - replacement: 'network.protocol.version', + replacement: "network.protocol.version" }, - aliases: ['network.protocol.version', 'http.flavor'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["network.protocol.version", "http.flavor"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'net.sock.family': { - brief: 'OSI transport and network layer', + "net.sock.family": { + brief: "OSI transport and network layer", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - 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." }, - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'net.sock.host.addr': { - brief: 'Local address of the network connection mapping to Unix domain socket name.', + "net.sock.host.addr": { + brief: "Local address of the network connection mapping to Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '/var/my.sock', + example: "/var/my.sock", deprecation: { - replacement: 'network.local.address', + replacement: "network.local.address" }, - aliases: ['network.local.address', 'net.host.ip'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["network.local.address", "net.host.ip"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'net.sock.host.port': { - brief: 'Local port number of the network connection.', + "net.sock.host.port": { + brief: "Local port number of the network connection.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 8080, deprecation: { - replacement: 'network.local.port', + replacement: "network.local.port" }, - aliases: ['network.local.port'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + aliases: ["network.local.port"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'net.sock.peer.addr': { - brief: 'Peer address of the network connection - IP address', + "net.sock.peer.addr": { + brief: "Peer address of the network connection - IP address", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - 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'], - changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], + aliases: ["network.peer.address", "net.peer.ip"], + changelog: [ + { version: "0.1.0", prs: [61, 108, 127] }, + { version: "0.0.0" }, + ], }, - 'net.sock.peer.name': { - brief: 'Peer address of the network connection - Unix domain socket name', + "net.sock.peer.name": { + brief: "Peer address of the network connection - Unix domain socket name", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - 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" }, - changelog: [{ version: '0.1.0', prs: [61, 119, 127] }, { version: '0.0.0' }], + changelog: [ + { version: "0.1.0", prs: [61, 119, 127] }, + { version: "0.0.0" }, + ], }, - 'net.sock.peer.port': { - brief: 'Peer port number of the network connection.', + "net.sock.peer.port": { + brief: "Peer port number of the network connection.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 8080, deprecation: { - replacement: 'network.peer.port', + replacement: "network.peer.port" }, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'net.transport': { - brief: 'OSI transport layer or inter-process communication method.', + "net.transport": { + brief: "OSI transport layer or inter-process communication method.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'tcp', + example: "tcp", deprecation: { - replacement: 'network.transport', + replacement: "network.transport" }, - aliases: ['network.transport', 'mcp.transport'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["network.transport", "mcp.transport"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'os.build': { - brief: 'The build ID of the operating system.', + "os.build": { + brief: "The build ID of the operating system.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1234567890', + example: "1234567890", deprecation: { - replacement: 'os.build_id', + replacement: "os.build_id" }, - aliases: ['os.build_id'], + aliases: ["os.build_id"], changelog: [ - { version: '0.5.0', prs: [301], description: 'Added os.build attribute, deprecated in favor of os.build_id' }, + { version: "0.5.0", prs: [301], description: "Added os.build attribute, deprecated in favor of os.build_id" }, ], }, - 'os.build_id': { - brief: 'The build ID of the operating system.', + "os.build_id": { + brief: "The build ID of the operating system.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '1234567890', - aliases: ['os.build'], + example: "1234567890", + aliases: ["os.build"], changelog: [ - { version: '0.5.0', prs: [301], description: 'Added os.build as alias' }, - { version: '0.1.0', prs: [127] }, - { version: '0.0.0' }, + { version: "0.5.0", prs: [301], description: "Added os.build as alias" }, + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, ], }, - 'os.description': { - brief: - 'Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.', + "os.description": { + brief: "Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'Ubuntu 18.04.1 LTS', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "Ubuntu 18.04.1 LTS", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'os.kernel_version': { - brief: 'An independent kernel version string. Typically the entire output of the `uname` syscall.', + "os.kernel_version": { + brief: "An independent kernel version string. Typically the entire output of the `uname` syscall.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '20.2.0', - changelog: [{ version: '0.5.0', prs: [301], description: 'Added os.kernel_version attribute' }], + example: "20.2.0", + changelog: [ + { version: "0.5.0", prs: [301], description: "Added os.kernel_version attribute" }, + ], }, - 'os.name': { - brief: 'Human readable operating system name.', + "os.name": { + brief: "Human readable operating system name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'Ubuntu', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "Ubuntu", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'os.raw_description': { - brief: - 'An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given.', + "os.raw_description": { + brief: "An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Ubuntu 22.04.4 LTS (Jammy Jellyfish)', - changelog: [{ version: '0.5.0', prs: [301], description: 'Added os.raw_description attribute' }], + example: "Ubuntu 22.04.4 LTS (Jammy Jellyfish)", + changelog: [ + { version: "0.5.0", prs: [301], description: "Added os.raw_description attribute" }, + ], }, - 'os.rooted': { - brief: 'Whether the operating system has been jailbroken or rooted.', + "os.rooted": { + brief: "Whether the operating system has been jailbroken or rooted.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.5.0', prs: [301], description: 'Added os.rooted attribute' }], + changelog: [ + { version: "0.5.0", prs: [301], description: "Added os.rooted attribute" }, + ], }, - 'os.theme': { - brief: 'Whether the OS runs in dark mode or light mode.', + "os.theme": { + brief: "Whether the OS runs in dark mode or light mode.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'dark', - changelog: [{ version: '0.5.0', prs: [301], description: 'Added os.theme attribute' }], + example: "dark", + changelog: [ + { version: "0.5.0", prs: [301], description: "Added os.theme attribute" }, + ], }, - 'os.type': { - brief: 'The operating system type.', + "os.type": { + brief: "The operating system type.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'linux', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "linux", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'os.version': { - brief: 'The version of the operating system.', + "os.version": { + brief: "The version of the operating system.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '18.04.2', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "18.04.2", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'otel.kind': { - brief: - 'The span kind (https://opentelemetry.io/docs/concepts/signals/traces/#span-kind). Deprecated, use `sentry.kind` instead.', + "otel.kind": { + brief: "The span kind (https://opentelemetry.io/docs/concepts/signals/traces/#span-kind). Deprecated, use `sentry.kind` instead.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'SERVER', + example: "SERVER", deprecation: { - replacement: 'sentry.kind', - reason: 'Deprecated in favor of sentry.kind', + replacement: "sentry.kind", + reason: "Deprecated in favor of sentry.kind" }, - aliases: ['sentry.kind'], - changelog: [{ version: '0.13.0', prs: [440], description: 'Added otel.kind attribute' }], + aliases: ["sentry.kind"], + changelog: [ + { version: "0.13.0", prs: [440], description: "Added otel.kind attribute" }, + ], }, - 'otel.scope.name': { - brief: 'The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).', + "otel.scope.name": { + brief: "The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'io.opentelemetry.contrib.mongodb', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "io.opentelemetry.contrib.mongodb", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'otel.scope.version': { - brief: 'The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).', + "otel.scope.version": { + brief: "The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '2.4.5', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "2.4.5", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'otel.status_code': { - brief: 'Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.', + "otel.status_code": { + brief: "Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'OK', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "OK", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'otel.status_description': { - brief: 'Description of the Status if it has a value, otherwise not set.', + "otel.status_description": { + brief: "Description of the Status if it has a value, otherwise not set.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'resource not found', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "resource not found", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'params.': { - brief: - 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', + "params.": { + brief: "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "params.id='123'", - aliases: ['url.path.parameter.'], - changelog: [{ version: '0.1.0', prs: [103] }], + aliases: ["url.path.parameter."], + changelog: [ + { version: "0.1.0", prs: [103] }, + ], }, - 'performance.activationStart': { - brief: 'The time between initiating a navigation to a page and the browser activating the page', + "performance.activationStart": { + brief: "The time between initiating a navigation to a page and the browser activating the page", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1.983, deprecation: { - replacement: 'browser.performance.navigation.activation_start', - reason: 'The activationStart is now recorded as the browser.performance.navigation.activation_start attribute.', + replacement: "browser.performance.navigation.activation_start", + reason: "The activationStart is now recorded as the browser.performance.navigation.activation_start attribute." }, - aliases: ['browser.performance.navigation.activation_start'], - changelog: [{ version: '0.5.0', prs: [321], description: 'Added performance.activationStart attribute' }], + aliases: ["browser.performance.navigation.activation_start"], + changelog: [ + { version: "0.5.0", prs: [321], description: "Added performance.activationStart attribute" }, + ], }, - 'performance.timeOrigin': { + "performance.timeOrigin": { brief: "The browser's performance.timeOrigin timestamp representing the time when the pageload was initiated", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1776185678.886, deprecation: { - replacement: 'browser.performance.time_origin', - reason: 'The timeOrigin is now recorded as the browser.performance.time_origin attribute.', + replacement: "browser.performance.time_origin", + reason: "The timeOrigin is now recorded as the browser.performance.time_origin attribute." }, - aliases: ['browser.performance.time_origin'], - changelog: [{ version: '0.5.0', prs: [321], description: 'Added performance.timeOrigin attribute' }], + aliases: ["browser.performance.time_origin"], + changelog: [ + { version: "0.5.0", prs: [321], description: "Added performance.timeOrigin attribute" }, + ], }, - previous_route: { - brief: 'Also used by mobile SDKs to indicate the previous route in the application.', + "previous_route": { + brief: "Also used by mobile SDKs to indicate the previous route in the application.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'HomeScreen', - changelog: [{ version: '0.1.0', prs: [74] }, { version: '0.0.0' }], + example: "HomeScreen", + changelog: [ + { version: "0.1.0", prs: [74] }, + { version: "0.0.0" }, + ], }, - 'process.command_args': { - brief: 'All the command arguments (including the command/executable itself) as received by the process.', + "process.command_args": { + brief: "All the command arguments (including the command/executable itself) as received by the process.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: ['cmd/otecol', '--config=config.yaml'], - changelog: [{ version: '0.6.0', prs: [327], description: 'Added process.command_args attribute' }], + example: ["cmd/otecol","--config=config.yaml"], + changelog: [ + { version: "0.6.0", prs: [327], description: "Added process.command_args attribute" }, + ], }, - 'process.executable.name': { - brief: 'The name of the executable that started the process.', + "process.executable.name": { + brief: "The name of the executable that started the process.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'getsentry', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "getsentry", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'process.pid': { - brief: 'The process ID of the running process.', + "process.pid": { + brief: "The process ID of the running process.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 12345, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'Eclipse OpenJ9 VM openj9-0.21.0', - aliases: ['runtime.raw_description'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "Eclipse OpenJ9 VM openj9-0.21.0", + aliases: ["runtime.raw_description"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'process.runtime.engine.name': { - brief: 'The name of the runtime engine.', + "process.runtime.engine.name": { + brief: "The name of the runtime engine.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'v8', - changelog: [{ version: '0.0.0' }], + example: "v8", + changelog: [ + { version: "0.0.0" }, + ], }, - 'process.runtime.engine.version': { - brief: 'The version of the runtime engine.', + "process.runtime.engine.version": { + brief: "The version of the runtime engine.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '12.9.202.13-rusty', - changelog: [{ version: '0.0.0' }], + example: "12.9.202.13-rusty", + changelog: [ + { version: "0.0.0" }, + ], }, - 'process.runtime.name': { - brief: 'The name of the runtime. Equivalent to `name` in the Sentry runtime context.', + "process.runtime.name": { + brief: "The name of the runtime. Equivalent to `name` in the Sentry runtime context.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'node', - aliases: ['runtime.name'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "node", + aliases: ["runtime.name"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '18.04.2', - aliases: ['runtime.version'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "18.04.2", + aliases: ["runtime.version"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'query.': { - brief: 'An item in a query string. Usually added by client-side routing frameworks like vue-router.', + "query.": { + brief: "An item in a query string. Usually added by client-side routing frameworks like vue-router.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', 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." }, - changelog: [{ version: '0.1.0', prs: [103] }], + changelog: [ + { version: "0.1.0", prs: [103] }, + ], }, - 'react.version': { - brief: 'The version of the React framework', + "react.version": { + brief: "The version of the React framework", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '18.2.0', - changelog: [{ version: '0.7.0', prs: [368], description: 'Added react.version attribute' }], + example: "18.2.0", + changelog: [ + { version: "0.7.0", prs: [368], description: "Added react.version attribute" }, + ], }, - release: { - brief: 'The sentry release.', + "release": { + brief: "The sentry release.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'production', + example: "production", deprecation: { - replacement: 'sentry.release', + replacement: "sentry.release" }, - aliases: ['sentry.release'], - changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], + aliases: ["sentry.release"], + changelog: [ + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, + ], }, - 'remix.action_form_data.': { - brief: 'Remix form data, being the form data key, the value being the form data value.', + "remix.action_form_data.": { + brief: "Remix form data, being the form data key, the value being the form data value.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "http.response.header.text='test'", - changelog: [{ version: '0.1.0', prs: [103] }], + changelog: [ + { version: "0.1.0", prs: [103] }, + ], }, - replay_id: { - brief: 'The id of the sentry replay.', + "replay_id": { + brief: "The id of the sentry replay.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '123e4567e89b12d3a456426614174000', + example: "123e4567e89b12d3a456426614174000", deprecation: { - replacement: 'sentry.replay_id', + replacement: "sentry.replay_id" }, - aliases: ['sentry.replay_id'], - changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + aliases: ["sentry.replay_id"], + changelog: [ + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'resource.deployment.environment': { - brief: 'The software deployment environment name.', + "resource.deployment.environment": { + brief: "The software deployment environment name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'production', + example: "production", deprecation: { - replacement: 'sentry.environment', + replacement: "sentry.environment" }, - changelog: [{ version: '0.5.0', prs: [266] }], + changelog: [ + { version: "0.5.0", prs: [266] }, + ], }, - 'resource.deployment.environment.name': { - brief: 'The software deployment environment name.', + "resource.deployment.environment.name": { + brief: "The software deployment environment name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'production', + example: "production", deprecation: { - replacement: 'sentry.environment', + replacement: "sentry.environment" }, - changelog: [{ version: '0.3.1', prs: [196] }], + changelog: [ + { version: "0.3.1", prs: [196] }, + ], }, - 'resource.render_blocking_status': { - brief: 'The render blocking status of the resource.', + "resource.render_blocking_status": { + brief: "The render blocking status of the resource.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'non-blocking', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "non-blocking", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'App\\Controller::indexAction', + example: "App\\Controller::indexAction", deprecation: { - replacement: 'http.route', + replacement: "http.route" }, - aliases: ['http.route'], - changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], + aliases: ["http.route"], + changelog: [ + { version: "0.1.0", prs: [61, 74] }, + { version: "0.0.0" }, + ], }, - 'rpc.grpc.status_code': { - brief: 'The numeric status code of the gRPC request.', + "rpc.grpc.status_code": { + brief: "The numeric status code of the gRPC request.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 2, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'rpc.method': { - brief: 'The fully-qualified logical name of the method from the RPC interface perspective.', + "rpc.method": { + brief: "The fully-qualified logical name of the method from the RPC interface perspective.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'com.example.ExampleService/exampleMethod', - changelog: [{ version: '0.7.0', prs: [351], description: 'Added rpc.method attribute' }], + example: "com.example.ExampleService/exampleMethod", + changelog: [ + { version: "0.7.0", prs: [351], description: "Added rpc.method attribute" }, + ], }, - 'rpc.response.status_code': { - brief: 'Status code of the RPC returned by the RPC server or generated by the client.', + "rpc.response.status_code": { + brief: "Status code of the RPC returned by the RPC server or generated by the client.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'DEADLINE_EXCEEDED', - changelog: [{ version: '0.7.0', prs: [352], description: 'Added rpc.response.status_code attribute' }], + example: "DEADLINE_EXCEEDED", + changelog: [ + { version: "0.7.0", prs: [352], description: "Added rpc.response.status_code attribute" }, + ], }, - 'rpc.service': { - brief: 'The full (logical) name of the service being called, including its package name, if applicable.', + "rpc.service": { + brief: "The full (logical) name of the service being called, including its package name, if applicable.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'myService.BestService', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "myService.BestService", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'runtime.build': { - brief: 'The application build string, when it is separate from the version.', + "runtime.build": { + brief: "The application build string, when it is separate from the version.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'stable', + example: "stable", deprecation: { - reason: - 'The runtime.* namespace is deprecated in favor of process.runtime.*. No direct OTel equivalent exists for this attribute.', + reason: "The runtime.* namespace is deprecated in favor of process.runtime.*. No direct OTel equivalent exists for this attribute." }, - changelog: [{ version: '0.11.0', prs: [383], description: 'Added and deprecated runtime.build attribute' }], + changelog: [ + { version: "0.11.0", prs: [383], description: "Added and deprecated runtime.build attribute" }, + ], }, - 'runtime.name': { - brief: 'The name of the runtime. For example node, CPython, or rustc.', + "runtime.name": { + brief: "The name of the runtime. For example node, CPython, or rustc.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'node', + example: "node", deprecation: { - replacement: 'process.runtime.name', - reason: 'Prefer OTel-aligned process.runtime.name', + replacement: "process.runtime.name", + reason: "Prefer OTel-aligned process.runtime.name" }, - aliases: ['process.runtime.name'], + aliases: ["process.runtime.name"], changelog: [ - { - version: '0.11.0', - prs: [383], - description: 'Added and deprecated runtime.name attribute in favor of process.runtime.name', - }, + { version: "0.11.0", prs: [383], description: "Added and deprecated runtime.name attribute in favor of process.runtime.name" }, ], }, - 'runtime.raw_description': { - brief: - 'Unprocessed description string as obtained from the runtime. Used to extract name and version for well-known runtimes.', + "runtime.raw_description": { + brief: "Unprocessed description string as obtained from the runtime. Used to extract name and version for well-known runtimes.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Eclipse OpenJ9 VM openj9-0.21.0', + example: "Eclipse OpenJ9 VM openj9-0.21.0", deprecation: { - replacement: 'process.runtime.description', - reason: 'Prefer OTel-aligned process.runtime.description', + replacement: "process.runtime.description", + reason: "Prefer OTel-aligned process.runtime.description" }, - aliases: ['process.runtime.description'], + aliases: ["process.runtime.description"], changelog: [ - { - version: '0.11.0', - prs: [383], - description: 'Added and deprecated runtime.raw_description attribute in favor of process.runtime.description', - }, + { version: "0.11.0", prs: [383], description: "Added and deprecated runtime.raw_description attribute in favor of process.runtime.description" }, ], }, - 'runtime.version': { - brief: 'The version of the runtime.', + "runtime.version": { + brief: "The version of the runtime.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '18.04.2', + example: "18.04.2", deprecation: { - replacement: 'process.runtime.version', - reason: 'Prefer OTel-aligned process.runtime.version', + replacement: "process.runtime.version", + reason: "Prefer OTel-aligned process.runtime.version" }, - aliases: ['process.runtime.version'], + aliases: ["process.runtime.version"], changelog: [ - { - version: '0.11.0', - prs: [383], - description: 'Added and deprecated runtime.version attribute in favor of process.runtime.version', - }, + { version: "0.11.0", prs: [383], description: "Added and deprecated runtime.version attribute in favor of process.runtime.version" }, ], }, - 'score.': { - brief: - 'The weighted performance score for a web vital. This is defined as `score.weight.` * `score.ratio.`.', + "score.": { + brief: "The weighted performance score for a web vital. This is defined as `score.weight.` * `score.ratio.`.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: 'score.cls=0.1723', - changelog: [{ version: '0.7.0', prs: [355], description: 'Added score. attribute' }], + example: "score.cls=0.1723", + changelog: [ + { version: "0.7.0", prs: [355], description: "Added score. attribute" }, + ], }, - 'score.ratio.': { - brief: 'The score for a web vital, normalized to a number between 0 and 1.', + "score.ratio.": { + brief: "The score for a web vital, normalized to a number between 0 and 1.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: 'score.ratio.inp=0.7748', - changelog: [{ version: '0.7.0', prs: [355], description: 'Added score.ratio. attribute' }], + example: "score.ratio.inp=0.7748", + changelog: [ + { version: "0.7.0", prs: [355], description: "Added score.ratio. attribute" }, + ], }, - 'score.total': { - brief: - 'The total performance score of a span. This is the sum of individual weighted web vital scores (see `score.`).', + "score.total": { + brief: "The total performance score of a span. This is the sum of individual weighted web vital scores (see `score.`).", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - changelog: [{ version: '0.7.0', prs: [355], description: 'Added score.total attribute' }], + changelog: [ + { version: "0.7.0", prs: [355], description: "Added score.total attribute" }, + ], }, - 'score.weight.': { + "score.weight.": { brief: "The relative weight of a web vital in a span's performance score.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: 'score.weight.fcp=0.25', - changelog: [{ version: '0.7.0', prs: [355], description: 'Added score.weight. attribute' }], + example: "score.weight.fcp=0.25", + changelog: [ + { version: "0.7.0", prs: [355], description: "Added score.weight. attribute" }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'SELECT', - changelog: [{ version: '0.4.0', prs: [212] }], + example: "SELECT", + changelog: [ + { version: "0.4.0", prs: [212] }, + ], }, - 'sentry.browser.name': { - brief: 'The name of the browser.', + "sentry.browser.name": { + brief: "The name of the browser.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Chrome', + example: "Chrome", deprecation: { - replacement: 'browser.name', + replacement: "browser.name" }, - aliases: ['browser.name'], - changelog: [{ version: '0.1.0', prs: [139] }], + aliases: ["browser.name"], + changelog: [ + { version: "0.1.0", prs: [139] }, + ], }, - 'sentry.browser.version': { - brief: 'The version of the browser.', + "sentry.browser.version": { + brief: "The version of the browser.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '120.0.6099.130', + example: "120.0.6099.130", deprecation: { - replacement: 'browser.version', + replacement: "browser.version" }, - aliases: ['browser.version'], - changelog: [{ version: '0.1.0', prs: [139] }], + aliases: ["browser.version"], + changelog: [ + { version: "0.1.0", prs: [139] }, + ], }, - 'sentry.cancellation_reason': { - brief: 'The reason why a span ended early.', + "sentry.cancellation_reason": { + brief: "The reason why a span ended early.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'document.hidden', - changelog: [{ version: '0.0.0' }], + example: "document.hidden", + changelog: [ + { version: "0.0.0" }, + ], }, - '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'.", + "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'.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'db', - changelog: [{ version: '0.4.0', prs: [218] }], + example: "db", + changelog: [ + { version: "0.4.0", prs: [218] }, + ], }, - 'sentry.client_sample_rate': { - brief: 'Rate at which a span was sampled in the SDK.', + "sentry.client_sample_rate": { + brief: "Rate at which a span was sampled in the SDK.", type: 'double', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', example: 0.5, - changelog: [{ version: '0.1.0', prs: [102] }], + changelog: [ + { version: "0.1.0", prs: [102] }, + ], }, - 'sentry.description': { - brief: 'The human-readable description of a span.', + "sentry.description": { + brief: "The human-readable description of a span.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'index view query', - changelog: [{ version: '0.1.0', prs: [135] }], + example: "index view query", + changelog: [ + { version: "0.1.0", prs: [135] }, + ], }, - 'sentry.dist': { - brief: 'The sentry dist.', + "sentry.dist": { + brief: "The sentry dist.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '1.0', - changelog: [{ version: '0.0.0' }], + example: "1.0", + changelog: [ + { version: "0.0.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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'example.com', - changelog: [{ version: '0.4.0', prs: [212] }], + example: "example.com", + changelog: [ + { version: "0.4.0", prs: [212] }, + ], }, - 'sentry.dsc.environment': { - brief: 'The environment from the dynamic sampling context.', + "sentry.dsc.environment": { + brief: "The environment from the dynamic sampling context.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'internal', - example: 'prod', - changelog: [{ version: '0.3.0', prs: [185] }], + example: "prod", + changelog: [ + { version: "0.3.0", prs: [185] }, + ], }, - 'sentry.dsc.project_id': { - brief: - 'The ID of the project where the trace originated (i.e. the project of the SDK that started the trace). Propagated through the dynamic sampling context and set by Relay during ingestion.', + "sentry.dsc.project_id": { + brief: "The ID of the project where the trace originated (i.e. the project of the SDK that started the trace). Propagated through the dynamic sampling context and set by Relay during ingestion.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'internal', - example: '12345', - changelog: [{ version: '0.7.0', prs: [358], description: 'Add sentry.dsc.project_id as an attribute' }], + example: "12345", + changelog: [ + { version: "0.7.0", prs: [358], description: "Add sentry.dsc.project_id as an attribute" }, + ], }, - 'sentry.dsc.public_key': { - brief: 'The public key from the dynamic sampling context.', + "sentry.dsc.public_key": { + brief: "The public key from the dynamic sampling context.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'internal', - example: 'c51734c603c4430eb57cb0a5728a479d', - changelog: [{ version: '0.3.0', prs: [185] }], + example: "c51734c603c4430eb57cb0a5728a479d", + changelog: [ + { version: "0.3.0", prs: [185] }, + ], }, - 'sentry.dsc.release': { - brief: 'The release identifier from the dynamic sampling context.', + "sentry.dsc.release": { + brief: "The release identifier from the dynamic sampling context.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'internal', - example: 'frontend@e8211be71b214afab5b85de4b4c54be3714952bb', - changelog: [{ version: '0.3.0', prs: [185] }], + example: "frontend@e8211be71b214afab5b85de4b4c54be3714952bb", + changelog: [ + { version: "0.3.0", prs: [185] }, + ], }, - 'sentry.dsc.sampled': { - brief: 'Whether the event was sampled according to the dynamic sampling context.', + "sentry.dsc.sampled": { + brief: "Whether the event was sampled according to the dynamic sampling context.", type: 'boolean', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'internal', example: true, - changelog: [{ version: '0.3.0', prs: [185] }], + changelog: [ + { version: "0.3.0", prs: [185] }, + ], }, - 'sentry.dsc.sample_rate': { - brief: 'The sample rate from the dynamic sampling context.', + "sentry.dsc.sample_rate": { + brief: "The sample rate from the dynamic sampling context.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'internal', - example: '1.0', - changelog: [{ version: '0.3.0', prs: [185] }], + example: "1.0", + changelog: [ + { version: "0.3.0", prs: [185] }, + ], }, - 'sentry.dsc.trace_id': { - brief: 'The trace ID from the dynamic sampling context.', + "sentry.dsc.trace_id": { + brief: "The trace ID from the dynamic sampling context.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'internal', - example: '047372980460430cbc78d9779df33a46', - changelog: [{ version: '0.3.0', prs: [185] }], + example: "047372980460430cbc78d9779df33a46", + changelog: [ + { version: "0.3.0", prs: [185] }, + ], }, - 'sentry.dsc.transaction': { - brief: 'The transaction name from the dynamic sampling context.', + "sentry.dsc.transaction": { + brief: "The transaction name from the dynamic sampling context.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'internal', - example: '/issues/errors-outages/', - changelog: [{ version: '0.3.0', prs: [185] }], + example: "/issues/errors-outages/", + changelog: [ + { version: "0.3.0", prs: [185] }, + ], }, - 'sentry.environment': { - brief: 'The sentry environment.', + "sentry.environment": { + brief: "The sentry environment.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'production', - aliases: ['environment'], - changelog: [{ version: '0.0.0' }], + example: "production", + aliases: ["environment"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.exclusive_time': { - brief: 'The exclusive time duration of the span in milliseconds.', + "sentry.exclusive_time": { + brief: "The exclusive time duration of the span in milliseconds.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.3.0', prs: [160] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.3.0", prs: [160] }, + { version: "0.0.0" }, + ], }, - 'sentry.graphql.operation': { - brief: 'Indicates the type of graphql operation, emitted by the Javascript SDK.', + "sentry.graphql.operation": { + brief: "Indicates the type of graphql operation, emitted by the Javascript SDK.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'getUserById', - changelog: [{ version: '0.3.1', prs: [190] }], + example: "getUserById", + changelog: [ + { version: "0.3.1", prs: [190] }, + ], }, - 'sentry.group': { - brief: - 'Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.', + "sentry.group": { + brief: "Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - changelog: [{ version: '0.4.0', prs: [212] }], + changelog: [ + { version: "0.4.0", prs: [212] }, + ], }, - 'sentry.http.prefetch': { - brief: 'If an http request was a prefetch request.', + "sentry.http.prefetch": { + brief: "If an http request was a prefetch request.", type: 'boolean', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.idle_span_finish_reason': { - brief: 'The reason why an idle span ended early.', + "sentry.idle_span_finish_reason": { + brief: "The reason why an idle span ended early.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'idleTimeout', - changelog: [{ version: '0.0.0' }], + example: "idleTimeout", + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.is_remote': { + "sentry.is_remote": { brief: "Indicates whether a span's parent is remote.", type: 'boolean', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.3.1', prs: [190] }], + changelog: [ + { version: "0.3.1", prs: [190] }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'server', - aliases: ['otel.kind'], - changelog: [{ version: '0.3.1', prs: [190] }], + example: "server", + aliases: ["otel.kind"], + changelog: [ + { version: "0.3.1", prs: [190] }, + ], }, - 'sentry.main_thread': { - brief: 'Whether the span or event occurred on the main thread. Computed by Relay and should not be set by SDKs.', + "sentry.main_thread": { + brief: "Whether the span or event occurred on the main thread. Computed by Relay and should not be set by SDKs.", type: 'boolean', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.5.0' }], + changelog: [ + { version: "0.5.0" }, + ], }, - 'sentry.message.parameter.': { - 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)", + "sentry.message.parameter.": { + 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', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', example: "sentry.message.parameter.0='123'", - changelog: [{ version: '0.1.0', prs: [116] }], + changelog: [ + { version: "0.1.0", prs: [116] }, + ], }, - 'sentry.message.template': { - brief: 'The parameterized template string.', + "sentry.message.template": { + brief: "The parameterized template string.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Hello, {name}!', - changelog: [{ version: '0.1.0', prs: [116] }], + example: "Hello, {name}!", + changelog: [ + { version: "0.1.0", prs: [116] }, + ], }, - 'sentry.metric.source': { - brief: - 'The provenance of a metric. For example, this can be set to indicate if a metric was generated by Relay from a span.', + "sentry.metric.source": { + brief: "The provenance of a metric. For example, this can be set to indicate if a metric was generated by Relay from a span.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'span', - changelog: [{ version: 'next', description: 'Added sentry.metric.source attribute' }], + example: "span", + changelog: [ + { version: "next", description: "Added sentry.metric.source attribute" }, + ], }, - 'sentry.mobile': { - brief: 'Whether the application is using a mobile SDK. Computed by Relay and should not be set by SDKs.', + "sentry.mobile": { + brief: "Whether the application is using a mobile SDK. Computed by Relay and should not be set by SDKs.", type: 'boolean', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.5.0' }], + changelog: [ + { version: "0.5.0" }, + ], }, - 'sentry.module.': { - brief: 'A module that was loaded in the process. The key is the name of the module.', + "sentry.module.": { + brief: "A module that was loaded in the process. The key is the name of the module.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "sentry.module.brianium/paratest='v7.7.0'", - changelog: [{ version: '0.1.0', prs: [103] }], + changelog: [ + { version: "0.1.0", prs: [103] }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '/posts/[id]/layout', - changelog: [{ version: '0.1.0', prs: [54, 106] }], + example: "/posts/[id]/layout", + changelog: [ + { version: "0.1.0", prs: [54, 106] }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'generateMetadata', - changelog: [{ version: '0.1.0', prs: [54, 106] }], + example: "generateMetadata", + changelog: [ + { version: "0.1.0", prs: [54, 106] }, + ], }, - 'sentry.normalized_db_query': { - brief: 'The normalized version of `db.query.text`.', + "sentry.normalized_db_query": { + brief: "The normalized version of `db.query.text`.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', - changelog: [{ version: '0.3.1', prs: [194] }], + example: "SELECT .. FROM sentry_project WHERE (project_id = %s)", + changelog: [ + { version: "0.3.1", prs: [194] }, + ], }, - 'sentry.normalized_db_query.hash': { - brief: 'The hash of `sentry.normalized_db_query`.', + "sentry.normalized_db_query.hash": { + brief: "The hash of `sentry.normalized_db_query`.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - changelog: [{ version: '0.4.0', prs: [200] }], + changelog: [ + { version: "0.4.0", prs: [200] }, + ], }, - '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).', + "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).", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', - changelog: [{ version: '0.4.0', prs: [212] }], + example: "SELECT .. FROM sentry_project WHERE (project_id = %s)", + changelog: [ + { version: "0.4.0", prs: [212] }, + ], }, - 'sentry.observed_timestamp_nanos': { - brief: 'The timestamp at which an envelope was received by Relay, in nanoseconds.', + "sentry.observed_timestamp_nanos": { + brief: "The timestamp at which an envelope was received by Relay, in nanoseconds.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '1544712660300000000', + example: "1544712660300000000", changelog: [ - { version: '0.3.0', prs: [174] }, - { version: '0.2.0', prs: [137] }, + { version: "0.3.0", prs: [174] }, + { version: "0.2.0", prs: [137] }, ], }, - 'sentry.op': { - brief: 'The operation of a span.', + "sentry.op": { + brief: "The operation of a span.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'http.client', - changelog: [{ version: '0.0.0' }], + example: "http.client", + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.origin': { - brief: 'The origin of the instrumentation (e.g. span, log, etc.)', + "sentry.origin": { + brief: "The origin of the instrumentation (e.g. span, log, etc.)", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'auto.http.otel.fastify', - changelog: [{ version: '0.1.0', prs: [68] }, { version: '0.0.0' }], + example: "auto.http.otel.fastify", + changelog: [ + { version: "0.1.0", prs: [68] }, + { version: "0.0.0" }, + ], }, - 'sentry.platform': { - brief: 'The sdk platform that generated the event.', + "sentry.platform": { + brief: "The sdk platform that generated the event.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'php', - changelog: [{ version: '0.0.0' }], + example: "php", + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.profiler_id': { - brief: 'The id of the currently running profiler (continuous profiling)', + "sentry.profiler_id": { + brief: "The id of the currently running profiler (continuous profiling)", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '18779b64dd35d1a538e7ce2dd2d3fad3', - changelog: [{ version: '0.4.0', prs: [242] }], + example: "18779b64dd35d1a538e7ce2dd2d3fad3", + changelog: [ + { version: "0.4.0", prs: [242] }, + ], }, - 'sentry.profile_id': { - brief: - 'The ID of the Sentry profile the span is associated with. This is only meaningful for transaction-based profiling.', + "sentry.profile_id": { + brief: "The ID of the Sentry profile the span is associated with. This is only meaningful for transaction-based profiling.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '123e4567e89b12d3a456426614174000', - changelog: [{ version: '0.6.0', prs: [344], description: 'Added sentry.profile_id attribute' }], + example: "123e4567e89b12d3a456426614174000", + changelog: [ + { version: "0.6.0", prs: [344], description: "Added sentry.profile_id attribute" }, + ], }, - 'sentry.release': { - brief: 'The sentry release.', + "sentry.release": { + brief: "The sentry release.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '7.0.0', - aliases: ['service.version', 'release'], - changelog: [{ version: '0.0.0' }], + example: "7.0.0", + aliases: ["service.version", "release"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.replay_id': { - brief: 'The id of the sentry replay.', + "sentry.replay_id": { + brief: "The id of the sentry replay.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '123e4567e89b12d3a456426614174000', - aliases: ['replay_id'], - changelog: [{ version: '0.0.0' }], + example: "123e4567e89b12d3a456426614174000", + aliases: ["replay_id"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.replay_is_buffering': { - brief: - 'A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).', + "sentry.replay_is_buffering": { + brief: "A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", type: 'boolean', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.3.0', prs: [185] }], + changelog: [ + { version: "0.3.0", prs: [185] }, + ], }, - 'sentry.report_event': { - brief: '(Deprecated) The event that caused the SDK to report CLS or LCP (pagehide or navigation)', + "sentry.report_event": { + brief: "(Deprecated) The event that caused the SDK to report CLS or LCP (pagehide or navigation)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'pagehide', + example: "pagehide", deprecation: { - reason: - 'The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required.', + reason: "The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required." }, - changelog: [{ version: '0.5.0', prs: [320], description: 'Added sentry.report_event attribute' }], + changelog: [ + { version: "0.5.0", prs: [320], description: "Added sentry.report_event attribute" }, + ], }, - '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.', + "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.", type: 'string[]', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: ['InboundFilters', 'FunctionToString', 'BrowserApiErrors', 'Breadcrumbs'], - changelog: [{ version: '0.0.0', prs: [42] }], + example: ["InboundFilters","FunctionToString","BrowserApiErrors","Breadcrumbs"], + changelog: [ + { version: "0.0.0", prs: [42] }, + ], }, - 'sentry.sdk.name': { - brief: 'The sentry sdk name.', + "sentry.sdk.name": { + brief: "The sentry sdk name.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '@sentry/react', - changelog: [{ version: '0.0.0' }], + example: "@sentry/react", + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.sdk.version': { - brief: 'The sentry sdk version.', + "sentry.sdk.version": { + brief: "The sentry sdk version.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '7.0.0', - changelog: [{ version: '0.0.0' }], + example: "7.0.0", + changelog: [ + { version: "0.0.0" }, + ], }, - 'sentry.segment.id': { - brief: 'The segment ID of a span', + "sentry.segment.id": { + brief: "The segment ID of a span", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '051581bf3cb55c13', - aliases: ['sentry.segment_id'], - changelog: [{ version: '0.1.0', prs: [107, 124] }], + example: "051581bf3cb55c13", + aliases: ["sentry.segment_id"], + changelog: [ + { version: "0.1.0", prs: [107, 124] }, + ], }, - 'sentry.segment_id': { - brief: 'The segment ID of a span', + "sentry.segment_id": { + brief: "The segment ID of a span", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: '051581bf3cb55c13', + example: "051581bf3cb55c13", deprecation: { - replacement: 'sentry.segment.id', + replacement: "sentry.segment.id" }, - aliases: ['sentry.segment.id'], - changelog: [{ version: '0.1.0', prs: [124] }], + aliases: ["sentry.segment.id"], + changelog: [ + { version: "0.1.0", prs: [124] }, + ], }, - 'sentry.segment.name': { - brief: 'The segment name of a span', + "sentry.segment.name": { + brief: "The segment name of a span", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'GET /user', - aliases: ['sentry.transaction', 'transaction'], + example: "GET /user", + aliases: ["sentry.transaction", "transaction"], changelog: [ - { version: '0.6.0', prs: [345], description: 'Added sentry.transaction and transaction aliases' }, - { version: '0.1.0', prs: [104] }, + { version: "0.6.0", prs: [345], description: "Added sentry.transaction and transaction aliases" }, + { version: "0.1.0", prs: [104] }, ], }, - 'sentry.server_sample_rate': { - brief: 'Rate at which a span was sampled in Relay.', + "sentry.server_sample_rate": { + brief: "Rate at which a span was sampled in Relay.", type: 'double', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', example: 0.5, - changelog: [{ version: '0.1.0', prs: [102] }], + changelog: [ + { version: "0.1.0", prs: [102] }, + ], }, - 'sentry.source': { - brief: - "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", + "sentry.source": { + brief: "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'route', + example: "route", deprecation: { - replacement: 'sentry.span.source', - reason: 'This attribute is being deprecated in favor of sentry.span.source', + replacement: "sentry.span.source", + reason: "This attribute is being deprecated in favor of sentry.span.source" }, - changelog: [{ version: '0.5.0' }], + changelog: [ + { version: "0.5.0" }, + ], }, - 'sentry.span.source': { - brief: - "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", + "sentry.span.source": { + brief: "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'route', - changelog: [{ version: '0.4.0', prs: [214] }, { version: '0.0.0' }], + example: "route", + changelog: [ + { version: "0.4.0", prs: [214] }, + { version: "0.0.0" }, + ], }, - 'sentry.status': { - brief: - 'The span\'s status (either "ok" or "error"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.', + "sentry.status": { + brief: "The span's status (either \"ok\" or \"error\"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'ok', - changelog: [{ version: '0.14.0', prs: [453] }], + example: "ok", + changelog: [ + { version: "0.14.0", prs: [453] }, + ], }, - 'sentry.status_code': { - brief: - 'The HTTP status code used in Sentry Insights. Typically set by Sentry during ingestion, rather than by clients.', + "sentry.status_code": { + brief: "The HTTP status code used in Sentry Insights. Typically set by Sentry during ingestion, rather than by clients.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 200, - changelog: [{ version: '0.4.0', prs: [223, 228] }], + changelog: [ + { version: "0.4.0", prs: [223, 228] }, + ], }, - 'sentry.status.message': { - brief: 'The from OTLP extracted status message.', + "sentry.status.message": { + brief: "The from OTLP extracted status message.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'foobar', - changelog: [{ version: '0.3.1', prs: [190] }], + example: "foobar", + changelog: [ + { version: "0.3.1", prs: [190] }, + ], }, - 'sentry.thread.id': { - brief: 'Current “managed” thread ID.', + "sentry.thread.id": { + brief: "Current “managed” thread ID.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 56, deprecation: { - replacement: 'thread.id', - reason: 'This attribute is being deprecated in favor of the OTel-standard thread.id', + replacement: "thread.id", + reason: "This attribute is being deprecated in favor of the OTel-standard thread.id" }, - changelog: [{ version: '0.13.0', prs: [451] }], + changelog: [ + { version: "0.13.0", prs: [451] }, + ], }, - 'sentry.timestamp.sequence': { - brief: - 'A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one.', + "sentry.timestamp.sequence": { + brief: "A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one.", type: 'integer', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', example: 0, - changelog: [{ version: '0.5.0', prs: [262] }], + changelog: [ + { version: "0.5.0", prs: [262] }, + ], }, - 'sentry.trace_lifecycle': { - brief: 'Indicates the chosen trace lifecycle mode of the SDK (stream or static)', + "sentry.trace_lifecycle": { + brief: "Indicates the chosen trace lifecycle mode of the SDK (stream or static)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'stream', - changelog: [{ version: '0.13.0', prs: [442], description: 'Added sentry.trace_lifecycle attribute' }], + example: "stream", + changelog: [ + { version: "0.13.0", prs: [442], description: "Added sentry.trace_lifecycle attribute" }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'b0e6f15b45c36b12', + example: "b0e6f15b45c36b12", deprecation: {}, changelog: [ - { version: '0.5.0', prs: [287], description: 'Deprecate `sentry.trace.parent_span_id`' }, - { version: '0.1.0', prs: [116] }, + { version: "0.5.0", prs: [287], description: "Deprecate `sentry.trace.parent_span_id`" }, + { version: "0.1.0", prs: [116] }, ], }, - 'sentry.trace.status': { - brief: - 'The segment\'s status (either "ok" or "error"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.', + "sentry.trace.status": { + brief: "The segment's status (either \"ok\" or \"error\"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'ok', - changelog: [{ version: '0.14.0', prs: [453] }], + example: "ok", + changelog: [ + { version: "0.14.0", prs: [453] }, + ], }, - 'sentry.transaction': { - brief: 'The sentry transaction (segment name).', + "sentry.transaction": { + brief: "The sentry transaction (segment name).", type: 'string', applyScrubbing: { - key: 'never', + key: 'never' }, isInOtel: false, visibility: 'public', - example: 'GET /', + example: "GET /", deprecation: { - replacement: 'sentry.segment.name', - reason: 'This attribute is being deprecated in favor of sentry.segment.name', + replacement: "sentry.segment.name", + reason: "This attribute is being deprecated in favor of sentry.segment.name" }, - aliases: ['sentry.segment.name', 'transaction'], + aliases: ["sentry.segment.name", "transaction"], changelog: [ - { version: '0.6.0', prs: [345], description: 'Deprecated sentry.transaction in favor of sentry.segment.name' }, - { version: '0.0.0' }, + { version: "0.6.0", prs: [345], description: "Deprecated sentry.transaction in favor of sentry.segment.name" }, + { version: "0.0.0" }, ], }, - 'sentry.user.email': { - brief: 'User email address.', + "sentry.user.email": { + brief: "User email address.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', deprecation: { - replacement: 'user.email', + replacement: "user.email" }, - aliases: ['user.email'], - changelog: [{ version: '0.10.0', prs: [406] }], + aliases: ["user.email"], + changelog: [ + { version: "0.10.0", prs: [406] }, + ], }, - 'sentry.user.geo.city': { - brief: 'Human readable city name.', + "sentry.user.geo.city": { + brief: "Human readable city name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', deprecation: { - replacement: 'user.geo.city', + replacement: "user.geo.city" }, - aliases: ['user.geo.city'], - changelog: [{ version: '0.10.0', prs: [406] }], + aliases: ["user.geo.city"], + changelog: [ + { version: "0.10.0", prs: [406] }, + ], }, - 'sentry.user.geo.country_code': { - brief: 'Two-letter country code (ISO 3166-1 alpha-2).', + "sentry.user.geo.country_code": { + brief: "Two-letter country code (ISO 3166-1 alpha-2).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', deprecation: { - replacement: 'user.geo.country_code', + replacement: "user.geo.country_code" }, - aliases: ['user.geo.country_code'], - changelog: [{ version: '0.10.0', prs: [406] }], + aliases: ["user.geo.country_code"], + changelog: [ + { version: "0.10.0", prs: [406] }, + ], }, - 'sentry.user.geo.region': { - brief: 'Human readable region name or code.', + "sentry.user.geo.region": { + brief: "Human readable region name or code.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', deprecation: { - replacement: 'user.geo.region', + replacement: "user.geo.region" }, - aliases: ['user.geo.region'], - changelog: [{ version: '0.10.0', prs: [406] }], + aliases: ["user.geo.region"], + changelog: [ + { version: "0.10.0", prs: [406] }, + ], }, - 'sentry.user.geo.subdivision': { - brief: 'Human readable subdivision name.', + "sentry.user.geo.subdivision": { + brief: "Human readable subdivision name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', deprecation: { - replacement: 'user.geo.subdivision', + replacement: "user.geo.subdivision" }, - aliases: ['user.geo.subdivision'], - changelog: [{ version: '0.10.0', prs: [406] }], + aliases: ["user.geo.subdivision"], + changelog: [ + { version: "0.10.0", prs: [406] }, + ], }, - 'sentry.user.id': { - brief: 'Unique identifier of the user.', + "sentry.user.id": { + brief: "Unique identifier of the user.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', deprecation: { - replacement: 'user.id', + replacement: "user.id" }, - aliases: ['user.id'], - changelog: [{ version: '0.10.0', prs: [406] }], + aliases: ["user.id"], + changelog: [ + { version: "0.10.0", prs: [406] }, + ], }, - 'sentry.user.ip': { - brief: 'The IP address of the user.', + "sentry.user.ip": { + brief: "The IP address of the user.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', deprecation: { - replacement: 'user.ip_address', + replacement: "user.ip_address" }, - aliases: ['user.ip_address'], - changelog: [{ version: '0.10.0', prs: [406] }], + aliases: ["user.ip_address"], + changelog: [ + { version: "0.10.0", prs: [406] }, + ], }, - 'sentry.user.username': { - brief: 'Short name or login/username of the user.', + "sentry.user.username": { + brief: "Short name or login/username of the user.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', deprecation: { - replacement: 'user.name', + replacement: "user.name" }, - aliases: ['user.name'], - changelog: [{ version: '0.10.0', prs: [406] }], + aliases: ["user.name"], + changelog: [ + { version: "0.10.0", prs: [406] }, + ], }, - 'server.address': { - brief: - 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + "server.address": { + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'example.com', - aliases: ['http.server_name', 'net.host.name', 'http.host'], - changelog: [{ version: '0.1.0', prs: [108, 127] }, { version: '0.0.0' }], + example: "example.com", + aliases: ["http.server_name", "net.host.name", "http.host", "server_address"], + changelog: [ + { version: "0.1.0", prs: [108, 127] }, + { version: "0.0.0" }, + ], + }, + "server_address": { + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + type: 'string', + applyScrubbing: { + key: 'manual' + }, + isInOtel: false, + visibility: 'public', + example: "example.com", + deprecation: { + replacement: "server.address", + reason: "This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement." + }, + aliases: ["server.address"], + changelog: [ + { version: "next", description: "Added server_address attribute, deprecated in favor of server.address" }, + ], }, - 'server.port': { - brief: 'Server port number.', + "server.port": { + brief: "Server port number.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 1337, - aliases: ['net.host.port'], - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + aliases: ["net.host.port"], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - 'service.name': { - brief: 'Logical name of the service.', + "service.name": { + brief: "Logical name of the service.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'omegastar', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "omegastar", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'service.version': { - brief: 'The version string of the service API or implementation. The format is not defined by these conventions.', + "service.version": { + brief: "The version string of the service API or implementation. The format is not defined by these conventions.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '5.0.0', - aliases: ['sentry.release'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "5.0.0", + aliases: ["sentry.release"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'session.id': { - brief: 'A unique id identifying the active session at the time of setting this attribute', + "session.id": { + brief: "A unique id identifying the active session at the time of setting this attribute", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '00112233-4455-6677-8899-aabbccddeeff', - changelog: [{ version: '0.11.0', prs: [412], description: 'Added session.id attribute' }], + example: "00112233-4455-6677-8899-aabbccddeeff", + changelog: [ + { version: "0.11.0", prs: [412], description: "Added session.id attribute" }, + ], }, - stall_percentage: { - brief: 'The fraction of time the app was stalled. Only applies to React Native. This is computed by Relay.', + "stall_percentage": { + brief: "The fraction of time the app was stalled. Only applies to React Native. This is computed by Relay.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - changelog: [{ version: '0.7.0', prs: [362], description: 'Added stall_percentage attribute' }], + changelog: [ + { version: "0.7.0", prs: [362], description: "Added stall_percentage attribute" }, + ], }, - stall_total_time: { - brief: - 'The combined duration of all stalls in milliseconds. Only applies to React Native. This is computed by Relay.', + "stall_total_time": { + brief: "The combined duration of all stalls in milliseconds. Only applies to React Native. This is computed by Relay.", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - changelog: [{ version: '0.7.0', prs: [362], description: 'Added stall_total_time attribute' }], + changelog: [ + { version: "0.7.0", prs: [362], description: "Added stall_total_time attribute" }, + ], }, - 'state.type': { - brief: 'The type of state management library', + "state.type": { + brief: "The type of state management library", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'redux', - changelog: [{ version: '0.7.0', prs: [365], description: 'Added state.type attribute' }], + example: "redux", + changelog: [ + { version: "0.7.0", prs: [365], description: "Added state.type attribute" }, + ], }, - 'thread.id': { - brief: 'Current “managed” thread ID.', + "thread.id": { + brief: "Current “managed” thread ID.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 56, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'thread.name': { - brief: 'Current thread name.', + "thread.name": { + brief: "Current thread name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'main', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "main", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'timber.tag': { - brief: 'The log tag provided by the timber logging framework.', + "timber.tag": { + brief: "The log tag provided by the timber logging framework.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'MyTag', - changelog: [{ version: '0.3.0', prs: [183] }], + example: "MyTag", + changelog: [ + { version: "0.3.0", prs: [183] }, + ], }, - time_to_full_display: { - brief: 'The duration of time to full display in milliseconds', + "time_to_full_display": { + brief: "The duration of time to full display in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, deprecation: { - replacement: 'app.vitals.ttfd.value', - reason: - 'Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.ttfd.value", + reason: "Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.ttfd.value'], + aliases: ["app.vitals.ttfd.value"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Added and deprecated in favor of app.vitals.ttfd.value' }, + { version: "0.5.0", prs: [313], description: "Added and deprecated in favor of app.vitals.ttfd.value" }, ], }, - time_to_initial_display: { - brief: 'The duration of time to initial display in milliseconds', + "time_to_initial_display": { + brief: "The duration of time to initial display in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1234.56, deprecation: { - replacement: 'app.vitals.ttid.value', - reason: - 'Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes', + replacement: "app.vitals.ttid.value", + reason: "Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes" }, - aliases: ['app.vitals.ttid.value'], + aliases: ["app.vitals.ttid.value"], changelog: [ - { version: '0.5.0', prs: [313], description: 'Added and deprecated in favor of app.vitals.ttid.value' }, + { version: "0.5.0", prs: [313], description: "Added and deprecated in favor of app.vitals.ttid.value" }, ], }, - transaction: { - brief: 'The sentry transaction (segment name).', + "transaction": { + brief: "The sentry transaction (segment name).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'GET /', + example: "GET /", deprecation: { - replacement: 'sentry.segment.name', + replacement: "sentry.segment.name" }, - aliases: ['sentry.segment.name', 'sentry.transaction'], + aliases: ["sentry.segment.name", "sentry.transaction"], changelog: [ - { - version: '0.6.0', - prs: [345], - description: 'Updated transaction deprecation replacement to sentry.segment.name', - }, - { version: '0.1.0', prs: [61, 127] }, - { version: '0.0.0' }, + { version: "0.6.0", prs: [345], description: "Updated transaction deprecation replacement to sentry.segment.name" }, + { version: "0.1.0", prs: [61, 127] }, + { version: "0.0.0" }, ], }, - 'trpc.procedure_path': { - brief: 'The path of the tRPC procedure being called', + "trpc.procedure_path": { + brief: "The path of the tRPC procedure being called", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'user.getById', - changelog: [{ version: '0.7.0', prs: [370], description: 'Added trpc.procedure_path attribute' }], + example: "user.getById", + changelog: [ + { version: "0.7.0", prs: [370], description: "Added trpc.procedure_path attribute" }, + ], }, - 'trpc.procedure_type': { - brief: 'The type of the tRPC procedure', + "trpc.procedure_type": { + brief: "The type of the tRPC procedure", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'query', - changelog: [{ version: '0.7.0', prs: [370], description: 'Added trpc.procedure_type attribute' }], + example: "query", + changelog: [ + { version: "0.7.0", prs: [370], description: "Added trpc.procedure_type attribute" }, + ], }, - ttfb: { - brief: 'The value of the recorded Time To First Byte (TTFB) web vital in milliseconds', + "ttfb": { + brief: "The value of the recorded Time To First Byte (TTFB) web vital in milliseconds", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 194, deprecation: { - replacement: 'browser.web_vital.ttfb.value', - reason: 'This attribute is being deprecated in favor of browser.web_vital.ttfb.value', + replacement: "browser.web_vital.ttfb.value", + reason: "This attribute is being deprecated in favor of browser.web_vital.ttfb.value" }, - aliases: ['browser.web_vital.ttfb.value'], - changelog: [{ version: '0.5.0', prs: [235] }], + aliases: ["browser.web_vital.ttfb.value"], + changelog: [ + { version: "0.5.0", prs: [235] }, + ], }, - 'ttfb.requestTime': { - brief: - "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", + "ttfb.requestTime": { + brief: "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1554.5814, deprecation: { - replacement: 'browser.web_vital.ttfb.request_time', - reason: 'This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time', + replacement: "browser.web_vital.ttfb.request_time", + reason: "This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time" }, - aliases: ['browser.web_vital.ttfb.request_time'], - changelog: [{ version: '0.5.0', prs: [235] }], + aliases: ["browser.web_vital.ttfb.request_time"], + changelog: [ + { version: "0.5.0", prs: [235] }, + ], }, - type: { - brief: 'More granular type of the operation happening.', + "type": { + brief: "More granular type of the operation happening.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'fetch', - changelog: [{ version: '0.0.0' }], + example: "fetch", + changelog: [ + { version: "0.0.0" }, + ], }, - 'ui.component_name': { - brief: 'The name of the associated component.', + "ui.component_name": { + brief: "The name of the associated component.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'HomeButton', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "HomeButton", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'ui.contributes_to_ttfd': { - brief: 'Whether the span execution contributed to the TTFD (time to fully drawn) metric.', + "ui.contributes_to_ttfd": { + brief: "Whether the span execution contributed to the TTFD (time to fully drawn) metric.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'ui.contributes_to_ttid': { - brief: 'Whether the span execution contributed to the TTID (time to initial display) metric.', + "ui.contributes_to_ttid": { + brief: "Whether the span execution contributed to the TTID (time to initial display) metric.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, - changelog: [{ version: '0.0.0' }], + changelog: [ + { version: "0.0.0" }, + ], }, - 'ui.element.height': { - brief: 'The height of the UI element (for Html in pixels)', + "ui.element.height": { + brief: "The height of the UI element (for Html in pixels)", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 256, - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.height attribute' }], + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.height attribute" }, + ], }, - 'ui.element.id': { - brief: 'The id of the UI element', + "ui.element.id": { + brief: "The id of the UI element", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'btn-login', - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.id attribute' }], + example: "btn-login", + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.id attribute" }, + ], }, - 'ui.element.identifier': { - brief: 'The identifier used to measure the UI element timing', + "ui.element.identifier": { + brief: "The identifier used to measure the UI element timing", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'heroImage', - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.identifier attribute' }], + example: "heroImage", + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.identifier attribute" }, + ], }, - 'ui.element.load_time': { - brief: 'The loading time of a UI element (from time origin to finished loading)', + "ui.element.load_time": { + brief: "The loading time of a UI element (from time origin to finished loading)", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 998.2234, - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.load_time attribute' }], + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.load_time attribute" }, + ], }, - 'ui.element.paint_type': { + "ui.element.paint_type": { brief: "The type of element paint. Can either be 'image-paint' or 'text-paint'", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'image-paint', - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.paint_type attribute' }], + example: "image-paint", + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.paint_type attribute" }, + ], }, - 'ui.element.render_time': { - brief: 'The rendering time of the UI element (from time origin to finished rendering)', + "ui.element.render_time": { + brief: "The rendering time of the UI element (from time origin to finished rendering)", type: 'double', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1023.1124, - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.render_time attribute' }], + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.render_time attribute" }, + ], }, - 'ui.element.type': { - brief: 'type of the UI element', + "ui.element.type": { + brief: "type of the UI element", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'img', - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.type attribute' }], + example: "img", + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.type attribute" }, + ], }, - 'ui.element.url': { - brief: 'The URL of the UI element (e.g. an img src)', + "ui.element.url": { + brief: "The URL of the UI element (e.g. an img src)", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 'https://assets.myapp.com/hero.png', - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.url attribute' }], + example: "https://assets.myapp.com/hero.png", + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.url attribute" }, + ], }, - 'ui.element.width': { - brief: 'The width of the UI element (for HTML in pixels)', + "ui.element.width": { + brief: "The width of the UI element (for HTML in pixels)", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 512, - changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.width attribute' }], + changelog: [ + { version: "0.5.0", prs: [284], description: "Added ui.element.width attribute" }, + ], }, - url: { - brief: 'The URL of the resource that was fetched.', + "url": { + brief: "The URL of the resource that was fetched.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - 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'], - changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], + aliases: ["url.full", "http.url"], + changelog: [ + { version: "0.1.0", prs: [61] }, + { version: "0.0.0" }, + ], }, - 'url.domain': { - brief: - 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', + "url.domain": { + brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'example.com', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "example.com", + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'url.fragment': { - brief: - 'The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.', + "url.fragment": { + brief: "The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'details', - changelog: [{ version: '0.0.0' }], + example: "details", + changelog: [ + { version: "0.0.0" }, + ], }, - 'url.full': { - brief: 'The URL of the resource that was fetched.', + "url.full": { + brief: "The URL of the resource that was fetched.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'https://example.com/test?foo=bar#buzz', - aliases: ['http.url', 'url'], - changelog: [{ version: '0.1.0', prs: [108] }, { version: '0.0.0' }], + example: "https://example.com/test?foo=bar#buzz", + aliases: ["http.url", "url"], + changelog: [ + { version: "0.1.0", prs: [108] }, + { version: "0.0.0" }, + ], }, - 'url.path': { - brief: 'The URI path component.', + "url.path": { + brief: "The URI path component.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: '/foo', - changelog: [{ version: '0.0.0' }], + example: "/foo", + changelog: [ + { version: "0.0.0" }, + ], }, - 'url.path.parameter.': { - brief: - 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', + "url.path.parameter.": { + brief: "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "url.path.parameter.id='123'", - aliases: ['params.'], - changelog: [{ version: '0.1.0', prs: [103] }], + aliases: ["params."], + changelog: [ + { version: "0.1.0", prs: [103] }, + ], }, - 'url.port': { - brief: 'Server port number.', + "url.port": { + brief: "Server port number.", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', example: 1337, - changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], + changelog: [ + { version: "0.4.0", prs: [228] }, + { version: "0.0.0" }, + ], }, - '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.', + "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.", type: 'string', applyScrubbing: { key: 'auto', - 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, visibility: 'public', - example: 'foo=bar&bar=baz', - changelog: [{ version: '0.0.0' }], + example: "foo=bar&bar=baz", + changelog: [ + { version: "0.0.0" }, + ], }, - 'url.same_origin': { + "url.same_origin": { brief: "Indicates that a URL has the same origin as the current page's origin in the browser.", type: 'boolean', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: true, deprecation: { - replacement: 'http.request.same_origin', - reason: 'This attribute is being deprecated in favor of http.request.same_origin.', + replacement: "http.request.same_origin", + reason: "This attribute is being deprecated in favor of http.request.same_origin." }, - aliases: ['http.request.same_origin'], + aliases: ["http.request.same_origin"], changelog: [ - { - version: 'next', - prs: [456], - description: 'Added url.same_origin attribute, deprecated in favor of http.request.same_origin', - }, + { version: "next", prs: [456], description: "Added url.same_origin attribute, deprecated in favor of http.request.same_origin" }, ], }, - 'url.scheme': { - brief: 'The URI scheme component identifying the used protocol.', + "url.scheme": { + brief: "The URI scheme component identifying the used protocol.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: 'https', - aliases: ['http.scheme'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "https", + aliases: ["http.scheme"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'url.template': { - brief: 'The low-cardinality template of an absolute path reference.', + "url.template": { + brief: "The low-cardinality template of an absolute path reference.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: '/users/:id', - aliases: ['http.route'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "/users/:id", + aliases: ["http.route"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'user_agent.original': { - brief: 'Value of the HTTP User-Agent header sent by the client.', + "user_agent.original": { + brief: "Value of the HTTP User-Agent header sent by the client.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: true, visibility: 'public', - example: - 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1', - aliases: ['http.user_agent'], - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + example: "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", + aliases: ["http.user_agent"], + changelog: [ + { version: "0.1.0", prs: [127] }, + { version: "0.0.0" }, + ], }, - 'user.email': { - brief: 'User email address.', + "user.email": { + brief: "User email address.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'test@example.com', - aliases: ['sentry.user.email'], - changelog: [{ version: '0.0.0' }], + example: "test@example.com", + aliases: ["sentry.user.email"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.full_name': { + "user.full_name": { brief: "User's full name.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'John Smith', - changelog: [{ version: '0.0.0' }], + example: "John Smith", + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.geo.city': { - brief: 'Human readable city name.', + "user.geo.city": { + brief: "Human readable city name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Toronto', - aliases: ['sentry.user.geo.city'], - changelog: [{ version: '0.0.0' }], + example: "Toronto", + aliases: ["sentry.user.geo.city"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.geo.country_code': { - brief: 'Two-letter country code (ISO 3166-1 alpha-2).', + "user.geo.country_code": { + brief: "Two-letter country code (ISO 3166-1 alpha-2).", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'CA', - aliases: ['sentry.user.geo.country_code'], - changelog: [{ version: '0.0.0' }], + example: "CA", + aliases: ["sentry.user.geo.country_code"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.geo.region': { - brief: 'Human readable region name or code.', + "user.geo.region": { + brief: "Human readable region name or code.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Canada', - aliases: ['sentry.user.geo.region'], - changelog: [{ version: '0.0.0' }], + example: "Canada", + aliases: ["sentry.user.geo.region"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.geo.subdivision': { - brief: 'Human readable subdivision name.', + "user.geo.subdivision": { + brief: "Human readable subdivision name.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'Ontario', - aliases: ['sentry.user.geo.subdivision'], - changelog: [{ version: '0.0.0' }], + example: "Ontario", + aliases: ["sentry.user.geo.subdivision"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.hash': { - brief: 'Unique user hash to correlate information for a user in anonymized form.', + "user.hash": { + brief: "Unique user hash to correlate information for a user in anonymized form.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: '8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d', - changelog: [{ version: '0.0.0' }], + example: "8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.id': { - brief: 'Unique identifier of the user.', + "user.id": { + brief: "Unique identifier of the user.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', - aliases: ['sentry.user.id'], - changelog: [{ version: '0.0.0' }], + example: "S-1-5-21-202424912787-2692429404-2351956786-1000", + aliases: ["sentry.user.id"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.ip_address': { - brief: 'The IP address of the user.', + "user.ip_address": { + brief: "The IP address of the user.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: '192.168.1.1', - aliases: ['sentry.user.ip'], - changelog: [{ version: '0.1.0', prs: [75] }], + example: "192.168.1.1", + aliases: ["sentry.user.ip"], + changelog: [ + { version: "0.1.0", prs: [75] }, + ], }, - 'user.name': { - brief: 'Short name or login/username of the user.', + "user.name": { + brief: "Short name or login/username of the user.", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: 'j.smith', - aliases: ['sentry.user.username'], - changelog: [{ version: '0.0.0' }], + example: "j.smith", + aliases: ["sentry.user.username"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'user.roles': { - brief: 'Array of user roles at the time of the event.', + "user.roles": { + brief: "Array of user roles at the time of the event.", type: 'string[]', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: true, visibility: 'public', - example: ['admin', 'editor'], - changelog: [{ version: '0.0.0' }], + example: ["admin","editor"], + changelog: [ + { version: "0.0.0" }, + ], }, - 'vercel.branch': { - brief: 'Git branch name for Vercel project', + "vercel.branch": { + brief: "Git branch name for Vercel project", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'main', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "main", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.build_id': { - brief: 'Identifier for the Vercel build (only present on build logs)', + "vercel.build_id": { + brief: "Identifier for the Vercel build (only present on build logs)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'bld_cotnkcr76', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "bld_cotnkcr76", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.deployment_id': { - brief: 'Identifier for the Vercel deployment', + "vercel.deployment_id": { + brief: "Identifier for the Vercel deployment", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'dpl_233NRGRjVZX1caZrXWtz5g1TAksD', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "dpl_233NRGRjVZX1caZrXWtz5g1TAksD", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.destination': { - brief: 'Origin of the external content in Vercel (only on external logs)', + "vercel.destination": { + brief: "Origin of the external content in Vercel (only on external logs)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'https://vitals.vercel-insights.com/v1', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "https://vitals.vercel-insights.com/v1", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.edge_type': { - brief: 'Type of edge runtime in Vercel', + "vercel.edge_type": { + brief: "Type of edge runtime in Vercel", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'edge-function', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "edge-function", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.entrypoint': { - brief: 'Entrypoint for the request in Vercel', + "vercel.entrypoint": { + brief: "Entrypoint for the request in Vercel", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'api/index.js', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "api/index.js", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.execution_region': { - brief: 'Region where the request is executed', + "vercel.execution_region": { + brief: "Region where the request is executed", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'sfo1', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "sfo1", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.id': { - brief: 'Unique identifier for the log entry in Vercel', + "vercel.id": { + brief: "Unique identifier for the log entry in Vercel", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '1573817187330377061717300000', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "1573817187330377061717300000", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.ja3_digest': { - brief: 'JA3 fingerprint digest of Vercel request', + "vercel.ja3_digest": { + brief: "JA3 fingerprint digest of Vercel request", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: '769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.ja4_digest': { - brief: 'JA4 fingerprint digest', + "vercel.ja4_digest": { + brief: "JA4 fingerprint digest", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: 't13d1516h2_8daaf6152771_02713d6af862', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "t13d1516h2_8daaf6152771_02713d6af862", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.log_type': { - brief: 'Vercel log output type', + "vercel.log_type": { + brief: "Vercel log output type", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'stdout', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "stdout", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.path': { - brief: 'Function or dynamic path of the request in Vercel.', + "vercel.path": { + brief: "Function or dynamic path of the request in Vercel.", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '/dynamic/[route].json', - changelog: [{ version: '0.6.0', prs: [349], description: 'Added vercel.path attribute' }], + example: "/dynamic/[route].json", + changelog: [ + { version: "0.6.0", prs: [349], description: "Added vercel.path attribute" }, + ], }, - 'vercel.project_id': { - brief: 'Identifier for the Vercel project', + "vercel.project_id": { + brief: "Identifier for the Vercel project", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'gdufoJxB6b9b1fEqr1jUtFkyavUU', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "gdufoJxB6b9b1fEqr1jUtFkyavUU", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.project_name': { - brief: 'Name of the Vercel project', + "vercel.project_name": { + brief: "Name of the Vercel project", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'my-app', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "my-app", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.cache_id': { - brief: 'Original request ID when request is served from cache', + "vercel.proxy.cache_id": { + brief: "Original request ID when request is served from cache", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'pdx1::v8g4b-1744143786684-93dafbc0f70d', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "pdx1::v8g4b-1744143786684-93dafbc0f70d", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.client_ip': { - brief: 'Client IP address', + "vercel.proxy.client_ip": { + brief: "Client IP address", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: '120.75.16.101', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "120.75.16.101", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.host': { - brief: 'Hostname of the request', + "vercel.proxy.host": { + brief: "Hostname of the request", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'test.vercel.app', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "test.vercel.app", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.lambda_region': { - brief: 'Region where lambda function executed', + "vercel.proxy.lambda_region": { + brief: "Region where lambda function executed", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'sfo1', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "sfo1", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.method': { - brief: 'HTTP method of the request', + "vercel.proxy.method": { + brief: "HTTP method of the request", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'GET', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "GET", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.path': { - brief: 'Request path with query parameters', + "vercel.proxy.path": { + brief: "Request path with query parameters", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: '/dynamic/some-value.json?route=some-value', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "/dynamic/some-value.json?route=some-value", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.path_type': { - brief: 'How the request was served based on its path and project configuration', + "vercel.proxy.path_type": { + brief: "How the request was served based on its path and project configuration", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'func', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "func", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.path_type_variant': { - brief: 'Variant of the path type', + "vercel.proxy.path_type_variant": { + brief: "Variant of the path type", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'api', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "api", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.referer': { - brief: 'Referer of the request', + "vercel.proxy.referer": { + brief: "Referer of the request", type: 'string', applyScrubbing: { - key: 'auto', + key: 'auto' }, isInOtel: false, visibility: 'public', - example: '*.vercel.app', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "*.vercel.app", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.region': { - brief: 'Region where the request is processed', + "vercel.proxy.region": { + brief: "Region where the request is processed", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'sfo1', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "sfo1", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.response_byte_size': { - brief: 'Size of the response in bytes', + "vercel.proxy.response_byte_size": { + brief: "Size of the response in bytes", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1024, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.2.0', prs: [163] }, + { version: "0.4.0", prs: [228] }, + { version: "0.2.0", prs: [163] }, ], }, - 'vercel.proxy.scheme': { - brief: 'Protocol of the request', + "vercel.proxy.scheme": { + brief: "Protocol of the request", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'https', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "https", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.status_code': { - brief: 'HTTP status code of the proxy request', + "vercel.proxy.status_code": { + brief: "HTTP status code of the proxy request", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 200, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.2.0', prs: [163] }, + { version: "0.4.0", prs: [228] }, + { version: "0.2.0", prs: [163] }, ], }, - 'vercel.proxy.timestamp': { - brief: 'Unix timestamp when the proxy request was made', + "vercel.proxy.timestamp": { + brief: "Unix timestamp when the proxy request was made", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 1573817250172, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.2.0', prs: [163] }, + { version: "0.4.0", prs: [228] }, + { version: "0.2.0", prs: [163] }, ], }, - 'vercel.proxy.user_agent': { - brief: 'User agent strings of the request', + "vercel.proxy.user_agent": { + brief: "User agent strings of the request", type: 'string[]', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: ['Mozilla/5.0...'], - changelog: [{ version: '0.2.0', prs: [163] }], + example: ["Mozilla/5.0..."], + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.vercel_cache': { - brief: 'Cache status sent to the browser', + "vercel.proxy.vercel_cache": { + brief: "Cache status sent to the browser", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'REVALIDATED', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "REVALIDATED", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.vercel_id': { - brief: 'Vercel-specific identifier', + "vercel.proxy.vercel_id": { + brief: "Vercel-specific identifier", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'sfo1::abc123', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "sfo1::abc123", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.waf_action': { - brief: 'Action taken by firewall rules', + "vercel.proxy.waf_action": { + brief: "Action taken by firewall rules", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'deny', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "deny", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.proxy.waf_rule_id': { - brief: 'ID of the firewall rule that matched', + "vercel.proxy.waf_rule_id": { + brief: "ID of the firewall rule that matched", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'rule_gAHz8jtSB1Gy', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "rule_gAHz8jtSB1Gy", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.request_id': { - brief: 'Identifier of the Vercel request', + "vercel.request_id": { + brief: "Identifier of the Vercel request", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: '643af4e3-975a-4cc7-9e7a-1eda11539d90', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "643af4e3-975a-4cc7-9e7a-1eda11539d90", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.source': { - brief: 'Origin of the Vercel log (build, edge, lambda, static, external, or firewall)', + "vercel.source": { + brief: "Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", type: 'string', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', - example: 'build', - changelog: [{ version: '0.2.0', prs: [163] }], + example: "build", + changelog: [ + { version: "0.2.0", prs: [163] }, + ], }, - 'vercel.status_code': { - brief: 'HTTP status code of the request (-1 means no response returned and the lambda crashed)', + "vercel.status_code": { + brief: "HTTP status code of the request (-1 means no response returned and the lambda crashed)", type: 'integer', applyScrubbing: { - key: 'manual', + key: 'manual' }, isInOtel: false, visibility: 'public', example: 200, changelog: [ - { version: '0.4.0', prs: [228] }, - { version: '0.2.0', prs: [163] }, + { version: "0.4.0", prs: [228] }, + { version: "0.2.0", prs: [163] }, ], }, }; @@ -25986,6 +26317,7 @@ export type Attributes = { [SENTRY_USER_IP]?: SENTRY_USER_IP_TYPE; [SENTRY_USER_USERNAME]?: SENTRY_USER_USERNAME_TYPE; [SERVER_ADDRESS]?: SERVER_ADDRESS_TYPE; + [_SERVER_ADDRESS]?: _SERVER_ADDRESS_TYPE; [SERVER_PORT]?: SERVER_PORT_TYPE; [SERVICE_NAME]?: SERVICE_NAME_TYPE; [SERVICE_VERSION]?: SERVICE_VERSION_TYPE; @@ -26076,3 +26408,4 @@ export type Attributes = { [VERCEL_SOURCE]?: VERCEL_SOURCE_TYPE; [VERCEL_STATUS_CODE]?: VERCEL_STATUS_CODE_TYPE; } & Record; + diff --git a/model/attributes/server/server__address.json b/model/attributes/server/server__address.json index b11064d4..7ffd0180 100644 --- a/model/attributes/server/server__address.json +++ b/model/attributes/server/server__address.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "example.com", - "alias": ["http.server_name", "net.host.name", "http.host"], + "alias": ["http.server_name", "net.host.name", "http.host", "server_address"], "visibility": "public", "changelog": [ { diff --git a/model/attributes/server_address.json b/model/attributes/server_address.json new file mode 100644 index 00000000..85e95ad7 --- /dev/null +++ b/model/attributes/server_address.json @@ -0,0 +1,24 @@ +{ + "key": "server_address", + "brief": "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "example": "example.com", + "alias": ["server.address"], + "deprecation": { + "_status": "backfill", + "replacement": "server.address", + "reason": "This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement." + }, + "visibility": "public", + "changelog": [ + { + "version": "next", + "prs": [], + "description": "Added server_address attribute, deprecated in favor of server.address" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 90122d51..c261edcd 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -273,6 +273,7 @@ class _AttributeNamesMeta(type): "SENTRY_USER_ID", "SENTRY_USER_IP", "SENTRY_USER_USERNAME", + "_SERVER_ADDRESS", "TIME_TO_FULL_DISPLAY", "TIME_TO_INITIAL_DISPLAY", "TRANSACTION", @@ -7578,7 +7579,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Aliases: http.server_name, net.host.name, http.host + Aliases: http.server_name, net.host.name, http.host, server_address Example: "example.com" """ @@ -7594,6 +7595,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 1337 """ + # Path: model/attributes/server_address.json + _SERVER_ADDRESS: Literal["server_address"] = "server_address" + """Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Aliases: server.address + DEPRECATED: Use server.address instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. + Example: "example.com" + """ + # Path: model/attributes/service/service__name.json SERVICE_NAME: Literal["service.name"] = "service.name" """Logical name of the service. @@ -17108,7 +17122,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, visibility=Visibility.PUBLIC, example="example.com", - aliases=["http.server_name", "net.host.name", "http.host"], + aliases=["http.server_name", "net.host.name", "http.host", "server_address"], changelog=[ ChangelogEntry(version="0.1.0", prs=[108, 127]), ChangelogEntry(version="0.0.0"), @@ -17127,6 +17141,26 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "server_address": AttributeMetadata( + brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="example.com", + deprecation=DeprecationInfo( + replacement="server.address", + reason="This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["server.address"], + changelog=[ + ChangelogEntry( + version="next", + description="Added server_address attribute, deprecated in favor of server.address", + ), + ], + ), "service.name": AttributeMetadata( brief="Logical name of the service.", type=AttributeType.STRING, @@ -18835,6 +18869,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.user.username": str, "server.address": str, "server.port": int, + "server_address": str, "service.name": str, "service.version": str, "session.id": str, From f49b58d045204a1f388c93c6c0b4b772d4b8891f Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Thu, 9 Jul 2026 23:22:20 +0200 Subject: [PATCH 2/6] ref(attributes): Regenerate JS attributes from model The generated attributes file was out of sync with the model, causing CI to fail on the uncommitted-changes check. Co-Authored-By: Claude Opus 4.6 --- .../sentry-conventions/src/attributes.ts | 11191 ++++++++-------- 1 file changed, 5452 insertions(+), 5739 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index ea05387e..6af34200 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -12,7 +12,7 @@ * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["Citation 1","Citation 2"] */ export const AI_CITATIONS = 'ai.citations'; @@ -58,7 +58,7 @@ export type AI_COMPLETION_TOKENS_USED_TYPE = number; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["document1.txt","document2.pdf"] */ export const AI_DOCUMENTS = 'ai.documents'; @@ -200,7 +200,7 @@ export type AI_INPUT_MESSAGES_TYPE = string; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example false */ export const AI_IS_SEARCH_REQUIRED = 'ai.is_search_required'; @@ -222,7 +222,7 @@ export type AI_IS_SEARCH_REQUIRED_TYPE = boolean; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example "{\"user_id\": 123, \"session_id\": \"abc123\"}" */ export const AI_METADATA = 'ai.metadata'; @@ -388,7 +388,7 @@ export type AI_PROMPT_TOKENS_USED_TYPE = number; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example true */ export const AI_RAW_PROMPTING = 'ai.raw_prompting'; @@ -432,7 +432,7 @@ export type AI_RESPONSES_TYPE = Array; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example "json_object" */ export const AI_RESPONSE_FORMAT = 'ai.response_format'; @@ -454,7 +454,7 @@ export type AI_RESPONSE_FORMAT_TYPE = string; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["climate change effects","renewable energy"] */ export const AI_SEARCH_QUERIES = 'ai.search_queries'; @@ -476,7 +476,7 @@ export type AI_SEARCH_QUERIES_TYPE = Array; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["search_result_1, search_result_2"] */ export const AI_SEARCH_RESULTS = 'ai.search_results'; @@ -546,7 +546,7 @@ export type AI_STREAMING_TYPE = boolean; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example "{\"executed_function\": \"add_integers\"}" */ export const AI_TAGS = 'ai.tags'; @@ -756,7 +756,7 @@ export type AI_TOTAL_TOKENS_USED_TYPE = number; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example ["Token limit exceeded"] */ export const AI_WARNINGS = 'ai.warnings'; @@ -12760,7 +12760,7 @@ export type SENTRY_TRACE_LIFECYCLE_TYPE = string; * Attribute defined in OTEL: No * Visibility: public * - * @deprecated + * @deprecated * @example "b0e6f15b45c36b12" */ export const SENTRY_TRACE_PARENT_SPAN_ID = 'sentry.trace.parent_span_id'; @@ -14964,7 +14964,6 @@ export const VERCEL_STATUS_CODE = 'vercel.status_code'; */ export type VERCEL_STATUS_CODE_TYPE = number; - export type AttributeType = | 'string' | 'boolean' @@ -14976,14 +14975,9 @@ export type AttributeType = | 'double[]' | 'any'; -export type ApplyScrubbing = - | 'auto' - | 'manual' - | 'never'; +export type ApplyScrubbing = 'auto' | 'manual' | 'never'; -export type AttributeVisibility = - | 'public' - | 'internal'; +export type AttributeVisibility = 'public' | 'internal'; export interface ApplyScrubbingInfo { /** How PII scrubbing should be applied to the attribute value */ @@ -15034,10692 +15028,10412 @@ export interface AttributeMetadata { } export const ATTRIBUTE_TYPE: Record = { - "ai.citations": 'string[]', - "ai.completion_tokens.used": 'integer', - "ai.documents": 'string[]', - "ai.finish_reason": 'string', - "ai.frequency_penalty": 'double', - "ai.function_call": 'string', - "ai.generation_id": 'string', - "ai.input_messages": 'string', - "ai.is_search_required": 'boolean', - "ai.metadata": 'string', - "ai.model_id": 'string', - "ai.model.provider": 'string', - "ai.pipeline.name": 'string', - "ai.preamble": 'string', - "ai.presence_penalty": 'double', - "ai.prompt_tokens.used": 'integer', - "ai.raw_prompting": 'boolean', - "ai.responses": 'string[]', - "ai.response_format": 'string', - "ai.search_queries": 'string[]', - "ai.search_results": 'string[]', - "ai.seed": 'string', - "ai.streaming": 'boolean', - "ai.tags": 'string', - "ai.temperature": 'double', - "ai.texts": 'string[]', - "ai.tools": 'string[]', - "ai.tool_calls": 'string[]', - "ai.top_k": 'integer', - "ai.top_p": 'double', - "ai.total_cost": 'double', - "ai.total_tokens.used": 'integer', - "ai.warnings": 'string[]', - "angular.version": 'string', - "app.app_build": 'string', - "app.app_identifier": 'string', - "app.app_name": 'string', - "app.app_start_time": 'string', - "app.app_version": 'string', - "app.build": 'string', - "app.identifier": 'string', - "app.in_foreground": 'boolean', - "app.name": 'string', - "app_start_cold": 'double', - "app.start_time": 'string', - "app_start_type": 'string', - "app_start_warm": 'double', - "app.version": 'string', - "app.vitals.frames.delay.value": 'integer', - "app.vitals.frames.frozen.count": 'integer', - "app.vitals.frames.slow.count": 'integer', - "app.vitals.frames.total.count": 'integer', - "app.vitals.start.cold.value": 'double', - "app.vitals.start.prewarmed": 'boolean', - "app.vitals.start.reason": 'string', - "app.vitals.start.screen": 'string', - "app.vitals.start.type": 'string', - "app.vitals.start.warm.value": 'double', - "app.vitals.ttfd.value": 'double', - "app.vitals.ttid.value": 'double', - "art.gc.blocking_count": 'integer', - "art.gc.blocking_time": 'double', - "art.gc.pre_oome_count": 'integer', - "art.gc.total_count": 'integer', - "art.gc.total_time": 'double', - "art.gc.waiting_time": 'double', - "art.memory.free": 'integer', - "art.memory.free_until_gc": 'integer', - "art.memory.free_until_oome": 'integer', - "art.memory.max": 'integer', - "art.memory.total": 'integer', - "aws.cloudwatch.logs.log_group": 'string', - "aws.cloudwatch.logs.log_stream": 'string', - "aws.cloudwatch.logs.url": 'string', - "aws.lambda.aws_request_id": 'string', - "aws.lambda.execution_duration_in_millis": 'double', - "aws.lambda.function_name": 'string', - "aws.lambda.function_version": 'string', - "aws.lambda.invoked_arn": 'string', - "aws.lambda.invoked_function_arn": 'string', - "aws.lambda.remaining_time_in_millis": 'double', - "aws.log.group.names": 'string[]', - "aws.log.stream.names": 'string[]', - "blocked_main_thread": 'boolean', - "browser.name": 'string', - "browser.performance.navigation.activation_start": 'double', - "browser.performance.time_origin": 'double', - "browser.report.type": 'string', - "browser.script.invoker": 'string', - "browser.script.invoker_type": 'string', - "browser.script.source_char_position": 'integer', - "browser.version": 'string', - "browser.web_vital.cls.report_event": 'string', - "browser.web_vital.cls.source.": 'string', - "browser.web_vital.cls.value": 'double', - "browser.web_vital.fcp.value": 'double', - "browser.web_vital.fp.value": 'double', - "browser.web_vital.inp.value": 'double', - "browser.web_vital.lcp.element": 'string', - "browser.web_vital.lcp.id": 'string', - "browser.web_vital.lcp.load_time": 'integer', - "browser.web_vital.lcp.render_time": 'integer', - "browser.web_vital.lcp.report_event": 'string', - "browser.web_vital.lcp.size": 'integer', - "browser.web_vital.lcp.url": 'string', - "browser.web_vital.lcp.value": 'double', - "browser.web_vital.ttfb.request_time": 'double', - "browser.web_vital.ttfb.value": 'double', - "cache.hit": 'boolean', - "cache.item_size": 'integer', - "cache.key": 'string[]', - "cache.operation": 'string', - "cache.ttl": 'integer', - "cache.write": 'boolean', - "channel": 'string', - "client.address": 'string', - "client.port": 'integer', - "cloudflare.d1.duration": 'integer', - "cloudflare.d1.query_type": 'string', - "cloudflare.d1.rows_read": 'integer', - "cloudflare.d1.rows_written": 'integer', - "cloudflare.durable_object.query.bindings": 'integer', - "cloudflare.durable_object.response.rows_read": 'integer', - "cloudflare.durable_object.response.rows_written": 'integer', - "cloudflare.r2.bucket": 'string', - "cloudflare.r2.operation": 'string', - "cloudflare.r2.request.delimiter": 'string', - "cloudflare.r2.request.key": 'string', - "cloudflare.r2.request.part_number": 'integer', - "cloudflare.r2.request.prefix": 'string', - "cloudflare.workflow.attempt": 'integer', - "cloudflare.workflow.retries.backoff": 'string', - "cloudflare.workflow.retries.delay": 'string', - "cloudflare.workflow.retries.limit": 'integer', - "cloudflare.workflow.timeout": 'string', - "cloud.account.id": 'string', - "cloud.availability_zone": 'string', - "cloud.platform": 'string', - "cloud.provider": 'string', - "cloud.region": 'string', - "cloud.resource_id": 'string', - "cls": 'double', - "cls.source.": 'string', - "code.filepath": 'string', - "code.file.path": 'string', - "code.function": 'string', - "code.function.name": 'string', - "code.lineno": 'integer', - "code.line.number": 'integer', - "code.namespace": 'string', - "connectionType": 'string', - "connection.rtt": 'integer', - "culture.calendar": 'string', - "culture.display_name": 'string', - "culture.is_24_hour_format": 'boolean', - "culture.locale": 'string', - "culture.timezone": 'string', - "db.collection.name": 'string', - "db.driver.name": 'string', - "db.name": 'string', - "db.namespace": 'string', - "db.operation": 'string', - "db.operation.batch.size": 'integer', - "db.operation.name": 'string', - "db.query.parameter.": 'string', - "db.query.summary": 'string', - "db.query.text": 'string', - "db.redis.connection": 'string', - "db.redis.key": 'string', - "db.redis.parameters": 'string[]', - "db.response.status_code": 'string', - "db.sql.bindings": 'string[]', - "db.statement": 'string', - "db.stored_procedure.name": 'string', - "db.system": 'string', - "db.system.name": 'string', - "db.user": 'string', - "deviceMemory": 'string', - "device.archs": 'string[]', - "device.battery_level": 'double', - "device.battery_temperature": 'double', - "device.boot_time": 'string', - "device.brand": 'string', - "device.charging": 'boolean', - "device.chipset": 'string', - "device.class": 'string', - "device.connection_type": 'string', - "device.cpu_description": 'string', - "device.external_free_storage": 'integer', - "device.external_storage_size": 'integer', - "device.family": 'string', - "device.free_memory": 'integer', - "device.free_storage": 'integer', - "device.id": 'string', - "device.locale": 'string', - "device.low_memory": 'boolean', - "device.low_power_mode": 'boolean', - "device.manufacturer": 'string', - "device.memory.estimated_capacity": 'integer', - "device.memory_size": 'integer', - "device.model": 'string', - "device.model_id": 'string', - "device.name": 'string', - "device.online": 'boolean', - "device.orientation": 'string', - "device.processor_count": 'integer', - "device.processor_frequency": 'double', - "device.screen_density": 'double', - "device.screen_dpi": 'integer', - "device.screen_height_pixels": 'integer', - "device.screen_width_pixels": 'integer', - "device.simulator": 'boolean', - "device.storage_size": 'integer', - "device.thermal_state": 'string', - "device.timezone": 'string', - "device.usable_memory": 'integer', - "effectiveConnectionType": 'string', - "environment": 'string', - "error.type": 'string', - "event.id": 'integer', - "event.name": 'string', - "exception.escaped": 'boolean', - "exception.message": 'string', - "exception.stacktrace": 'string', - "exception.type": 'string', - "faas.coldstart": 'boolean', - "faas.cron": 'string', - "faas.duration_in_ms": 'integer', - "faas.entry_point": 'string', - "faas.execution": 'string', - "faas.id": 'string', - "faas.identity": 'string', - "faas.invocation_id": 'string', - "faas.name": 'string', - "faas.time": 'string', - "faas.trigger": 'string', - "faas.version": 'string', - "fcp": 'double', - "flag.evaluation.": 'boolean', - "fp": 'double', - "frames.delay": 'integer', - "frames.frozen": 'integer', - "frames_frozen_rate": 'double', - "frames.slow": 'integer', - "frames_slow_rate": 'double', - "frames.total": 'integer', - "fs_error": 'string', - "gcp.function.context.event_id": 'string', - "gcp.function.context.event_type": 'string', - "gcp.function.context.id": 'string', - "gcp.function.context.resource": 'string', - "gcp.function.context.source": 'string', - "gcp.function.context.specversion": 'string', - "gcp.function.context.time": 'string', - "gcp.function.context.timestamp": 'string', - "gcp.function.context.type": 'string', - "gcp.project.id": 'string', - "gen_ai.agent.name": 'string', - "gen_ai.context.utilization": 'double', - "gen_ai.context.window_size": 'integer', - "gen_ai.conversation.id": 'string', - "gen_ai.cost.cache_creation.input_tokens": 'double', - "gen_ai.cost.cache_read.input_tokens": 'double', - "gen_ai.cost.input_tokens": 'double', - "gen_ai.cost.output_tokens": 'double', - "gen_ai.cost.reasoning.output_tokens": 'double', - "gen_ai.cost.total_tokens": 'double', - "gen_ai.embeddings.input": 'string', - "gen_ai.function_id": '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.prompt.name": 'string', - "gen_ai.provider.name": 'string', - "gen_ai.request.available_tools": 'string', - "gen_ai.request.frequency_penalty": 'double', - "gen_ai.request.max_tokens": 'integer', - "gen_ai.request.messages": 'string', - "gen_ai.request.model": 'string', - "gen_ai.request.presence_penalty": 'double', - "gen_ai.request.reasoning_effort": 'string', - "gen_ai.request.seed": 'string', - "gen_ai.request.temperature": 'double', - "gen_ai.request.top_k": 'integer', - "gen_ai.request.top_p": 'double', - "gen_ai.response.finish_reasons": 'string', - "gen_ai.response.id": 'string', - "gen_ai.response.model": 'string', - "gen_ai.response.streaming": 'boolean', - "gen_ai.response.text": 'string', - "gen_ai.response.time_to_first_chunk": 'double', - "gen_ai.response.time_to_first_token": 'double', - "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', - "gen_ai.tool.name": 'string', - "gen_ai.tool.output": 'string', - "gen_ai.tool.type": 'string', - "gen_ai.usage.cache_creation.input_tokens": 'integer', - "gen_ai.usage.cache_read.input_tokens": 'integer', - "gen_ai.usage.completion_tokens": 'integer', - "gen_ai.usage.input_tokens": 'integer', - "gen_ai.usage.input_tokens.cached": 'integer', - "gen_ai.usage.input_tokens.cache_write": 'integer', - "gen_ai.usage.output_tokens": 'integer', - "gen_ai.usage.output_tokens.reasoning": 'integer', - "gen_ai.usage.prompt_tokens": 'integer', - "gen_ai.usage.reasoning.output_tokens": 'integer', - "gen_ai.usage.total_tokens": 'integer', - "graphql.document": 'string', - "graphql.operation.name": 'string', - "graphql.operation.type": 'string', - "hardwareConcurrency": 'string', - "http.client_ip": 'string', - "http.decoded_response_content_length": 'integer', - "http.flavor": 'string', - "http.fragment": 'string', - "http.host": 'string', - "http.method": 'string', - "http.query": 'string', - "http.request.body.data": 'string', - "http.request.connection_end": 'double', - "http.request.connect_start": 'double', - "http.request.domain_lookup_end": 'double', - "http.request.domain_lookup_start": 'double', - "http.request.fetch_start": 'double', - "http.request.header.": 'string[]', - "http.request.method": 'string', - "http.request_method": 'string', - "http.request.redirect_end": 'double', - "http.request.redirect_start": 'double', - "http.request.request_start": 'double', - "http.request.resend_count": 'integer', - "http.request.response_end": 'double', - "http.request.response_start": 'double', - "http.request.same_origin": 'boolean', - "http.request.secure_connection_start": 'double', - "http.request.time_to_first_byte": 'double', - "http.request.worker_start": 'double', - "http.response.body.size": 'integer', - "http.response_content_length": 'integer', - "http.response.header.content-length": 'string', - "http.response.header.": 'string[]', - "http.response.size": 'integer', - "http.response.status_code": 'integer', - "http.response_transfer_size": 'integer', - "http.route": 'string', - "http.scheme": 'string', - "http.server_name": 'string', - "http.server.request.time_in_queue": 'double', - "http.status_code": 'integer', - "http.target": 'string', - "http.url": 'string', - "http.user_agent": 'string', - "id": 'string', - "inp": 'double', - "jsonrpc.protocol.version": 'string', - "jsonrpc.request.id": 'string', - "jvm.gc.action": 'string', - "jvm.gc.name": 'string', - "jvm.memory.pool.name": 'string', - "jvm.memory.type": 'string', - "jvm.thread.daemon": 'boolean', - "jvm.thread.state": 'string', - "lcp": 'double', - "lcp.element": 'string', - "lcp.id": 'string', - "lcp.loadTime": 'integer', - "lcp.renderTime": 'integer', - "lcp.size": 'integer', - "lcp.url": 'string', - "logger.name": 'string', - "mcp.cancelled.reason": 'string', - "mcp.cancelled.request_id": 'string', - "mcp.client.name": 'string', - "mcp.client.title": 'string', - "mcp.client.version": 'string', - "mcp.lifecycle.phase": 'string', - "mcp.logging.data_type": 'string', - "mcp.logging.level": 'string', - "mcp.logging.logger": 'string', - "mcp.logging.message": 'string', - "mcp.method.name": 'string', - "mcp.progress.current": 'integer', - "mcp.progress.message": 'string', - "mcp.progress.percentage": 'double', - "mcp.progress.token": 'string', - "mcp.progress.total": 'integer', - "mcp.prompt.name": 'string', - "mcp.prompt.result.description": 'string', - "mcp.prompt.result.message_content": 'string', - "mcp.prompt.result.message_count": 'integer', - "mcp.prompt.result.message_role": 'string', - "mcp.protocol.ready": 'integer', - "mcp.protocol.version": 'string', - "mcp.request.argument.": 'string', - "mcp.request.argument.name": 'string', - "mcp.request.argument.uri": 'string', - "mcp.request.id": 'string', - "mcp.resource.protocol": 'string', - "mcp.resource.uri": 'string', - "mcp.server.name": 'string', - "mcp.server.title": 'string', - "mcp.server.version": 'string', - "mcp.session.id": 'string', - "mcp.tool.name": 'string', - "mcp.tool.result.content": 'string', - "mcp.tool.result.content_count": 'integer', - "mcp.tool.result.is_error": 'boolean', - "mcp.transport": 'string', - "mdc.": 'string', - "messaging.batch.message_count": 'integer', - "messaging.destination.connection": 'string', - "messaging.destination.name": 'string', - "messaging.message.body.size": 'integer', - "messaging.message.conversation_id": 'string', - "messaging.message.envelope.size": 'integer', - "messaging.message.id": 'string', - "messaging.message.receive.latency": 'integer', - "messaging.message.retry.count": 'integer', - "messaging.operation.name": 'string', - "messaging.operation.type": 'string', - "messaging.rabbitmq.destination.routing_key": 'string', - "messaging.system": 'string', - "method": 'string', - "middleware.name": 'string', - "navigation.type": 'string', - "nel.elapsed_time": 'integer', - "nel.phase": 'string', - "nel.referrer": 'string', - "nel.sampling_function": 'double', - "nel.type": 'string', - "network.connection.effective_type": 'string', - "network.connection.rtt": 'integer', - "network.connection.type": 'string', - "network.local.address": 'string', - "network.local.port": 'integer', - "network.peer.address": 'string', - "network.peer.port": 'integer', - "network.protocol.name": 'string', - "network.protocol.version": 'string', - "network.transport": 'string', - "network.type": 'string', - "net.host.ip": 'string', - "net.host.name": 'string', - "net.host.port": 'integer', - "net.peer.ip": 'string', - "net.peer.name": 'string', - "net.peer.port": 'integer', - "net.protocol.name": 'string', - "net.protocol.version": 'string', - "net.sock.family": 'string', - "net.sock.host.addr": 'string', - "net.sock.host.port": 'integer', - "net.sock.peer.addr": 'string', - "net.sock.peer.name": 'string', - "net.sock.peer.port": 'integer', - "net.transport": 'string', - "os.build": 'string', - "os.build_id": 'string', - "os.description": 'string', - "os.kernel_version": 'string', - "os.name": 'string', - "os.raw_description": 'string', - "os.rooted": 'boolean', - "os.theme": 'string', - "os.type": 'string', - "os.version": 'string', - "otel.kind": 'string', - "otel.scope.name": 'string', - "otel.scope.version": 'string', - "otel.status_code": 'string', - "otel.status_description": 'string', - "params.": 'string', - "performance.activationStart": 'double', - "performance.timeOrigin": 'double', - "previous_route": 'string', - "process.command_args": 'string[]', - "process.executable.name": 'string', - "process.pid": 'integer', - "process.runtime.description": 'string', - "process.runtime.engine.name": 'string', - "process.runtime.engine.version": 'string', - "process.runtime.name": 'string', - "process.runtime.version": 'string', - "query.": 'string', - "react.version": 'string', - "release": 'string', - "remix.action_form_data.": 'string', - "replay_id": 'string', - "resource.deployment.environment": 'string', - "resource.deployment.environment.name": 'string', - "resource.render_blocking_status": 'string', - "route": 'string', - "rpc.grpc.status_code": 'integer', - "rpc.method": 'string', - "rpc.response.status_code": 'string', - "rpc.service": 'string', - "runtime.build": 'string', - "runtime.name": 'string', - "runtime.raw_description": 'string', - "runtime.version": 'string', - "score.": 'double', - "score.ratio.": 'double', - "score.total": 'double', - "score.weight.": 'double', - "sentry.action": 'string', - "sentry.browser.name": 'string', - "sentry.browser.version": 'string', - "sentry.cancellation_reason": 'string', - "sentry.category": 'string', - "sentry.client_sample_rate": 'double', - "sentry.description": 'string', - "sentry.dist": 'string', - "sentry.domain": 'string', - "sentry.dsc.environment": 'string', - "sentry.dsc.project_id": 'string', - "sentry.dsc.public_key": 'string', - "sentry.dsc.release": 'string', - "sentry.dsc.sampled": 'boolean', - "sentry.dsc.sample_rate": 'string', - "sentry.dsc.trace_id": 'string', - "sentry.dsc.transaction": 'string', - "sentry.environment": 'string', - "sentry.exclusive_time": 'double', - "sentry.graphql.operation": 'string', - "sentry.group": 'string', - "sentry.http.prefetch": 'boolean', - "sentry.idle_span_finish_reason": 'string', - "sentry.is_remote": 'boolean', - "sentry.kind": 'string', - "sentry.main_thread": 'boolean', - "sentry.message.parameter.": 'string', - "sentry.message.template": 'string', - "sentry.metric.source": 'string', - "sentry.mobile": 'boolean', - "sentry.module.": 'string', - "sentry.nextjs.ssr.function.route": 'string', - "sentry.nextjs.ssr.function.type": 'string', - "sentry.normalized_db_query": 'string', - "sentry.normalized_db_query.hash": 'string', - "sentry.normalized_description": 'string', - "sentry.observed_timestamp_nanos": 'string', - "sentry.op": 'string', - "sentry.origin": 'string', - "sentry.platform": 'string', - "sentry.profiler_id": 'string', - "sentry.profile_id": 'string', - "sentry.release": 'string', - "sentry.replay_id": 'string', - "sentry.replay_is_buffering": 'boolean', - "sentry.report_event": 'string', - "sentry.sdk.integrations": 'string[]', - "sentry.sdk.name": 'string', - "sentry.sdk.version": 'string', - "sentry.segment.id": 'string', - "sentry.segment_id": 'string', - "sentry.segment.name": 'string', - "sentry.server_sample_rate": 'double', - "sentry.source": 'string', - "sentry.span.source": 'string', - "sentry.status": 'string', - "sentry.status_code": 'integer', - "sentry.status.message": 'string', - "sentry.thread.id": 'integer', - "sentry.timestamp.sequence": 'integer', - "sentry.trace_lifecycle": 'string', - "sentry.trace.parent_span_id": 'string', - "sentry.trace.status": 'string', - "sentry.transaction": 'string', - "sentry.user.email": 'string', - "sentry.user.geo.city": 'string', - "sentry.user.geo.country_code": 'string', - "sentry.user.geo.region": 'string', - "sentry.user.geo.subdivision": 'string', - "sentry.user.id": 'string', - "sentry.user.ip": 'string', - "sentry.user.username": 'string', - "server.address": 'string', - "server_address": 'string', - "server.port": 'integer', - "service.name": 'string', - "service.version": 'string', - "session.id": 'string', - "stall_percentage": 'double', - "stall_total_time": 'double', - "state.type": 'string', - "thread.id": 'integer', - "thread.name": 'string', - "timber.tag": 'string', - "time_to_full_display": 'double', - "time_to_initial_display": 'double', - "transaction": 'string', - "trpc.procedure_path": 'string', - "trpc.procedure_type": 'string', - "ttfb": 'double', - "ttfb.requestTime": 'double', - "type": 'string', - "ui.component_name": 'string', - "ui.contributes_to_ttfd": 'boolean', - "ui.contributes_to_ttid": 'boolean', - "ui.element.height": 'integer', - "ui.element.id": 'string', - "ui.element.identifier": 'string', - "ui.element.load_time": 'double', - "ui.element.paint_type": 'string', - "ui.element.render_time": 'double', - "ui.element.type": 'string', - "ui.element.url": 'string', - "ui.element.width": 'integer', - "url": 'string', - "url.domain": 'string', - "url.fragment": 'string', - "url.full": 'string', - "url.path": 'string', - "url.path.parameter.": 'string', - "url.port": 'integer', - "url.query": 'string', - "url.same_origin": 'boolean', - "url.scheme": 'string', - "url.template": 'string', - "user_agent.original": 'string', - "user.email": 'string', - "user.full_name": 'string', - "user.geo.city": 'string', - "user.geo.country_code": 'string', - "user.geo.region": 'string', - "user.geo.subdivision": 'string', - "user.hash": 'string', - "user.id": 'string', - "user.ip_address": 'string', - "user.name": 'string', - "user.roles": 'string[]', - "vercel.branch": 'string', - "vercel.build_id": 'string', - "vercel.deployment_id": 'string', - "vercel.destination": 'string', - "vercel.edge_type": 'string', - "vercel.entrypoint": 'string', - "vercel.execution_region": 'string', - "vercel.id": 'string', - "vercel.ja3_digest": 'string', - "vercel.ja4_digest": 'string', - "vercel.log_type": 'string', - "vercel.path": 'string', - "vercel.project_id": 'string', - "vercel.project_name": 'string', - "vercel.proxy.cache_id": 'string', - "vercel.proxy.client_ip": 'string', - "vercel.proxy.host": 'string', - "vercel.proxy.lambda_region": 'string', - "vercel.proxy.method": 'string', - "vercel.proxy.path": 'string', - "vercel.proxy.path_type": 'string', - "vercel.proxy.path_type_variant": 'string', - "vercel.proxy.referer": 'string', - "vercel.proxy.region": 'string', - "vercel.proxy.response_byte_size": 'integer', - "vercel.proxy.scheme": 'string', - "vercel.proxy.status_code": 'integer', - "vercel.proxy.timestamp": 'integer', - "vercel.proxy.user_agent": 'string[]', - "vercel.proxy.vercel_cache": 'string', - "vercel.proxy.vercel_id": 'string', - "vercel.proxy.waf_action": 'string', - "vercel.proxy.waf_rule_id": 'string', - "vercel.request_id": 'string', - "vercel.source": 'string', - "vercel.status_code": 'integer', + 'ai.citations': 'string[]', + 'ai.completion_tokens.used': 'integer', + 'ai.documents': 'string[]', + 'ai.finish_reason': 'string', + 'ai.frequency_penalty': 'double', + 'ai.function_call': 'string', + 'ai.generation_id': 'string', + 'ai.input_messages': 'string', + 'ai.is_search_required': 'boolean', + 'ai.metadata': 'string', + 'ai.model_id': 'string', + 'ai.model.provider': 'string', + 'ai.pipeline.name': 'string', + 'ai.preamble': 'string', + 'ai.presence_penalty': 'double', + 'ai.prompt_tokens.used': 'integer', + 'ai.raw_prompting': 'boolean', + 'ai.responses': 'string[]', + 'ai.response_format': 'string', + 'ai.search_queries': 'string[]', + 'ai.search_results': 'string[]', + 'ai.seed': 'string', + 'ai.streaming': 'boolean', + 'ai.tags': 'string', + 'ai.temperature': 'double', + 'ai.texts': 'string[]', + 'ai.tools': 'string[]', + 'ai.tool_calls': 'string[]', + 'ai.top_k': 'integer', + 'ai.top_p': 'double', + 'ai.total_cost': 'double', + 'ai.total_tokens.used': 'integer', + 'ai.warnings': 'string[]', + 'angular.version': 'string', + 'app.app_build': 'string', + 'app.app_identifier': 'string', + 'app.app_name': 'string', + 'app.app_start_time': 'string', + 'app.app_version': 'string', + 'app.build': 'string', + 'app.identifier': 'string', + 'app.in_foreground': 'boolean', + 'app.name': 'string', + app_start_cold: 'double', + 'app.start_time': 'string', + app_start_type: 'string', + app_start_warm: 'double', + 'app.version': 'string', + 'app.vitals.frames.delay.value': 'integer', + 'app.vitals.frames.frozen.count': 'integer', + 'app.vitals.frames.slow.count': 'integer', + 'app.vitals.frames.total.count': 'integer', + 'app.vitals.start.cold.value': 'double', + 'app.vitals.start.prewarmed': 'boolean', + 'app.vitals.start.reason': 'string', + 'app.vitals.start.screen': 'string', + 'app.vitals.start.type': 'string', + 'app.vitals.start.warm.value': 'double', + 'app.vitals.ttfd.value': 'double', + 'app.vitals.ttid.value': 'double', + 'art.gc.blocking_count': 'integer', + 'art.gc.blocking_time': 'double', + 'art.gc.pre_oome_count': 'integer', + 'art.gc.total_count': 'integer', + 'art.gc.total_time': 'double', + 'art.gc.waiting_time': 'double', + 'art.memory.free': 'integer', + 'art.memory.free_until_gc': 'integer', + 'art.memory.free_until_oome': 'integer', + 'art.memory.max': 'integer', + 'art.memory.total': 'integer', + 'aws.cloudwatch.logs.log_group': 'string', + 'aws.cloudwatch.logs.log_stream': 'string', + 'aws.cloudwatch.logs.url': 'string', + 'aws.lambda.aws_request_id': 'string', + 'aws.lambda.execution_duration_in_millis': 'double', + 'aws.lambda.function_name': 'string', + 'aws.lambda.function_version': 'string', + 'aws.lambda.invoked_arn': 'string', + 'aws.lambda.invoked_function_arn': 'string', + 'aws.lambda.remaining_time_in_millis': 'double', + 'aws.log.group.names': 'string[]', + 'aws.log.stream.names': 'string[]', + blocked_main_thread: 'boolean', + 'browser.name': 'string', + 'browser.performance.navigation.activation_start': 'double', + 'browser.performance.time_origin': 'double', + 'browser.report.type': 'string', + 'browser.script.invoker': 'string', + 'browser.script.invoker_type': 'string', + 'browser.script.source_char_position': 'integer', + 'browser.version': 'string', + 'browser.web_vital.cls.report_event': 'string', + 'browser.web_vital.cls.source.': 'string', + 'browser.web_vital.cls.value': 'double', + 'browser.web_vital.fcp.value': 'double', + 'browser.web_vital.fp.value': 'double', + 'browser.web_vital.inp.value': 'double', + 'browser.web_vital.lcp.element': 'string', + 'browser.web_vital.lcp.id': 'string', + 'browser.web_vital.lcp.load_time': 'integer', + 'browser.web_vital.lcp.render_time': 'integer', + 'browser.web_vital.lcp.report_event': 'string', + 'browser.web_vital.lcp.size': 'integer', + 'browser.web_vital.lcp.url': 'string', + 'browser.web_vital.lcp.value': 'double', + 'browser.web_vital.ttfb.request_time': 'double', + 'browser.web_vital.ttfb.value': 'double', + 'cache.hit': 'boolean', + 'cache.item_size': 'integer', + 'cache.key': 'string[]', + 'cache.operation': 'string', + 'cache.ttl': 'integer', + 'cache.write': 'boolean', + channel: 'string', + 'client.address': 'string', + 'client.port': 'integer', + 'cloudflare.d1.duration': 'integer', + 'cloudflare.d1.query_type': 'string', + 'cloudflare.d1.rows_read': 'integer', + 'cloudflare.d1.rows_written': 'integer', + 'cloudflare.durable_object.query.bindings': 'integer', + 'cloudflare.durable_object.response.rows_read': 'integer', + 'cloudflare.durable_object.response.rows_written': 'integer', + 'cloudflare.r2.bucket': 'string', + 'cloudflare.r2.operation': 'string', + 'cloudflare.r2.request.delimiter': 'string', + 'cloudflare.r2.request.key': 'string', + 'cloudflare.r2.request.part_number': 'integer', + 'cloudflare.r2.request.prefix': 'string', + 'cloudflare.workflow.attempt': 'integer', + 'cloudflare.workflow.retries.backoff': 'string', + 'cloudflare.workflow.retries.delay': 'string', + 'cloudflare.workflow.retries.limit': 'integer', + 'cloudflare.workflow.timeout': 'string', + 'cloud.account.id': 'string', + 'cloud.availability_zone': 'string', + 'cloud.platform': 'string', + 'cloud.provider': 'string', + 'cloud.region': 'string', + 'cloud.resource_id': 'string', + cls: 'double', + 'cls.source.': 'string', + 'code.filepath': 'string', + 'code.file.path': 'string', + 'code.function': 'string', + 'code.function.name': 'string', + 'code.lineno': 'integer', + 'code.line.number': 'integer', + 'code.namespace': 'string', + connectionType: 'string', + 'connection.rtt': 'integer', + 'culture.calendar': 'string', + 'culture.display_name': 'string', + 'culture.is_24_hour_format': 'boolean', + 'culture.locale': 'string', + 'culture.timezone': 'string', + 'db.collection.name': 'string', + 'db.driver.name': 'string', + 'db.name': 'string', + 'db.namespace': 'string', + 'db.operation': 'string', + 'db.operation.batch.size': 'integer', + 'db.operation.name': 'string', + 'db.query.parameter.': 'string', + 'db.query.summary': 'string', + 'db.query.text': 'string', + 'db.redis.connection': 'string', + 'db.redis.key': 'string', + 'db.redis.parameters': 'string[]', + 'db.response.status_code': 'string', + 'db.sql.bindings': 'string[]', + 'db.statement': 'string', + 'db.stored_procedure.name': 'string', + 'db.system': 'string', + 'db.system.name': 'string', + 'db.user': 'string', + deviceMemory: 'string', + 'device.archs': 'string[]', + 'device.battery_level': 'double', + 'device.battery_temperature': 'double', + 'device.boot_time': 'string', + 'device.brand': 'string', + 'device.charging': 'boolean', + 'device.chipset': 'string', + 'device.class': 'string', + 'device.connection_type': 'string', + 'device.cpu_description': 'string', + 'device.external_free_storage': 'integer', + 'device.external_storage_size': 'integer', + 'device.family': 'string', + 'device.free_memory': 'integer', + 'device.free_storage': 'integer', + 'device.id': 'string', + 'device.locale': 'string', + 'device.low_memory': 'boolean', + 'device.low_power_mode': 'boolean', + 'device.manufacturer': 'string', + 'device.memory.estimated_capacity': 'integer', + 'device.memory_size': 'integer', + 'device.model': 'string', + 'device.model_id': 'string', + 'device.name': 'string', + 'device.online': 'boolean', + 'device.orientation': 'string', + 'device.processor_count': 'integer', + 'device.processor_frequency': 'double', + 'device.screen_density': 'double', + 'device.screen_dpi': 'integer', + 'device.screen_height_pixels': 'integer', + 'device.screen_width_pixels': 'integer', + 'device.simulator': 'boolean', + 'device.storage_size': 'integer', + 'device.thermal_state': 'string', + 'device.timezone': 'string', + 'device.usable_memory': 'integer', + effectiveConnectionType: 'string', + environment: 'string', + 'error.type': 'string', + 'event.id': 'integer', + 'event.name': 'string', + 'exception.escaped': 'boolean', + 'exception.message': 'string', + 'exception.stacktrace': 'string', + 'exception.type': 'string', + 'faas.coldstart': 'boolean', + 'faas.cron': 'string', + 'faas.duration_in_ms': 'integer', + 'faas.entry_point': 'string', + 'faas.execution': 'string', + 'faas.id': 'string', + 'faas.identity': 'string', + 'faas.invocation_id': 'string', + 'faas.name': 'string', + 'faas.time': 'string', + 'faas.trigger': 'string', + 'faas.version': 'string', + fcp: 'double', + 'flag.evaluation.': 'boolean', + fp: 'double', + 'frames.delay': 'integer', + 'frames.frozen': 'integer', + frames_frozen_rate: 'double', + 'frames.slow': 'integer', + frames_slow_rate: 'double', + 'frames.total': 'integer', + fs_error: 'string', + 'gcp.function.context.event_id': 'string', + 'gcp.function.context.event_type': 'string', + 'gcp.function.context.id': 'string', + 'gcp.function.context.resource': 'string', + 'gcp.function.context.source': 'string', + 'gcp.function.context.specversion': 'string', + 'gcp.function.context.time': 'string', + 'gcp.function.context.timestamp': 'string', + 'gcp.function.context.type': 'string', + 'gcp.project.id': 'string', + 'gen_ai.agent.name': 'string', + 'gen_ai.context.utilization': 'double', + 'gen_ai.context.window_size': 'integer', + 'gen_ai.conversation.id': 'string', + 'gen_ai.cost.cache_creation.input_tokens': 'double', + 'gen_ai.cost.cache_read.input_tokens': 'double', + 'gen_ai.cost.input_tokens': 'double', + 'gen_ai.cost.output_tokens': 'double', + 'gen_ai.cost.reasoning.output_tokens': 'double', + 'gen_ai.cost.total_tokens': 'double', + 'gen_ai.embeddings.input': 'string', + 'gen_ai.function_id': '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.prompt.name': 'string', + 'gen_ai.provider.name': 'string', + 'gen_ai.request.available_tools': 'string', + 'gen_ai.request.frequency_penalty': 'double', + 'gen_ai.request.max_tokens': 'integer', + 'gen_ai.request.messages': 'string', + 'gen_ai.request.model': 'string', + 'gen_ai.request.presence_penalty': 'double', + 'gen_ai.request.reasoning_effort': 'string', + 'gen_ai.request.seed': 'string', + 'gen_ai.request.temperature': 'double', + 'gen_ai.request.top_k': 'integer', + 'gen_ai.request.top_p': 'double', + 'gen_ai.response.finish_reasons': 'string', + 'gen_ai.response.id': 'string', + 'gen_ai.response.model': 'string', + 'gen_ai.response.streaming': 'boolean', + 'gen_ai.response.text': 'string', + 'gen_ai.response.time_to_first_chunk': 'double', + 'gen_ai.response.time_to_first_token': 'double', + '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', + 'gen_ai.tool.name': 'string', + 'gen_ai.tool.output': 'string', + 'gen_ai.tool.type': 'string', + 'gen_ai.usage.cache_creation.input_tokens': 'integer', + 'gen_ai.usage.cache_read.input_tokens': 'integer', + 'gen_ai.usage.completion_tokens': 'integer', + 'gen_ai.usage.input_tokens': 'integer', + 'gen_ai.usage.input_tokens.cached': 'integer', + 'gen_ai.usage.input_tokens.cache_write': 'integer', + 'gen_ai.usage.output_tokens': 'integer', + 'gen_ai.usage.output_tokens.reasoning': 'integer', + 'gen_ai.usage.prompt_tokens': 'integer', + 'gen_ai.usage.reasoning.output_tokens': 'integer', + 'gen_ai.usage.total_tokens': 'integer', + 'graphql.document': 'string', + 'graphql.operation.name': 'string', + 'graphql.operation.type': 'string', + hardwareConcurrency: 'string', + 'http.client_ip': 'string', + 'http.decoded_response_content_length': 'integer', + 'http.flavor': 'string', + 'http.fragment': 'string', + 'http.host': 'string', + 'http.method': 'string', + 'http.query': 'string', + 'http.request.body.data': 'string', + 'http.request.connection_end': 'double', + 'http.request.connect_start': 'double', + 'http.request.domain_lookup_end': 'double', + 'http.request.domain_lookup_start': 'double', + 'http.request.fetch_start': 'double', + 'http.request.header.': 'string[]', + 'http.request.method': 'string', + 'http.request_method': 'string', + 'http.request.redirect_end': 'double', + 'http.request.redirect_start': 'double', + 'http.request.request_start': 'double', + 'http.request.resend_count': 'integer', + 'http.request.response_end': 'double', + 'http.request.response_start': 'double', + 'http.request.same_origin': 'boolean', + 'http.request.secure_connection_start': 'double', + 'http.request.time_to_first_byte': 'double', + 'http.request.worker_start': 'double', + 'http.response.body.size': 'integer', + 'http.response_content_length': 'integer', + 'http.response.header.content-length': 'string', + 'http.response.header.': 'string[]', + 'http.response.size': 'integer', + 'http.response.status_code': 'integer', + 'http.response_transfer_size': 'integer', + 'http.route': 'string', + 'http.scheme': 'string', + 'http.server_name': 'string', + 'http.server.request.time_in_queue': 'double', + 'http.status_code': 'integer', + 'http.target': 'string', + 'http.url': 'string', + 'http.user_agent': 'string', + id: 'string', + inp: 'double', + 'jsonrpc.protocol.version': 'string', + 'jsonrpc.request.id': 'string', + 'jvm.gc.action': 'string', + 'jvm.gc.name': 'string', + 'jvm.memory.pool.name': 'string', + 'jvm.memory.type': 'string', + 'jvm.thread.daemon': 'boolean', + 'jvm.thread.state': 'string', + lcp: 'double', + 'lcp.element': 'string', + 'lcp.id': 'string', + 'lcp.loadTime': 'integer', + 'lcp.renderTime': 'integer', + 'lcp.size': 'integer', + 'lcp.url': 'string', + 'logger.name': 'string', + 'mcp.cancelled.reason': 'string', + 'mcp.cancelled.request_id': 'string', + 'mcp.client.name': 'string', + 'mcp.client.title': 'string', + 'mcp.client.version': 'string', + 'mcp.lifecycle.phase': 'string', + 'mcp.logging.data_type': 'string', + 'mcp.logging.level': 'string', + 'mcp.logging.logger': 'string', + 'mcp.logging.message': 'string', + 'mcp.method.name': 'string', + 'mcp.progress.current': 'integer', + 'mcp.progress.message': 'string', + 'mcp.progress.percentage': 'double', + 'mcp.progress.token': 'string', + 'mcp.progress.total': 'integer', + 'mcp.prompt.name': 'string', + 'mcp.prompt.result.description': 'string', + 'mcp.prompt.result.message_content': 'string', + 'mcp.prompt.result.message_count': 'integer', + 'mcp.prompt.result.message_role': 'string', + 'mcp.protocol.ready': 'integer', + 'mcp.protocol.version': 'string', + 'mcp.request.argument.': 'string', + 'mcp.request.argument.name': 'string', + 'mcp.request.argument.uri': 'string', + 'mcp.request.id': 'string', + 'mcp.resource.protocol': 'string', + 'mcp.resource.uri': 'string', + 'mcp.server.name': 'string', + 'mcp.server.title': 'string', + 'mcp.server.version': 'string', + 'mcp.session.id': 'string', + 'mcp.tool.name': 'string', + 'mcp.tool.result.content': 'string', + 'mcp.tool.result.content_count': 'integer', + 'mcp.tool.result.is_error': 'boolean', + 'mcp.transport': 'string', + 'mdc.': 'string', + 'messaging.batch.message_count': 'integer', + 'messaging.destination.connection': 'string', + 'messaging.destination.name': 'string', + 'messaging.message.body.size': 'integer', + 'messaging.message.conversation_id': 'string', + 'messaging.message.envelope.size': 'integer', + 'messaging.message.id': 'string', + 'messaging.message.receive.latency': 'integer', + 'messaging.message.retry.count': 'integer', + 'messaging.operation.name': 'string', + 'messaging.operation.type': 'string', + 'messaging.rabbitmq.destination.routing_key': 'string', + 'messaging.system': 'string', + method: 'string', + 'middleware.name': 'string', + 'navigation.type': 'string', + 'nel.elapsed_time': 'integer', + 'nel.phase': 'string', + 'nel.referrer': 'string', + 'nel.sampling_function': 'double', + 'nel.type': 'string', + 'network.connection.effective_type': 'string', + 'network.connection.rtt': 'integer', + 'network.connection.type': 'string', + 'network.local.address': 'string', + 'network.local.port': 'integer', + 'network.peer.address': 'string', + 'network.peer.port': 'integer', + 'network.protocol.name': 'string', + 'network.protocol.version': 'string', + 'network.transport': 'string', + 'network.type': 'string', + 'net.host.ip': 'string', + 'net.host.name': 'string', + 'net.host.port': 'integer', + 'net.peer.ip': 'string', + 'net.peer.name': 'string', + 'net.peer.port': 'integer', + 'net.protocol.name': 'string', + 'net.protocol.version': 'string', + 'net.sock.family': 'string', + 'net.sock.host.addr': 'string', + 'net.sock.host.port': 'integer', + 'net.sock.peer.addr': 'string', + 'net.sock.peer.name': 'string', + 'net.sock.peer.port': 'integer', + 'net.transport': 'string', + 'os.build': 'string', + 'os.build_id': 'string', + 'os.description': 'string', + 'os.kernel_version': 'string', + 'os.name': 'string', + 'os.raw_description': 'string', + 'os.rooted': 'boolean', + 'os.theme': 'string', + 'os.type': 'string', + 'os.version': 'string', + 'otel.kind': 'string', + 'otel.scope.name': 'string', + 'otel.scope.version': 'string', + 'otel.status_code': 'string', + 'otel.status_description': 'string', + 'params.': 'string', + 'performance.activationStart': 'double', + 'performance.timeOrigin': 'double', + previous_route: 'string', + 'process.command_args': 'string[]', + 'process.executable.name': 'string', + 'process.pid': 'integer', + 'process.runtime.description': 'string', + 'process.runtime.engine.name': 'string', + 'process.runtime.engine.version': 'string', + 'process.runtime.name': 'string', + 'process.runtime.version': 'string', + 'query.': 'string', + 'react.version': 'string', + release: 'string', + 'remix.action_form_data.': 'string', + replay_id: 'string', + 'resource.deployment.environment': 'string', + 'resource.deployment.environment.name': 'string', + 'resource.render_blocking_status': 'string', + route: 'string', + 'rpc.grpc.status_code': 'integer', + 'rpc.method': 'string', + 'rpc.response.status_code': 'string', + 'rpc.service': 'string', + 'runtime.build': 'string', + 'runtime.name': 'string', + 'runtime.raw_description': 'string', + 'runtime.version': 'string', + 'score.': 'double', + 'score.ratio.': 'double', + 'score.total': 'double', + 'score.weight.': 'double', + 'sentry.action': 'string', + 'sentry.browser.name': 'string', + 'sentry.browser.version': 'string', + 'sentry.cancellation_reason': 'string', + 'sentry.category': 'string', + 'sentry.client_sample_rate': 'double', + 'sentry.description': 'string', + 'sentry.dist': 'string', + 'sentry.domain': 'string', + 'sentry.dsc.environment': 'string', + 'sentry.dsc.project_id': 'string', + 'sentry.dsc.public_key': 'string', + 'sentry.dsc.release': 'string', + 'sentry.dsc.sampled': 'boolean', + 'sentry.dsc.sample_rate': 'string', + 'sentry.dsc.trace_id': 'string', + 'sentry.dsc.transaction': 'string', + 'sentry.environment': 'string', + 'sentry.exclusive_time': 'double', + 'sentry.graphql.operation': 'string', + 'sentry.group': 'string', + 'sentry.http.prefetch': 'boolean', + 'sentry.idle_span_finish_reason': 'string', + 'sentry.is_remote': 'boolean', + 'sentry.kind': 'string', + 'sentry.main_thread': 'boolean', + 'sentry.message.parameter.': 'string', + 'sentry.message.template': 'string', + 'sentry.metric.source': 'string', + 'sentry.mobile': 'boolean', + 'sentry.module.': 'string', + 'sentry.nextjs.ssr.function.route': 'string', + 'sentry.nextjs.ssr.function.type': 'string', + 'sentry.normalized_db_query': 'string', + 'sentry.normalized_db_query.hash': 'string', + 'sentry.normalized_description': 'string', + 'sentry.observed_timestamp_nanos': 'string', + 'sentry.op': 'string', + 'sentry.origin': 'string', + 'sentry.platform': 'string', + 'sentry.profiler_id': 'string', + 'sentry.profile_id': 'string', + 'sentry.release': 'string', + 'sentry.replay_id': 'string', + 'sentry.replay_is_buffering': 'boolean', + 'sentry.report_event': 'string', + 'sentry.sdk.integrations': 'string[]', + 'sentry.sdk.name': 'string', + 'sentry.sdk.version': 'string', + 'sentry.segment.id': 'string', + 'sentry.segment_id': 'string', + 'sentry.segment.name': 'string', + 'sentry.server_sample_rate': 'double', + 'sentry.source': 'string', + 'sentry.span.source': 'string', + 'sentry.status': 'string', + 'sentry.status_code': 'integer', + 'sentry.status.message': 'string', + 'sentry.thread.id': 'integer', + 'sentry.timestamp.sequence': 'integer', + 'sentry.trace_lifecycle': 'string', + 'sentry.trace.parent_span_id': 'string', + 'sentry.trace.status': 'string', + 'sentry.transaction': 'string', + 'sentry.user.email': 'string', + 'sentry.user.geo.city': 'string', + 'sentry.user.geo.country_code': 'string', + 'sentry.user.geo.region': 'string', + 'sentry.user.geo.subdivision': 'string', + 'sentry.user.id': 'string', + 'sentry.user.ip': 'string', + 'sentry.user.username': 'string', + 'server.address': 'string', + server_address: 'string', + 'server.port': 'integer', + 'service.name': 'string', + 'service.version': 'string', + 'session.id': 'string', + stall_percentage: 'double', + stall_total_time: 'double', + 'state.type': 'string', + 'thread.id': 'integer', + 'thread.name': 'string', + 'timber.tag': 'string', + time_to_full_display: 'double', + time_to_initial_display: 'double', + transaction: 'string', + 'trpc.procedure_path': 'string', + 'trpc.procedure_type': 'string', + ttfb: 'double', + 'ttfb.requestTime': 'double', + type: 'string', + 'ui.component_name': 'string', + 'ui.contributes_to_ttfd': 'boolean', + 'ui.contributes_to_ttid': 'boolean', + 'ui.element.height': 'integer', + 'ui.element.id': 'string', + 'ui.element.identifier': 'string', + 'ui.element.load_time': 'double', + 'ui.element.paint_type': 'string', + 'ui.element.render_time': 'double', + 'ui.element.type': 'string', + 'ui.element.url': 'string', + 'ui.element.width': 'integer', + url: 'string', + 'url.domain': 'string', + 'url.fragment': 'string', + 'url.full': 'string', + 'url.path': 'string', + 'url.path.parameter.': 'string', + 'url.port': 'integer', + 'url.query': 'string', + 'url.same_origin': 'boolean', + 'url.scheme': 'string', + 'url.template': 'string', + 'user_agent.original': 'string', + 'user.email': 'string', + 'user.full_name': 'string', + 'user.geo.city': 'string', + 'user.geo.country_code': 'string', + 'user.geo.region': 'string', + 'user.geo.subdivision': 'string', + 'user.hash': 'string', + 'user.id': 'string', + 'user.ip_address': 'string', + 'user.name': 'string', + 'user.roles': 'string[]', + 'vercel.branch': 'string', + 'vercel.build_id': 'string', + 'vercel.deployment_id': 'string', + 'vercel.destination': 'string', + 'vercel.edge_type': 'string', + 'vercel.entrypoint': 'string', + 'vercel.execution_region': 'string', + 'vercel.id': 'string', + 'vercel.ja3_digest': 'string', + 'vercel.ja4_digest': 'string', + 'vercel.log_type': 'string', + 'vercel.path': 'string', + 'vercel.project_id': 'string', + 'vercel.project_name': 'string', + 'vercel.proxy.cache_id': 'string', + 'vercel.proxy.client_ip': 'string', + 'vercel.proxy.host': 'string', + 'vercel.proxy.lambda_region': 'string', + 'vercel.proxy.method': 'string', + 'vercel.proxy.path': 'string', + 'vercel.proxy.path_type': 'string', + 'vercel.proxy.path_type_variant': 'string', + 'vercel.proxy.referer': 'string', + 'vercel.proxy.region': 'string', + 'vercel.proxy.response_byte_size': 'integer', + 'vercel.proxy.scheme': 'string', + 'vercel.proxy.status_code': 'integer', + 'vercel.proxy.timestamp': 'integer', + 'vercel.proxy.user_agent': 'string[]', + 'vercel.proxy.vercel_cache': 'string', + 'vercel.proxy.vercel_id': 'string', + 'vercel.proxy.waf_action': 'string', + 'vercel.proxy.waf_rule_id': 'string', + 'vercel.request_id': 'string', + 'vercel.source': 'string', + '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 ANGULAR_VERSION | typeof APP_APP_BUILD | typeof APP_APP_IDENTIFIER | typeof APP_APP_NAME | typeof APP_APP_START_TIME | typeof APP_APP_VERSION | typeof APP_BUILD | typeof APP_IDENTIFIER | typeof APP_IN_FOREGROUND | typeof APP_NAME | typeof APP_START_COLD | typeof APP_START_TIME | typeof APP_START_TYPE | typeof APP_START_WARM | typeof APP_VERSION | typeof APP_VITALS_FRAMES_DELAY_VALUE | typeof APP_VITALS_FRAMES_FROZEN_COUNT | typeof APP_VITALS_FRAMES_SLOW_COUNT | typeof APP_VITALS_FRAMES_TOTAL_COUNT | typeof APP_VITALS_START_COLD_VALUE | typeof APP_VITALS_START_PREWARMED | typeof APP_VITALS_START_REASON | typeof APP_VITALS_START_SCREEN | typeof APP_VITALS_START_TYPE | typeof APP_VITALS_START_WARM_VALUE | typeof APP_VITALS_TTFD_VALUE | typeof APP_VITALS_TTID_VALUE | typeof ART_GC_BLOCKING_COUNT | typeof ART_GC_BLOCKING_TIME | typeof ART_GC_PRE_OOME_COUNT | typeof ART_GC_TOTAL_COUNT | typeof ART_GC_TOTAL_TIME | typeof ART_GC_WAITING_TIME | typeof ART_MEMORY_FREE | typeof ART_MEMORY_FREE_UNTIL_GC | typeof ART_MEMORY_FREE_UNTIL_OOME | typeof ART_MEMORY_MAX | typeof ART_MEMORY_TOTAL | typeof AWS_CLOUDWATCH_LOGS_LOG_GROUP | typeof AWS_CLOUDWATCH_LOGS_LOG_STREAM | typeof AWS_CLOUDWATCH_LOGS_URL | typeof AWS_LAMBDA_AWS_REQUEST_ID | typeof AWS_LAMBDA_EXECUTION_DURATION_IN_MILLIS | typeof AWS_LAMBDA_FUNCTION_NAME | typeof AWS_LAMBDA_FUNCTION_VERSION | typeof AWS_LAMBDA_INVOKED_ARN | typeof AWS_LAMBDA_INVOKED_FUNCTION_ARN | typeof AWS_LAMBDA_REMAINING_TIME_IN_MILLIS | typeof AWS_LOG_GROUP_NAMES | typeof AWS_LOG_STREAM_NAMES | typeof BLOCKED_MAIN_THREAD | typeof BROWSER_NAME | typeof BROWSER_PERFORMANCE_NAVIGATION_ACTIVATION_START | typeof BROWSER_PERFORMANCE_TIME_ORIGIN | typeof BROWSER_REPORT_TYPE | typeof BROWSER_SCRIPT_INVOKER | typeof BROWSER_SCRIPT_INVOKER_TYPE | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION | typeof BROWSER_VERSION | typeof BROWSER_WEB_VITAL_CLS_REPORT_EVENT | typeof BROWSER_WEB_VITAL_CLS_SOURCE_KEY | typeof BROWSER_WEB_VITAL_CLS_VALUE | typeof BROWSER_WEB_VITAL_FCP_VALUE | typeof BROWSER_WEB_VITAL_FP_VALUE | typeof BROWSER_WEB_VITAL_INP_VALUE | typeof BROWSER_WEB_VITAL_LCP_ELEMENT | typeof BROWSER_WEB_VITAL_LCP_ID | typeof BROWSER_WEB_VITAL_LCP_LOAD_TIME | typeof BROWSER_WEB_VITAL_LCP_RENDER_TIME | typeof BROWSER_WEB_VITAL_LCP_REPORT_EVENT | typeof BROWSER_WEB_VITAL_LCP_SIZE | typeof BROWSER_WEB_VITAL_LCP_URL | typeof BROWSER_WEB_VITAL_LCP_VALUE | typeof BROWSER_WEB_VITAL_TTFB_REQUEST_TIME | typeof BROWSER_WEB_VITAL_TTFB_VALUE | typeof CACHE_HIT | typeof CACHE_ITEM_SIZE | typeof CACHE_KEY | typeof CACHE_OPERATION | typeof CACHE_TTL | typeof CACHE_WRITE | typeof CHANNEL | typeof CLIENT_ADDRESS | typeof CLIENT_PORT | typeof CLOUDFLARE_D1_DURATION | typeof CLOUDFLARE_D1_QUERY_TYPE | typeof CLOUDFLARE_D1_ROWS_READ | typeof CLOUDFLARE_D1_ROWS_WRITTEN | typeof CLOUDFLARE_DURABLE_OBJECT_QUERY_BINDINGS | typeof CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_READ | typeof CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_WRITTEN | typeof CLOUDFLARE_R2_BUCKET | typeof CLOUDFLARE_R2_OPERATION | typeof CLOUDFLARE_R2_REQUEST_DELIMITER | typeof CLOUDFLARE_R2_REQUEST_KEY | typeof CLOUDFLARE_R2_REQUEST_PART_NUMBER | typeof CLOUDFLARE_R2_REQUEST_PREFIX | typeof CLOUDFLARE_WORKFLOW_ATTEMPT | typeof CLOUDFLARE_WORKFLOW_RETRIES_BACKOFF | typeof CLOUDFLARE_WORKFLOW_RETRIES_DELAY | typeof CLOUDFLARE_WORKFLOW_RETRIES_LIMIT | typeof CLOUDFLARE_WORKFLOW_TIMEOUT | typeof CLOUD_ACCOUNT_ID | typeof CLOUD_AVAILABILITY_ZONE | typeof CLOUD_PLATFORM | typeof CLOUD_PROVIDER | typeof CLOUD_REGION | typeof CLOUD_RESOURCE_ID | typeof CLS | typeof CLS_SOURCE_KEY | 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 CONNECTIONTYPE | typeof CONNECTION_RTT | typeof CULTURE_CALENDAR | typeof CULTURE_DISPLAY_NAME | typeof CULTURE_IS_24_HOUR_FORMAT | typeof CULTURE_LOCALE | typeof CULTURE_TIMEZONE | typeof DB_COLLECTION_NAME | typeof DB_DRIVER_NAME | typeof DB_NAME | typeof DB_NAMESPACE | typeof DB_OPERATION | typeof DB_OPERATION_BATCH_SIZE | typeof DB_OPERATION_NAME | typeof DB_QUERY_PARAMETER_KEY | typeof DB_QUERY_SUMMARY | typeof DB_QUERY_TEXT | typeof DB_REDIS_CONNECTION | typeof DB_REDIS_KEY | typeof DB_REDIS_PARAMETERS | typeof DB_RESPONSE_STATUS_CODE | typeof DB_SQL_BINDINGS | typeof DB_STATEMENT | typeof DB_STORED_PROCEDURE_NAME | typeof DB_SYSTEM | typeof DB_SYSTEM_NAME | typeof DB_USER | typeof DEVICEMEMORY | typeof DEVICE_ARCHS | typeof DEVICE_BATTERY_LEVEL | typeof DEVICE_BATTERY_TEMPERATURE | typeof DEVICE_BOOT_TIME | typeof DEVICE_BRAND | typeof DEVICE_CHARGING | typeof DEVICE_CHIPSET | typeof DEVICE_CLASS | typeof DEVICE_CONNECTION_TYPE | typeof DEVICE_CPU_DESCRIPTION | typeof DEVICE_EXTERNAL_FREE_STORAGE | typeof DEVICE_EXTERNAL_STORAGE_SIZE | typeof DEVICE_FAMILY | typeof DEVICE_FREE_MEMORY | typeof DEVICE_FREE_STORAGE | typeof DEVICE_ID | typeof DEVICE_LOCALE | typeof DEVICE_LOW_MEMORY | typeof DEVICE_LOW_POWER_MODE | typeof DEVICE_MANUFACTURER | typeof DEVICE_MEMORY_ESTIMATED_CAPACITY | typeof DEVICE_MEMORY_SIZE | typeof DEVICE_MODEL | typeof DEVICE_MODEL_ID | typeof DEVICE_NAME | typeof DEVICE_ONLINE | typeof DEVICE_ORIENTATION | typeof DEVICE_PROCESSOR_COUNT | typeof DEVICE_PROCESSOR_FREQUENCY | typeof DEVICE_SCREEN_DENSITY | typeof DEVICE_SCREEN_DPI | typeof DEVICE_SCREEN_HEIGHT_PIXELS | typeof DEVICE_SCREEN_WIDTH_PIXELS | typeof DEVICE_SIMULATOR | typeof DEVICE_STORAGE_SIZE | typeof DEVICE_THERMAL_STATE | typeof DEVICE_TIMEZONE | typeof DEVICE_USABLE_MEMORY | typeof EFFECTIVECONNECTIONTYPE | typeof ENVIRONMENT | typeof ERROR_TYPE | 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_DURATION_IN_MS | typeof FAAS_ENTRY_POINT | typeof FAAS_EXECUTION | typeof FAAS_ID | typeof FAAS_IDENTITY | typeof FAAS_INVOCATION_ID | typeof FAAS_NAME | typeof FAAS_TIME | typeof FAAS_TRIGGER | typeof FAAS_VERSION | typeof FCP | typeof FLAG_EVALUATION_KEY | typeof FP | typeof FRAMES_DELAY | typeof FRAMES_FROZEN | typeof FRAMES_FROZEN_RATE | typeof FRAMES_SLOW | typeof FRAMES_SLOW_RATE | typeof FRAMES_TOTAL | typeof FS_ERROR | typeof GCP_FUNCTION_CONTEXT_EVENT_ID | typeof GCP_FUNCTION_CONTEXT_EVENT_TYPE | typeof GCP_FUNCTION_CONTEXT_ID | typeof GCP_FUNCTION_CONTEXT_RESOURCE | typeof GCP_FUNCTION_CONTEXT_SOURCE | typeof GCP_FUNCTION_CONTEXT_SPECVERSION | typeof GCP_FUNCTION_CONTEXT_TIME | typeof GCP_FUNCTION_CONTEXT_TIMESTAMP | typeof GCP_FUNCTION_CONTEXT_TYPE | typeof GCP_PROJECT_ID | typeof GEN_AI_AGENT_NAME | typeof GEN_AI_CONTEXT_UTILIZATION | typeof GEN_AI_CONTEXT_WINDOW_SIZE | typeof GEN_AI_CONVERSATION_ID | typeof GEN_AI_COST_CACHE_CREATION_INPUT_TOKENS | typeof GEN_AI_COST_CACHE_READ_INPUT_TOKENS | typeof GEN_AI_COST_INPUT_TOKENS | typeof GEN_AI_COST_OUTPUT_TOKENS | typeof GEN_AI_COST_REASONING_OUTPUT_TOKENS | typeof GEN_AI_COST_TOTAL_TOKENS | typeof GEN_AI_EMBEDDINGS_INPUT | typeof GEN_AI_FUNCTION_ID | 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_PROMPT_NAME | typeof GEN_AI_PROVIDER_NAME | 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_REASONING_EFFORT | 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_TIME_TO_FIRST_CHUNK | typeof GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN | 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_CACHE_CREATION_INPUT_TOKENS | typeof GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS | 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_REASONING_OUTPUT_TOKENS | typeof GEN_AI_USAGE_TOTAL_TOKENS | typeof GRAPHQL_DOCUMENT | typeof GRAPHQL_OPERATION_NAME | typeof GRAPHQL_OPERATION_TYPE | typeof HARDWARECONCURRENCY | 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_BODY_DATA | 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_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_SAME_ORIGIN | 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_SERVER_REQUEST_TIME_IN_QUEUE | typeof HTTP_STATUS_CODE | typeof HTTP_TARGET | typeof HTTP_URL | typeof HTTP_USER_AGENT | typeof ID | typeof INP | typeof JSONRPC_PROTOCOL_VERSION | typeof JSONRPC_REQUEST_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 | typeof LCP_ELEMENT | typeof LCP_ID | typeof LCP_LOADTIME | typeof LCP_RENDERTIME | 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_BATCH_MESSAGE_COUNT | typeof MESSAGING_DESTINATION_CONNECTION | typeof MESSAGING_DESTINATION_NAME | typeof MESSAGING_MESSAGE_BODY_SIZE | typeof MESSAGING_MESSAGE_CONVERSATION_ID | typeof MESSAGING_MESSAGE_ENVELOPE_SIZE | typeof MESSAGING_MESSAGE_ID | typeof MESSAGING_MESSAGE_RECEIVE_LATENCY | typeof MESSAGING_MESSAGE_RETRY_COUNT | typeof MESSAGING_OPERATION_NAME | typeof MESSAGING_OPERATION_TYPE | typeof MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY | typeof MESSAGING_SYSTEM | typeof METHOD | typeof MIDDLEWARE_NAME | typeof NAVIGATION_TYPE | typeof NEL_ELAPSED_TIME | typeof NEL_PHASE | typeof NEL_REFERRER | typeof NEL_SAMPLING_FUNCTION | typeof NEL_TYPE | typeof NETWORK_CONNECTION_EFFECTIVE_TYPE | typeof NETWORK_CONNECTION_RTT | typeof NETWORK_CONNECTION_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 | typeof OS_BUILD_ID | typeof OS_DESCRIPTION | typeof OS_KERNEL_VERSION | typeof OS_NAME | typeof OS_RAW_DESCRIPTION | typeof OS_ROOTED | typeof OS_THEME | typeof OS_TYPE | typeof OS_VERSION | typeof OTEL_KIND | typeof OTEL_SCOPE_NAME | typeof OTEL_SCOPE_VERSION | typeof OTEL_STATUS_CODE | typeof OTEL_STATUS_DESCRIPTION | typeof PARAMS_KEY | typeof PERFORMANCE_ACTIVATIONSTART | typeof PERFORMANCE_TIMEORIGIN | typeof PREVIOUS_ROUTE | typeof PROCESS_COMMAND_ARGS | typeof PROCESS_EXECUTABLE_NAME | typeof PROCESS_PID | typeof PROCESS_RUNTIME_DESCRIPTION | typeof PROCESS_RUNTIME_ENGINE_NAME | typeof PROCESS_RUNTIME_ENGINE_VERSION | typeof PROCESS_RUNTIME_NAME | typeof PROCESS_RUNTIME_VERSION | typeof QUERY_KEY | typeof REACT_VERSION | typeof RELEASE | typeof REMIX_ACTION_FORM_DATA_KEY | typeof REPLAY_ID | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME | typeof RESOURCE_RENDER_BLOCKING_STATUS | typeof ROUTE | typeof RPC_GRPC_STATUS_CODE | typeof RPC_METHOD | typeof RPC_RESPONSE_STATUS_CODE | typeof RPC_SERVICE | typeof RUNTIME_BUILD | typeof RUNTIME_NAME | typeof RUNTIME_RAW_DESCRIPTION | typeof RUNTIME_VERSION | typeof SCORE_KEY | typeof SCORE_RATIO_KEY | typeof SCORE_TOTAL | typeof SCORE_WEIGHT_KEY | 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_PROJECT_ID | 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_MAIN_THREAD | typeof SENTRY_MESSAGE_PARAMETER_KEY | typeof SENTRY_MESSAGE_TEMPLATE | typeof SENTRY_METRIC_SOURCE | typeof SENTRY_MOBILE | 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_PROFILER_ID | typeof SENTRY_PROFILE_ID | typeof SENTRY_RELEASE | typeof SENTRY_REPLAY_ID | typeof SENTRY_REPLAY_IS_BUFFERING | typeof SENTRY_REPORT_EVENT | 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_SOURCE | typeof SENTRY_SPAN_SOURCE | typeof SENTRY_STATUS | typeof SENTRY_STATUS_CODE | typeof SENTRY_STATUS_MESSAGE | typeof SENTRY_THREAD_ID | typeof SENTRY_TIMESTAMP_SEQUENCE | typeof SENTRY_TRACE_LIFECYCLE | typeof SENTRY_TRACE_PARENT_SPAN_ID | typeof SENTRY_TRACE_STATUS | typeof SENTRY_TRANSACTION | typeof SENTRY_USER_EMAIL | typeof SENTRY_USER_GEO_CITY | typeof SENTRY_USER_GEO_COUNTRY_CODE | typeof SENTRY_USER_GEO_REGION | typeof SENTRY_USER_GEO_SUBDIVISION | typeof SENTRY_USER_ID | typeof SENTRY_USER_IP | typeof SENTRY_USER_USERNAME | typeof SERVER_ADDRESS | typeof _SERVER_ADDRESS | typeof SERVER_PORT | typeof SERVICE_NAME | typeof SERVICE_VERSION | typeof SESSION_ID | typeof STALL_PERCENTAGE | typeof STALL_TOTAL_TIME | typeof STATE_TYPE | typeof THREAD_ID | typeof THREAD_NAME | typeof TIMBER_TAG | typeof TIME_TO_FULL_DISPLAY | typeof TIME_TO_INITIAL_DISPLAY | typeof TRANSACTION | typeof TRPC_PROCEDURE_PATH | typeof TRPC_PROCEDURE_TYPE | typeof TTFB | typeof TTFB_REQUESTTIME | typeof TYPE | typeof UI_COMPONENT_NAME | typeof UI_CONTRIBUTES_TO_TTFD | typeof UI_CONTRIBUTES_TO_TTID | typeof UI_ELEMENT_HEIGHT | typeof UI_ELEMENT_ID | typeof UI_ELEMENT_IDENTIFIER | typeof UI_ELEMENT_LOAD_TIME | typeof UI_ELEMENT_PAINT_TYPE | typeof UI_ELEMENT_RENDER_TIME | typeof UI_ELEMENT_TYPE | typeof UI_ELEMENT_URL | typeof UI_ELEMENT_WIDTH | typeof URL | typeof URL_DOMAIN | typeof URL_FRAGMENT | typeof URL_FULL | typeof URL_PATH | typeof URL_PATH_PARAMETER_KEY | typeof URL_PORT | typeof URL_QUERY | typeof URL_SAME_ORIGIN | 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_PATH | 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 ANGULAR_VERSION + | typeof APP_APP_BUILD + | typeof APP_APP_IDENTIFIER + | typeof APP_APP_NAME + | typeof APP_APP_START_TIME + | typeof APP_APP_VERSION + | typeof APP_BUILD + | typeof APP_IDENTIFIER + | typeof APP_IN_FOREGROUND + | typeof APP_NAME + | typeof APP_START_COLD + | typeof APP_START_TIME + | typeof APP_START_TYPE + | typeof APP_START_WARM + | typeof APP_VERSION + | typeof APP_VITALS_FRAMES_DELAY_VALUE + | typeof APP_VITALS_FRAMES_FROZEN_COUNT + | typeof APP_VITALS_FRAMES_SLOW_COUNT + | typeof APP_VITALS_FRAMES_TOTAL_COUNT + | typeof APP_VITALS_START_COLD_VALUE + | typeof APP_VITALS_START_PREWARMED + | typeof APP_VITALS_START_REASON + | typeof APP_VITALS_START_SCREEN + | typeof APP_VITALS_START_TYPE + | typeof APP_VITALS_START_WARM_VALUE + | typeof APP_VITALS_TTFD_VALUE + | typeof APP_VITALS_TTID_VALUE + | typeof ART_GC_BLOCKING_COUNT + | typeof ART_GC_BLOCKING_TIME + | typeof ART_GC_PRE_OOME_COUNT + | typeof ART_GC_TOTAL_COUNT + | typeof ART_GC_TOTAL_TIME + | typeof ART_GC_WAITING_TIME + | typeof ART_MEMORY_FREE + | typeof ART_MEMORY_FREE_UNTIL_GC + | typeof ART_MEMORY_FREE_UNTIL_OOME + | typeof ART_MEMORY_MAX + | typeof ART_MEMORY_TOTAL + | typeof AWS_CLOUDWATCH_LOGS_LOG_GROUP + | typeof AWS_CLOUDWATCH_LOGS_LOG_STREAM + | typeof AWS_CLOUDWATCH_LOGS_URL + | typeof AWS_LAMBDA_AWS_REQUEST_ID + | typeof AWS_LAMBDA_EXECUTION_DURATION_IN_MILLIS + | typeof AWS_LAMBDA_FUNCTION_NAME + | typeof AWS_LAMBDA_FUNCTION_VERSION + | typeof AWS_LAMBDA_INVOKED_ARN + | typeof AWS_LAMBDA_INVOKED_FUNCTION_ARN + | typeof AWS_LAMBDA_REMAINING_TIME_IN_MILLIS + | typeof AWS_LOG_GROUP_NAMES + | typeof AWS_LOG_STREAM_NAMES + | typeof BLOCKED_MAIN_THREAD + | typeof BROWSER_NAME + | typeof BROWSER_PERFORMANCE_NAVIGATION_ACTIVATION_START + | typeof BROWSER_PERFORMANCE_TIME_ORIGIN + | typeof BROWSER_REPORT_TYPE + | typeof BROWSER_SCRIPT_INVOKER + | typeof BROWSER_SCRIPT_INVOKER_TYPE + | typeof BROWSER_SCRIPT_SOURCE_CHAR_POSITION + | typeof BROWSER_VERSION + | typeof BROWSER_WEB_VITAL_CLS_REPORT_EVENT + | typeof BROWSER_WEB_VITAL_CLS_SOURCE_KEY + | typeof BROWSER_WEB_VITAL_CLS_VALUE + | typeof BROWSER_WEB_VITAL_FCP_VALUE + | typeof BROWSER_WEB_VITAL_FP_VALUE + | typeof BROWSER_WEB_VITAL_INP_VALUE + | typeof BROWSER_WEB_VITAL_LCP_ELEMENT + | typeof BROWSER_WEB_VITAL_LCP_ID + | typeof BROWSER_WEB_VITAL_LCP_LOAD_TIME + | typeof BROWSER_WEB_VITAL_LCP_RENDER_TIME + | typeof BROWSER_WEB_VITAL_LCP_REPORT_EVENT + | typeof BROWSER_WEB_VITAL_LCP_SIZE + | typeof BROWSER_WEB_VITAL_LCP_URL + | typeof BROWSER_WEB_VITAL_LCP_VALUE + | typeof BROWSER_WEB_VITAL_TTFB_REQUEST_TIME + | typeof BROWSER_WEB_VITAL_TTFB_VALUE + | typeof CACHE_HIT + | typeof CACHE_ITEM_SIZE + | typeof CACHE_KEY + | typeof CACHE_OPERATION + | typeof CACHE_TTL + | typeof CACHE_WRITE + | typeof CHANNEL + | typeof CLIENT_ADDRESS + | typeof CLIENT_PORT + | typeof CLOUDFLARE_D1_DURATION + | typeof CLOUDFLARE_D1_QUERY_TYPE + | typeof CLOUDFLARE_D1_ROWS_READ + | typeof CLOUDFLARE_D1_ROWS_WRITTEN + | typeof CLOUDFLARE_DURABLE_OBJECT_QUERY_BINDINGS + | typeof CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_READ + | typeof CLOUDFLARE_DURABLE_OBJECT_RESPONSE_ROWS_WRITTEN + | typeof CLOUDFLARE_R2_BUCKET + | typeof CLOUDFLARE_R2_OPERATION + | typeof CLOUDFLARE_R2_REQUEST_DELIMITER + | typeof CLOUDFLARE_R2_REQUEST_KEY + | typeof CLOUDFLARE_R2_REQUEST_PART_NUMBER + | typeof CLOUDFLARE_R2_REQUEST_PREFIX + | typeof CLOUDFLARE_WORKFLOW_ATTEMPT + | typeof CLOUDFLARE_WORKFLOW_RETRIES_BACKOFF + | typeof CLOUDFLARE_WORKFLOW_RETRIES_DELAY + | typeof CLOUDFLARE_WORKFLOW_RETRIES_LIMIT + | typeof CLOUDFLARE_WORKFLOW_TIMEOUT + | typeof CLOUD_ACCOUNT_ID + | typeof CLOUD_AVAILABILITY_ZONE + | typeof CLOUD_PLATFORM + | typeof CLOUD_PROVIDER + | typeof CLOUD_REGION + | typeof CLOUD_RESOURCE_ID + | typeof CLS + | typeof CLS_SOURCE_KEY + | 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 CONNECTIONTYPE + | typeof CONNECTION_RTT + | typeof CULTURE_CALENDAR + | typeof CULTURE_DISPLAY_NAME + | typeof CULTURE_IS_24_HOUR_FORMAT + | typeof CULTURE_LOCALE + | typeof CULTURE_TIMEZONE + | typeof DB_COLLECTION_NAME + | typeof DB_DRIVER_NAME + | typeof DB_NAME + | typeof DB_NAMESPACE + | typeof DB_OPERATION + | typeof DB_OPERATION_BATCH_SIZE + | typeof DB_OPERATION_NAME + | typeof DB_QUERY_PARAMETER_KEY + | typeof DB_QUERY_SUMMARY + | typeof DB_QUERY_TEXT + | typeof DB_REDIS_CONNECTION + | typeof DB_REDIS_KEY + | typeof DB_REDIS_PARAMETERS + | typeof DB_RESPONSE_STATUS_CODE + | typeof DB_SQL_BINDINGS + | typeof DB_STATEMENT + | typeof DB_STORED_PROCEDURE_NAME + | typeof DB_SYSTEM + | typeof DB_SYSTEM_NAME + | typeof DB_USER + | typeof DEVICEMEMORY + | typeof DEVICE_ARCHS + | typeof DEVICE_BATTERY_LEVEL + | typeof DEVICE_BATTERY_TEMPERATURE + | typeof DEVICE_BOOT_TIME + | typeof DEVICE_BRAND + | typeof DEVICE_CHARGING + | typeof DEVICE_CHIPSET + | typeof DEVICE_CLASS + | typeof DEVICE_CONNECTION_TYPE + | typeof DEVICE_CPU_DESCRIPTION + | typeof DEVICE_EXTERNAL_FREE_STORAGE + | typeof DEVICE_EXTERNAL_STORAGE_SIZE + | typeof DEVICE_FAMILY + | typeof DEVICE_FREE_MEMORY + | typeof DEVICE_FREE_STORAGE + | typeof DEVICE_ID + | typeof DEVICE_LOCALE + | typeof DEVICE_LOW_MEMORY + | typeof DEVICE_LOW_POWER_MODE + | typeof DEVICE_MANUFACTURER + | typeof DEVICE_MEMORY_ESTIMATED_CAPACITY + | typeof DEVICE_MEMORY_SIZE + | typeof DEVICE_MODEL + | typeof DEVICE_MODEL_ID + | typeof DEVICE_NAME + | typeof DEVICE_ONLINE + | typeof DEVICE_ORIENTATION + | typeof DEVICE_PROCESSOR_COUNT + | typeof DEVICE_PROCESSOR_FREQUENCY + | typeof DEVICE_SCREEN_DENSITY + | typeof DEVICE_SCREEN_DPI + | typeof DEVICE_SCREEN_HEIGHT_PIXELS + | typeof DEVICE_SCREEN_WIDTH_PIXELS + | typeof DEVICE_SIMULATOR + | typeof DEVICE_STORAGE_SIZE + | typeof DEVICE_THERMAL_STATE + | typeof DEVICE_TIMEZONE + | typeof DEVICE_USABLE_MEMORY + | typeof EFFECTIVECONNECTIONTYPE + | typeof ENVIRONMENT + | typeof ERROR_TYPE + | 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_DURATION_IN_MS + | typeof FAAS_ENTRY_POINT + | typeof FAAS_EXECUTION + | typeof FAAS_ID + | typeof FAAS_IDENTITY + | typeof FAAS_INVOCATION_ID + | typeof FAAS_NAME + | typeof FAAS_TIME + | typeof FAAS_TRIGGER + | typeof FAAS_VERSION + | typeof FCP + | typeof FLAG_EVALUATION_KEY + | typeof FP + | typeof FRAMES_DELAY + | typeof FRAMES_FROZEN + | typeof FRAMES_FROZEN_RATE + | typeof FRAMES_SLOW + | typeof FRAMES_SLOW_RATE + | typeof FRAMES_TOTAL + | typeof FS_ERROR + | typeof GCP_FUNCTION_CONTEXT_EVENT_ID + | typeof GCP_FUNCTION_CONTEXT_EVENT_TYPE + | typeof GCP_FUNCTION_CONTEXT_ID + | typeof GCP_FUNCTION_CONTEXT_RESOURCE + | typeof GCP_FUNCTION_CONTEXT_SOURCE + | typeof GCP_FUNCTION_CONTEXT_SPECVERSION + | typeof GCP_FUNCTION_CONTEXT_TIME + | typeof GCP_FUNCTION_CONTEXT_TIMESTAMP + | typeof GCP_FUNCTION_CONTEXT_TYPE + | typeof GCP_PROJECT_ID + | typeof GEN_AI_AGENT_NAME + | typeof GEN_AI_CONTEXT_UTILIZATION + | typeof GEN_AI_CONTEXT_WINDOW_SIZE + | typeof GEN_AI_CONVERSATION_ID + | typeof GEN_AI_COST_CACHE_CREATION_INPUT_TOKENS + | typeof GEN_AI_COST_CACHE_READ_INPUT_TOKENS + | typeof GEN_AI_COST_INPUT_TOKENS + | typeof GEN_AI_COST_OUTPUT_TOKENS + | typeof GEN_AI_COST_REASONING_OUTPUT_TOKENS + | typeof GEN_AI_COST_TOTAL_TOKENS + | typeof GEN_AI_EMBEDDINGS_INPUT + | typeof GEN_AI_FUNCTION_ID + | 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_PROMPT_NAME + | typeof GEN_AI_PROVIDER_NAME + | 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_REASONING_EFFORT + | 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_TIME_TO_FIRST_CHUNK + | typeof GEN_AI_RESPONSE_TIME_TO_FIRST_TOKEN + | 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_CACHE_CREATION_INPUT_TOKENS + | typeof GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS + | 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_REASONING_OUTPUT_TOKENS + | typeof GEN_AI_USAGE_TOTAL_TOKENS + | typeof GRAPHQL_DOCUMENT + | typeof GRAPHQL_OPERATION_NAME + | typeof GRAPHQL_OPERATION_TYPE + | typeof HARDWARECONCURRENCY + | 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_BODY_DATA + | 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_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_SAME_ORIGIN + | 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_SERVER_REQUEST_TIME_IN_QUEUE + | typeof HTTP_STATUS_CODE + | typeof HTTP_TARGET + | typeof HTTP_URL + | typeof HTTP_USER_AGENT + | typeof ID + | typeof INP + | typeof JSONRPC_PROTOCOL_VERSION + | typeof JSONRPC_REQUEST_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 + | typeof LCP_ELEMENT + | typeof LCP_ID + | typeof LCP_LOADTIME + | typeof LCP_RENDERTIME + | 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_BATCH_MESSAGE_COUNT + | typeof MESSAGING_DESTINATION_CONNECTION + | typeof MESSAGING_DESTINATION_NAME + | typeof MESSAGING_MESSAGE_BODY_SIZE + | typeof MESSAGING_MESSAGE_CONVERSATION_ID + | typeof MESSAGING_MESSAGE_ENVELOPE_SIZE + | typeof MESSAGING_MESSAGE_ID + | typeof MESSAGING_MESSAGE_RECEIVE_LATENCY + | typeof MESSAGING_MESSAGE_RETRY_COUNT + | typeof MESSAGING_OPERATION_NAME + | typeof MESSAGING_OPERATION_TYPE + | typeof MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY + | typeof MESSAGING_SYSTEM + | typeof METHOD + | typeof MIDDLEWARE_NAME + | typeof NAVIGATION_TYPE + | typeof NEL_ELAPSED_TIME + | typeof NEL_PHASE + | typeof NEL_REFERRER + | typeof NEL_SAMPLING_FUNCTION + | typeof NEL_TYPE + | typeof NETWORK_CONNECTION_EFFECTIVE_TYPE + | typeof NETWORK_CONNECTION_RTT + | typeof NETWORK_CONNECTION_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 + | typeof OS_BUILD_ID + | typeof OS_DESCRIPTION + | typeof OS_KERNEL_VERSION + | typeof OS_NAME + | typeof OS_RAW_DESCRIPTION + | typeof OS_ROOTED + | typeof OS_THEME + | typeof OS_TYPE + | typeof OS_VERSION + | typeof OTEL_KIND + | typeof OTEL_SCOPE_NAME + | typeof OTEL_SCOPE_VERSION + | typeof OTEL_STATUS_CODE + | typeof OTEL_STATUS_DESCRIPTION + | typeof PARAMS_KEY + | typeof PERFORMANCE_ACTIVATIONSTART + | typeof PERFORMANCE_TIMEORIGIN + | typeof PREVIOUS_ROUTE + | typeof PROCESS_COMMAND_ARGS + | typeof PROCESS_EXECUTABLE_NAME + | typeof PROCESS_PID + | typeof PROCESS_RUNTIME_DESCRIPTION + | typeof PROCESS_RUNTIME_ENGINE_NAME + | typeof PROCESS_RUNTIME_ENGINE_VERSION + | typeof PROCESS_RUNTIME_NAME + | typeof PROCESS_RUNTIME_VERSION + | typeof QUERY_KEY + | typeof REACT_VERSION + | typeof RELEASE + | typeof REMIX_ACTION_FORM_DATA_KEY + | typeof REPLAY_ID + | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT + | typeof RESOURCE_DEPLOYMENT_ENVIRONMENT_NAME + | typeof RESOURCE_RENDER_BLOCKING_STATUS + | typeof ROUTE + | typeof RPC_GRPC_STATUS_CODE + | typeof RPC_METHOD + | typeof RPC_RESPONSE_STATUS_CODE + | typeof RPC_SERVICE + | typeof RUNTIME_BUILD + | typeof RUNTIME_NAME + | typeof RUNTIME_RAW_DESCRIPTION + | typeof RUNTIME_VERSION + | typeof SCORE_KEY + | typeof SCORE_RATIO_KEY + | typeof SCORE_TOTAL + | typeof SCORE_WEIGHT_KEY + | 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_PROJECT_ID + | 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_MAIN_THREAD + | typeof SENTRY_MESSAGE_PARAMETER_KEY + | typeof SENTRY_MESSAGE_TEMPLATE + | typeof SENTRY_METRIC_SOURCE + | typeof SENTRY_MOBILE + | 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_PROFILER_ID + | typeof SENTRY_PROFILE_ID + | typeof SENTRY_RELEASE + | typeof SENTRY_REPLAY_ID + | typeof SENTRY_REPLAY_IS_BUFFERING + | typeof SENTRY_REPORT_EVENT + | 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_SOURCE + | typeof SENTRY_SPAN_SOURCE + | typeof SENTRY_STATUS + | typeof SENTRY_STATUS_CODE + | typeof SENTRY_STATUS_MESSAGE + | typeof SENTRY_THREAD_ID + | typeof SENTRY_TIMESTAMP_SEQUENCE + | typeof SENTRY_TRACE_LIFECYCLE + | typeof SENTRY_TRACE_PARENT_SPAN_ID + | typeof SENTRY_TRACE_STATUS + | typeof SENTRY_TRANSACTION + | typeof SENTRY_USER_EMAIL + | typeof SENTRY_USER_GEO_CITY + | typeof SENTRY_USER_GEO_COUNTRY_CODE + | typeof SENTRY_USER_GEO_REGION + | typeof SENTRY_USER_GEO_SUBDIVISION + | typeof SENTRY_USER_ID + | typeof SENTRY_USER_IP + | typeof SENTRY_USER_USERNAME + | typeof SERVER_ADDRESS + | typeof _SERVER_ADDRESS + | typeof SERVER_PORT + | typeof SERVICE_NAME + | typeof SERVICE_VERSION + | typeof SESSION_ID + | typeof STALL_PERCENTAGE + | typeof STALL_TOTAL_TIME + | typeof STATE_TYPE + | typeof THREAD_ID + | typeof THREAD_NAME + | typeof TIMBER_TAG + | typeof TIME_TO_FULL_DISPLAY + | typeof TIME_TO_INITIAL_DISPLAY + | typeof TRANSACTION + | typeof TRPC_PROCEDURE_PATH + | typeof TRPC_PROCEDURE_TYPE + | typeof TTFB + | typeof TTFB_REQUESTTIME + | typeof TYPE + | typeof UI_COMPONENT_NAME + | typeof UI_CONTRIBUTES_TO_TTFD + | typeof UI_CONTRIBUTES_TO_TTID + | typeof UI_ELEMENT_HEIGHT + | typeof UI_ELEMENT_ID + | typeof UI_ELEMENT_IDENTIFIER + | typeof UI_ELEMENT_LOAD_TIME + | typeof UI_ELEMENT_PAINT_TYPE + | typeof UI_ELEMENT_RENDER_TIME + | typeof UI_ELEMENT_TYPE + | typeof UI_ELEMENT_URL + | typeof UI_ELEMENT_WIDTH + | typeof URL + | typeof URL_DOMAIN + | typeof URL_FRAGMENT + | typeof URL_FULL + | typeof URL_PATH + | typeof URL_PATH_PARAMETER_KEY + | typeof URL_PORT + | typeof URL_QUERY + | typeof URL_SAME_ORIGIN + | 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_PATH + | 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.", + 'ai.citations': { + brief: 'References or sources cited by the AI model in its response.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: ["Citation 1","Citation 2"], + example: ['Citation 1', 'Citation 2'], deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "ai.completion_tokens.used": { - brief: "The number of tokens used to respond to the message.", + 'ai.completion_tokens.used': { + brief: 'The number of tokens used to respond to the message.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', 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"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57, 61] }, - { version: "0.0.0" }, - ], + aliases: ['gen_ai.usage.output_tokens', 'gen_ai.usage.completion_tokens'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61] }, { version: '0.0.0' }], }, - "ai.documents": { - brief: "Documents or content chunks used as context for the AI model.", + 'ai.documents': { + brief: 'Documents or content chunks used as context for the AI model.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: ["document1.txt","document2.pdf"], + example: ['document1.txt', 'document2.pdf'], deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "ai.finish_reason": { - brief: "The reason why the model stopped generating.", + 'ai.finish_reason': { + brief: 'The reason why the model stopped generating.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "COMPLETE", + example: 'COMPLETE', deprecation: { - replacement: "gen_ai.response.finish_reasons" + replacement: 'gen_ai.response.finish_reasons', }, - aliases: ["gen_ai.response.finish_reasons"], - changelog: [ - { version: "0.1.0", prs: [55, 57, 61, 108, 127] }, - ], + aliases: ['gen_ai.response.finish_reasons'], + changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.5, deprecation: { - replacement: "gen_ai.request.frequency_penalty" + replacement: 'gen_ai.request.frequency_penalty', }, - aliases: ["gen_ai.request.frequency_penalty"], + aliases: ['gen_ai.request.frequency_penalty'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [55, 57, 61, 108] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, ], }, - "ai.function_call": { - brief: "For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", + 'ai.function_call': { + brief: + 'For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "function_name", + example: 'function_name', deprecation: { - replacement: "gen_ai.tool.name" + replacement: 'gen_ai.tool.name', }, - aliases: ["gen_ai.tool.name", "mcp.tool.name"], - changelog: [ - { version: "0.1.0", prs: [55, 57, 61, 108] }, - ], + aliases: ['gen_ai.tool.name', 'mcp.tool.name'], + changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108] }], }, - "ai.generation_id": { - brief: "Unique identifier for the completion.", + 'ai.generation_id': { + brief: 'Unique identifier for the completion.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "gen_123abc", + example: 'gen_123abc', deprecation: { - replacement: "gen_ai.response.id" + replacement: 'gen_ai.response.id', }, - aliases: ["gen_ai.response.id"], - changelog: [ - { version: "0.1.0", prs: [55, 57, 61, 108, 127] }, - ], + aliases: ['gen_ai.response.id'], + changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], }, - "ai.input_messages": { - brief: "The input messages sent to the model", + 'ai.input_messages': { + brief: 'The input messages sent to the model', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "[{\"role\": \"user\", \"message\": \"hello\"}]", + example: '[{"role": "user", "message": "hello"}]', deprecation: { - replacement: "gen_ai.input.messages" + replacement: 'gen_ai.input.messages', }, - aliases: ["gen_ai.request.messages"], - changelog: [ - { version: "0.1.0", prs: [65, 119] }, - { version: "0.0.0" }, - ], + aliases: ['gen_ai.request.messages'], + changelog: [{ version: '0.1.0', prs: [65, 119] }, { version: '0.0.0' }], }, - "ai.is_search_required": { - brief: "Boolean indicating if the model needs to perform a search.", + 'ai.is_search_required': { + brief: 'Boolean indicating if the model needs to perform a search.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: false, deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "ai.metadata": { - brief: "Extra metadata passed to an AI pipeline step.", + 'ai.metadata': { + brief: 'Extra metadata passed to an AI pipeline step.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "{\"user_id\": 123, \"session_id\": \"abc123\"}", + example: '{"user_id": 123, "session_id": "abc123"}', deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55, 127] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55, 127] }, ], }, - "ai.model_id": { - brief: "The vendor-specific ID of the model used.", + 'ai.model_id': { + brief: 'The vendor-specific ID of the model used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "gpt-4", + example: 'gpt-4', deprecation: { - replacement: "gen_ai.response.model" + replacement: 'gen_ai.response.model', }, - aliases: ["gen_ai.response.model"], - changelog: [ - { version: "0.1.0", prs: [57, 61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['gen_ai.response.model'], + changelog: [{ version: '0.1.0', prs: [57, 61, 127] }, { version: '0.0.0' }], }, - "ai.model.provider": { - brief: "The provider of the model.", + 'ai.model.provider': { + brief: 'The provider of the model.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "openai", + example: 'openai', deprecation: { - replacement: "gen_ai.provider.name" + replacement: 'gen_ai.provider.name', }, - aliases: ["gen_ai.provider.name", "gen_ai.system"], + aliases: ['gen_ai.provider.name', 'gen_ai.system'], changelog: [ - { version: "0.4.0", prs: [253] }, - { version: "0.1.0", prs: [57, 61, 108, 127] }, + { version: '0.4.0', prs: [253] }, + { version: '0.1.0', prs: [57, 61, 108, 127] }, ], }, - "ai.pipeline.name": { - brief: "The name of the AI pipeline.", + 'ai.pipeline.name': { + brief: 'The name of the AI pipeline.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Autofix Pipeline", + example: 'Autofix Pipeline', deprecation: { - replacement: "gen_ai.pipeline.name" + replacement: 'gen_ai.pipeline.name', }, - aliases: ["gen_ai.pipeline.name"], - changelog: [ - { version: "0.1.0", prs: [53, 76, 108, 127] }, - ], + aliases: ['gen_ai.pipeline.name'], + changelog: [{ version: '0.1.0', prs: [53, 76, 108, 127] }], }, - "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.", + '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.", type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "You are now a clown.", + example: 'You are now a clown.', deprecation: { - replacement: "gen_ai.system_instructions" + replacement: 'gen_ai.system_instructions', }, - aliases: ["gen_ai.system_instructions"], + aliases: ['gen_ai.system_instructions'], changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.5, deprecation: { - replacement: "gen_ai.request.presence_penalty" + replacement: 'gen_ai.request.presence_penalty', }, - aliases: ["gen_ai.request.presence_penalty"], + aliases: ['gen_ai.request.presence_penalty'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [55, 57, 61, 108] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, ], }, - "ai.prompt_tokens.used": { - brief: "The number of tokens used to process just the prompt.", + 'ai.prompt_tokens.used': { + brief: 'The number of tokens used to process just the prompt.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', 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"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57, 61] }, - { version: "0.0.0" }, - ], + aliases: ['gen_ai.usage.prompt_tokens', 'gen_ai.usage.input_tokens'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61] }, { version: '0.0.0' }], }, - "ai.raw_prompting": { - brief: "When enabled, the user’s prompt will be sent to the model without any pre-processing.", + 'ai.raw_prompting': { + brief: 'When enabled, the user’s prompt will be sent to the model without any pre-processing.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "ai.responses": { - brief: "The response messages sent back by the AI model.", + 'ai.responses': { + brief: 'The response messages sent back by the AI model.', type: 'string[]', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: ["hello","world"], + example: ['hello', 'world'], deprecation: { - replacement: "gen_ai.output.messages" + replacement: 'gen_ai.output.messages', }, - changelog: [ - { version: "0.1.0", prs: [65, 127] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.1.0', prs: [65, 127] }, { version: '0.0.0' }], }, - "ai.response_format": { - brief: "For an AI model call, the format of the response", + 'ai.response_format': { + brief: 'For an AI model call, the format of the response', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "json_object", + example: 'json_object', deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55, 127] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55, 127] }, ], }, - "ai.search_queries": { - brief: "Queries used to search for relevant context or documents.", + 'ai.search_queries': { + brief: 'Queries used to search for relevant context or documents.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: ["climate change effects","renewable energy"], + example: ['climate change effects', 'renewable energy'], deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "ai.search_results": { - brief: "Results returned from search queries for context.", + 'ai.search_results': { + brief: 'Results returned from search queries for context.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: ["search_result_1, search_result_2"], + example: ['search_result_1, search_result_2'], deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "ai.seed": { - brief: "The seed, ideally models given the same seed and same other parameters will produce the exact same output.", + 'ai.seed': { + brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1234567890", + example: '1234567890', deprecation: { - replacement: "gen_ai.request.seed" + replacement: 'gen_ai.request.seed', }, - aliases: ["gen_ai.request.seed"], - changelog: [ - { version: "0.1.0", prs: [55, 57, 61, 108, 127] }, - ], + aliases: ['gen_ai.request.seed'], + changelog: [{ version: '0.1.0', prs: [55, 57, 61, 108, 127] }], }, - "ai.streaming": { - brief: "Whether the request was streamed back.", + 'ai.streaming': { + brief: 'Whether the request was streamed back.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, deprecation: { - replacement: "gen_ai.response.streaming" + replacement: 'gen_ai.response.streaming', }, - aliases: ["gen_ai.response.streaming"], - changelog: [ - { version: "0.1.0", prs: [76, 108] }, - { version: "0.0.0" }, - ], + aliases: ['gen_ai.response.streaming'], + changelog: [{ version: '0.1.0', prs: [76, 108] }, { version: '0.0.0' }], }, - "ai.tags": { - brief: "Tags that describe an AI pipeline step.", + 'ai.tags': { + brief: 'Tags that describe an AI pipeline step.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "{\"executed_function\": \"add_integers\"}", + example: '{"executed_function": "add_integers"}', deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55, 127] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55, 127] }, ], }, - "ai.temperature": { - brief: "For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", + 'ai.temperature': { + brief: + 'For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.1, deprecation: { - replacement: "gen_ai.request.temperature" + replacement: 'gen_ai.request.temperature', }, - aliases: ["gen_ai.request.temperature"], + aliases: ['gen_ai.request.temperature'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [55, 57, 61, 108] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, ], }, - "ai.texts": { - brief: "Raw text inputs provided to the model.", + 'ai.texts': { + brief: 'Raw text inputs provided to the model.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: ["Hello, how are you?","What is the capital of France?"], + example: ['Hello, how are you?', 'What is the capital of France?'], deprecation: { - replacement: "gen_ai.input.messages" + replacement: 'gen_ai.input.messages', }, - aliases: ["gen_ai.input.messages"], + aliases: ['gen_ai.input.messages'], changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "ai.tools": { - brief: "For an AI model call, the functions that are available", + 'ai.tools': { + brief: 'For an AI model call, the functions that are available', type: 'string[]', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: ["function_1","function_2"], + example: ['function_1', 'function_2'], deprecation: { - replacement: "gen_ai.tool.definitions" + replacement: 'gen_ai.tool.definitions', }, - changelog: [ - { version: "0.1.0", prs: [55, 65, 127] }, - ], + changelog: [{ version: '0.1.0', prs: [55, 65, 127] }], }, - "ai.tool_calls": { - brief: "For an AI model call, the tool calls that were made.", + 'ai.tool_calls': { + brief: 'For an AI model call, the tool calls that were made.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: ["tool_call_1","tool_call_2"], + example: ['tool_call_1', 'tool_call_2'], deprecation: { - replacement: "gen_ai.output.messages" + replacement: 'gen_ai.output.messages', }, - changelog: [ - { version: "0.1.0", prs: [55, 65] }, - ], + changelog: [{ version: '0.1.0', prs: [55, 65] }], }, - "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).", + '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).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 35, deprecation: { - replacement: "gen_ai.request.top_k" + replacement: 'gen_ai.request.top_k', }, - aliases: ["gen_ai.request.top_k"], + aliases: ['gen_ai.request.top_k'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [55, 57, 61, 108] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, ], }, - "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).", + '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).', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.7, deprecation: { - replacement: "gen_ai.request.top_p" + replacement: 'gen_ai.request.top_p', }, - aliases: ["gen_ai.request.top_p"], + aliases: ['gen_ai.request.top_p'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [55, 57, 61, 108] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [55, 57, 61, 108] }, ], }, - "ai.total_cost": { - brief: "The total cost for the tokens used.", + 'ai.total_cost': { + brief: 'The total cost for the tokens used.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12.34, deprecation: { - replacement: "gen_ai.cost.total_tokens" + replacement: 'gen_ai.cost.total_tokens', }, - aliases: ["gen_ai.cost.total_tokens"], + aliases: ['gen_ai.cost.total_tokens'], changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [53] }, + { version: '0.5.0', prs: [264] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [53] }, ], }, - "ai.total_tokens.used": { - brief: "The total number of tokens used to process the prompt.", + 'ai.total_tokens.used': { + brief: 'The total number of tokens used to process the prompt.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 30, deprecation: { - replacement: "gen_ai.usage.total_tokens" + replacement: 'gen_ai.usage.total_tokens', }, - aliases: ["gen_ai.usage.total_tokens"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57, 61, 108] }, - { version: "0.0.0" }, - ], + aliases: ['gen_ai.usage.total_tokens'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [57, 61, 108] }, { version: '0.0.0' }], }, - "ai.warnings": { - brief: "Warning messages generated during model execution.", + 'ai.warnings': { + brief: 'Warning messages generated during model execution.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: ["Token limit exceeded"], + example: ['Token limit exceeded'], deprecation: {}, changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.1.0", prs: [55] }, + { version: '0.5.0', prs: [264] }, + { version: '0.1.0', prs: [55] }, ], }, - "angular.version": { - brief: "The version of the Angular framework", + 'angular.version': { + brief: 'The version of the Angular framework', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "17.1.0", - changelog: [ - { version: "0.7.0", prs: [367], description: "Added angular.version attribute" }, - ], + example: '17.1.0', + changelog: [{ version: '0.7.0', prs: [367], description: 'Added angular.version attribute' }], }, - "app.app_build": { - brief: "Internal build identifier, as it appears on the platform.", + 'app.app_build': { + brief: 'Internal build identifier, as it appears on the platform.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1", + example: '1', deprecation: { - replacement: "app.build", - reason: "Deprecated in favor of app.build" + replacement: 'app.build', + reason: 'Deprecated in favor of app.build', }, - aliases: ["app.build"], + aliases: ['app.build'], changelog: [ - { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_build in favor of app.build" }, + { version: '0.5.0', prs: [296], description: 'Added and deprecated app.app_build in favor of app.build' }, ], }, - "app.app_identifier": { - brief: "Version-independent application identifier, often a dotted bundle ID.", + 'app.app_identifier': { + brief: 'Version-independent application identifier, often a dotted bundle ID.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "com.example.myapp", + example: 'com.example.myapp', deprecation: { - replacement: "app.identifier", - reason: "Deprecated in favor of app.identifier" + replacement: 'app.identifier', + reason: 'Deprecated in favor of app.identifier', }, - aliases: ["app.identifier"], + aliases: ['app.identifier'], changelog: [ - { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_identifier in favor of app.identifier" }, + { + version: '0.5.0', + prs: [296], + description: 'Added and deprecated app.app_identifier in favor of app.identifier', + }, ], }, - "app.app_name": { - brief: "Human readable application name, as it appears on the platform.", + 'app.app_name': { + brief: 'Human readable application name, as it appears on the platform.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "My App", + example: 'My App', deprecation: { - replacement: "app.name", - reason: "Deprecated in favor of app.name" + replacement: 'app.name', + reason: 'Deprecated in favor of app.name', }, - aliases: ["app.name"], + aliases: ['app.name'], changelog: [ - { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_name in favor of app.name" }, + { version: '0.5.0', prs: [296], description: 'Added and deprecated app.app_name in favor of app.name' }, ], }, - "app.app_start_time": { - brief: "Formatted UTC timestamp when the user started the application.", + 'app.app_start_time': { + brief: 'Formatted UTC timestamp when the user started the application.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "2025-01-01T00:00:00.000Z", + example: '2025-01-01T00:00:00.000Z', deprecation: { - replacement: "app.start_time", - reason: "Deprecated in favor of app.start_time" + replacement: 'app.start_time', + reason: 'Deprecated in favor of app.start_time', }, - aliases: ["app.start_time"], + aliases: ['app.start_time'], changelog: [ - { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_start_time in favor of app.start_time" }, + { + version: '0.5.0', + prs: [296], + description: 'Added and deprecated app.app_start_time in favor of app.start_time', + }, ], }, - "app.app_version": { - brief: "Human readable application version, as it appears on the platform.", + 'app.app_version': { + brief: 'Human readable application version, as it appears on the platform.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1.0.0", + example: '1.0.0', deprecation: { - replacement: "app.version", - reason: "Deprecated in favor of app.version" + replacement: 'app.version', + reason: 'Deprecated in favor of app.version', }, - aliases: ["app.version"], + aliases: ['app.version'], changelog: [ - { version: "0.5.0", prs: [296], description: "Added and deprecated app.app_version in favor of app.version" }, + { version: '0.5.0', prs: [296], description: 'Added and deprecated app.app_version in favor of app.version' }, ], }, - "app.build": { - brief: "Internal build identifier, as it appears on the platform.", + 'app.build': { + brief: 'Internal build identifier, as it appears on the platform.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1", - aliases: ["app.app_build"], - changelog: [ - { version: "0.5.0", prs: [296], description: "Added app.build attribute" }, - ], + example: '1', + aliases: ['app.app_build'], + changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.build attribute' }], }, - "app.identifier": { - brief: "Version-independent application identifier, often a dotted bundle ID.", + 'app.identifier': { + brief: 'Version-independent application identifier, often a dotted bundle ID.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "com.example.myapp", - aliases: ["app.app_identifier"], - changelog: [ - { version: "0.5.0", prs: [296], description: "Added app.identifier attribute" }, - ], + example: 'com.example.myapp', + aliases: ['app.app_identifier'], + changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.identifier attribute' }], }, - "app.in_foreground": { - brief: "Whether the application is currently in the foreground.", + 'app.in_foreground': { + brief: 'Whether the application is currently in the foreground.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.5.0", prs: [296], description: "Added app.in_foreground attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.in_foreground attribute' }], }, - "app.name": { - brief: "Human readable application name, as it appears on the platform.", + 'app.name': { + brief: 'Human readable application name, as it appears on the platform.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "My App", - aliases: ["app.app_name"], - changelog: [ - { version: "0.5.0", prs: [296], description: "Added app.name attribute" }, - ], + example: 'My App', + aliases: ['app.app_name'], + changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.name attribute' }], }, - "app_start_cold": { - brief: "The duration of a cold app start in milliseconds", + app_start_cold: { + brief: 'The duration of a cold app start in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, deprecation: { - replacement: "app.vitals.start.cold.value", - reason: "Replaced by app.vitals.start.cold.value to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.start.cold.value', + reason: + 'Replaced by app.vitals.start.cold.value to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.start.cold.value"], + aliases: ['app.vitals.start.cold.value'], changelog: [ - { version: "0.5.0", prs: [323], description: "Added and deprecated in favor of app.vitals.start.cold.value" }, + { version: '0.5.0', prs: [323], description: 'Added and deprecated in favor of app.vitals.start.cold.value' }, ], }, - "app.start_time": { - brief: "Formatted UTC timestamp when the user started the application.", + 'app.start_time': { + brief: 'Formatted UTC timestamp when the user started the application.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "2025-01-01T00:00:00.000Z", - aliases: ["app.app_start_time"], - changelog: [ - { version: "0.5.0", prs: [296], description: "Added app.start_time attribute" }, - ], + example: '2025-01-01T00:00:00.000Z', + aliases: ['app.app_start_time'], + changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.start_time attribute' }], }, - "app_start_type": { - brief: "Mobile app start variant. Either cold or warm.", + app_start_type: { + brief: 'Mobile app start variant. Either cold or warm.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "cold", + example: 'cold', deprecation: { - replacement: "app.vitals.start.type", - reason: "Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.start.type', + reason: + 'Replaced by app.vitals.start.type to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.start.type"], + aliases: ['app.vitals.start.type'], changelog: [ - { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.start.type" }, - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, + { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.start.type' }, + { version: '0.1.0', prs: [127] }, + { version: '0.0.0' }, ], }, - "app_start_warm": { - brief: "The duration of a warm app start in milliseconds", + app_start_warm: { + brief: 'The duration of a warm app start in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, deprecation: { - replacement: "app.vitals.start.warm.value", - reason: "Replaced by app.vitals.start.warm.value to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.start.warm.value', + reason: + 'Replaced by app.vitals.start.warm.value to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.start.warm.value"], + aliases: ['app.vitals.start.warm.value'], changelog: [ - { version: "0.5.0", prs: [323], description: "Added and deprecated in favor of app.vitals.start.warm.value" }, + { version: '0.5.0', prs: [323], description: 'Added and deprecated in favor of app.vitals.start.warm.value' }, ], }, - "app.version": { - brief: "Human readable application version, as it appears on the platform.", + 'app.version': { + brief: 'Human readable application version, as it appears on the platform.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1.0.0", - aliases: ["app.app_version"], - changelog: [ - { version: "0.5.0", prs: [296], description: "Added app.version attribute" }, - ], + example: '1.0.0', + aliases: ['app.app_version'], + changelog: [{ version: '0.5.0', prs: [296], description: 'Added app.version attribute' }], }, - "app.vitals.frames.delay.value": { - 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/).", + 'app.vitals.frames.delay.value': { + 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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 5, - aliases: ["frames.delay"], + aliases: ['frames.delay'], changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.frames.delay.value to replace frames.delay" }, + { version: '0.5.0', prs: [313], description: 'Added app.vitals.frames.delay.value to replace frames.delay' }, ], }, - "app.vitals.frames.frozen.count": { - brief: "The number of frozen frames rendered during the lifetime of the span.", + 'app.vitals.frames.frozen.count': { + brief: 'The number of frozen frames rendered during the lifetime of the span.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 3, - aliases: ["frames.frozen"], + aliases: ['frames.frozen'], changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.frames.frozen.count to replace frames.frozen" }, + { version: '0.5.0', prs: [313], description: 'Added app.vitals.frames.frozen.count to replace frames.frozen' }, ], }, - "app.vitals.frames.slow.count": { - brief: "The number of slow frames rendered during the lifetime of the span.", + 'app.vitals.frames.slow.count': { + brief: 'The number of slow frames rendered during the lifetime of the span.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, - aliases: ["frames.slow"], + aliases: ['frames.slow'], changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.frames.slow.count to replace frames.slow" }, + { version: '0.5.0', prs: [313], description: 'Added app.vitals.frames.slow.count to replace frames.slow' }, ], }, - "app.vitals.frames.total.count": { - brief: "The number of total frames rendered during the lifetime of the span.", + 'app.vitals.frames.total.count': { + brief: 'The number of total frames rendered during the lifetime of the span.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 60, - aliases: ["frames.total"], + aliases: ['frames.total'], changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.frames.total.count to replace frames.total" }, + { version: '0.5.0', prs: [313], description: 'Added app.vitals.frames.total.count to replace frames.total' }, ], }, - "app.vitals.start.cold.value": { - brief: "The duration of a cold app start in milliseconds", + 'app.vitals.start.cold.value': { + brief: 'The duration of a cold app start in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, - aliases: ["app_start_cold"], - changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.start.cold.value attribute" }, - ], + aliases: ['app_start_cold'], + changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.start.cold.value attribute' }], }, - "app.vitals.start.prewarmed": { - brief: "Whether the app start was prewarmed.", + 'app.vitals.start.prewarmed': { + brief: 'Whether the app start was prewarmed.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.11.0", prs: [379], description: "Added app.vitals.start.prewarmed attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [379], description: 'Added app.vitals.start.prewarmed attribute' }], }, - "app.vitals.start.reason": { - brief: "The reason that triggered the app start.", + 'app.vitals.start.reason': { + brief: 'The reason that triggered the app start.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "push", - changelog: [ - { version: "0.7.0", prs: [353], description: "Added app.vitals.start.reason attribute" }, - ], + example: 'push', + changelog: [{ version: '0.7.0', prs: [353], description: 'Added app.vitals.start.reason attribute' }], }, - "app.vitals.start.screen": { - brief: "The screen that is rendered when the app start is complete. This is the screen the user first sees and can interact with after launch. The absence of this attribute on the app start span indicates a background app start where no UI was rendered.", + 'app.vitals.start.screen': { + brief: + 'The screen that is rendered when the app start is complete. This is the screen the user first sees and can interact with after launch. The absence of this attribute on the app start span indicates a background app start where no UI was rendered.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "MainActivity", - changelog: [ - { version: "0.7.0", prs: [353], description: "Added app.vitals.start.screen attribute" }, - ], + example: 'MainActivity', + changelog: [{ version: '0.7.0', prs: [353], description: 'Added app.vitals.start.screen attribute' }], }, - "app.vitals.start.type": { - brief: "The type of app start, for example `cold` or `warm`", + 'app.vitals.start.type': { + brief: 'The type of app start, for example `cold` or `warm`', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "cold", - aliases: ["app_start_type"], - changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.start.type attribute" }, - ], + example: 'cold', + aliases: ['app_start_type'], + changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.start.type attribute' }], }, - "app.vitals.start.warm.value": { - brief: "The duration of a warm app start in milliseconds", + 'app.vitals.start.warm.value': { + brief: 'The duration of a warm app start in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, - aliases: ["app_start_warm"], - changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.start.warm.value attribute" }, - ], + aliases: ['app_start_warm'], + changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.start.warm.value attribute' }], }, - "app.vitals.ttfd.value": { - brief: "The duration of time to full display in milliseconds", + 'app.vitals.ttfd.value': { + brief: 'The duration of time to full display in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, - aliases: ["time_to_full_display"], - changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.ttfd.value attribute" }, - ], + aliases: ['time_to_full_display'], + changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.ttfd.value attribute' }], }, - "app.vitals.ttid.value": { - brief: "The duration of time to initial display in milliseconds", + 'app.vitals.ttid.value': { + brief: 'The duration of time to initial display in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, - aliases: ["time_to_initial_display"], - changelog: [ - { version: "0.5.0", prs: [313], description: "Added app.vitals.ttid.value attribute" }, - ], + aliases: ['time_to_initial_display'], + changelog: [{ version: '0.5.0', prs: [313], description: 'Added app.vitals.ttid.value attribute' }], }, - "art.gc.blocking_count": { - brief: "Total number of blocking (stop-the-world) garbage collections performed by the Android Runtime", + 'art.gc.blocking_count': { + brief: 'Total number of blocking (stop-the-world) garbage collections performed by the Android Runtime', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.gc.blocking_count attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.blocking_count attribute' }], }, - "art.gc.blocking_time": { - brief: "Total time spent in blocking (stop-the-world) garbage collections by the Android Runtime, in milliseconds", + 'art.gc.blocking_time': { + brief: 'Total time spent in blocking (stop-the-world) garbage collections by the Android Runtime, in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 11.873, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.gc.blocking_time attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.blocking_time attribute' }], }, - "art.gc.pre_oome_count": { - brief: "Total number of garbage collections triggered as a last resort before an OutOfMemoryError by the Android Runtime", + 'art.gc.pre_oome_count': { + brief: + 'Total number of garbage collections triggered as a last resort before an OutOfMemoryError by the Android Runtime', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.gc.pre_oome_count attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.pre_oome_count attribute' }], }, - "art.gc.total_count": { - brief: "Total number of garbage collections performed by the Android Runtime", + 'art.gc.total_count': { + brief: 'Total number of garbage collections performed by the Android Runtime', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.gc.total_count attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.total_count attribute' }], }, - "art.gc.total_time": { - brief: "Total time spent in garbage collection by the Android Runtime, in milliseconds", + 'art.gc.total_time': { + brief: 'Total time spent in garbage collection by the Android Runtime, in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 11.807, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.gc.total_time attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.total_time attribute' }], }, - "art.gc.waiting_time": { - brief: "Total time threads spent waiting for garbage collection to complete in the Android Runtime, in milliseconds", + 'art.gc.waiting_time': { + brief: + 'Total time threads spent waiting for garbage collection to complete in the Android Runtime, in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 8.054, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.gc.waiting_time attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.gc.waiting_time attribute' }], }, - "art.memory.free": { - brief: "Free memory available to the process as reported by the Android Runtime, in bytes", + 'art.memory.free': { + brief: 'Free memory available to the process as reported by the Android Runtime, in bytes', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 3181568, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.memory.free attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.free attribute' }], }, - "art.memory.free_until_gc": { - brief: "Free memory available before a garbage collection would be triggered by the Android Runtime, in bytes", + 'art.memory.free_until_gc': { + brief: 'Free memory available before a garbage collection would be triggered by the Android Runtime, in bytes', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 3181568, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.memory.free_until_gc attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.free_until_gc attribute' }], }, - "art.memory.free_until_oome": { - brief: "Free memory available before an OutOfMemoryError would be thrown by the Android Runtime, in bytes", + 'art.memory.free_until_oome': { + brief: 'Free memory available before an OutOfMemoryError would be thrown by the Android Runtime, in bytes', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 196083712, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.memory.free_until_oome attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.free_until_oome attribute' }], }, - "art.memory.max": { - brief: "Maximum memory the process is allowed to use as reported by the Android Runtime, in bytes", + 'art.memory.max': { + brief: 'Maximum memory the process is allowed to use as reported by the Android Runtime, in bytes', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 201326592, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.memory.max attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.max attribute' }], }, - "art.memory.total": { - brief: "Total memory currently allocated to the process by the Android Runtime, in bytes", + 'art.memory.total': { + brief: 'Total memory currently allocated to the process by the Android Runtime, in bytes', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 7774208, - changelog: [ - { version: "0.11.0", prs: [382], description: "Added art.memory.total attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [382], description: 'Added art.memory.total attribute' }], }, - "aws.cloudwatch.logs.log_group": { - brief: "The name of the CloudWatch Logs log group", + 'aws.cloudwatch.logs.log_group': { + brief: 'The name of the CloudWatch Logs log group', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "/aws/lambda/my-function", - changelog: [ - { version: "0.7.0", prs: [369], description: "Added aws.cloudwatch.logs.log_group attribute" }, - ], + example: '/aws/lambda/my-function', + changelog: [{ version: '0.7.0', prs: [369], description: 'Added aws.cloudwatch.logs.log_group attribute' }], }, - "aws.cloudwatch.logs.log_stream": { - brief: "The name of the CloudWatch Logs log stream", + 'aws.cloudwatch.logs.log_stream': { + brief: 'The name of the CloudWatch Logs log stream', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "2024/01/01/[$LATEST]abcdef1234567890", - changelog: [ - { version: "0.7.0", prs: [369], description: "Added aws.cloudwatch.logs.log_stream attribute" }, - ], + example: '2024/01/01/[$LATEST]abcdef1234567890', + changelog: [{ version: '0.7.0', prs: [369], description: 'Added aws.cloudwatch.logs.log_stream attribute' }], }, - "aws.cloudwatch.logs.url": { - brief: "The URL to the CloudWatch Logs log group", + 'aws.cloudwatch.logs.url': { + brief: 'The URL to the CloudWatch Logs log group', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/my-log-group", - changelog: [ - { version: "0.7.0", prs: [369], description: "Added aws.cloudwatch.logs.url attribute" }, - ], + example: 'https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups/log-group/my-log-group', + changelog: [{ version: '0.7.0', prs: [369], description: 'Added aws.cloudwatch.logs.url attribute' }], }, - "aws.lambda.aws_request_id": { - brief: "The AWS request ID as received by the Lambda function runtime", + 'aws.lambda.aws_request_id': { + brief: 'The AWS request ID as received by the Lambda function runtime', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "8476a536-e9f4-11e8-9739-2dfe598c3fcd", + example: '8476a536-e9f4-11e8-9739-2dfe598c3fcd', deprecation: { - replacement: "faas.invocation_id", - reason: "This attribute is being deprecated in favor of faas.invocation_id" + replacement: 'faas.invocation_id', + reason: 'This attribute is being deprecated in favor of faas.invocation_id', }, - aliases: ["faas.invocation_id", "faas.execution"], + aliases: ['faas.invocation_id', 'faas.execution'], changelog: [ - { version: "next", prs: [473], description: "Added faas.execution as an alias" }, - { version: "0.11.1", prs: [414, 424], description: "Deprecated aws.lambda.aws_request_id in favor of faas.invocation_id" }, - { version: "0.7.0", prs: [369], description: "Added aws.lambda.aws_request_id attribute" }, + { version: 'next', prs: [473], description: 'Added faas.execution as an alias' }, + { + version: '0.11.1', + prs: [414, 424], + description: 'Deprecated aws.lambda.aws_request_id in favor of faas.invocation_id', + }, + { version: '0.7.0', prs: [369], description: 'Added aws.lambda.aws_request_id attribute' }, ], }, - "aws.lambda.execution_duration_in_millis": { - brief: "The execution duration of the Lambda function invocation in milliseconds", + 'aws.lambda.execution_duration_in_millis': { + brief: 'The execution duration of the Lambda function invocation in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, changelog: [ - { version: "0.7.0", prs: [369], description: "Added aws.lambda.execution_duration_in_millis attribute" }, + { version: '0.7.0', prs: [369], description: 'Added aws.lambda.execution_duration_in_millis attribute' }, ], }, - "aws.lambda.function_name": { - brief: "The name of the Lambda function", + 'aws.lambda.function_name': { + brief: 'The name of the Lambda function', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "my-function", + example: 'my-function', deprecation: { - replacement: "faas.name", - reason: "Use the OTel-aligned faas.name attribute instead" + replacement: 'faas.name', + reason: 'Use the OTel-aligned faas.name attribute instead', }, - aliases: ["faas.name"], + aliases: ['faas.name'], changelog: [ - { version: "0.11.1", prs: [414], description: "Deprecated aws.lambda.function_name in favor of faas.name" }, - { version: "0.7.0", prs: [369], description: "Added aws.lambda.function_name attribute" }, + { version: '0.11.1', prs: [414], description: 'Deprecated aws.lambda.function_name in favor of faas.name' }, + { version: '0.7.0', prs: [369], description: 'Added aws.lambda.function_name attribute' }, ], }, - "aws.lambda.function_version": { - brief: "The version of the Lambda function", + 'aws.lambda.function_version': { + brief: 'The version of the Lambda function', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "$LATEST", + example: '$LATEST', deprecation: { - replacement: "faas.version", - reason: "Use the OTel-aligned faas.version attribute instead" + replacement: 'faas.version', + reason: 'Use the OTel-aligned faas.version attribute instead', }, - aliases: ["faas.version"], + aliases: ['faas.version'], changelog: [ - { version: "0.11.1", prs: [414, 424], description: "Deprecated aws.lambda.function_version in favor of faas.version" }, - { version: "0.7.0", prs: [369], description: "Added aws.lambda.function_version attribute" }, + { + version: '0.11.1', + prs: [414, 424], + description: 'Deprecated aws.lambda.function_version in favor of faas.version', + }, + { version: '0.7.0', prs: [369], description: 'Added aws.lambda.function_version attribute' }, ], }, - "aws.lambda.invoked_arn": { - brief: "The full ARN of the Lambda function that was invoked", + 'aws.lambda.invoked_arn': { + brief: 'The full ARN of the Lambda function that was invoked', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "arn:aws:lambda:us-east-1:123456789012:function:my-function", - aliases: ["aws.lambda.invoked_function_arn"], - changelog: [ - { version: "0.11.1", prs: [414] }, - ], + example: 'arn:aws:lambda:us-east-1:123456789012:function:my-function', + aliases: ['aws.lambda.invoked_function_arn'], + changelog: [{ version: '0.11.1', prs: [414] }], }, - "aws.lambda.invoked_function_arn": { - brief: "The full ARN of the Lambda function that was invoked", + 'aws.lambda.invoked_function_arn': { + brief: 'The full ARN of the Lambda function that was invoked', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "arn:aws:lambda:us-east-1:123456789012:function:my-function", + example: 'arn:aws:lambda:us-east-1:123456789012:function:my-function', deprecation: { - replacement: "aws.lambda.invoked_arn", - reason: "This attribute is being deprecated in favor of aws.lambda.invoked_arn" + replacement: 'aws.lambda.invoked_arn', + reason: 'This attribute is being deprecated in favor of aws.lambda.invoked_arn', }, - aliases: ["aws.lambda.invoked_arn"], + aliases: ['aws.lambda.invoked_arn'], changelog: [ - { version: "0.11.1", prs: [414], description: "Deprecated aws.lambda.invoked_function_arn in favor of aws.lambda.invoked_arn" }, - { version: "0.7.0", prs: [369], description: "Added aws.lambda.invoked_function_arn attribute" }, + { + version: '0.11.1', + prs: [414], + description: 'Deprecated aws.lambda.invoked_function_arn in favor of aws.lambda.invoked_arn', + }, + { version: '0.7.0', prs: [369], description: 'Added aws.lambda.invoked_function_arn attribute' }, ], }, - "aws.lambda.remaining_time_in_millis": { - brief: "The remaining time in milliseconds before the Lambda function times out", + 'aws.lambda.remaining_time_in_millis': { + brief: 'The remaining time in milliseconds before the Lambda function times out', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 5000, - changelog: [ - { version: "0.7.0", prs: [369], description: "Added aws.lambda.remaining_time_in_millis attribute" }, - ], + changelog: [{ version: '0.7.0', prs: [369], description: 'Added aws.lambda.remaining_time_in_millis attribute' }], }, - "aws.log.group.names": { - brief: "The name(s) of the AWS log group(s) an application is writing to.", + 'aws.log.group.names': { + brief: 'The name(s) of the AWS log group(s) an application is writing to.', type: 'string[]', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: ["/aws/lambda/my-function","opentelemetry-service"], - changelog: [ - { version: "0.11.1", prs: [414] }, - ], + example: ['/aws/lambda/my-function', 'opentelemetry-service'], + changelog: [{ version: '0.11.1', prs: [414] }], }, - "aws.log.stream.names": { - brief: "The name(s) of the AWS log stream(s) an application is writing to.", + 'aws.log.stream.names': { + brief: 'The name(s) of the AWS log stream(s) an application is writing to.', type: 'string[]', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: ["logs/main/10838bed-421f-43ef-870a-f43feacbbb5b"], - changelog: [ - { version: "0.11.1", prs: [414] }, - ], + example: ['logs/main/10838bed-421f-43ef-870a-f43feacbbb5b'], + changelog: [{ version: '0.11.1', prs: [414] }], }, - "blocked_main_thread": { - brief: "Whether the main thread was blocked by the span.", + blocked_main_thread: { + brief: 'Whether the main thread was blocked by the span.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "browser.name": { - brief: "The name of the browser.", + 'browser.name': { + brief: 'The name of the browser.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Chrome", - aliases: ["sentry.browser.name"], - changelog: [ - { version: "0.1.0", prs: [127, 139] }, - { version: "0.0.0" }, - ], + example: 'Chrome', + aliases: ['sentry.browser.name'], + changelog: [{ version: '0.1.0', prs: [127, 139] }, { version: '0.0.0' }], }, - "browser.performance.navigation.activation_start": { - brief: "The time between initiating a navigation to a page and the browser activating the page", + 'browser.performance.navigation.activation_start': { + brief: 'The time between initiating a navigation to a page and the browser activating the page', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1.983, - aliases: ["performance.activationStart"], + aliases: ['performance.activationStart'], changelog: [ - { version: "0.5.0", prs: [321], description: "Added browser.performance.navigation.activation_start attribute" }, + { version: '0.5.0', prs: [321], description: 'Added browser.performance.navigation.activation_start attribute' }, ], }, - "browser.performance.time_origin": { + 'browser.performance.time_origin': { brief: "The browser's performance.timeOrigin timestamp representing the time when the pageload was initiated", type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1776185678.886, - aliases: ["performance.timeOrigin"], + aliases: ['performance.timeOrigin'], changelog: [ - { version: "0.5.0", prs: [321], description: "Added browser.performance.time_origin attribute attribute" }, + { version: '0.5.0', prs: [321], description: 'Added browser.performance.time_origin attribute attribute' }, ], }, - "browser.report.type": { - brief: "A browser report sent via reporting API..", + 'browser.report.type': { + brief: 'A browser report sent via reporting API..', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "network-error", - changelog: [ - { version: "0.1.0", prs: [68, 127] }, - ], + example: 'network-error', + changelog: [{ version: '0.1.0', prs: [68, 127] }], }, - "browser.script.invoker": { - brief: "How a script was called in the browser.", + 'browser.script.invoker': { + brief: 'How a script was called in the browser.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Window.requestAnimationFrame", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'Window.requestAnimationFrame', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "browser.script.invoker_type": { - brief: "Browser script entry point type.", + 'browser.script.invoker_type': { + brief: 'Browser script entry point type.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "event-listener", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'event-listener', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "browser.script.source_char_position": { - brief: "A number representing the script character position of the script.", + 'browser.script.source_char_position': { + brief: 'A number representing the script character position of the script.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 678, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "browser.version": { - brief: "The version of the browser.", + 'browser.version': { + brief: 'The version of the browser.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "120.0.6099.130", - aliases: ["sentry.browser.version"], - changelog: [ - { version: "0.1.0", prs: [59, 127, 139] }, - ], + example: '120.0.6099.130', + aliases: ['sentry.browser.version'], + changelog: [{ version: '0.1.0', prs: [59, 127, 139] }], }, - "browser.web_vital.cls.report_event": { - brief: "The event that caused the SDK to report CLS (pagehide or navigation)", + 'browser.web_vital.cls.report_event': { + brief: 'The event that caused the SDK to report CLS (pagehide or navigation)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "navigation", - changelog: [ - { version: "0.5.0", prs: [319], description: "Added browser.web_vital.cls.report_event attribute" }, - ], + example: 'navigation', + changelog: [{ version: '0.5.0', prs: [319], description: 'Added browser.web_vital.cls.report_event attribute' }], }, - "browser.web_vital.cls.source.": { - brief: "The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", + 'browser.web_vital.cls.source.': { + brief: 'The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: "body > div#app", - aliases: ["cls.source."], - changelog: [ - { version: "0.5.0", prs: [234] }, - ], + example: 'body > div#app', + aliases: ['cls.source.'], + changelog: [{ version: '0.5.0', prs: [234] }], }, - "browser.web_vital.cls.value": { - brief: "The value of the recorded Cumulative Layout Shift (CLS) web vital", + 'browser.web_vital.cls.value': { + brief: 'The value of the recorded Cumulative Layout Shift (CLS) web vital', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.2361, - aliases: ["cls"], - changelog: [ - { version: "0.5.0", prs: [229], description: "Added browser.web_vital.cls.value attribute" }, - ], + aliases: ['cls'], + changelog: [{ version: '0.5.0', prs: [229], description: 'Added browser.web_vital.cls.value attribute' }], }, - "browser.web_vital.fcp.value": { - brief: "The time it takes for the browser to render the first piece of meaningful content on the screen", + 'browser.web_vital.fcp.value': { + brief: 'The time it takes for the browser to render the first piece of meaningful content on the screen', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 547.6951, - aliases: ["fcp"], - changelog: [ - { version: "0.5.0", prs: [235] }, - ], + aliases: ['fcp'], + changelog: [{ version: '0.5.0', prs: [235] }], }, - "browser.web_vital.fp.value": { - brief: "The time in milliseconds it takes for the browser to render the first pixel on the screen", + 'browser.web_vital.fp.value': { + brief: 'The time in milliseconds it takes for the browser to render the first pixel on the screen', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 477.1926, - aliases: ["fp"], - changelog: [ - { version: "0.5.0", prs: [235] }, - ], + aliases: ['fp'], + changelog: [{ version: '0.5.0', prs: [235] }], }, - "browser.web_vital.inp.value": { - brief: "The value of the recorded Interaction to Next Paint (INP) web vital", + 'browser.web_vital.inp.value': { + brief: 'The value of the recorded Interaction to Next Paint (INP) web vital', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 200, - aliases: ["inp"], - changelog: [ - { version: "0.5.0", prs: [229], description: "Added browser.web_vital.inp.value attribute" }, - ], + aliases: ['inp'], + changelog: [{ version: '0.5.0', prs: [229], description: 'Added browser.web_vital.inp.value attribute' }], }, - "browser.web_vital.lcp.element": { - brief: "The HTML element selector or component name for which LCP was reported", + 'browser.web_vital.lcp.element': { + brief: 'The HTML element selector or component name for which LCP was reported', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "body > div#app > div#container > div", - aliases: ["lcp.element"], - changelog: [ - { version: "0.5.0", prs: [233] }, - ], + example: 'body > div#app > div#container > div', + aliases: ['lcp.element'], + changelog: [{ version: '0.5.0', prs: [233] }], }, - "browser.web_vital.lcp.id": { - brief: "The id of the dom element responsible for the largest contentful paint", + 'browser.web_vital.lcp.id': { + brief: 'The id of the dom element responsible for the largest contentful paint', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "#gero", - aliases: ["lcp.id"], - changelog: [ - { version: "0.5.0", prs: [233] }, - ], + example: '#gero', + aliases: ['lcp.id'], + changelog: [{ version: '0.5.0', prs: [233] }], }, - "browser.web_vital.lcp.load_time": { - brief: "The time it took for the LCP element to be loaded", + 'browser.web_vital.lcp.load_time': { + brief: 'The time it took for the LCP element to be loaded', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1402, - aliases: ["lcp.loadTime"], - changelog: [ - { version: "0.5.0", prs: [233] }, - ], + aliases: ['lcp.loadTime'], + changelog: [{ version: '0.5.0', prs: [233] }], }, - "browser.web_vital.lcp.render_time": { - brief: "The time it took for the LCP element to be rendered", + 'browser.web_vital.lcp.render_time': { + brief: 'The time it took for the LCP element to be rendered', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1685, - aliases: ["lcp.renderTime"], - changelog: [ - { version: "0.5.0", prs: [233] }, - ], + aliases: ['lcp.renderTime'], + changelog: [{ version: '0.5.0', prs: [233] }], }, - "browser.web_vital.lcp.report_event": { - brief: "The event that caused the SDK to report LCP (pagehide or navigation)", + 'browser.web_vital.lcp.report_event': { + brief: 'The event that caused the SDK to report LCP (pagehide or navigation)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "pagehide", - changelog: [ - { version: "0.5.0", prs: [319], description: "Added browser.web_vital.lcp.report_event attribute" }, - ], + example: 'pagehide', + changelog: [{ version: '0.5.0', prs: [319], description: 'Added browser.web_vital.lcp.report_event attribute' }], }, - "browser.web_vital.lcp.size": { - brief: "The size of the largest contentful paint element", + 'browser.web_vital.lcp.size': { + brief: 'The size of the largest contentful paint element', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1024, - aliases: ["lcp.size"], - changelog: [ - { version: "0.5.0", prs: [233] }, - ], + aliases: ['lcp.size'], + changelog: [{ version: '0.5.0', prs: [233] }], }, - "browser.web_vital.lcp.url": { - brief: "The url of the dom element responsible for the largest contentful paint", + 'browser.web_vital.lcp.url': { + brief: 'The url of the dom element responsible for the largest contentful paint', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "https://example.com/static/img.png", - aliases: ["lcp.url"], - changelog: [ - { version: "0.5.0", prs: [233] }, - ], + example: 'https://example.com/static/img.png', + aliases: ['lcp.url'], + changelog: [{ version: '0.5.0', prs: [233] }], }, - "browser.web_vital.lcp.value": { - brief: "The value of the recorded Largest Contentful Paint (LCP) web vital", + 'browser.web_vital.lcp.value': { + brief: 'The value of the recorded Largest Contentful Paint (LCP) web vital', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2500, - aliases: ["lcp"], - changelog: [ - { version: "0.5.0", prs: [229], description: "Added browser.web_vital.lcp.value attribute" }, - ], + aliases: ['lcp'], + changelog: [{ version: '0.5.0', prs: [229], description: 'Added browser.web_vital.lcp.value attribute' }], }, - "browser.web_vital.ttfb.request_time": { - brief: "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", + 'browser.web_vital.ttfb.request_time': { + brief: + "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1554.5814, - aliases: ["ttfb.requestTime"], - changelog: [ - { version: "0.5.0", prs: [235] }, - ], + aliases: ['ttfb.requestTime'], + changelog: [{ version: '0.5.0', prs: [235] }], }, - "browser.web_vital.ttfb.value": { - brief: "The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds", + 'browser.web_vital.ttfb.value': { + brief: 'The value of the recorded Time To First Byte (TTFB) web vital in Milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 194.3322, - aliases: ["ttfb"], - changelog: [ - { version: "0.5.0", prs: [235] }, - ], + aliases: ['ttfb'], + changelog: [{ version: '0.5.0', prs: [235] }], }, - "cache.hit": { - brief: "If the cache was hit during this span.", + 'cache.hit': { + brief: 'If the cache was hit during this span.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "cache.item_size": { - brief: "The size of the requested item in the cache. In bytes.", + 'cache.item_size': { + brief: 'The size of the requested item in the cache. In bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 58, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "cache.key": { - brief: "The key of the cache accessed.", + 'cache.key': { + brief: 'The key of the cache accessed.', type: 'string[]', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: ["my-cache-key","my-other-cache-key"], - changelog: [ - { version: "0.0.0" }, - ], + example: ['my-cache-key', 'my-other-cache-key'], + changelog: [{ version: '0.0.0' }], }, - "cache.operation": { - brief: "The operation being performed on the cache.", + 'cache.operation': { + brief: 'The operation being performed on the cache.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "get", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'get', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "cache.ttl": { - brief: "The ttl of the cache in seconds", + 'cache.ttl': { + brief: 'The ttl of the cache in seconds', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 120, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "cache.write": { - brief: "If the cache operation resulted in a write to the cache.", + 'cache.write': { + brief: 'If the cache operation resulted in a write to the cache.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.5.0" }, - ], + changelog: [{ version: '0.5.0' }], }, - "channel": { - brief: "The channel name that is being used.", + channel: { + brief: 'The channel name that is being used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "mail", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'mail', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "client.address": { - brief: "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + 'client.address': { + brief: + 'Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "example.com", - aliases: ["http.client_ip"], - changelog: [ - { version: "0.1.0", prs: [106, 127] }, - { version: "0.0.0" }, - ], + example: 'example.com', + aliases: ['http.client_ip'], + changelog: [{ version: '0.1.0', prs: [106, 127] }, { version: '0.0.0' }], }, - "client.port": { - brief: "Client port number.", + 'client.port': { + brief: 'Client port number.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 5432, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "cloudflare.d1.duration": { - brief: "The duration of a Cloudflare D1 operation.", + 'cloudflare.d1.duration': { + brief: 'The duration of a Cloudflare D1 operation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 543, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "cloudflare.d1.query_type": { - brief: "The type of query executed in a Cloudflare D1 operation", + 'cloudflare.d1.query_type': { + brief: 'The type of query executed in a Cloudflare D1 operation', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "run", + example: 'run', deprecation: { - replacement: "db.operation.name" + replacement: 'db.operation.name', }, - aliases: ["db.operation.name", "db.operation"], - changelog: [ - { version: "0.11.0", prs: [392], description: "Added cloudflare.d1.query_type attribute" }, - ], + aliases: ['db.operation.name', 'db.operation'], + changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.d1.query_type attribute' }], }, - "cloudflare.d1.rows_read": { - brief: "The number of rows read in a Cloudflare D1 operation.", + 'cloudflare.d1.rows_read': { + brief: 'The number of rows read in a Cloudflare D1 operation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "cloudflare.d1.rows_written": { - brief: "The number of rows written in a Cloudflare D1 operation.", + 'cloudflare.d1.rows_written': { + brief: 'The number of rows written in a Cloudflare D1 operation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "cloudflare.durable_object.query.bindings": { - brief: "The number of bound parameters passed to the SQL exec call.", + 'cloudflare.durable_object.query.bindings': { + brief: 'The number of bound parameters passed to the SQL exec call.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2, changelog: [ - { version: "0.13.0", prs: [435], description: "Added cloudflare.durable_object.query.bindings attribute" }, + { version: '0.13.0', prs: [435], description: 'Added cloudflare.durable_object.query.bindings attribute' }, ], }, - "cloudflare.durable_object.response.rows_read": { - brief: "The number of rows read by a Cloudflare Durable Object SQL operation.", + 'cloudflare.durable_object.response.rows_read': { + brief: 'The number of rows read by a Cloudflare Durable Object SQL operation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12, changelog: [ - { version: "0.13.0", prs: [435], description: "Added cloudflare.durable_object.response.rows_read attribute" }, + { version: '0.13.0', prs: [435], description: 'Added cloudflare.durable_object.response.rows_read attribute' }, ], }, - "cloudflare.durable_object.response.rows_written": { - brief: "The number of rows written by a Cloudflare Durable Object SQL operation.", + 'cloudflare.durable_object.response.rows_written': { + brief: 'The number of rows written by a Cloudflare Durable Object SQL operation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, changelog: [ - { version: "0.13.0", prs: [435], description: "Added cloudflare.durable_object.response.rows_written attribute" }, + { version: '0.13.0', prs: [435], description: 'Added cloudflare.durable_object.response.rows_written attribute' }, ], }, - "cloudflare.r2.bucket": { - brief: "The name of the Cloudflare R2 bucket binding", + 'cloudflare.r2.bucket': { + brief: 'The name of the Cloudflare R2 bucket binding', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "MY_BUCKET", - changelog: [ - { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.bucket attribute" }, - ], + example: 'MY_BUCKET', + changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.bucket attribute' }], }, - "cloudflare.r2.operation": { - brief: "The R2 API operation being performed", + 'cloudflare.r2.operation': { + brief: 'The R2 API operation being performed', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "GetObject", - changelog: [ - { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.operation attribute" }, - ], + example: 'GetObject', + changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.operation attribute' }], }, - "cloudflare.r2.request.delimiter": { - brief: "The delimiter used to group objects in an R2 list operation", + 'cloudflare.r2.request.delimiter': { + brief: 'The delimiter used to group objects in an R2 list operation', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "/", - changelog: [ - { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.request.delimiter attribute" }, - ], + example: '/', + changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.request.delimiter attribute' }], }, - "cloudflare.r2.request.key": { - brief: "The object key used in the R2 operation", + 'cloudflare.r2.request.key': { + brief: 'The object key used in the R2 operation', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "my-file.txt", - changelog: [ - { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.request.key attribute" }, - ], + example: 'my-file.txt', + changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.request.key attribute' }], }, - "cloudflare.r2.request.part_number": { - brief: "The part number in a multipart upload operation", + 'cloudflare.r2.request.part_number': { + brief: 'The part number in a multipart upload operation', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, - changelog: [ - { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.request.part_number attribute" }, - ], + changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.request.part_number attribute' }], }, - "cloudflare.r2.request.prefix": { - brief: "The prefix used to filter objects in an R2 list operation", + 'cloudflare.r2.request.prefix': { + brief: 'The prefix used to filter objects in an R2 list operation', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "images/", - changelog: [ - { version: "0.11.1", prs: [413], description: "Added cloudflare.r2.request.prefix attribute" }, - ], + example: 'images/', + changelog: [{ version: '0.11.1', prs: [413], description: 'Added cloudflare.r2.request.prefix attribute' }], }, - "cloudflare.workflow.attempt": { - brief: "The current attempt number for a Cloudflare Workflow step", + 'cloudflare.workflow.attempt': { + brief: 'The current attempt number for a Cloudflare Workflow step', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, - changelog: [ - { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.attempt attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.attempt attribute' }], }, - "cloudflare.workflow.retries.backoff": { - brief: "The backoff strategy for Cloudflare Workflow step retries", + 'cloudflare.workflow.retries.backoff': { + brief: 'The backoff strategy for Cloudflare Workflow step retries', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "exponential", - changelog: [ - { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.retries.backoff attribute" }, - ], + example: 'exponential', + changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.retries.backoff attribute' }], }, - "cloudflare.workflow.retries.delay": { - brief: "The delay between Cloudflare Workflow step retries", + 'cloudflare.workflow.retries.delay': { + brief: 'The delay between Cloudflare Workflow step retries', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "5 seconds", - changelog: [ - { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.retries.delay attribute" }, - ], + example: '5 seconds', + changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.retries.delay attribute' }], }, - "cloudflare.workflow.retries.limit": { - brief: "The maximum number of retries for a Cloudflare Workflow step", + 'cloudflare.workflow.retries.limit': { + brief: 'The maximum number of retries for a Cloudflare Workflow step', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 3, - changelog: [ - { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.retries.limit attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.retries.limit attribute' }], }, - "cloudflare.workflow.timeout": { - brief: "The timeout duration for a Cloudflare Workflow step", + 'cloudflare.workflow.timeout': { + brief: 'The timeout duration for a Cloudflare Workflow step', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1 minute", - changelog: [ - { version: "0.11.0", prs: [392], description: "Added cloudflare.workflow.timeout attribute" }, - ], + example: '1 minute', + changelog: [{ version: '0.11.0', prs: [392], description: 'Added cloudflare.workflow.timeout attribute' }], }, - "cloud.account.id": { - brief: "The cloud account ID the resource is assigned to", + 'cloud.account.id': { + brief: 'The cloud account ID the resource is assigned to', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "123456789012", - changelog: [ - { version: "0.7.0", prs: [364], description: "Added cloud.account.id attribute" }, - ], + example: '123456789012', + changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.account.id attribute' }], }, - "cloud.availability_zone": { - brief: "Cloud regions often have multiple, isolated locations known as zones to increase availability", + 'cloud.availability_zone': { + brief: 'Cloud regions often have multiple, isolated locations known as zones to increase availability', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "us-east-1c", - changelog: [ - { version: "0.7.0", prs: [364], description: "Added cloud.availability_zone attribute" }, - ], + example: 'us-east-1c', + changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.availability_zone attribute' }], }, - "cloud.platform": { - brief: "The cloud platform in use", + 'cloud.platform': { + brief: 'The cloud platform in use', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "aws_lambda", - changelog: [ - { version: "0.7.0", prs: [364], description: "Added cloud.platform attribute" }, - ], + example: 'aws_lambda', + changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.platform attribute' }], }, - "cloud.provider": { - brief: "Name of the cloud provider", + 'cloud.provider': { + brief: 'Name of the cloud provider', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "aws", - changelog: [ - { version: "0.7.0", prs: [364], description: "Added cloud.provider attribute" }, - ], + example: 'aws', + changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.provider attribute' }], }, - "cloud.region": { - brief: "The geographical region the resource is running", + 'cloud.region': { + brief: 'The geographical region the resource is running', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "us-east-1", - changelog: [ - { version: "0.7.0", prs: [364], description: "Added cloud.region attribute" }, - ], + example: 'us-east-1', + changelog: [{ version: '0.7.0', prs: [364], description: 'Added cloud.region attribute' }], }, - "cloud.resource_id": { - brief: "Cloud provider-specific native identifier of the monitored cloud resource", + 'cloud.resource_id': { + brief: 'Cloud provider-specific native identifier of the monitored cloud resource', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function", - aliases: ["faas.id"], + example: 'arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function', + aliases: ['faas.id'], changelog: [ - { version: "next", prs: [475], description: "Added faas.id as an alias" }, - { version: "0.11.1", prs: [414] }, + { version: 'next', prs: [475], description: 'Added faas.id as an alias' }, + { version: '0.11.1', prs: [414] }, + ], + additionalContext: [ + 'This can be an identifier for a resource in AWS, GCP, or Azure. There may be some overlap in values found here with other attributes. For instance, an AWS lambda ARN may be found here as well as in `aws.lambda.invoked_arn`. OTEL recommends setting them alongside each other.', ], - additionalContext: ["This can be an identifier for a resource in AWS, GCP, or Azure. There may be some overlap in values found here with other attributes. For instance, an AWS lambda ARN may be found here as well as in `aws.lambda.invoked_arn`. OTEL recommends setting them alongside each other."], }, - "cls": { - brief: "The value of the recorded Cumulative Layout Shift (CLS) web vital", + cls: { + brief: 'The value of the recorded Cumulative Layout Shift (CLS) web vital', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.2361, deprecation: { - replacement: "browser.web_vital.cls.value", - reason: "The CLS web vital is now recorded as a browser.web_vital.cls.value attribute." + replacement: 'browser.web_vital.cls.value', + reason: 'The CLS web vital is now recorded as a browser.web_vital.cls.value attribute.', }, - aliases: ["browser.web_vital.cls.value"], + aliases: ['browser.web_vital.cls.value'], changelog: [ - { version: "0.5.0", prs: [229], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, + { + version: '0.5.0', + prs: [229], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, ], }, - "cls.source.": { - brief: "The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N", + 'cls.source.': { + brief: 'The HTML elements or components responsible for the layout shift. is a numeric index from 1 to N', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: "body > div#app", + example: 'body > div#app', deprecation: { - replacement: "browser.web_vital.cls.source.", - reason: "The CLS source is now recorded as a browser.web_vital.cls.source. attribute." + replacement: 'browser.web_vital.cls.source.', + reason: 'The CLS source is now recorded as a browser.web_vital.cls.source. attribute.', }, - aliases: ["browser.web_vital.cls.source."], - changelog: [ - { version: "0.5.0", prs: [234] }, - ], + aliases: ['browser.web_vital.cls.source.'], + changelog: [{ version: '0.5.0', prs: [234] }], }, - "code.filepath": { - brief: "The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", + 'code.filepath': { + brief: + 'The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - 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"], - changelog: [ - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + aliases: ['code.file.path'], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "code.file.path": { - brief: "The source code file name that identifies the code unit as uniquely as possible (preferably an absolute 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).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "/app/myapplication/http/handler/server.py", - aliases: ["code.filepath"], - changelog: [ - { version: "0.0.0" }, - ], + example: '/app/myapplication/http/handler/server.py', + aliases: ['code.filepath'], + changelog: [{ version: '0.0.0' }], }, - "code.function": { + 'code.function': { brief: "The method or function name, or equivalent (usually rightmost part of the code unit's name).", type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "server_request", - aliases: ["code.function.name"], - changelog: [ - { version: "0.1.0", prs: [61, 74] }, - { version: "0.0.0" }, - ], + example: 'server_request', + aliases: ['code.function.name'], + changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], }, - "code.function.name": { - brief: "The method or function fully-qualified name without arguments.", + 'code.function.name': { + brief: 'The method or function fully-qualified name without arguments.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "server_request", - aliases: ["code.function"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'server_request', + aliases: ['code.function'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "code.lineno": { - brief: "The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in 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', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 42, deprecation: { - replacement: "code.line.number" + replacement: 'code.line.number', }, - aliases: ["code.line.number"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61, 108] }, - { version: "0.0.0" }, - ], + aliases: ['code.line.number'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61, 108] }, { version: '0.0.0' }], }, - "code.line.number": { - brief: "The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", + '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', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 42, - aliases: ["code.lineno"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + aliases: ['code.lineno'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "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.", + '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.", type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "http.handler", - changelog: [ - { version: "0.1.0", prs: [61, 74] }, - { version: "0.0.0" }, - ], + example: 'http.handler', + changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], }, - "connectionType": { - brief: "Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).", + connectionType: { + brief: 'Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "wifi", + example: 'wifi', deprecation: { - replacement: "network.connection.type", - reason: "Old namespace-less attribute, to be replaced with network.connection.type for span-first future" + replacement: 'network.connection.type', + reason: 'Old namespace-less attribute, to be replaced with network.connection.type for span-first future', }, - aliases: ["network.connection.type", "device.connection_type"], + aliases: ['network.connection.type', 'device.connection_type'], changelog: [ - { version: "0.5.0", prs: [279], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, + { + version: '0.5.0', + prs: [279], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, ], }, - "connection.rtt": { - brief: "Specifies the estimated effective round-trip time of the current connection, in milliseconds.", + 'connection.rtt': { + brief: 'Specifies the estimated effective round-trip time of the current connection, in milliseconds.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 100, deprecation: { - replacement: "network.connection.rtt", - reason: "Old attribute name (no official namespace), to be replaced with network.connection.rtt for span-first future" + replacement: 'network.connection.rtt', + reason: + 'Old attribute name (no official namespace), to be replaced with network.connection.rtt for span-first future', }, - aliases: ["network.connection.rtt"], + aliases: ['network.connection.rtt'], changelog: [ - { version: "0.5.0", prs: [279], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, + { + version: '0.5.0', + prs: [279], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, ], }, - "culture.calendar": { - brief: "The calendar system used by the culture.", + 'culture.calendar': { + brief: 'The calendar system used by the culture.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "GregorianCalendar", - changelog: [ - { version: "0.4.0", prs: [243] }, - ], + example: 'GregorianCalendar', + changelog: [{ version: '0.4.0', prs: [243] }], }, - "culture.display_name": { - brief: "Human readable name of the culture.", + 'culture.display_name': { + brief: 'Human readable name of the culture.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "English (United States)", - changelog: [ - { version: "0.4.0", prs: [243] }, - ], + example: 'English (United States)', + changelog: [{ version: '0.4.0', prs: [243] }], }, - "culture.is_24_hour_format": { - brief: "Whether the culture uses 24-hour time format.", + 'culture.is_24_hour_format': { + brief: 'Whether the culture uses 24-hour time format.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.4.0", prs: [243] }, - ], + changelog: [{ version: '0.4.0', prs: [243] }], }, - "culture.locale": { - brief: "The locale identifier following RFC 4646.", + 'culture.locale': { + brief: 'The locale identifier following RFC 4646.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "en-US", - changelog: [ - { version: "0.4.0", prs: [243] }, - ], + example: 'en-US', + changelog: [{ version: '0.4.0', prs: [243] }], }, - "culture.timezone": { - brief: "The timezone of the culture, as a geographic timezone identifier.", + 'culture.timezone': { + brief: 'The timezone of the culture, as a geographic timezone identifier.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Europe/Vienna", - changelog: [ - { version: "0.4.0", prs: [243] }, - ], + example: 'Europe/Vienna', + changelog: [{ version: '0.4.0', prs: [243] }], }, - "db.collection.name": { - brief: "The name of a collection (table, container) within the database.", + 'db.collection.name': { + brief: 'The name of a collection (table, container) within the database.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "users", - changelog: [ - { version: "0.1.0", prs: [106, 127] }, - { version: "0.0.0" }, - ], + example: 'users', + changelog: [{ version: '0.1.0', prs: [106, 127] }, { version: '0.0.0' }], }, - "db.driver.name": { - brief: "The name of the driver used for the database connection.", + 'db.driver.name': { + brief: 'The name of the driver used for the database connection.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "psycopg2", - changelog: [ - { version: "0.5.0", prs: [297], description: "Added db.driver.name attribute" }, - ], + example: 'psycopg2', + changelog: [{ version: '0.5.0', prs: [297], description: 'Added db.driver.name attribute' }], }, - "db.name": { - brief: "The name of the database being accessed.", + 'db.name': { + brief: 'The name of the database being accessed.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "customers", + example: 'customers', deprecation: { - replacement: "db.namespace" + replacement: 'db.namespace', }, - aliases: ["db.namespace"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['db.namespace'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "db.namespace": { - brief: "The name of the database being accessed.", + 'db.namespace': { + brief: 'The name of the database being accessed.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "customers", - aliases: ["db.name"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'customers', + aliases: ['db.name'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "db.operation": { - brief: "The name of the operation being executed.", + 'db.operation': { + brief: 'The name of the operation being executed.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "SELECT", + example: 'SELECT', deprecation: { - replacement: "db.operation.name" + replacement: 'db.operation.name', }, - aliases: ["db.operation.name", "cloudflare.d1.query_type"], - changelog: [ - { version: "0.4.0", prs: [199] }, - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['db.operation.name', 'cloudflare.d1.query_type'], + changelog: [{ version: '0.4.0', prs: [199] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "db.operation.batch.size": { - brief: "The number of queries included in a batch operation. Operations are only considered batches when they contain two or more operations, and so db.operation.batch.size SHOULD never be 1.", + 'db.operation.batch.size': { + brief: + 'The number of queries included in a batch operation. Operations are only considered batches when they contain two or more operations, and so db.operation.batch.size SHOULD never be 1.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 3, - changelog: [ - { version: "0.11.0", prs: [407], description: "Added db.operation.batch.size attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [407], description: 'Added db.operation.batch.size attribute' }], }, - "db.operation.name": { - brief: "The name of the operation being executed.", + 'db.operation.name': { + brief: 'The name of the operation being executed.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "SELECT", - aliases: ["db.operation", "cloudflare.d1.query_type"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'SELECT', + aliases: ['db.operation', 'cloudflare.d1.query_type'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "db.query.parameter.": { - 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.", + 'db.query.parameter.': { + 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', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', hasDynamicSuffix: true, example: "db.query.parameter.foo='123'", - changelog: [ - { version: "0.1.0", prs: [103, 127] }, - ], + changelog: [{ version: '0.1.0', prs: [103, 127] }], }, - "db.query.summary": { - brief: "A shortened representation of operation(s) in the full query. This attribute must be low-cardinality and should only contain the operation table names.", + 'db.query.summary': { + brief: + 'A shortened representation of operation(s) in the full query. This attribute must be low-cardinality and should only contain the operation table names.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "SELECT users", - changelog: [ - { version: "0.4.0", prs: [208] }, - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'SELECT users', + changelog: [{ version: '0.4.0', prs: [208] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "db.query.text": { - brief: "The database parameterized query being executed. Any parameter values (filters, insertion values, etc) should be replaced with parameter placeholders. If applicable, use `db.query.parameter.` to add the parameter value.", + 'db.query.text': { + brief: + 'The database parameterized query being executed. Any parameter values (filters, insertion values, etc) should be replaced with parameter placeholders. If applicable, use `db.query.parameter.` to add the parameter value.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "SELECT * FROM users WHERE id = $1", - aliases: ["db.statement"], - changelog: [ - { version: "0.4.0", prs: [208] }, - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'SELECT * FROM users WHERE id = $1', + aliases: ['db.statement'], + changelog: [{ version: '0.4.0', prs: [208] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "db.redis.connection": { - brief: "The redis connection name.", + 'db.redis.connection': { + brief: 'The redis connection name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "my-redis-instance", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'my-redis-instance', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "db.redis.key": { - brief: "The key the Redis command is operating on.", + 'db.redis.key': { + brief: 'The key the Redis command is operating on.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "user:2047:city", - changelog: [ - { version: "0.6.0", prs: [326], description: "Added db.redis.key attribute" }, - ], + example: 'user:2047:city', + changelog: [{ version: '0.6.0', prs: [326], description: 'Added db.redis.key attribute' }], }, - "db.redis.parameters": { - brief: "The array of command parameters given to a redis command.", + 'db.redis.parameters': { + brief: 'The array of command parameters given to a redis command.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: ["test","*"], - changelog: [ - { version: "0.0.0" }, - ], + example: ['test', '*'], + changelog: [{ version: '0.0.0' }], }, - "db.response.status_code": { - brief: "Database response status code. The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.", + 'db.response.status_code': { + brief: + 'Database response status code. The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "ORA-17002", - changelog: [ - { version: "next", prs: [462], description: "Added db.response.status_code attribute" }, - ], + example: 'ORA-17002', + changelog: [{ version: 'next', prs: [462], description: 'Added db.response.status_code attribute' }], }, - "db.sql.bindings": { - brief: "The array of query bindings.", + 'db.sql.bindings': { + brief: 'The array of query bindings.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - 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..', }, - changelog: [ - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "db.statement": { - brief: "The database statement being executed.", + 'db.statement': { + brief: 'The database statement being executed.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "SELECT * FROM users", + example: 'SELECT * FROM users', deprecation: { - replacement: "db.query.text" + replacement: 'db.query.text', }, - aliases: ["db.query.text"], - changelog: [ - { version: "0.4.0", prs: [199] }, - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['db.query.text'], + changelog: [{ version: '0.4.0', prs: [199] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "db.stored_procedure.name": { - brief: "The name of a stored procedure being called.", + 'db.stored_procedure.name': { + brief: 'The name of a stored procedure being called.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "GetUserById", - changelog: [ - { version: "0.11.0", prs: [398] }, - ], + example: 'GetUserById', + changelog: [{ version: '0.11.0', prs: [398] }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "postgresql", + example: 'postgresql', deprecation: { - replacement: "db.system.name" + replacement: 'db.system.name', }, - aliases: ["db.system.name"], - changelog: [ - { version: "0.4.0", prs: [199, 224] }, - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['db.system.name'], + changelog: [{ version: '0.4.0', prs: [199, 224] }, { version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "db.system.name": { - brief: "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.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "postgresql", - aliases: ["db.system"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'postgresql', + aliases: ['db.system'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "db.user": { - brief: "The database user.", + 'db.user': { + brief: 'The database user.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "fancy_user", - changelog: [ - { version: "0.0.0" }, - ], + example: 'fancy_user', + changelog: [{ version: '0.0.0' }], }, - "deviceMemory": { - brief: "The estimated total memory capacity of the device, only a rough estimation in gigabytes.", + deviceMemory: { + brief: 'The estimated total memory capacity of the device, only a rough estimation in gigabytes.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "8 GB", + example: '8 GB', deprecation: { - replacement: "device.memory.estimated_capacity", - reason: "Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future" + replacement: 'device.memory.estimated_capacity', + reason: + 'Old namespace-less attribute, to be replaced with device.memory.estimated_capacity for span-first future', }, - aliases: ["device.memory.estimated_capacity"], + aliases: ['device.memory.estimated_capacity'], changelog: [ - { version: "0.5.0", prs: [281], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, + { + version: '0.5.0', + prs: [281], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, ], }, - "device.archs": { - brief: "The CPU architectures of the device.", + 'device.archs': { + brief: 'The CPU architectures of the device.', type: 'string[]', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: ["arm64-v8a","armeabi-v7a","armeabi"], - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.archs attribute" }, - ], + example: ['arm64-v8a', 'armeabi-v7a', 'armeabi'], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.archs attribute' }], }, - "device.battery_level": { - brief: "The battery level of the device as a percentage (0-100).", + 'device.battery_level': { + brief: 'The battery level of the device as a percentage (0-100).', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 100, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.battery_level attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.battery_level attribute' }], }, - "device.battery_temperature": { - brief: "The battery temperature of the device in Celsius.", + 'device.battery_temperature': { + brief: 'The battery temperature of the device in Celsius.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 25, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.battery_temperature attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.battery_temperature attribute' }], }, - "device.boot_time": { - brief: "A formatted UTC timestamp when the system was booted.", + 'device.boot_time': { + brief: 'A formatted UTC timestamp when the system was booted.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "2018-02-08T12:52:12Z", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.boot_time attribute" }, - ], + example: '2018-02-08T12:52:12Z', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.boot_time attribute' }], }, - "device.brand": { - brief: "The brand of the device.", + 'device.brand': { + brief: 'The brand of the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Apple", - changelog: [ - { version: "0.1.0", prs: [116, 127] }, - ], + example: 'Apple', + changelog: [{ version: '0.1.0', prs: [116, 127] }], }, - "device.charging": { - brief: "Whether the device was charging or not.", + 'device.charging': { + brief: 'Whether the device was charging or not.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: false, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.charging attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.charging attribute' }], }, - "device.chipset": { - brief: "The chipset of the device.", + 'device.chipset': { + brief: 'The chipset of the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Qualcomm SM8550", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.chipset attribute" }, - ], + example: 'Qualcomm SM8550', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.chipset attribute' }], }, - "device.class": { - brief: "The classification of the device. For example, `low`, `medium`, or `high`. Typically inferred by Relay - SDKs generally do not need to set this directly.", + 'device.class': { + brief: + 'The classification of the device. For example, `low`, `medium`, or `high`. Typically inferred by Relay - SDKs generally do not need to set this directly.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "medium", - changelog: [ - { version: "0.5.0", prs: [300], description: "Added device.class attribute" }, - ], + example: 'medium', + changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.class attribute' }], }, - "device.connection_type": { - brief: "The internet connection type currently being used by the device.", + 'device.connection_type': { + brief: 'The internet connection type currently being used by the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "wifi", + example: 'wifi', deprecation: { - replacement: "network.connection.type", - reason: "This attribute is being deprecated in favor of network.connection.type" + replacement: 'network.connection.type', + reason: 'This attribute is being deprecated in favor of network.connection.type', }, - aliases: ["network.connection.type", "connectionType"], + aliases: ['network.connection.type', 'connectionType'], changelog: [ - { version: "0.5.0", prs: [303], description: "Added and deprecated device.connection_type in favor of network.connection.type" }, + { + version: '0.5.0', + prs: [303], + description: 'Added and deprecated device.connection_type in favor of network.connection.type', + }, ], }, - "device.cpu_description": { - brief: "A description of the CPU of the device.", + 'device.cpu_description': { + brief: 'A description of the CPU of the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.cpu_description attribute" }, - ], + example: 'Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.cpu_description attribute' }], }, - "device.external_free_storage": { - brief: "External storage free size in bytes.", + 'device.external_free_storage': { + brief: 'External storage free size in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 67108864000, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.external_free_storage attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.external_free_storage attribute' }], }, - "device.external_storage_size": { - brief: "External storage total size in bytes.", + 'device.external_storage_size': { + brief: 'External storage total size in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 134217728000, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.external_storage_size attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.external_storage_size attribute' }], }, - "device.family": { - brief: "The family of the device.", + 'device.family': { + brief: 'The family of the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "iPhone", - changelog: [ - { version: "0.1.0", prs: [116, 127] }, - ], + example: 'iPhone', + changelog: [{ version: '0.1.0', prs: [116, 127] }], }, - "device.free_memory": { - brief: "Free system memory in bytes.", + 'device.free_memory': { + brief: 'Free system memory in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2147483648, - changelog: [ - { version: "0.5.0", prs: [300], description: "Added device.free_memory attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.free_memory attribute' }], }, - "device.free_storage": { - brief: "Free device storage in bytes.", + 'device.free_storage': { + brief: 'Free device storage in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 107374182400, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.free_storage attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.free_storage attribute' }], }, - "device.id": { - brief: "Unique device identifier.", + 'device.id': { + brief: 'Unique device identifier.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.id attribute" }, - ], + example: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.id attribute' }], }, - "device.locale": { - brief: "The locale of the device.", + 'device.locale': { + brief: 'The locale of the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "en-US", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.locale attribute" }, - ], + example: 'en-US', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.locale attribute' }], }, - "device.low_memory": { - brief: "Whether the device was low on memory.", + 'device.low_memory': { + brief: 'Whether the device was low on memory.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: false, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.low_memory attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.low_memory attribute' }], }, - "device.low_power_mode": { - brief: "Whether the device is in Low Power Mode.", + 'device.low_power_mode': { + brief: 'Whether the device is in Low Power Mode.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.6.0", prs: [314], description: "Added device.low_power_mode attribute" }, - ], + changelog: [{ version: '0.6.0', prs: [314], description: 'Added device.low_power_mode attribute' }], }, - "device.manufacturer": { - brief: "The manufacturer of the device.", + 'device.manufacturer': { + brief: 'The manufacturer of the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "Google", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.manufacturer attribute" }, - ], + example: 'Google', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.manufacturer attribute' }], }, - "device.memory.estimated_capacity": { - brief: "The estimated total memory capacity of the device, only a rough estimation in gigabytes. Browsers report estimations in buckets of powers of 2, mostly capped at 8 GB", + 'device.memory.estimated_capacity': { + brief: + 'The estimated total memory capacity of the device, only a rough estimation in gigabytes. Browsers report estimations in buckets of powers of 2, mostly capped at 8 GB', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 8, - aliases: ["deviceMemory"], + aliases: ['deviceMemory'], changelog: [ - { version: "0.5.0", prs: [281], description: "Added attribute device.memory.estimated_capacity to be used instead of deviceMemory" }, + { + version: '0.5.0', + prs: [281], + description: 'Added attribute device.memory.estimated_capacity to be used instead of deviceMemory', + }, ], }, - "device.memory_size": { - brief: "Total system memory available in bytes.", + 'device.memory_size': { + brief: 'Total system memory available in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 17179869184, - changelog: [ - { version: "0.5.0", prs: [300], description: "Added device.memory_size attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.memory_size attribute' }], }, - "device.model": { - brief: "The model of the device.", + 'device.model': { + brief: 'The model of the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "iPhone 15 Pro Max", - changelog: [ - { version: "0.1.0", prs: [116, 127] }, - ], + example: 'iPhone 15 Pro Max', + changelog: [{ version: '0.1.0', prs: [116, 127] }], }, - "device.model_id": { - brief: "An internal hardware revision to identify the device exactly.", + 'device.model_id': { + brief: 'An internal hardware revision to identify the device exactly.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "N861AP", - changelog: [ - { version: "0.5.0", prs: [300], description: "Added device.model_id attribute" }, - ], + example: 'N861AP', + changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.model_id attribute' }], }, - "device.name": { - brief: "The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname.", + 'device.name': { + brief: + 'The name of the device. On mobile, this is the user-assigned device name. On servers and desktops, this is typically the hostname.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "localhost", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.name attribute" }, - ], + example: 'localhost', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.name attribute' }], }, - "device.online": { - brief: "Whether the device was online or not.", + 'device.online': { + brief: 'Whether the device was online or not.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.online attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.online attribute' }], }, - "device.orientation": { - brief: "The orientation of the device, either \"portrait\" or \"landscape\".", + 'device.orientation': { + brief: 'The orientation of the device, either "portrait" or "landscape".', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "portrait", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.orientation attribute" }, - ], + example: 'portrait', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.orientation attribute' }], }, - "device.processor_count": { - brief: "Number of \"logical processors\".", + 'device.processor_count': { + brief: 'Number of "logical processors".', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 8, - aliases: ["hardwareConcurrency"], + aliases: ['hardwareConcurrency'], changelog: [ - { version: "0.5.0", prs: [300], description: "Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count" }, + { + version: '0.5.0', + prs: [300], + description: 'Added and deprecated attribute device.processor_count in favor of device.cpu.logical_core_count', + }, ], }, - "device.processor_frequency": { - brief: "Processor frequency in MHz.", + 'device.processor_frequency': { + brief: 'Processor frequency in MHz.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2400, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.processor_frequency attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.processor_frequency attribute' }], }, - "device.screen_density": { - brief: "The screen density of the device.", + 'device.screen_density': { + brief: 'The screen density of the device.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2.625, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.screen_density attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.screen_density attribute' }], }, - "device.screen_dpi": { - brief: "The screen density in dots-per-inch (DPI) of the device.", + 'device.screen_dpi': { + brief: 'The screen density in dots-per-inch (DPI) of the device.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 420, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.screen_dpi attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.screen_dpi attribute' }], }, - "device.screen_height_pixels": { - brief: "The height of the device screen in pixels.", + 'device.screen_height_pixels': { + brief: 'The height of the device screen in pixels.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2400, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.screen_height_pixels attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.screen_height_pixels attribute' }], }, - "device.screen_width_pixels": { - brief: "The width of the device screen in pixels.", + 'device.screen_width_pixels': { + brief: 'The width of the device screen in pixels.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1080, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.screen_width_pixels attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.screen_width_pixels attribute' }], }, - "device.simulator": { - brief: "Whether the device is a simulator or an actual device.", + 'device.simulator': { + brief: 'Whether the device is a simulator or an actual device.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: false, - changelog: [ - { version: "0.5.0", prs: [300], description: "Added device.simulator attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [300], description: 'Added device.simulator attribute' }], }, - "device.storage_size": { - brief: "Total device storage in bytes.", + 'device.storage_size': { + brief: 'Total device storage in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 274877906944, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.storage_size attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.storage_size attribute' }], }, - "device.thermal_state": { - brief: "The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`.", + 'device.thermal_state': { + brief: + "The thermal state of the device. Based on Apple's `ProcessInfo.ThermalState` enum: `nominal`, `fair`, `serious`, or `critical`.", type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "nominal", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.thermal_state attribute" }, - ], + example: 'nominal', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.thermal_state attribute' }], }, - "device.timezone": { - brief: "The timezone of the device.", + 'device.timezone': { + brief: 'The timezone of the device.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Europe/Vienna", - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.timezone attribute" }, - ], + example: 'Europe/Vienna', + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.timezone attribute' }], }, - "device.usable_memory": { - brief: "Memory usable for the app in bytes.", + 'device.usable_memory': { + brief: 'Memory usable for the app in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2147483648, - changelog: [ - { version: "0.5.0", prs: [303], description: "Added device.usable_memory attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [303], description: 'Added device.usable_memory attribute' }], }, - "effectiveConnectionType": { - brief: "Specifies the estimated effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).", + effectiveConnectionType: { + brief: 'Specifies the estimated effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "4g", + example: '4g', deprecation: { - replacement: "network.connection.effective_type", - reason: "Old namespace-less attribute, to be replaced with network.connection.effective_type for span-first future" + replacement: 'network.connection.effective_type', + reason: + 'Old namespace-less attribute, to be replaced with network.connection.effective_type for span-first future', }, - aliases: ["network.connection.effective_type"], + aliases: ['network.connection.effective_type'], changelog: [ - { version: "0.5.0", prs: [279], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, + { + version: '0.5.0', + prs: [279], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, ], }, - "environment": { - brief: "The sentry environment.", + environment: { + brief: 'The sentry environment.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "production", + example: 'production', deprecation: { - replacement: "sentry.environment" + replacement: 'sentry.environment', }, - aliases: ["sentry.environment"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['sentry.environment'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "error.type": { - brief: "Describes a class of error the operation ended with.", + 'error.type': { + brief: 'Describes a class of error the operation ended with.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "timeout", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'timeout', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "event.id": { - brief: "The unique identifier for this event (log record)", + 'event.id': { + brief: 'The unique identifier for this event (log record)', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234567890, - changelog: [ - { version: "0.1.0", prs: [101] }, - ], + changelog: [{ version: '0.1.0', prs: [101] }], }, - "event.name": { - brief: "The name that uniquely identifies this event (log record)", + 'event.name': { + brief: 'The name that uniquely identifies this event (log record)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Process Payload", - changelog: [ - { version: "0.1.0", prs: [101, 127] }, - ], + example: 'Process Payload', + changelog: [{ version: '0.1.0', prs: [101, 127] }], }, - "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.", + '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.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: true, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "exception.message": { - brief: "The error message.", + 'exception.message': { + brief: 'The error message.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "ENOENT: no such file or directory", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'ENOENT: no such file or directory', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "Exception in thread \"main\" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: + 'Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "exception.type": { - brief: "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.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "OSError", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'OSError', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "faas.coldstart": { - brief: "A boolean that is true if the serverless function is executed for the first time (aka cold-start).", + 'faas.coldstart': { + brief: 'A boolean that is true if the serverless function is executed for the first time (aka cold-start).', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: true, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "faas.cron": { - brief: "A string containing the schedule period as Cron Expression.", + 'faas.cron': { + brief: 'A string containing the schedule period as Cron Expression.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "0/5 * * * ? *", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '0/5 * * * ? *', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "faas.duration_in_ms": { - brief: "The duration a function took to run, in milliseconds.", + 'faas.duration_in_ms': { + brief: 'The duration a function took to run, in milliseconds.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 120, - changelog: [ - { version: "0.11.0", prs: [403] }, - ], + changelog: [{ version: '0.11.0', prs: [403] }], }, - "faas.entry_point": { + 'faas.entry_point': { brief: "The code that's run when the cloud provider invokes your function.", type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "my_main_function", - changelog: [ - { version: "0.11.0", prs: [403, 415] }, - ], + example: 'my_main_function', + changelog: [{ version: '0.11.0', prs: [403, 415] }], }, - "faas.execution": { - brief: "The execution ID of the current function execution.", + 'faas.execution': { + brief: 'The execution ID of the current function execution.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "af9d5aa4-a685-4c5f-a22b-444f80b3cc28", + example: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28', deprecation: { - replacement: "faas.invocation_id", - reason: "This attribute is being deprecated in favor of faas.invocation_id, which is the OTel-aligned replacement." + replacement: 'faas.invocation_id', + reason: + 'This attribute is being deprecated in favor of faas.invocation_id, which is the OTel-aligned replacement.', }, - aliases: ["faas.invocation_id", "aws.lambda.aws_request_id"], + aliases: ['faas.invocation_id', 'aws.lambda.aws_request_id'], changelog: [ - { version: "next", prs: [473], description: "Added faas.execution attribute, deprecated in favor of faas.invocation_id" }, + { + version: 'next', + prs: [473], + description: 'Added faas.execution attribute, deprecated in favor of faas.invocation_id', + }, ], }, - "faas.id": { - brief: "The unique ID of the single function that this runtime instance executes.", + 'faas.id': { + brief: 'The unique ID of the single function that this runtime instance executes.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function", + example: 'arn:aws:lambda:REGION:ACCOUNT_ID:function:my-function', deprecation: { - replacement: "cloud.resource_id", - reason: "This attribute is being deprecated in favor of cloud.resource_id, which is the OTel-aligned replacement (renamed in OTel semantic conventions v1.19.0)." + replacement: 'cloud.resource_id', + reason: + 'This attribute is being deprecated in favor of cloud.resource_id, which is the OTel-aligned replacement (renamed in OTel semantic conventions v1.19.0).', }, - aliases: ["cloud.resource_id"], + aliases: ['cloud.resource_id'], changelog: [ - { version: "next", prs: [475], description: "Added faas.id attribute, deprecated in favor of cloud.resource_id" }, + { version: 'next', prs: [475], description: 'Added faas.id attribute, deprecated in favor of cloud.resource_id' }, ], }, - "faas.identity": { - brief: "The Service Account (GCP), IAM Execution Role (AWS), or Managed Identity (Azure) used by the serverless function when interacting with other cloud services", + 'faas.identity': { + brief: + 'The Service Account (GCP), IAM Execution Role (AWS), or Managed Identity (Azure) used by the serverless function when interacting with other cloud services', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "name@project.iam.gserviceaccount.com (GCP), arn:aws:iam::123456789012:role/role-name (AWS), 00000000-0000-0000-0000-000000000000 (Azure)", - changelog: [ - { version: "0.11.0", prs: [403] }, - ], + example: + 'name@project.iam.gserviceaccount.com (GCP), arn:aws:iam::123456789012:role/role-name (AWS), 00000000-0000-0000-0000-000000000000 (Azure)', + changelog: [{ version: '0.11.0', prs: [403] }], }, - "faas.invocation_id": { - brief: "The invocation ID of the current function invocation.", + 'faas.invocation_id': { + brief: 'The invocation ID of the current function invocation.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "af9d5aa4-a685-4c5f-a22b-444f80b3cc28", - aliases: ["aws.lambda.aws_request_id", "faas.execution"], + example: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28', + aliases: ['aws.lambda.aws_request_id', 'faas.execution'], changelog: [ - { version: "next", prs: [473], description: "Added faas.execution as an alias" }, - { version: "0.11.1", prs: [414, 424] }, + { version: 'next', prs: [473], description: 'Added faas.execution as an alias' }, + { version: '0.11.1', prs: [414, 424] }, ], }, - "faas.name": { - brief: "The name of the serverless function", + 'faas.name': { + brief: 'The name of the serverless function', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "my_function", - aliases: ["aws.lambda.function_name"], - changelog: [ - { version: "0.11.0", prs: [403, 415] }, - ], + example: 'my_function', + aliases: ['aws.lambda.function_name'], + changelog: [{ version: '0.11.0', prs: [403, 415] }], }, - "faas.time": { - brief: "A string containing the function invocation time in the ISO 8601 format expressed in UTC.", + 'faas.time': { + brief: 'A string containing the function invocation time in the ISO 8601 format expressed in UTC.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "2020-01-23T13:47:06Z", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '2020-01-23T13:47:06Z', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "faas.trigger": { - brief: "Type of the trigger which caused this function invocation.", + 'faas.trigger': { + brief: 'Type of the trigger which caused this function invocation.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "timer", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'timer', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "faas.version": { - brief: "The version of the function that was invoked", + 'faas.version': { + brief: 'The version of the function that was invoked', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "$LATEST", - aliases: ["aws.lambda.function_version"], - changelog: [ - { version: "0.11.1", prs: [414, 424] }, - ], + example: '$LATEST', + aliases: ['aws.lambda.function_version'], + changelog: [{ version: '0.11.1', prs: [414, 424] }], }, - "fcp": { - brief: "The time it takes for the browser to render the first piece of meaningful content on the screen", + fcp: { + brief: 'The time it takes for the browser to render the first piece of meaningful content on the screen', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 547.6951, deprecation: { - replacement: "browser.web_vital.fcp.value", - reason: "This attribute is being deprecated in favor of browser.web_vital.fcp.value" + replacement: 'browser.web_vital.fcp.value', + reason: 'This attribute is being deprecated in favor of browser.web_vital.fcp.value', }, - aliases: ["browser.web_vital.fcp.value"], - changelog: [ - { version: "0.5.0", prs: [235] }, - ], + aliases: ['browser.web_vital.fcp.value'], + changelog: [{ version: '0.5.0', prs: [235] }], }, - "flag.evaluation.": { - 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.", + 'flag.evaluation.': { + 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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: "flag.evaluation.is_new_ui=true", - changelog: [ - { version: "0.1.0", prs: [103] }, - ], + example: 'flag.evaluation.is_new_ui=true', + changelog: [{ version: '0.1.0', prs: [103] }], }, - "fp": { - brief: "The time it takes for the browser to render the first pixel on the screen", + fp: { + brief: 'The time it takes for the browser to render the first pixel on the screen', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 477.1926, deprecation: { - replacement: "browser.web_vital.fp.value", - reason: "This attribute is being deprecated in favor of browser.web_vital.fp.value" + replacement: 'browser.web_vital.fp.value', + reason: 'This attribute is being deprecated in favor of browser.web_vital.fp.value', }, - aliases: ["browser.web_vital.fp.value"], - changelog: [ - { version: "0.5.0", prs: [235] }, - ], + aliases: ['browser.web_vital.fp.value'], + changelog: [{ version: '0.5.0', prs: [235] }], }, - "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/).", + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 5, deprecation: { - replacement: "app.vitals.frames.delay.value", - reason: "Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.frames.delay.value', + reason: + 'Replaced by app.vitals.frames.delay.value to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.frames.delay.value"], + aliases: ['app.vitals.frames.delay.value'], changelog: [ - { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.frames.delay.value" }, - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, + { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.frames.delay.value' }, + { version: '0.4.0', prs: [228] }, + { version: '0.0.0' }, ], }, - "frames.frozen": { - brief: "The number of frozen frames rendered during the lifetime of the span.", + 'frames.frozen': { + brief: 'The number of frozen frames rendered during the lifetime of the span.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 3, deprecation: { - replacement: "app.vitals.frames.frozen.count", - reason: "Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.frames.frozen.count', + reason: + 'Replaced by app.vitals.frames.frozen.count to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.frames.frozen.count"], + aliases: ['app.vitals.frames.frozen.count'], changelog: [ - { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.frames.frozen.count" }, - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, + { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.frames.frozen.count' }, + { version: '0.4.0', prs: [228] }, + { version: '0.0.0' }, ], }, - "frames_frozen_rate": { - brief: "The rate of frozen frames, or `app_vitals.frames.frozen.count` divided by `app_vitals.frames.total.count`. This is computed by Relay.", + frames_frozen_rate: { + brief: + 'The rate of frozen frames, or `app_vitals.frames.frozen.count` divided by `app_vitals.frames.total.count`. This is computed by Relay.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - changelog: [ - { version: "0.7.0", prs: [362], description: "Added frames_frozen_rate attribute" }, - ], + changelog: [{ version: '0.7.0', prs: [362], description: 'Added frames_frozen_rate attribute' }], }, - "frames.slow": { - brief: "The number of slow frames rendered during the lifetime of the span.", + 'frames.slow': { + brief: 'The number of slow frames rendered during the lifetime of the span.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, deprecation: { - replacement: "app.vitals.frames.slow.count", - reason: "Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.frames.slow.count', + reason: + 'Replaced by app.vitals.frames.slow.count to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.frames.slow.count"], + aliases: ['app.vitals.frames.slow.count'], changelog: [ - { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.frames.slow.count" }, - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, + { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.frames.slow.count' }, + { version: '0.4.0', prs: [228] }, + { version: '0.0.0' }, ], }, - "frames_slow_rate": { - brief: "The rate of slow frames, or `app_vitals.frames.slow.count` divided by `app_vitals.frames.total.count`. This is computed by Relay.", + frames_slow_rate: { + brief: + 'The rate of slow frames, or `app_vitals.frames.slow.count` divided by `app_vitals.frames.total.count`. This is computed by Relay.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - changelog: [ - { version: "0.7.0", prs: [362], description: "Added frames_slow_rate attribute" }, - ], + changelog: [{ version: '0.7.0', prs: [362], description: 'Added frames_slow_rate attribute' }], }, - "frames.total": { - brief: "The number of total frames rendered during the lifetime of the span.", + 'frames.total': { + brief: 'The number of total frames rendered during the lifetime of the span.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 60, deprecation: { - replacement: "app.vitals.frames.total.count", - reason: "Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.frames.total.count', + reason: + 'Replaced by app.vitals.frames.total.count to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.frames.total.count"], + aliases: ['app.vitals.frames.total.count'], changelog: [ - { version: "0.5.0", prs: [313], description: "Deprecated in favor of app.vitals.frames.total.count" }, - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, + { version: '0.5.0', prs: [313], description: 'Deprecated in favor of app.vitals.frames.total.count' }, + { version: '0.4.0', prs: [228] }, + { version: '0.0.0' }, ], }, - "fs_error": { - brief: "The error message of a file system error.", + fs_error: { + brief: 'The error message of a file system error.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - 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.', }, - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "gcp.function.context.event_id": { - brief: "The event ID from the legacy GCP Cloud Function context (1st gen)", + 'gcp.function.context.event_id': { + brief: 'The event ID from the legacy GCP Cloud Function context (1st gen)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1234567890", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.event_id attribute" }, - ], + example: '1234567890', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.event_id attribute' }], }, - "gcp.function.context.event_type": { - brief: "The type of the GCP Cloud Function event", + 'gcp.function.context.event_type': { + brief: 'The type of the GCP Cloud Function event', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "google.pubsub.topic.publish", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.event_type attribute" }, - ], + example: 'google.pubsub.topic.publish', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.event_type attribute' }], }, - "gcp.function.context.id": { - brief: "The unique event ID from the GCP CloudEvents context (2nd gen Cloud Functions)", + 'gcp.function.context.id': { + brief: 'The unique event ID from the GCP CloudEvents context (2nd gen Cloud Functions)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1234567890", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.id attribute" }, - ], + example: '1234567890', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.id attribute' }], }, - "gcp.function.context.resource": { - brief: "The resource that triggered the GCP Cloud Function event", + 'gcp.function.context.resource': { + brief: 'The resource that triggered the GCP Cloud Function event', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "projects/my-project/topics/my-topic", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.resource attribute" }, - ], + example: 'projects/my-project/topics/my-topic', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.resource attribute' }], }, - "gcp.function.context.source": { - brief: "The source of the GCP Cloud Function event", + 'gcp.function.context.source': { + brief: 'The source of the GCP Cloud Function event', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "//pubsub.googleapis.com/projects/my-project/topics/my-topic", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.source attribute" }, - ], + example: '//pubsub.googleapis.com/projects/my-project/topics/my-topic', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.source attribute' }], }, - "gcp.function.context.specversion": { - brief: "The CloudEvents specification version of the GCP Cloud Function event", + 'gcp.function.context.specversion': { + brief: 'The CloudEvents specification version of the GCP Cloud Function event', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1.0", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.specversion attribute" }, - ], + example: '1.0', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.specversion attribute' }], }, - "gcp.function.context.time": { - brief: "The timestamp of the GCP Cloud Function event", + 'gcp.function.context.time': { + brief: 'The timestamp of the GCP Cloud Function event', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "2024-01-01T00:00:00.000Z", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.time attribute" }, - ], + example: '2024-01-01T00:00:00.000Z', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.time attribute' }], }, - "gcp.function.context.timestamp": { - brief: "The legacy timestamp of the GCP Cloud Function event", + 'gcp.function.context.timestamp': { + brief: 'The legacy timestamp of the GCP Cloud Function event', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "2024-01-01T00:00:00.000Z", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.timestamp attribute" }, - ], + example: '2024-01-01T00:00:00.000Z', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.timestamp attribute' }], }, - "gcp.function.context.type": { - brief: "The type of the GCP Cloud Function event context", + 'gcp.function.context.type': { + brief: 'The type of the GCP Cloud Function event context', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "cloud_functions.context", - changelog: [ - { version: "0.7.0", prs: [371], description: "Added gcp.function.context.type attribute" }, - ], + example: 'cloud_functions.context', + changelog: [{ version: '0.7.0', prs: [371], description: 'Added gcp.function.context.type attribute' }], }, - "gcp.project.id": { - brief: "The ID of the project in GCP that this resource is associated with", + 'gcp.project.id': { + brief: 'The ID of the project in GCP that this resource is associated with', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "my-project-123", - changelog: [ - { version: "0.11.0", prs: [403] }, - ], + example: 'my-project-123', + changelog: [{ version: '0.11.0', prs: [403] }], }, - "gen_ai.agent.name": { - brief: "The name of the agent being used.", + 'gen_ai.agent.name': { + brief: 'The name of the agent being used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "ResearchAssistant", - changelog: [ - { version: "0.1.0", prs: [62, 127] }, - ], + example: 'ResearchAssistant', + changelog: [{ version: '0.1.0', prs: [62, 127] }], }, - "gen_ai.context.utilization": { - brief: "The fraction of the model context window utilized by this generation.", + 'gen_ai.context.utilization': { + brief: 'The fraction of the model context window utilized by this generation.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.75, - changelog: [ - { version: "0.5.0", prs: [315], description: "Added gen_ai.context.utilization attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [315], description: 'Added gen_ai.context.utilization attribute' }], }, - "gen_ai.context.window_size": { - brief: "The maximum context window size supported by the model for this generation.", + 'gen_ai.context.window_size': { + brief: 'The maximum context window size supported by the model for this generation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 128000, - changelog: [ - { version: "0.5.0", prs: [315], description: "Added gen_ai.context.window_size attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [315], description: 'Added gen_ai.context.window_size attribute' }], }, - "gen_ai.conversation.id": { - brief: "The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.", + 'gen_ai.conversation.id': { + brief: + 'The unique identifier for a conversation (session, thread), used to store and correlate messages within this conversation.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "conv_5j66UpCpwteGg4YSxUnt7lPY", - changelog: [ - { version: "0.4.0", prs: [250] }, - ], + example: 'conv_5j66UpCpwteGg4YSxUnt7lPY', + changelog: [{ version: '0.4.0', prs: [250] }], }, - "gen_ai.cost.cache_creation.input_tokens": { - brief: "The cost of input tokens written to cache in USD.", + 'gen_ai.cost.cache_creation.input_tokens': { + brief: 'The cost of input tokens written to cache in USD.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12.34, - changelog: [ - { version: "0.16.0", description: "Added gen_ai.cost.cache_creation.input_tokens attribute" }, + changelog: [{ version: '0.16.0', description: 'Added gen_ai.cost.cache_creation.input_tokens attribute' }], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + "Despite the name 'cost.cache_creation.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_creation.input_tokens.", + 'This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens — it is already included.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.cache_creation.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_creation.input_tokens.","This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens — it is already included."], }, - "gen_ai.cost.cache_read.input_tokens": { - brief: "The cost of cached input tokens in USD.", + 'gen_ai.cost.cache_read.input_tokens': { + brief: 'The cost of cached input tokens in USD.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12.34, - changelog: [ - { version: "0.16.0", description: "Added gen_ai.cost.cache_read.input_tokens attribute" }, + changelog: [{ version: '0.16.0', description: 'Added gen_ai.cost.cache_read.input_tokens attribute' }], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + "Despite the name 'cost.cache_read.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_read.input_tokens.", + 'This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens — it is already included.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.cache_read.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.cache_read.input_tokens.","This is a subset of gen_ai.cost.input_tokens, not an independent cost. Do not sum this with gen_ai.cost.input_tokens — it is already included."], }, - "gen_ai.cost.input_tokens": { - brief: "The total cost of all input tokens in USD (includes cached and cache creation tokens).", + 'gen_ai.cost.input_tokens': { + brief: 'The total cost of all input tokens in USD (includes cached and cache creation tokens).', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 123.45, changelog: [ - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [112] }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [112] }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + "Despite the name 'cost.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.input_tokens.", + 'This is the total cost of all input tokens, including cached and cache creation tokens at their respective rates. For the cached portion, see gen_ai.cost.cache_read.input_tokens. For the cache creation portion, see gen_ai.cost.cache_creation.input_tokens.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.input_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.input_tokens.","This is the total cost of all input tokens, including cached and cache creation tokens at their respective rates. For the cached portion, see gen_ai.cost.cache_read.input_tokens. For the cache creation portion, see gen_ai.cost.cache_creation.input_tokens."], }, - "gen_ai.cost.output_tokens": { - brief: "The total cost of all output tokens in USD (includes reasoning tokens).", + 'gen_ai.cost.output_tokens': { + brief: 'The total cost of all output tokens in USD (includes reasoning tokens).', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 123.45, changelog: [ - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [112] }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [112] }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + "Despite the name 'cost.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.output_tokens.", + 'This is the total cost of all output tokens, including reasoning tokens at their respective rate. For the reasoning portion, see gen_ai.cost.reasoning.output_tokens.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.output_tokens.","This is the total cost of all output tokens, including reasoning tokens at their respective rate. For the reasoning portion, see gen_ai.cost.reasoning.output_tokens."], }, - "gen_ai.cost.reasoning.output_tokens": { - brief: "The cost of reasoning output tokens in USD.", + 'gen_ai.cost.reasoning.output_tokens': { + brief: 'The cost of reasoning output tokens in USD.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12.34, - changelog: [ - { version: "0.16.0", description: "Added gen_ai.cost.reasoning.output_tokens attribute" }, + changelog: [{ version: '0.16.0', description: 'Added gen_ai.cost.reasoning.output_tokens attribute' }], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + "Despite the name 'cost.reasoning.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.reasoning.output_tokens.", + 'This is a subset of gen_ai.cost.output_tokens, not an independent cost. Do not sum this with gen_ai.cost.output_tokens — it is already included.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.reasoning.output_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.reasoning.output_tokens.","This is a subset of gen_ai.cost.output_tokens, not an independent cost. Do not sum this with gen_ai.cost.output_tokens — it is already included."], }, - "gen_ai.cost.total_tokens": { - brief: "The total cost for the tokens used.", + 'gen_ai.cost.total_tokens': { + brief: 'The total cost for the tokens used.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12.34, - aliases: ["ai.total_cost"], + aliases: ['ai.total_cost'], changelog: [ - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.5.0", prs: [264] }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [126] }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.5.0', prs: [264] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [126] }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + "Despite the name 'cost.total_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.total_tokens.", ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to calculate total cost, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","Despite the name 'cost.total_tokens', this value is cost in USD, not a token count. For token counts, use gen_ai.usage.total_tokens."], }, - "gen_ai.embeddings.input": { - brief: "The input to the embeddings model.", + 'gen_ai.embeddings.input': { + brief: 'The input to the embeddings model.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: "What's the weather in Paris?", - changelog: [ - { version: "0.3.1", prs: [195] }, - ], + changelog: [{ version: '0.3.1', prs: [195] }], }, - "gen_ai.function_id": { - brief: "Framework-specific tracing label for the execution of a function or other unit of execution in a generative AI system.", + 'gen_ai.function_id': { + brief: + 'Framework-specific tracing label for the execution of a function or other unit of execution in a generative AI system.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "my-awesome-function", - changelog: [ - { version: "0.5.0", prs: [308], description: "Added gen_ai.function_id attribute" }, - ], + example: 'my-awesome-function', + changelog: [{ version: '0.5.0', prs: [308], description: 'Added gen_ai.function_id attribute' }], }, - "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:\"...\"}`.", + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "[{\"role\": \"user\", \"parts\": [{\"type\": \"text\", \"content\": \"Weather in Paris?\"}]}, {\"role\": \"assistant\", \"parts\": [{\"type\": \"tool_call\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]}, {\"role\": \"tool\", \"parts\": [{\"type\": \"tool_call_response\", \"id\": \"call_VSPygqKTWdrhaFErNvMV18Yl\", \"result\": \"rainy, 57°F\"}]}]", - aliases: ["ai.texts"], + example: + '[{"role": "user", "parts": [{"type": "text", "content": "Weather in Paris?"}]}, {"role": "assistant", "parts": [{"type": "tool_call", "id": "call_VSPygqKTWdrhaFErNvMV18Yl", "name": "get_weather", "arguments": {"location": "Paris"}}]}, {"role": "tool", "parts": [{"type": "tool_call_response", "id": "call_VSPygqKTWdrhaFErNvMV18Yl", "result": "rainy, 57°F"}]}]', + aliases: ['ai.texts'], changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.4.0", prs: [221] }, + { version: '0.5.0', prs: [264] }, + { version: '0.4.0', prs: [221] }, ], }, - "gen_ai.operation.name": { - brief: "The name of the operation being performed. It has the following list of well-known values: 'chat', 'create_agent', 'embeddings', 'execute_tool', 'generate_content', 'invoke_agent', 'text_completion'. If one of them applies, then that value MUST be used. Otherwise a custom value MAY be used.", + 'gen_ai.operation.name': { + brief: + "The name of the operation being performed. It has the following list of well-known values: 'chat', 'create_agent', 'embeddings', 'execute_tool', 'generate_content', 'invoke_agent', 'text_completion'. If one of them applies, then that value MUST be used. Otherwise a custom value MAY be used.", type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "chat", + example: 'chat', changelog: [ - { version: "0.4.0", prs: [225] }, - { version: "0.1.0", prs: [62, 127] }, + { version: '0.4.0', prs: [225] }, + { version: '0.1.0', prs: [62, 127] }, ], }, - "gen_ai.operation.type": { - brief: "The type of AI operation. Must be one of 'agent' (invoke_agent and create_agent spans), 'ai_client' (any LLM call), 'tool' (execute_tool spans), 'handoff' (handoff spans), 'other' (input and output processors, skill loading, guardrails etc.) . Added during ingestion based on span.op and gen_ai.operation.type. Used to filter and aggregate data in the UI", + 'gen_ai.operation.type': { + brief: + "The type of AI operation. Must be one of 'agent' (invoke_agent and create_agent spans), 'ai_client' (any LLM call), 'tool' (execute_tool spans), 'handoff' (handoff spans), 'other' (input and output processors, skill loading, guardrails etc.) . Added during ingestion based on span.op and gen_ai.operation.type. Used to filter and aggregate data in the UI", type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "tool", + example: 'tool', changelog: [ - { version: "0.4.0", prs: [257] }, - { version: "0.1.0", prs: [113, 127] }, + { version: '0.4.0', prs: [257] }, + { version: '0.1.0', prs: [113, 127] }, ], }, - "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.", + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "[{\"role\": \"assistant\", \"parts\": [{\"type\": \"text\", \"content\": \"The weather in Paris is currently rainy with a temperature of 57°F.\"}], \"finish_reason\": \"stop\"}]", - changelog: [ - { version: "0.4.0", prs: [221] }, - ], + example: + '[{"role": "assistant", "parts": [{"type": "text", "content": "The weather in Paris is currently rainy with a temperature of 57°F."}], "finish_reason": "stop"}]', + changelog: [{ version: '0.4.0', prs: [221] }], }, - "gen_ai.pipeline.name": { - brief: "Name of the AI pipeline or chain being executed.", + 'gen_ai.pipeline.name': { + brief: 'Name of the AI pipeline or chain being executed.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Autofix Pipeline", - aliases: ["ai.pipeline.name"], - changelog: [ - { version: "0.1.0", prs: [76, 127] }, - ], + example: 'Autofix Pipeline', + aliases: ['ai.pipeline.name'], + changelog: [{ version: '0.1.0', prs: [76, 127] }], }, - "gen_ai.prompt": { - brief: "The input messages sent to the model", + 'gen_ai.prompt': { + brief: 'The input messages sent to the model', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - 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.', }, - changelog: [ - { version: "0.1.0", prs: [74, 108, 119] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.1.0', prs: [74, 108, 119] }, { version: '0.0.0' }], }, - "gen_ai.prompt.name": { - brief: "The name of the prompt that uniquely identifies it.", + 'gen_ai.prompt.name': { + brief: 'The name of the prompt that uniquely identifies it.', type: 'string', applyScrubbing: { key: 'manual', - reason: "Prompt names may reveal user behavior patterns or sensitive operations" + reason: 'Prompt names may reveal user behavior patterns or sensitive operations', }, isInOtel: true, visibility: 'public', - example: "summarize_text", - aliases: ["mcp.prompt.name"], - changelog: [ - { version: "0.12.0", prs: [420], description: "Added gen_ai.prompt.name attribute" }, - ], + example: 'summarize_text', + aliases: ['mcp.prompt.name'], + changelog: [{ version: '0.12.0', prs: [420], description: 'Added gen_ai.prompt.name attribute' }], }, - "gen_ai.provider.name": { - brief: "The Generative AI provider as identified by the client or server instrumentation.", + 'gen_ai.provider.name': { + brief: 'The Generative AI provider as identified by the client or server instrumentation.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "openai", - aliases: ["ai.model.provider", "gen_ai.system"], - changelog: [ - { version: "0.4.0", prs: [253] }, - ], + example: 'openai', + aliases: ['ai.model.provider', 'gen_ai.system'], + changelog: [{ version: '0.4.0', prs: [253] }], }, - "gen_ai.request.available_tools": { - brief: "The available tools for the model. It has to be a stringified version of an array of objects.", + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - 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', }, changelog: [ - { version: "0.4.0", prs: [221] }, - { version: "0.1.0", prs: [63, 127] }, + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [63, 127] }, ], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 0.5, - aliases: ["ai.frequency_penalty"], + aliases: ['ai.frequency_penalty'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, ], }, - "gen_ai.request.max_tokens": { - brief: "The maximum number of tokens to generate in the response.", + 'gen_ai.request.max_tokens': { + brief: 'The maximum number of tokens to generate in the response.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 2048, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [62] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [62] }, ], }, - "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:\"...\"}`.", + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - 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"], + aliases: ['ai.input_messages'], changelog: [ - { version: "0.4.0", prs: [221] }, - { version: "0.1.0", prs: [63, 74, 108, 119, 122] }, + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [63, 74, 108, 119, 122] }, ], }, - "gen_ai.request.model": { - brief: "The model identifier being used for the request.", + 'gen_ai.request.model': { + brief: 'The model identifier being used for the request.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "gpt-4-turbo-preview", - changelog: [ - { version: "0.1.0", prs: [62, 127] }, - ], + example: 'gpt-4-turbo-preview', + changelog: [{ version: '0.1.0', prs: [62, 127] }], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 0.5, - aliases: ["ai.presence_penalty"], + aliases: ['ai.presence_penalty'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, ], }, - "gen_ai.request.reasoning_effort": { - brief: "Constrains the effort on reasoning for reasoning models. Supported values vary by provider.", + 'gen_ai.request.reasoning_effort': { + brief: 'Constrains the effort on reasoning for reasoning models. Supported values vary by provider.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "high", - changelog: [ - { version: "0.13.0", prs: [334], description: "Added gen_ai.request.reasoning_effort attribute" }, - ], + example: 'high', + changelog: [{ version: '0.13.0', prs: [334], description: 'Added gen_ai.request.reasoning_effort attribute' }], }, - "gen_ai.request.seed": { - brief: "The seed, ideally models given the same seed and same other parameters will produce the exact same output.", + 'gen_ai.request.seed': { + brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "1234567890", - aliases: ["ai.seed"], - changelog: [ - { version: "0.1.0", prs: [57, 127] }, - ], + example: '1234567890', + aliases: ['ai.seed'], + changelog: [{ version: '0.1.0', prs: [57, 127] }], }, - "gen_ai.request.temperature": { - brief: "For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", + 'gen_ai.request.temperature': { + brief: + 'For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 0.1, - aliases: ["ai.temperature"], + aliases: ['ai.temperature'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, ], }, - "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).", + '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).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 35, - aliases: ["ai.top_k"], + aliases: ['ai.top_k'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, ], }, - "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).", + '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).', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 0.7, - aliases: ["ai.top_p"], + aliases: ['ai.top_p'], changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, ], }, - "gen_ai.response.finish_reasons": { - brief: "The reason why the model stopped generating.", + 'gen_ai.response.finish_reasons': { + brief: 'The reason why the model stopped generating.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "COMPLETE", - aliases: ["ai.finish_reason"], - changelog: [ - { version: "0.1.0", prs: [57, 127] }, - ], + example: 'COMPLETE', + aliases: ['ai.finish_reason'], + changelog: [{ version: '0.1.0', prs: [57, 127] }], }, - "gen_ai.response.id": { - brief: "Unique identifier for the completion.", + 'gen_ai.response.id': { + brief: 'Unique identifier for the completion.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "gen_123abc", - aliases: ["ai.generation_id"], - changelog: [ - { version: "0.1.0", prs: [57, 127] }, - ], + example: 'gen_123abc', + aliases: ['ai.generation_id'], + changelog: [{ version: '0.1.0', prs: [57, 127] }], }, - "gen_ai.response.model": { - brief: "The vendor-specific ID of the model used.", + 'gen_ai.response.model': { + brief: 'The vendor-specific ID of the model used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "gpt-4", - aliases: ["ai.model_id"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'gpt-4', + aliases: ['ai.model_id'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "gen_ai.response.streaming": { + 'gen_ai.response.streaming': { brief: "Whether or not the AI model call's response was streamed back asynchronously", type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - aliases: ["ai.streaming"], - changelog: [ - { version: "0.1.0", prs: [76] }, - ], + aliases: ['ai.streaming'], + changelog: [{ version: '0.1.0', prs: [76] }], }, - "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.", + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - 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', }, changelog: [ - { version: "0.4.0", prs: [221] }, - { version: "0.1.0", prs: [63, 74] }, + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [63, 74] }, ], }, - "gen_ai.response.time_to_first_chunk": { - brief: "Time in seconds when the first response content chunk arrived in streaming responses.", + 'gen_ai.response.time_to_first_chunk': { + brief: 'Time in seconds when the first response content chunk arrived in streaming responses.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 0.6853435, - aliases: ["gen_ai.response.time_to_first_token"], - changelog: [ - { version: "0.11.0", prs: [418], description: "Added gen_ai.response.time_to_first_chunk attribute" }, - ], + aliases: ['gen_ai.response.time_to_first_token'], + changelog: [{ version: '0.11.0', prs: [418], description: 'Added gen_ai.response.time_to_first_chunk attribute' }], }, - "gen_ai.response.time_to_first_token": { - brief: "Time in seconds when the first response content chunk arrived in streaming responses.", + 'gen_ai.response.time_to_first_token': { + brief: 'Time in seconds when the first response content chunk arrived in streaming responses.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.6853435, deprecation: { - replacement: "gen_ai.response.time_to_first_chunk" + replacement: 'gen_ai.response.time_to_first_chunk', }, - aliases: ["gen_ai.response.time_to_first_chunk"], + aliases: ['gen_ai.response.time_to_first_chunk'], changelog: [ - { version: "0.11.0", prs: [418], description: "Deprecate in favor of gen_ai.response.time_to_first_chunk" }, - { version: "0.4.0", prs: [227] }, + { version: '0.11.0', prs: [418], description: 'Deprecate in favor of gen_ai.response.time_to_first_chunk' }, + { version: '0.4.0', prs: [227] }, ], }, - "gen_ai.response.tokens_per_second": { - brief: "The total output tokens per seconds throughput", + 'gen_ai.response.tokens_per_second': { + brief: 'The total output tokens per seconds throughput', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 12345.67, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [66] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [66] }, ], }, - "gen_ai.response.tool_calls": { + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - 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', }, changelog: [ - { version: "0.4.0", prs: [221] }, - { version: "0.1.0", prs: [63, 74] }, + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [63, 74] }, ], }, - "gen_ai.system": { - brief: "The provider of the model.", + 'gen_ai.system': { + brief: 'The provider of the model.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "openai", + example: 'openai', deprecation: { - replacement: "gen_ai.provider.name" + replacement: 'gen_ai.provider.name', }, - aliases: ["ai.model.provider", "gen_ai.provider.name"], + aliases: ['ai.model.provider', 'gen_ai.provider.name'], changelog: [ - { version: "0.4.0", prs: [253] }, - { version: "0.1.0", prs: [57, 127] }, + { version: '0.4.0', prs: [253] }, + { version: '0.1.0', prs: [57, 127] }, ], }, - "gen_ai.system_instructions": { - brief: "The system instructions passed to the model.", + 'gen_ai.system_instructions': { + brief: 'The system instructions passed to the model.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "You are a helpful assistant", - aliases: ["ai.preamble"], + example: 'You are a helpful assistant', + aliases: ['ai.preamble'], changelog: [ - { version: "0.5.0", prs: [264] }, - { version: "0.4.0", prs: [221] }, + { version: '0.5.0', prs: [264] }, + { version: '0.4.0', prs: [221] }, ], }, - "gen_ai.system.message": { - brief: "The system instructions passed to the model.", + 'gen_ai.system.message': { + brief: 'The system instructions passed to the model.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "You are a helpful assistant", + example: 'You are a helpful assistant', deprecation: { - replacement: "gen_ai.system_instructions" + replacement: 'gen_ai.system_instructions', }, changelog: [ - { version: "0.4.0", prs: [221] }, - { version: "0.1.0", prs: [62] }, + { version: '0.4.0', prs: [221] }, + { version: '0.1.0', prs: [62] }, ], }, - "gen_ai.tool.call.arguments": { - brief: "The arguments of the tool call. It has to be a stringified version of the arguments to the tool.", + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "{\"location\": \"Paris\"}", - aliases: ["gen_ai.tool.input"], + example: '{"location": "Paris"}', + aliases: ['gen_ai.tool.input'], changelog: [ - { version: "0.5.0", prs: [265] }, - { version: "0.4.0", prs: [221] }, + { version: '0.5.0', prs: [265] }, + { version: '0.4.0', prs: [221] }, ], }, - "gen_ai.tool.call.result": { - brief: "The result of the tool call. It has to be a stringified version of the result of the tool.", + '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', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "rainy, 57°F", - aliases: ["gen_ai.tool.output", "gen_ai.tool.message", "mcp.tool.result.content"], + example: 'rainy, 57°F', + aliases: ['gen_ai.tool.output', 'gen_ai.tool.message', 'mcp.tool.result.content'], changelog: [ - { version: "0.5.0", prs: [265] }, - { version: "0.4.0", prs: [221] }, + { version: '0.5.0', prs: [265] }, + { version: '0.4.0', prs: [221] }, ], }, - "gen_ai.tool.definitions": { - brief: "The list of source system tool definitions available to the GenAI agent or model.", + 'gen_ai.tool.definitions': { + brief: 'The list of source system tool definitions available to the GenAI agent or model.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "[{\"type\": \"function\", \"name\": \"get_current_weather\", \"description\": \"Get the current weather in a given location\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\", \"description\": \"The city and state, e.g. San Francisco, CA\"}, \"unit\": {\"type\": \"string\", \"enum\": [\"celsius\", \"fahrenheit\"]}}, \"required\": [\"location\", \"unit\"]}}]", - changelog: [ - { version: "0.4.0", prs: [221] }, - ], + example: + '[{"type": "function", "name": "get_current_weather", "description": "Get the current weather in a given location", "parameters": {"type": "object", "properties": {"location": {"type": "string", "description": "The city and state, e.g. San Francisco, CA"}, "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}}, "required": ["location", "unit"]}}]', + changelog: [{ version: '0.4.0', prs: [221] }], }, - "gen_ai.tool.description": { - brief: "The description of the tool being used.", + 'gen_ai.tool.description': { + brief: 'The description of the tool being used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "Searches the web for current information about a topic", - changelog: [ - { version: "0.1.0", prs: [62, 127] }, - ], + example: 'Searches the web for current information about a topic', + changelog: [{ version: '0.1.0', prs: [62, 127] }], }, - "gen_ai.tool.input": { - brief: "The input of the tool being used. It has to be a stringified version of the input to the tool.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "{\"location\": \"Paris\"}", + example: '{"location": "Paris"}', deprecation: { - replacement: "gen_ai.tool.call.arguments" + replacement: 'gen_ai.tool.call.arguments', }, - aliases: ["gen_ai.tool.call.arguments"], + aliases: ['gen_ai.tool.call.arguments'], changelog: [ - { version: "0.5.0", prs: [265] }, - { version: "0.1.0", prs: [63, 74] }, + { version: '0.5.0', prs: [265] }, + { version: '0.1.0', prs: [63, 74] }, ], }, - "gen_ai.tool.message": { - brief: "The response from a tool or function call passed to the model.", + 'gen_ai.tool.message': { + brief: 'The response from a tool or function call passed to the model.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "rainy, 57°F", + example: 'rainy, 57°F', deprecation: { - replacement: "gen_ai.tool.call.result" + replacement: 'gen_ai.tool.call.result', }, - aliases: ["gen_ai.tool.call.result", "gen_ai.tool.output", "mcp.tool.result.content"], + aliases: ['gen_ai.tool.call.result', 'gen_ai.tool.output', 'mcp.tool.result.content'], changelog: [ - { version: "0.5.0", prs: [265] }, - { version: "0.1.0", prs: [62] }, + { version: '0.5.0', prs: [265] }, + { version: '0.1.0', prs: [62] }, ], }, - "gen_ai.tool.name": { - brief: "Name of the tool utilized by the agent.", + 'gen_ai.tool.name': { + brief: 'Name of the tool utilized by the agent.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "Flights", - aliases: ["ai.function_call", "mcp.tool.name"], - changelog: [ - { version: "0.1.0", prs: [57, 127] }, - ], + example: 'Flights', + aliases: ['ai.function_call', 'mcp.tool.name'], + changelog: [{ version: '0.1.0', prs: [57, 127] }], }, - "gen_ai.tool.output": { - brief: "The output of the tool being used. It has to be a stringified version of the output of the tool.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "rainy, 57°F", + example: 'rainy, 57°F', deprecation: { - replacement: "gen_ai.tool.call.result" + replacement: 'gen_ai.tool.call.result', }, - aliases: ["gen_ai.tool.call.result", "gen_ai.tool.message", "mcp.tool.result.content"], + aliases: ['gen_ai.tool.call.result', 'gen_ai.tool.message', 'mcp.tool.result.content'], changelog: [ - { version: "0.5.0", prs: [265] }, - { version: "0.1.0", prs: [63, 74] }, + { version: '0.5.0', prs: [265] }, + { version: '0.1.0', prs: [63, 74] }, ], }, - "gen_ai.tool.type": { - brief: "The type of tool being used.", + 'gen_ai.tool.type': { + brief: 'The type of tool being used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "function", + example: 'function', deprecation: { - reason: "The gen_ai.tool.type attribute is deprecated and should no longer be set." + reason: 'The gen_ai.tool.type attribute is deprecated and should no longer be set.', }, - changelog: [ - { version: "0.1.0", prs: [62, 127] }, - ], + changelog: [{ version: '0.1.0', prs: [62, 127] }], }, - "gen_ai.usage.cache_creation.input_tokens": { - brief: "The number of tokens written to the cache when processing the AI input (prompt).", + 'gen_ai.usage.cache_creation.input_tokens': { + brief: 'The number of tokens written to the cache when processing the AI input (prompt).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 100, - aliases: ["gen_ai.usage.input_tokens.cache_write"], + aliases: ['gen_ai.usage.input_tokens.cache_write'], changelog: [ - { version: "0.11.0", prs: [418], description: "Added gen_ai.usage.cache_creation.input_tokens attribute" }, + { version: '0.11.0', prs: [418], description: 'Added gen_ai.usage.cache_creation.input_tokens attribute' }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans."], }, - "gen_ai.usage.cache_read.input_tokens": { - brief: "The number of cached tokens used to process the AI input (prompt).", + 'gen_ai.usage.cache_read.input_tokens': { + brief: 'The number of cached tokens used to process the AI input (prompt).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 50, - aliases: ["gen_ai.usage.input_tokens.cached"], - changelog: [ - { version: "0.11.0", prs: [418], description: "Added gen_ai.usage.cache_read.input_tokens attribute" }, + aliases: ['gen_ai.usage.input_tokens.cached'], + changelog: [{ version: '0.11.0', prs: [418], description: 'Added gen_ai.usage.cache_read.input_tokens attribute' }], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + 'This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens — it is already included.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens — it is already included."], }, - "gen_ai.usage.completion_tokens": { - brief: "The number of tokens used in the GenAI response (completion).", + 'gen_ai.usage.completion_tokens': { + brief: 'The number of tokens used in the GenAI response (completion).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', 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"], + aliases: ['ai.completion_tokens.used', 'gen_ai.usage.output_tokens'], changelog: [ - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [61] }, + { version: '0.0.0' }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans."], }, - "gen_ai.usage.input_tokens": { - brief: "The number of tokens used to process the AI input (prompt) including cached input tokens.", + 'gen_ai.usage.input_tokens': { + brief: 'The number of tokens used to process the AI input (prompt) including cached input tokens.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 10, - aliases: ["ai.prompt_tokens.used", "gen_ai.usage.prompt_tokens"], - changelog: [ - { version: "0.11.0", prs: [418], description: "Update additional_context to reference gen_ai.usage.cache_read.input_tokens" }, - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.5.0", prs: [261] }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [112] }, - { version: "0.0.0" }, - ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This count includes cached input tokens. gen_ai.usage.cache_read.input_tokens is a subset of this value, not an independent count — do not sum them together."], - }, - "gen_ai.usage.input_tokens.cached": { - brief: "The number of cached tokens used to process the AI input (prompt).", + aliases: ['ai.prompt_tokens.used', 'gen_ai.usage.prompt_tokens'], + changelog: [ + { + version: '0.11.0', + prs: [418], + description: 'Update additional_context to reference gen_ai.usage.cache_read.input_tokens', + }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.5.0', prs: [261] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [112] }, + { version: '0.0.0' }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + 'This count includes cached input tokens. gen_ai.usage.cache_read.input_tokens is a subset of this value, not an independent count — do not sum them together.', + ], + }, + 'gen_ai.usage.input_tokens.cached': { + brief: 'The number of cached tokens used to process the AI input (prompt).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 50, deprecation: { - replacement: "gen_ai.usage.cache_read.input_tokens" + replacement: 'gen_ai.usage.cache_read.input_tokens', }, - aliases: ["gen_ai.usage.cache_read.input_tokens"], + aliases: ['gen_ai.usage.cache_read.input_tokens'], changelog: [ - { version: "0.11.0", prs: [418], description: "Deprecate in favor of gen_ai.usage.cache_read.input_tokens" }, - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [62, 112] }, + { version: '0.11.0', prs: [418], description: 'Deprecate in favor of gen_ai.usage.cache_read.input_tokens' }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [62, 112] }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + 'This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens — it is already included.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is a subset of gen_ai.usage.input_tokens, not an independent count. Do not sum this with gen_ai.usage.input_tokens — it is already included."], }, - "gen_ai.usage.input_tokens.cache_write": { - brief: "The number of tokens written to the cache when processing the AI input (prompt).", + 'gen_ai.usage.input_tokens.cache_write': { + brief: 'The number of tokens written to the cache when processing the AI input (prompt).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 100, deprecation: { - replacement: "gen_ai.usage.cache_creation.input_tokens" + replacement: 'gen_ai.usage.cache_creation.input_tokens', }, - aliases: ["gen_ai.usage.cache_creation.input_tokens"], + aliases: ['gen_ai.usage.cache_creation.input_tokens'], changelog: [ - { version: "0.11.0", prs: [418], description: "Deprecate in favor of gen_ai.usage.cache_creation.input_tokens" }, - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.4.0", prs: [217, 228] }, + { version: '0.11.0', prs: [418], description: 'Deprecate in favor of gen_ai.usage.cache_creation.input_tokens' }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.4.0', prs: [217, 228] }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans."], }, - "gen_ai.usage.output_tokens": { - brief: "The number of tokens used for creating the AI output (including reasoning tokens).", + 'gen_ai.usage.output_tokens': { + brief: 'The number of tokens used for creating the AI output (including reasoning tokens).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 10, - aliases: ["ai.completion_tokens.used", "gen_ai.usage.completion_tokens"], - changelog: [ - { version: "0.11.0", prs: [418], description: "Update additional_context to reference gen_ai.usage.reasoning.output_tokens" }, - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.5.0", prs: [261] }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [112] }, - { version: "0.0.0" }, - ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This count includes reasoning tokens. gen_ai.usage.reasoning.output_tokens is a subset of this value, not an independent count — do not sum them together."], - }, - "gen_ai.usage.output_tokens.reasoning": { - brief: "The number of tokens used for reasoning to create the AI output.", + aliases: ['ai.completion_tokens.used', 'gen_ai.usage.completion_tokens'], + changelog: [ + { + version: '0.11.0', + prs: [418], + description: 'Update additional_context to reference gen_ai.usage.reasoning.output_tokens', + }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.5.0', prs: [261] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [112] }, + { version: '0.0.0' }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + 'This count includes reasoning tokens. gen_ai.usage.reasoning.output_tokens is a subset of this value, not an independent count — do not sum them together.', + ], + }, + 'gen_ai.usage.output_tokens.reasoning': { + brief: 'The number of tokens used for reasoning to create the AI output.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 75, deprecation: { - replacement: "gen_ai.usage.reasoning.output_tokens" + replacement: 'gen_ai.usage.reasoning.output_tokens', }, - aliases: ["gen_ai.usage.reasoning.output_tokens"], + aliases: ['gen_ai.usage.reasoning.output_tokens'], changelog: [ - { version: "0.11.0", prs: [418], description: "Deprecate in favor of gen_ai.usage.reasoning.output_tokens" }, - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [62, 112] }, + { version: '0.11.0', prs: [418], description: 'Deprecate in favor of gen_ai.usage.reasoning.output_tokens' }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [62, 112] }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + 'This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens — it is already included.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens — it is already included."], }, - "gen_ai.usage.prompt_tokens": { - brief: "The number of tokens used in the GenAI input (prompt).", + 'gen_ai.usage.prompt_tokens': { + brief: 'The number of tokens used in the GenAI input (prompt).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', 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"], + aliases: ['ai.prompt_tokens.used', 'gen_ai.usage.input_tokens'], changelog: [ - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [61] }, + { version: '0.0.0' }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans."], }, - "gen_ai.usage.reasoning.output_tokens": { - brief: "The number of tokens used for reasoning to create the AI output.", + 'gen_ai.usage.reasoning.output_tokens': { + brief: 'The number of tokens used for reasoning to create the AI output.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 75, - aliases: ["gen_ai.usage.output_tokens.reasoning"], - changelog: [ - { version: "0.11.0", prs: [418], description: "Added gen_ai.usage.reasoning.output_tokens attribute" }, + aliases: ['gen_ai.usage.output_tokens.reasoning'], + changelog: [{ version: '0.11.0', prs: [418], description: 'Added gen_ai.usage.reasoning.output_tokens attribute' }], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + 'This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens — it is already included.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is a subset of gen_ai.usage.output_tokens, not an independent count. Do not sum this with gen_ai.usage.output_tokens — it is already included."], }, - "gen_ai.usage.total_tokens": { - brief: "The total number of tokens used to process the prompt. (input tokens plus output todkens)", + 'gen_ai.usage.total_tokens': { + brief: 'The total number of tokens used to process the prompt. (input tokens plus output todkens)', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 20, - aliases: ["ai.total_tokens.used"], + aliases: ['ai.total_tokens.used'], changelog: [ - { version: "0.9.0", prs: [397], description: "Add additional_context" }, - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [57] }, + { version: '0.9.0', prs: [397], description: 'Add additional_context' }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [57] }, + ], + additionalContext: [ + 'This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.', + 'This is the sum of gen_ai.usage.input_tokens and gen_ai.usage.output_tokens. Do not sum this with either of them — they are already included.', ], - additionalContext: ["This attribute appears on both agent parent spans (aggregated totals) and LLM child spans (per-call values). When using sum() to count tokens, filter to gen_ai.operation.type:ai_client to avoid double-counting hierarchical spans.","This is the sum of gen_ai.usage.input_tokens and gen_ai.usage.output_tokens. Do not sum this with either of them — they are already included."], }, - "graphql.document": { - brief: "The GraphQL document being executed.", + 'graphql.document': { + brief: 'The GraphQL document being executed.', type: 'string', applyScrubbing: { key: 'auto', - reason: "The document may contain sensitive information in arguments or variables. Instrumentation should redact sensitive information when possible." + reason: + 'The document may contain sensitive information in arguments or variables. Instrumentation should redact sensitive information when possible.', }, isInOtel: true, visibility: 'public', - example: "query findBookById { bookById(id: ?) { name } }", + example: 'query findBookById { bookById(id: ?) { name } }', changelog: [ - { version: "0.7.0", description: "Adds the `graphql.document` attribute to track the GraphQL document being executed." }, + { + version: '0.7.0', + description: 'Adds the `graphql.document` attribute to track the GraphQL document being executed.', + }, ], }, - "graphql.operation.name": { - brief: "The name of the operation being executed.", + 'graphql.operation.name': { + brief: 'The name of the operation being executed.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "findBookById", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'findBookById', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "graphql.operation.type": { - brief: "The type of the operation being executed.", + 'graphql.operation.type': { + brief: 'The type of the operation being executed.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "query", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'query', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "hardwareConcurrency": { - brief: "The number of logical CPU cores available.", + hardwareConcurrency: { + brief: 'The number of logical CPU cores available.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "14", + example: '14', deprecation: { - replacement: "device.processor_count", - reason: "Old namespace-less attribute, to be replaced with device.processor_count for span-first future" + replacement: 'device.processor_count', + reason: 'Old namespace-less attribute, to be replaced with device.processor_count for span-first future', }, - aliases: ["device.processor_count"], + aliases: ['device.processor_count'], changelog: [ - { version: "0.5.0", prs: [281, 300], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, + { + version: '0.5.0', + prs: [281, 300], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, ], }, - "http.client_ip": { - brief: "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + 'http.client_ip': { + brief: + 'Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "example.com", + example: 'example.com', deprecation: { - replacement: "client.address" + replacement: 'client.address', }, - aliases: ["client.address"], - changelog: [ - { version: "0.1.0", prs: [61, 106, 127] }, - { version: "0.0.0" }, - ], + aliases: ['client.address'], + changelog: [{ version: '0.1.0', prs: [61, 106, 127] }, { version: '0.0.0' }], }, - "http.decoded_response_content_length": { - brief: "The decoded body size of the response (in bytes).", + 'http.decoded_response_content_length': { + brief: 'The decoded body size of the response (in bytes).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 456, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "http.flavor": { - brief: "The actual version of the protocol used for network communication.", + 'http.flavor': { + brief: 'The actual version of the protocol used for network communication.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "1.1", + example: '1.1', deprecation: { - replacement: "network.protocol.version" + replacement: 'network.protocol.version', }, - aliases: ["network.protocol.version", "net.protocol.version"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['network.protocol.version', 'net.protocol.version'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "http.fragment": { - brief: "The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", + 'http.fragment': { + brief: + 'The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "#details", - changelog: [ - { version: "0.0.0" }, - ], + example: '#details', + changelog: [{ version: '0.0.0' }], }, - "http.host": { - brief: "The domain name.", + 'http.host': { + brief: 'The domain name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - 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"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['server.address', 'client.address', 'http.server_name', 'net.host.name'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "http.method": { - brief: "The HTTP method used.", + 'http.method': { + brief: 'The HTTP method used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "GET", + example: 'GET', deprecation: { - replacement: "http.request.method" + replacement: 'http.request.method', }, - aliases: ["http.request.method", "http.request_method", "method"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['http.request.method', 'http.request_method', 'method'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "http.query": { - brief: "The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.", + 'http.query': { + brief: + 'The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.', type: 'string', applyScrubbing: { key: 'auto', - 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, visibility: 'public', - example: "?foo=bar&bar=baz", - changelog: [ - { version: "0.0.0" }, - ], + example: '?foo=bar&bar=baz', + changelog: [{ version: '0.0.0' }], }, - "http.request.body.data": { - brief: "HTTP request body data. Can be given as string or structural data of any format.", + 'http.request.body.data': { + brief: 'HTTP request body data. Can be given as string or structural data of any format.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "[{\"role\": \"user\", \"message\": \"hello\"}]", - changelog: [ - { version: "0.6.0", prs: [336], description: "Added http.request.body.data attribute" }, - ], + example: '[{"role": "user", "message": "hello"}]', + changelog: [{ version: '0.6.0', prs: [336], description: 'Added http.request.body.data attribute' }], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.15, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.111, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "http.request.domain_lookup_end": { - brief: "The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", + 'http.request.domain_lookup_end': { + brief: + 'The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.201, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "http.request.domain_lookup_start": { - brief: "The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", + 'http.request.domain_lookup_start': { + brief: + 'The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.322, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "http.request.fetch_start": { - brief: "The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", + 'http.request.fetch_start': { + brief: 'The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.389, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "http.request.header.": { - brief: "HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", + 'http.request.header.': { + brief: + 'HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', hasDynamicSuffix: true, example: "http.request.header.custom-header=['foo', 'bar']", changelog: [ - { version: "0.4.0", prs: [201, 204] }, - { version: "0.1.0", prs: [103] }, + { version: '0.4.0', prs: [201, 204] }, + { version: '0.1.0', prs: [103] }, ], }, - "http.request.method": { - brief: "The HTTP method used.", + 'http.request.method': { + brief: 'The HTTP method used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "GET", - aliases: ["method", "http.method", "http.request_method"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'GET', + aliases: ['method', 'http.method', 'http.request_method'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "http.request_method": { - brief: "The HTTP method used.", + 'http.request_method': { + brief: 'The HTTP method used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "GET", + example: 'GET', deprecation: { - replacement: "http.request.method" + replacement: 'http.request.method', }, - aliases: ["method", "http.method", "http.request.method"], - changelog: [ - { version: "0.6.0", prs: [343], description: "Added http.request_method attribute" }, - ], + aliases: ['method', 'http.method', 'http.request.method'], + changelog: [{ version: '0.6.0', prs: [343], description: 'Added http.request_method attribute' }], }, - "http.request.redirect_end": { - brief: "The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", + 'http.request.redirect_end': { + brief: + 'The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829558.502, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [130, 134] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [130, 134] }, ], }, - "http.request.redirect_start": { - brief: "The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", + 'http.request.redirect_start': { + brief: 'The UNIX timestamp representing the start time of the fetch which that initiates the redirect.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.495, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.51, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "http.request.resend_count": { - brief: "The ordinal number of request resending attempt (for any reason, including redirects).", + 'http.request.resend_count': { + brief: 'The ordinal number of request resending attempt (for any reason, including redirects).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.89, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.7, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "http.request.same_origin": { + 'http.request.same_origin': { brief: "Indicates that a URL has the same origin as the current page's origin in the browser.", type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - aliases: ["url.same_origin"], - changelog: [ - { version: "next", prs: [456], description: "Added http.request.same_origin attribute" }, - ], + aliases: ['url.same_origin'], + changelog: [{ version: 'next', prs: [456], description: 'Added http.request.same_origin attribute' }], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829555.73, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [134] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [134] }, { version: '0.0.0' }], }, - "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", + '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", type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1.032, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [131] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [131] }, ], }, - "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.", + '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.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732829553.68, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [130, 134] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [130, 134] }, ], }, - "http.response.body.size": { - brief: "The encoded body size of the response (in bytes).", + 'http.response.body.size': { + brief: 'The encoded body size of the response (in bytes).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 123, - aliases: ["http.response_content_length", "http.response.header.content-length"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [106] }, - { version: "0.0.0" }, - ], + aliases: ['http.response_content_length', 'http.response.header.content-length'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [106] }, { version: '0.0.0' }], }, - "http.response_content_length": { - brief: "The encoded body size of the response (in bytes).", + 'http.response_content_length': { + brief: 'The encoded body size of the response (in bytes).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 123, deprecation: { - replacement: "http.response.body.size" + replacement: 'http.response.body.size', }, - aliases: ["http.response.body.size", "http.response.header.content-length"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61, 106] }, - { version: "0.0.0" }, - ], + aliases: ['http.response.body.size', 'http.response.header.content-length'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61, 106] }, { version: '0.0.0' }], }, - "http.response.header.content-length": { - brief: "The size of the message body sent to the recipient (in bytes)", + 'http.response.header.content-length': { + brief: 'The size of the message body sent to the recipient (in bytes)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: "http.response.header.custom-header=['foo', 'bar']", - aliases: ["http.response_content_length", "http.response.body.size"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + aliases: ['http.response_content_length', 'http.response.body.size'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "http.response.header.": { - brief: "HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", + 'http.response.header.': { + brief: + 'HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', hasDynamicSuffix: true, example: "http.response.header.custom-header=['foo', 'bar']", changelog: [ - { version: "0.4.0", prs: [201, 204] }, - { version: "0.1.0", prs: [103] }, + { version: '0.4.0', prs: [201, 204] }, + { version: '0.1.0', prs: [103] }, ], }, - "http.response.size": { - brief: "The transfer size of the response (in bytes).", + 'http.response.size': { + brief: 'The transfer size of the response (in bytes).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 456, - aliases: ["http.response_transfer_size"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + aliases: ['http.response_transfer_size'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "http.response.status_code": { - brief: "The status code of the HTTP response.", + 'http.response.status_code': { + brief: 'The status code of the HTTP response.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 404, - aliases: ["http.status_code"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + aliases: ['http.status_code'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "http.response_transfer_size": { - brief: "The transfer size of the response (in bytes).", + 'http.response_transfer_size': { + brief: 'The transfer size of the response (in bytes).', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 456, deprecation: { - replacement: "http.response.size" + replacement: 'http.response.size', }, - aliases: ["http.response.size"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + aliases: ['http.response.size'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "http.route": { - brief: "The matched route, that is, the path template in the format used by the respective server framework.", + 'http.route': { + brief: 'The matched route, that is, the path template in the format used by the respective server framework.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "/users/:id", - aliases: ["url.template"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '/users/:id', + aliases: ['url.template'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "http.scheme": { - brief: "The URI scheme component identifying the used protocol.", + 'http.scheme': { + brief: 'The URI scheme component identifying the used protocol.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "https", + example: 'https', deprecation: { - replacement: "url.scheme" + replacement: 'url.scheme', }, - aliases: ["url.scheme"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['url.scheme'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "http.server_name": { - brief: "The server domain name", + 'http.server_name': { + brief: 'The server domain name', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "example.com", + example: 'example.com', deprecation: { - replacement: "server.address" + replacement: 'server.address', }, - aliases: ["server.address", "net.host.name", "http.host"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['server.address', 'net.host.name', 'http.host'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "http.server.request.time_in_queue": { - brief: "The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.", + 'http.server.request.time_in_queue': { + brief: + 'The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 50, - changelog: [ - { version: "0.5.0", prs: [267] }, - ], + changelog: [{ version: '0.5.0', prs: [267] }], }, - "http.status_code": { - brief: "The status code of the HTTP response.", + 'http.status_code': { + brief: 'The status code of the HTTP response.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 404, deprecation: { - replacement: "http.response.status_code" + replacement: 'http.response.status_code', }, - aliases: ["http.response.status_code"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + aliases: ['http.response.status_code'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "http.target": { - brief: "The pathname and query string of the URL.", + 'http.target': { + brief: 'The pathname and query string of the URL.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - 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', }, - changelog: [ - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "http.url": { - brief: "The URL of the resource that was fetched.", + 'http.url': { + brief: 'The URL of the resource that was fetched.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - 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"], - changelog: [ - { version: "0.1.0", prs: [61, 108] }, - { version: "0.0.0" }, - ], + aliases: ['url.full', 'url'], + changelog: [{ version: '0.1.0', prs: [61, 108] }, { version: '0.0.0' }], }, - "http.user_agent": { - brief: "Value of the HTTP User-Agent header sent by the client.", + 'http.user_agent': { + brief: 'Value of the HTTP User-Agent header sent by the client.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - 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"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['user_agent.original'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "id": { - brief: "A unique identifier for the span.", + id: { + brief: 'A unique identifier for the span.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "f47ac10b58cc4372a5670e02b2c3d479", - changelog: [ - { version: "0.0.0" }, - ], + example: 'f47ac10b58cc4372a5670e02b2c3d479', + changelog: [{ version: '0.0.0' }], }, - "inp": { - brief: "The value of the recorded Interaction to Next Paint (INP) web vital", + inp: { + brief: 'The value of the recorded Interaction to Next Paint (INP) web vital', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 200, deprecation: { - replacement: "browser.web_vital.inp.value", - reason: "The INP web vital is now recorded as a browser.web_vital.inp.value attribute." + replacement: 'browser.web_vital.inp.value', + reason: 'The INP web vital is now recorded as a browser.web_vital.inp.value attribute.', }, - aliases: ["browser.web_vital.inp.value"], + aliases: ['browser.web_vital.inp.value'], changelog: [ - { version: "0.5.0", prs: [229], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, + { + version: '0.5.0', + prs: [229], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, ], }, - "jsonrpc.protocol.version": { - brief: "The version of the JSON-RPC protocol used.", + 'jsonrpc.protocol.version': { + brief: 'The version of the JSON-RPC protocol used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "2.0", - changelog: [ - { version: "0.12.0", prs: [420], description: "Added jsonrpc.protocol.version attribute" }, - ], + example: '2.0', + changelog: [{ version: '0.12.0', prs: [420], description: 'Added jsonrpc.protocol.version attribute' }], }, - "jsonrpc.request.id": { - brief: "The JSON-RPC request identifier. Unique within the session.", + 'jsonrpc.request.id': { + brief: 'The JSON-RPC request identifier. Unique within the session.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "1", - aliases: ["mcp.request.id"], - changelog: [ - { version: "0.12.0", prs: [420], description: "Added jsonrpc.request.id attribute" }, - ], + example: '1', + aliases: ['mcp.request.id'], + changelog: [{ version: '0.12.0', prs: [420], description: 'Added jsonrpc.request.id attribute' }], }, - "jvm.gc.action": { - brief: "Name of the garbage collector action.", + 'jvm.gc.action': { + brief: 'Name of the garbage collector action.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "end of minor GC", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'end of minor GC', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "jvm.gc.name": { - brief: "Name of the garbage collector.", + 'jvm.gc.name': { + brief: 'Name of the garbage collector.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "G1 Young Generation", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'G1 Young Generation', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "jvm.memory.pool.name": { - brief: "Name of the memory pool.", + 'jvm.memory.pool.name': { + brief: 'Name of the memory pool.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "G1 Old Gen", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'G1 Old Gen', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "jvm.memory.type": { - brief: "Name of the memory pool.", + 'jvm.memory.type': { + brief: 'Name of the memory pool.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "G1 Old Gen", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'G1 Old Gen', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "jvm.thread.daemon": { - brief: "Whether the thread is daemon or not.", + 'jvm.thread.daemon': { + brief: 'Whether the thread is daemon or not.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: true, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "jvm.thread.state": { - brief: "State of the thread.", + 'jvm.thread.state': { + brief: 'State of the thread.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "blocked", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'blocked', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "lcp": { - brief: "The value of the recorded Largest Contentful Paint (LCP) web vital", + lcp: { + brief: 'The value of the recorded Largest Contentful Paint (LCP) web vital', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2500, deprecation: { - replacement: "browser.web_vital.lcp.value", - reason: "The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute." + replacement: 'browser.web_vital.lcp.value', + reason: 'The LCP web vital is now recorded as a browser.web_vital.lcp.value attribute.', }, - aliases: ["browser.web_vital.lcp.value"], + aliases: ['browser.web_vital.lcp.value'], changelog: [ - { version: "0.5.0", prs: [229], description: "Added and deprecated attribute to document JS SDK's current behaviour" }, + { + version: '0.5.0', + prs: [229], + description: "Added and deprecated attribute to document JS SDK's current behaviour", + }, ], }, - "lcp.element": { - brief: "The dom element responsible for the largest contentful paint.", + 'lcp.element': { + brief: 'The dom element responsible for the largest contentful paint.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "img", + example: 'img', deprecation: { - replacement: "browser.web_vital.lcp.element", - reason: "The LCP element is now recorded as a browser.web_vital.lcp.element attribute." + replacement: 'browser.web_vital.lcp.element', + reason: 'The LCP element is now recorded as a browser.web_vital.lcp.element attribute.', }, - aliases: ["browser.web_vital.lcp.element"], - changelog: [ - { version: "0.5.0", prs: [233] }, - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + aliases: ['browser.web_vital.lcp.element'], + changelog: [{ version: '0.5.0', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "lcp.id": { - brief: "The id of the dom element responsible for the largest contentful paint.", + 'lcp.id': { + brief: 'The id of the dom element responsible for the largest contentful paint.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "#hero", + example: '#hero', deprecation: { - replacement: "browser.web_vital.lcp.id", - reason: "The LCP id is now recorded as a browser.web_vital.lcp.id attribute." + replacement: 'browser.web_vital.lcp.id', + reason: 'The LCP id is now recorded as a browser.web_vital.lcp.id attribute.', }, - aliases: ["browser.web_vital.lcp.id"], - changelog: [ - { version: "0.5.0", prs: [233] }, - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + aliases: ['browser.web_vital.lcp.id'], + changelog: [{ version: '0.5.0', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "lcp.loadTime": { - brief: "The time it took for the LCP element to be loaded", + 'lcp.loadTime': { + brief: 'The time it took for the LCP element to be loaded', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1402, deprecation: { - replacement: "browser.web_vital.lcp.load_time", - reason: "The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute." + replacement: 'browser.web_vital.lcp.load_time', + reason: 'The LCP load time is now recorded as a browser.web_vital.lcp.load_time attribute.', }, - aliases: ["browser.web_vital.lcp.load_time"], - changelog: [ - { version: "0.5.0", prs: [233] }, - ], + aliases: ['browser.web_vital.lcp.load_time'], + changelog: [{ version: '0.5.0', prs: [233] }], }, - "lcp.renderTime": { - brief: "The time it took for the LCP element to be rendered", + 'lcp.renderTime': { + brief: 'The time it took for the LCP element to be rendered', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1685, deprecation: { - replacement: "browser.web_vital.lcp.render_time", - reason: "The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute." + replacement: 'browser.web_vital.lcp.render_time', + reason: 'The LCP render time is now recorded as a browser.web_vital.lcp.render_time attribute.', }, - aliases: ["browser.web_vital.lcp.render_time"], - changelog: [ - { version: "0.5.0", prs: [233] }, - ], + aliases: ['browser.web_vital.lcp.render_time'], + changelog: [{ version: '0.5.0', prs: [233] }], }, - "lcp.size": { - brief: "The size of the largest contentful paint element.", + 'lcp.size': { + brief: 'The size of the largest contentful paint element.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234, deprecation: { - replacement: "browser.web_vital.lcp.size", - reason: "The LCP size is now recorded as a browser.web_vital.lcp.size attribute." + replacement: 'browser.web_vital.lcp.size', + reason: 'The LCP size is now recorded as a browser.web_vital.lcp.size attribute.', }, - aliases: ["browser.web_vital.lcp.size"], - changelog: [ - { version: "0.5.0", prs: [233] }, - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + aliases: ['browser.web_vital.lcp.size'], + changelog: [{ version: '0.5.0', prs: [233] }, { version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "lcp.url": { - brief: "The url of the dom element responsible for the largest contentful paint.", + 'lcp.url': { + brief: 'The url of the dom element responsible for the largest contentful paint.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "https://example.com", + example: 'https://example.com', deprecation: { - replacement: "browser.web_vital.lcp.url", - reason: "The LCP url is now recorded as a browser.web_vital.lcp.url attribute." + replacement: 'browser.web_vital.lcp.url', + reason: 'The LCP url is now recorded as a browser.web_vital.lcp.url attribute.', }, - aliases: ["browser.web_vital.lcp.url"], - changelog: [ - { version: "0.5.0", prs: [233] }, - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + aliases: ['browser.web_vital.lcp.url'], + changelog: [{ version: '0.5.0', prs: [233] }, { version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "logger.name": { - brief: "The name of the logger that generated this event.", + 'logger.name': { + brief: 'The name of the logger that generated this event.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "myLogger", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'myLogger', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "mcp.cancelled.reason": { - brief: "Reason for the cancellation of an MCP operation.", + 'mcp.cancelled.reason': { + brief: 'Reason for the cancellation of an MCP operation.', type: 'string', applyScrubbing: { key: 'manual', - reason: "Cancellation reasons may contain user-specific or sensitive information" + reason: 'Cancellation reasons may contain user-specific or sensitive information', }, isInOtel: false, visibility: 'public', - example: "User cancelled the request", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'User cancelled the request', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.cancelled.request_id": { - brief: "Request ID of the cancelled MCP operation.", + 'mcp.cancelled.request_id': { + brief: 'Request ID of the cancelled MCP operation.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "123", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: '123', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.client.name": { - brief: "Name of the MCP client application.", + 'mcp.client.name': { + brief: 'Name of the MCP client application.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "claude-desktop", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'claude-desktop', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.client.title": { - brief: "Display title of the MCP client application.", + 'mcp.client.title': { + brief: 'Display title of the MCP client application.', type: 'string', applyScrubbing: { key: 'manual', - 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, visibility: 'public', - example: "Claude Desktop", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'Claude Desktop', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.client.version": { - brief: "Version of the MCP client application.", + 'mcp.client.version': { + brief: 'Version of the MCP client application.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1.0.0", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: '1.0.0', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.lifecycle.phase": { - brief: "Lifecycle phase indicator for MCP operations.", + 'mcp.lifecycle.phase': { + brief: 'Lifecycle phase indicator for MCP operations.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "initialization_complete", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'initialization_complete', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.logging.data_type": { - brief: "Data type of the logged message content.", + 'mcp.logging.data_type': { + brief: 'Data type of the logged message content.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "string", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'string', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.logging.level": { - brief: "Log level for MCP logging operations.", + 'mcp.logging.level': { + brief: 'Log level for MCP logging operations.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "info", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'info', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.logging.logger": { - brief: "Logger name for MCP logging operations.", + 'mcp.logging.logger': { + brief: 'Logger name for MCP logging operations.', type: 'string', applyScrubbing: { key: 'manual', - 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, visibility: 'public', - example: "mcp_server", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'mcp_server', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.logging.message": { - brief: "Log message content from MCP logging operations.", + 'mcp.logging.message': { + brief: 'Log message content from MCP logging operations.', type: 'string', applyScrubbing: { key: 'auto', - reason: "Log messages can contain user data" + reason: 'Log messages can contain user data', }, isInOtel: false, visibility: 'public', - example: "Tool execution completed successfully", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'Tool execution completed successfully', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.method.name": { - brief: "The name of the MCP request or notification method being called.", + 'mcp.method.name': { + brief: 'The name of the MCP request or notification method being called.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "tools/call", + example: 'tools/call', changelog: [ - { version: "0.12.0", prs: [420], description: "Set is_in_otel=true, attribute exists in OTel MCP registry" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Set is_in_otel=true, attribute exists in OTel MCP registry' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.progress.current": { - brief: "Current progress value of an MCP operation.", + 'mcp.progress.current': { + brief: 'Current progress value of an MCP operation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 50, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.3.0", prs: [171] }, + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.progress.message": { - brief: "Progress message describing the current state of an MCP operation.", + 'mcp.progress.message': { + brief: 'Progress message describing the current state of an MCP operation.', type: 'string', applyScrubbing: { key: 'manual', - reason: "Progress messages may contain user-specific or sensitive information" + reason: 'Progress messages may contain user-specific or sensitive information', }, isInOtel: false, visibility: 'public', - example: "Processing 50 of 100 items", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'Processing 50 of 100 items', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.progress.percentage": { - brief: "Calculated progress percentage of an MCP operation. Computed from current/total * 100.", + 'mcp.progress.percentage': { + brief: 'Calculated progress percentage of an MCP operation. Computed from current/total * 100.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 50, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.3.0", prs: [171] }, + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.progress.token": { - brief: "Token for tracking progress of an MCP operation.", + 'mcp.progress.token': { + brief: 'Token for tracking progress of an MCP operation.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "progress-token-123", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'progress-token-123', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.progress.total": { - brief: "Total progress target value of an MCP operation.", + 'mcp.progress.total': { + brief: 'Total progress target value of an MCP operation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 100, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.3.0", prs: [171] }, + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.prompt.name": { - brief: "Name of the MCP prompt template being used.", + 'mcp.prompt.name': { + brief: 'Name of the MCP prompt template being used.', type: 'string', applyScrubbing: { key: 'manual', - reason: "Prompt names may reveal user behavior patterns or sensitive operations" + reason: 'Prompt names may reveal user behavior patterns or sensitive operations', }, isInOtel: false, visibility: 'public', - example: "summarize", + example: 'summarize', deprecation: { - replacement: "gen_ai.prompt.name", - reason: "OTel uses gen_ai.prompt.name for MCP prompt names" + replacement: 'gen_ai.prompt.name', + reason: 'OTel uses gen_ai.prompt.name for MCP prompt names', }, - aliases: ["gen_ai.prompt.name"], + aliases: ['gen_ai.prompt.name'], changelog: [ - { version: "0.12.0", prs: [420], description: "Deprecated in favor of gen_ai.prompt.name" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Deprecated in favor of gen_ai.prompt.name' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.prompt.result.description": { - brief: "Description of the prompt result.", + 'mcp.prompt.result.description': { + brief: 'Description of the prompt result.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "A summary of the requested information", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'A summary of the requested information', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.prompt.result.message_content": { - brief: "Content of the message in the prompt result. Used for single message results only.", + 'mcp.prompt.result.message_content': { + brief: 'Content of the message in the prompt result. Used for single message results only.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "Please provide a summary of the document", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'Please provide a summary of the document', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.prompt.result.message_count": { - brief: "Number of messages in the prompt result.", + 'mcp.prompt.result.message_count': { + brief: 'Number of messages in the prompt result.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 3, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.3.0", prs: [171] }, + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.prompt.result.message_role": { - brief: "Role of the message in the prompt result. Used for single message results only.", + 'mcp.prompt.result.message_role': { + brief: 'Role of the message in the prompt result. Used for single message results only.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "user", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'user', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.protocol.ready": { - brief: "Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.", + 'mcp.protocol.ready': { + brief: 'Protocol readiness indicator for MCP session. Non-zero value indicates the protocol is ready.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.3.0", prs: [171] }, + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.protocol.version": { - brief: "MCP protocol version used in the session.", + 'mcp.protocol.version': { + brief: 'MCP protocol version used in the session.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "2024-11-05", + example: '2024-11-05', changelog: [ - { version: "0.12.0", prs: [420], description: "Set is_in_otel=true, attribute exists in OTel MCP registry" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Set is_in_otel=true, attribute exists in OTel MCP registry' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.request.argument.": { - 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.", + 'mcp.request.argument.': { + 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', applyScrubbing: { key: 'auto', - reason: "Arguments contain user input" + reason: 'Arguments contain user input', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "mcp.request.argument.query='weather in Paris'", - changelog: [ - { version: "0.3.0", prs: [176] }, - ], + changelog: [{ version: '0.3.0', prs: [176] }], }, - "mcp.request.argument.name": { - brief: "Name argument from prompts/get MCP request.", + 'mcp.request.argument.name': { + brief: 'Name argument from prompts/get MCP request.', type: 'string', applyScrubbing: { key: 'auto', - reason: "Prompt names can contain user input" + reason: 'Prompt names can contain user input', }, isInOtel: false, visibility: 'public', - example: "summarize", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'summarize', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.request.argument.uri": { - brief: "URI argument from resources/read MCP request.", + 'mcp.request.argument.uri': { + brief: 'URI argument from resources/read MCP request.', type: 'string', applyScrubbing: { key: 'auto', - reason: "URIs can contain user file paths" + reason: 'URIs can contain user file paths', }, isInOtel: false, visibility: 'public', - example: "file:///path/to/resource", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'file:///path/to/resource', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.request.id": { - brief: "JSON-RPC request identifier for the MCP request. Unique within the MCP session.", + 'mcp.request.id': { + brief: 'JSON-RPC request identifier for the MCP request. Unique within the MCP session.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1", + example: '1', deprecation: { - replacement: "jsonrpc.request.id", - reason: "OTel models MCP as JSON-RPC, uses jsonrpc.request.id" + replacement: 'jsonrpc.request.id', + reason: 'OTel models MCP as JSON-RPC, uses jsonrpc.request.id', }, - aliases: ["jsonrpc.request.id"], + aliases: ['jsonrpc.request.id'], changelog: [ - { version: "0.12.0", prs: [420], description: "Deprecated in favor of jsonrpc.request.id" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Deprecated in favor of jsonrpc.request.id' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.resource.protocol": { - brief: "Protocol of the resource URI being accessed, extracted from the URI.", + 'mcp.resource.protocol': { + brief: 'Protocol of the resource URI being accessed, extracted from the URI.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "file", + example: 'file', deprecation: { - replacement: "network.protocol.name", - reason: "OTel uses the generic network.protocol.name attribute" + replacement: 'network.protocol.name', + reason: 'OTel uses the generic network.protocol.name attribute', }, - aliases: ["network.protocol.name", "net.protocol.name"], + aliases: ['network.protocol.name', 'net.protocol.name'], changelog: [ - { version: "0.12.0", prs: [420], description: "Deprecated in favor of network.protocol.name" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Deprecated in favor of network.protocol.name' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.resource.uri": { - brief: "The resource URI being accessed in an MCP operation.", + 'mcp.resource.uri': { + brief: 'The resource URI being accessed in an MCP operation.', type: 'string', applyScrubbing: { key: 'auto', - reason: "URIs can contain sensitive file paths" + reason: 'URIs can contain sensitive file paths', }, isInOtel: true, visibility: 'public', - example: "file:///path/to/file.txt", + example: 'file:///path/to/file.txt', changelog: [ - { version: "0.12.0", prs: [420], description: "Set is_in_otel=true, attribute exists in OTel MCP registry" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Set is_in_otel=true, attribute exists in OTel MCP registry' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.server.name": { - brief: "Name of the MCP server application.", + 'mcp.server.name': { + brief: 'Name of the MCP server application.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "sentry-mcp-server", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'sentry-mcp-server', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.server.title": { - brief: "Display title of the MCP server application.", + 'mcp.server.title': { + brief: 'Display title of the MCP server application.', type: 'string', applyScrubbing: { key: 'manual', - 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, visibility: 'public', - example: "Sentry MCP Server", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: 'Sentry MCP Server', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.server.version": { - brief: "Version of the MCP server application.", + 'mcp.server.version': { + brief: 'Version of the MCP server application.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "0.1.0", - changelog: [ - { version: "0.3.0", prs: [171] }, - ], + example: '0.1.0', + changelog: [{ version: '0.3.0', prs: [171] }], }, - "mcp.session.id": { - brief: "Identifier for the MCP session.", + 'mcp.session.id': { + brief: 'Identifier for the MCP session.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "550e8400-e29b-41d4-a716-446655440000", + example: '550e8400-e29b-41d4-a716-446655440000', changelog: [ - { version: "0.12.0", prs: [420], description: "Set is_in_otel=true, attribute exists in OTel MCP registry" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Set is_in_otel=true, attribute exists in OTel MCP registry' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.tool.name": { - brief: "Name of the MCP tool being called.", + 'mcp.tool.name': { + brief: 'Name of the MCP tool being called.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "calculator", + example: 'calculator', deprecation: { - replacement: "gen_ai.tool.name", - reason: "OTel uses gen_ai.tool.name for MCP tool names" + replacement: 'gen_ai.tool.name', + reason: 'OTel uses gen_ai.tool.name for MCP tool names', }, - aliases: ["gen_ai.tool.name", "ai.function_call"], + aliases: ['gen_ai.tool.name', 'ai.function_call'], changelog: [ - { version: "0.12.0", prs: [420], description: "Deprecated in favor of gen_ai.tool.name" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Deprecated in favor of gen_ai.tool.name' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.tool.result.content": { - brief: "The content of the tool result.", + 'mcp.tool.result.content': { + brief: 'The content of the tool result.', type: 'string', applyScrubbing: { key: 'auto', - reason: "Tool results can contain user data" + reason: 'Tool results can contain user data', }, isInOtel: false, visibility: 'public', - example: "{\"output\": \"rainy\", \"toolCallId\": \"1\"}", + example: '{"output": "rainy", "toolCallId": "1"}', deprecation: { - replacement: "gen_ai.tool.call.result", - reason: "OTel uses gen_ai.tool.call.result for MCP tool results" + replacement: 'gen_ai.tool.call.result', + reason: 'OTel uses gen_ai.tool.call.result for MCP tool results', }, - aliases: ["gen_ai.tool.call.result", "gen_ai.tool.message", "gen_ai.tool.output"], + aliases: ['gen_ai.tool.call.result', 'gen_ai.tool.message', 'gen_ai.tool.output'], changelog: [ - { version: "0.12.0", prs: [420], description: "Deprecated in favor of gen_ai.tool.call.result" }, - { version: "0.3.0", prs: [171] }, - { version: "0.2.0", prs: [164] }, + { version: '0.12.0', prs: [420], description: 'Deprecated in favor of gen_ai.tool.call.result' }, + { version: '0.3.0', prs: [171] }, + { version: '0.2.0', prs: [164] }, ], }, - "mcp.tool.result.content_count": { - brief: "Number of content items in the tool result.", + 'mcp.tool.result.content_count': { + brief: 'Number of content items in the tool result.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.3.0", prs: [171] }, + { version: '0.4.0', prs: [228] }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.tool.result.is_error": { - brief: "Whether a tool execution resulted in an error.", + 'mcp.tool.result.is_error': { + brief: 'Whether a tool execution resulted in an error.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: false, deprecation: { - replacement: "error.type", - reason: "OTel uses error.type set to 'tool_error' when isError is true. Cannot be automatically backfilled due to type mismatch (boolean vs string)." + replacement: 'error.type', + reason: + "OTel uses error.type set to 'tool_error' when isError is true. Cannot be automatically backfilled due to type mismatch (boolean vs string).", }, changelog: [ - { version: "0.12.0", prs: [420], description: "Deprecated in favor of error.type" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Deprecated in favor of error.type' }, + { version: '0.3.0', prs: [171] }, ], }, - "mcp.transport": { - brief: "Transport method used for MCP communication.", + 'mcp.transport': { + brief: 'Transport method used for MCP communication.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "stdio", + example: 'stdio', deprecation: { - replacement: "network.transport", - reason: "OTel uses the generic network.transport attribute" + replacement: 'network.transport', + reason: 'OTel uses the generic network.transport attribute', }, - aliases: ["network.transport", "net.transport"], + aliases: ['network.transport', 'net.transport'], changelog: [ - { version: "0.12.0", prs: [420], description: "Deprecated in favor of network.transport" }, - { version: "0.3.0", prs: [171] }, + { version: '0.12.0', prs: [420], description: 'Deprecated in favor of network.transport' }, + { version: '0.3.0', prs: [171] }, ], }, - "mdc.": { - 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.", + 'mdc.': { + 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', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "mdc.some_key='some_value'", - changelog: [ - { version: "0.3.0", prs: [176] }, - ], + changelog: [{ version: '0.3.0', prs: [176] }], }, - "messaging.batch.message_count": { - brief: "The number of messages sent, received, or processed in the scope of the batching operation.", + 'messaging.batch.message_count': { + brief: 'The number of messages sent, received, or processed in the scope of the batching operation.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 10, - changelog: [ - { version: "0.6.0", prs: [341], description: "Added messaging.batch.message_count attribute" }, - ], + changelog: [{ version: '0.6.0', prs: [341], description: 'Added messaging.batch.message_count attribute' }], }, - "messaging.destination.connection": { - brief: "The message destination connection.", + 'messaging.destination.connection': { + brief: 'The message destination connection.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "BestTopic", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'BestTopic', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "messaging.destination.name": { - brief: "The message destination name.", + 'messaging.destination.name': { + brief: 'The message destination name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "BestTopic", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'BestTopic', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "messaging.message.body.size": { - brief: "The size of the message body in bytes.", + 'messaging.message.body.size': { + brief: 'The size of the message body in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 839, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "messaging.message.conversation_id": { - brief: "The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called \"Correlation ID\".", + 'messaging.message.conversation_id': { + brief: + 'The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "MyConversationId", - changelog: [ - { version: "next", prs: [468], description: "Added messaging.message.conversation_id attribute" }, - ], + example: 'MyConversationId', + changelog: [{ version: 'next', prs: [468], description: 'Added messaging.message.conversation_id attribute' }], }, - "messaging.message.envelope.size": { - brief: "The size of the message body and metadata in bytes.", + 'messaging.message.envelope.size': { + brief: 'The size of the message body and metadata in bytes.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 1045, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "messaging.message.id": { - brief: "A value used by the messaging system as an identifier for the message, represented as a string.", + 'messaging.message.id': { + brief: 'A value used by the messaging system as an identifier for the message, represented as a string.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "f47ac10b58cc4372a5670e02b2c3d479", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'f47ac10b58cc4372a5670e02b2c3d479', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "messaging.message.receive.latency": { - brief: "The latency between when the message was published and received.", + 'messaging.message.receive.latency': { + brief: 'The latency between when the message was published and received.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1732847252, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "messaging.message.retry.count": { - brief: "The amount of attempts to send the message.", + 'messaging.message.retry.count': { + brief: 'The amount of attempts to send the message.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 2, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "messaging.operation.name": { - brief: "The name of the messaging operation being performed", + 'messaging.operation.name': { + brief: 'The name of the messaging operation being performed', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "send", - changelog: [ - { version: "0.11.0", prs: [392], description: "Added messaging.operation.name attribute" }, - ], + example: 'send', + changelog: [{ version: '0.11.0', prs: [392], description: 'Added messaging.operation.name attribute' }], }, - "messaging.operation.type": { - brief: "A string identifying the type of the messaging operation", + 'messaging.operation.type': { + brief: 'A string identifying the type of the messaging operation', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "create", - changelog: [ - { version: "0.1.0", prs: [51, 127] }, - ], + example: 'create', + changelog: [{ version: '0.1.0', prs: [51, 127] }], }, - "messaging.rabbitmq.destination.routing_key": { - brief: "RabbitMQ message routing key.", + 'messaging.rabbitmq.destination.routing_key': { + brief: 'RabbitMQ message routing key.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "myKey", + example: 'myKey', changelog: [ - { version: "next", prs: [468], description: "Added messaging.rabbitmq.destination.routing_key attribute" }, + { version: 'next', prs: [468], description: 'Added messaging.rabbitmq.destination.routing_key attribute' }, ], }, - "messaging.system": { - brief: "The messaging system as identified by the client instrumentation.", + 'messaging.system': { + brief: 'The messaging system as identified by the client instrumentation.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "activemq", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'activemq', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "method": { - brief: "The HTTP method used.", + method: { + brief: 'The HTTP method used.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "GET", + example: 'GET', deprecation: { - replacement: "http.request.method" + replacement: 'http.request.method', }, - aliases: ["http.request.method", "http.request_method", "http.method"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['http.request.method', 'http.request_method', 'http.method'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "middleware.name": { - brief: "The name of the middleware.", + 'middleware.name': { + brief: 'The name of the middleware.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "AuthenticationMiddleware", - changelog: [ - { version: "0.6.0", prs: [336], description: "Added middleware.name attribute" }, - ], + example: 'AuthenticationMiddleware', + changelog: [{ version: '0.6.0', prs: [336], description: 'Added middleware.name attribute' }], }, - "navigation.type": { - brief: "The type of navigation done by a client-side router.", + 'navigation.type': { + brief: 'The type of navigation done by a client-side router.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "router.push", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'router.push', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 100, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [68] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [68] }, ], }, - "nel.phase": { - brief: "If request failed, the phase of its network error. If request succeeded, \"application\".", + 'nel.phase': { + brief: 'If request failed, the phase of its network error. If request succeeded, "application".', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "application", - changelog: [ - { version: "0.1.0", prs: [68, 127] }, - ], + example: 'application', + changelog: [{ version: '0.1.0', prs: [68, 127] }], }, - "nel.referrer": { + 'nel.referrer': { brief: "request's referrer, as determined by the referrer policy associated with its client.", type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "https://example.com/foo?bar=baz", - changelog: [ - { version: "0.1.0", prs: [68, 127] }, - ], + example: 'https://example.com/foo?bar=baz', + changelog: [{ version: '0.1.0', prs: [68, 127] }], }, - "nel.sampling_function": { - brief: "The sampling function used to determine if the request should be sampled.", + 'nel.sampling_function': { + brief: 'The sampling function used to determine if the request should be sampled.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 0.5, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [68] }, + { version: '0.4.0', prs: [228] }, + { version: '0.1.0', prs: [68] }, ], }, - "nel.type": { - brief: "If request failed, the type of its network error. If request succeeded, \"ok\".", + 'nel.type': { + brief: 'If request failed, the type of its network error. If request succeeded, "ok".', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "dns.unreachable", - changelog: [ - { version: "0.1.0", prs: [68, 127] }, - ], + example: 'dns.unreachable', + changelog: [{ version: '0.1.0', prs: [68, 127] }], }, - "network.connection.effective_type": { - brief: "Specifies the effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).", + 'network.connection.effective_type': { + brief: 'Specifies the effective type of the current connection (e.g. slow-2g, 2g, 3g, 4g).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "4g", - aliases: ["effectiveConnectionType"], + example: '4g', + aliases: ['effectiveConnectionType'], changelog: [ - { version: "0.5.0", prs: [279], description: "Added attribute network.connection.effective_type to be used instead of effectiveConnectionType" }, + { + version: '0.5.0', + prs: [279], + description: 'Added attribute network.connection.effective_type to be used instead of effectiveConnectionType', + }, ], }, - "network.connection.rtt": { - brief: "Specifies the estimated effective round-trip time of the current connection, in milliseconds.", + 'network.connection.rtt': { + brief: 'Specifies the estimated effective round-trip time of the current connection, in milliseconds.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 100, - aliases: ["connection.rtt"], + aliases: ['connection.rtt'], changelog: [ - { version: "0.5.0", prs: [279], description: "Added attribute network.connection.rtt to be used instead of connection.rtt" }, + { + version: '0.5.0', + prs: [279], + description: 'Added attribute network.connection.rtt to be used instead of connection.rtt', + }, ], }, - "network.connection.type": { - brief: "Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).", + 'network.connection.type': { + brief: 'Specifies the type of the current connection (e.g. wifi, ethernet, cellular , etc).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "wifi", - aliases: ["device.connection_type", "connectionType"], + example: 'wifi', + aliases: ['device.connection_type', 'connectionType'], changelog: [ - { version: "0.5.0", prs: [279], description: "Added attribute network.connection.type to be used instead of connectionType" }, + { + version: '0.5.0', + prs: [279], + description: 'Added attribute network.connection.type to be used instead of connectionType', + }, ], }, - "network.local.address": { - brief: "Local address of the network connection - IP address or Unix domain socket name.", + 'network.local.address': { + brief: 'Local address of the network connection - IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "10.1.2.80", - aliases: ["net.host.ip", "net.sock.host.addr"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '10.1.2.80', + aliases: ['net.host.ip', 'net.sock.host.addr'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "network.local.port": { - brief: "Local port number of the network connection.", + 'network.local.port': { + brief: 'Local port number of the network connection.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 65400, - aliases: ["net.sock.host.port"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + aliases: ['net.sock.host.port'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "network.peer.address": { - brief: "Peer address of the network connection - IP address or Unix domain socket name.", + 'network.peer.address': { + brief: 'Peer address of the network connection - IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "10.1.2.80", - aliases: ["net.peer.ip", "net.sock.peer.addr"], - changelog: [ - { version: "0.1.0", prs: [108, 127] }, - { version: "0.0.0" }, - ], + example: '10.1.2.80', + aliases: ['net.peer.ip', 'net.sock.peer.addr'], + changelog: [{ version: '0.1.0', prs: [108, 127] }, { version: '0.0.0' }], }, - "network.peer.port": { - brief: "Peer port number of the network connection.", + 'network.peer.port': { + brief: 'Peer port number of the network connection.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 65400, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "network.protocol.name": { - brief: "OSI application layer or non-OSI equivalent.", + 'network.protocol.name': { + brief: 'OSI application layer or non-OSI equivalent.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "http", - aliases: ["net.protocol.name", "mcp.resource.protocol"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'http', + aliases: ['net.protocol.name', 'mcp.resource.protocol'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "network.protocol.version": { - brief: "The actual version of the protocol used for network communication.", + 'network.protocol.version': { + brief: 'The actual version of the protocol used for network communication.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "1.1", - aliases: ["http.flavor", "net.protocol.version"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '1.1', + aliases: ['http.flavor', 'net.protocol.version'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "network.transport": { - brief: "OSI transport layer or inter-process communication method.", + 'network.transport': { + brief: 'OSI transport layer or inter-process communication method.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "tcp", - aliases: ["net.transport", "mcp.transport"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'tcp', + aliases: ['net.transport', 'mcp.transport'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "network.type": { - brief: "OSI network layer or non-OSI equivalent.", + 'network.type': { + brief: 'OSI network layer or non-OSI equivalent.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "ipv4", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'ipv4', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "net.host.ip": { - brief: "Local address of the network connection - IP address or Unix domain socket name.", + 'net.host.ip': { + brief: 'Local address of the network connection - IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - 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"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['network.local.address', 'net.sock.host.addr'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "net.host.name": { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + 'net.host.name': { + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "example.com", + example: 'example.com', deprecation: { - replacement: "server.address" + replacement: 'server.address', }, - aliases: ["server.address", "http.server_name", "http.host"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['server.address', 'http.server_name', 'http.host'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "net.host.port": { - brief: "Server port number.", + 'net.host.port': { + brief: 'Server port number.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 1337, deprecation: { - replacement: "server.port" + replacement: 'server.port', }, - aliases: ["server.port"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + aliases: ['server.port'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "net.peer.ip": { - brief: "Peer address of the network connection - IP address or Unix domain socket name.", + 'net.peer.ip': { + brief: 'Peer address of the network connection - IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - 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"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['network.peer.address', 'net.sock.peer.addr'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "net.peer.name": { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + 'net.peer.name': { + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - 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.', }, - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "net.peer.port": { - brief: "Peer port number.", + 'net.peer.port': { + brief: 'Peer port number.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', 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.', }, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "net.protocol.name": { - brief: "OSI application layer or non-OSI equivalent.", + 'net.protocol.name': { + brief: 'OSI application layer or non-OSI equivalent.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "http", + example: 'http', deprecation: { - replacement: "network.protocol.name" + replacement: 'network.protocol.name', }, - aliases: ["network.protocol.name", "mcp.resource.protocol"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['network.protocol.name', 'mcp.resource.protocol'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "net.protocol.version": { - brief: "The actual version of the protocol used for network communication.", + 'net.protocol.version': { + brief: 'The actual version of the protocol used for network communication.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "1.1", + example: '1.1', deprecation: { - replacement: "network.protocol.version" + replacement: 'network.protocol.version', }, - aliases: ["network.protocol.version", "http.flavor"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['network.protocol.version', 'http.flavor'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "net.sock.family": { - brief: "OSI transport and network layer", + 'net.sock.family': { + brief: 'OSI transport and network layer', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - 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.', }, - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "net.sock.host.addr": { - brief: "Local address of the network connection mapping to Unix domain socket name.", + 'net.sock.host.addr': { + brief: 'Local address of the network connection mapping to Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "/var/my.sock", + example: '/var/my.sock', deprecation: { - replacement: "network.local.address" + replacement: 'network.local.address', }, - aliases: ["network.local.address", "net.host.ip"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['network.local.address', 'net.host.ip'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "net.sock.host.port": { - brief: "Local port number of the network connection.", + 'net.sock.host.port': { + brief: 'Local port number of the network connection.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 8080, deprecation: { - replacement: "network.local.port" + replacement: 'network.local.port', }, - aliases: ["network.local.port"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + aliases: ['network.local.port'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "net.sock.peer.addr": { - brief: "Peer address of the network connection - IP address", + 'net.sock.peer.addr': { + brief: 'Peer address of the network connection - IP address', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - 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"], - changelog: [ - { version: "0.1.0", prs: [61, 108, 127] }, - { version: "0.0.0" }, - ], + aliases: ['network.peer.address', 'net.peer.ip'], + changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, - "net.sock.peer.name": { - brief: "Peer address of the network connection - Unix domain socket name", + 'net.sock.peer.name': { + brief: 'Peer address of the network connection - Unix domain socket name', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - 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', }, - changelog: [ - { version: "0.1.0", prs: [61, 119, 127] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.1.0', prs: [61, 119, 127] }, { version: '0.0.0' }], }, - "net.sock.peer.port": { - brief: "Peer port number of the network connection.", + 'net.sock.peer.port': { + brief: 'Peer port number of the network connection.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 8080, deprecation: { - replacement: "network.peer.port" + replacement: 'network.peer.port', }, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "net.transport": { - brief: "OSI transport layer or inter-process communication method.", + 'net.transport': { + brief: 'OSI transport layer or inter-process communication method.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "tcp", + example: 'tcp', deprecation: { - replacement: "network.transport" + replacement: 'network.transport', }, - aliases: ["network.transport", "mcp.transport"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['network.transport', 'mcp.transport'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "os.build": { - brief: "The build ID of the operating system.", + 'os.build': { + brief: 'The build ID of the operating system.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1234567890", + example: '1234567890', deprecation: { - replacement: "os.build_id" + replacement: 'os.build_id', }, - aliases: ["os.build_id"], + aliases: ['os.build_id'], changelog: [ - { version: "0.5.0", prs: [301], description: "Added os.build attribute, deprecated in favor of os.build_id" }, + { version: '0.5.0', prs: [301], description: 'Added os.build attribute, deprecated in favor of os.build_id' }, ], }, - "os.build_id": { - brief: "The build ID of the operating system.", + 'os.build_id': { + brief: 'The build ID of the operating system.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "1234567890", - aliases: ["os.build"], + example: '1234567890', + aliases: ['os.build'], changelog: [ - { version: "0.5.0", prs: [301], description: "Added os.build as alias" }, - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, + { version: '0.5.0', prs: [301], description: 'Added os.build as alias' }, + { version: '0.1.0', prs: [127] }, + { version: '0.0.0' }, ], }, - "os.description": { - brief: "Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", + 'os.description': { + brief: + 'Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "Ubuntu 18.04.1 LTS", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'Ubuntu 18.04.1 LTS', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "os.kernel_version": { - brief: "An independent kernel version string. Typically the entire output of the `uname` syscall.", + 'os.kernel_version': { + brief: 'An independent kernel version string. Typically the entire output of the `uname` syscall.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "20.2.0", - changelog: [ - { version: "0.5.0", prs: [301], description: "Added os.kernel_version attribute" }, - ], + example: '20.2.0', + changelog: [{ version: '0.5.0', prs: [301], description: 'Added os.kernel_version attribute' }], }, - "os.name": { - brief: "Human readable operating system name.", + 'os.name': { + brief: 'Human readable operating system name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "Ubuntu", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'Ubuntu', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "os.raw_description": { - brief: "An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given.", + 'os.raw_description': { + brief: + 'An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Ubuntu 22.04.4 LTS (Jammy Jellyfish)", - changelog: [ - { version: "0.5.0", prs: [301], description: "Added os.raw_description attribute" }, - ], + example: 'Ubuntu 22.04.4 LTS (Jammy Jellyfish)', + changelog: [{ version: '0.5.0', prs: [301], description: 'Added os.raw_description attribute' }], }, - "os.rooted": { - brief: "Whether the operating system has been jailbroken or rooted.", + 'os.rooted': { + brief: 'Whether the operating system has been jailbroken or rooted.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.5.0", prs: [301], description: "Added os.rooted attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [301], description: 'Added os.rooted attribute' }], }, - "os.theme": { - brief: "Whether the OS runs in dark mode or light mode.", + 'os.theme': { + brief: 'Whether the OS runs in dark mode or light mode.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "dark", - changelog: [ - { version: "0.5.0", prs: [301], description: "Added os.theme attribute" }, - ], + example: 'dark', + changelog: [{ version: '0.5.0', prs: [301], description: 'Added os.theme attribute' }], }, - "os.type": { - brief: "The operating system type.", + 'os.type': { + brief: 'The operating system type.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "linux", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'linux', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "os.version": { - brief: "The version of the operating system.", + 'os.version': { + brief: 'The version of the operating system.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "18.04.2", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '18.04.2', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "otel.kind": { - brief: "The span kind (https://opentelemetry.io/docs/concepts/signals/traces/#span-kind). Deprecated, use `sentry.kind` instead.", + 'otel.kind': { + brief: + 'The span kind (https://opentelemetry.io/docs/concepts/signals/traces/#span-kind). Deprecated, use `sentry.kind` instead.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "SERVER", + example: 'SERVER', deprecation: { - replacement: "sentry.kind", - reason: "Deprecated in favor of sentry.kind" + replacement: 'sentry.kind', + reason: 'Deprecated in favor of sentry.kind', }, - aliases: ["sentry.kind"], - changelog: [ - { version: "0.13.0", prs: [440], description: "Added otel.kind attribute" }, - ], + aliases: ['sentry.kind'], + changelog: [{ version: '0.13.0', prs: [440], description: 'Added otel.kind attribute' }], }, - "otel.scope.name": { - brief: "The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", + 'otel.scope.name': { + brief: 'The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "io.opentelemetry.contrib.mongodb", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'io.opentelemetry.contrib.mongodb', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "otel.scope.version": { - brief: "The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", + 'otel.scope.version': { + brief: 'The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "2.4.5", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '2.4.5', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "otel.status_code": { - brief: "Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", + 'otel.status_code': { + brief: 'Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "OK", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'OK', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "otel.status_description": { - brief: "Description of the Status if it has a value, otherwise not set.", + 'otel.status_description': { + brief: 'Description of the Status if it has a value, otherwise not set.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "resource not found", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'resource not found', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "params.": { - brief: "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", + 'params.': { + brief: + 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "params.id='123'", - aliases: ["url.path.parameter."], - changelog: [ - { version: "0.1.0", prs: [103] }, - ], + aliases: ['url.path.parameter.'], + changelog: [{ version: '0.1.0', prs: [103] }], }, - "performance.activationStart": { - brief: "The time between initiating a navigation to a page and the browser activating the page", + 'performance.activationStart': { + brief: 'The time between initiating a navigation to a page and the browser activating the page', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1.983, deprecation: { - replacement: "browser.performance.navigation.activation_start", - reason: "The activationStart is now recorded as the browser.performance.navigation.activation_start attribute." + replacement: 'browser.performance.navigation.activation_start', + reason: 'The activationStart is now recorded as the browser.performance.navigation.activation_start attribute.', }, - aliases: ["browser.performance.navigation.activation_start"], - changelog: [ - { version: "0.5.0", prs: [321], description: "Added performance.activationStart attribute" }, - ], + aliases: ['browser.performance.navigation.activation_start'], + changelog: [{ version: '0.5.0', prs: [321], description: 'Added performance.activationStart attribute' }], }, - "performance.timeOrigin": { + 'performance.timeOrigin': { brief: "The browser's performance.timeOrigin timestamp representing the time when the pageload was initiated", type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1776185678.886, deprecation: { - replacement: "browser.performance.time_origin", - reason: "The timeOrigin is now recorded as the browser.performance.time_origin attribute." + replacement: 'browser.performance.time_origin', + reason: 'The timeOrigin is now recorded as the browser.performance.time_origin attribute.', }, - aliases: ["browser.performance.time_origin"], - changelog: [ - { version: "0.5.0", prs: [321], description: "Added performance.timeOrigin attribute" }, - ], + aliases: ['browser.performance.time_origin'], + changelog: [{ version: '0.5.0', prs: [321], description: 'Added performance.timeOrigin attribute' }], }, - "previous_route": { - brief: "Also used by mobile SDKs to indicate the previous route in the application.", + previous_route: { + brief: 'Also used by mobile SDKs to indicate the previous route in the application.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "HomeScreen", - changelog: [ - { version: "0.1.0", prs: [74] }, - { version: "0.0.0" }, - ], + example: 'HomeScreen', + changelog: [{ version: '0.1.0', prs: [74] }, { version: '0.0.0' }], }, - "process.command_args": { - brief: "All the command arguments (including the command/executable itself) as received by the process.", + 'process.command_args': { + brief: 'All the command arguments (including the command/executable itself) as received by the process.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: ["cmd/otecol","--config=config.yaml"], - changelog: [ - { version: "0.6.0", prs: [327], description: "Added process.command_args attribute" }, - ], + example: ['cmd/otecol', '--config=config.yaml'], + changelog: [{ version: '0.6.0', prs: [327], description: 'Added process.command_args attribute' }], }, - "process.executable.name": { - brief: "The name of the executable that started the process.", + 'process.executable.name': { + brief: 'The name of the executable that started the process.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "getsentry", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'getsentry', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "process.pid": { - brief: "The process ID of the running process.", + 'process.pid': { + brief: 'The process ID of the running process.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 12345, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "Eclipse OpenJ9 VM openj9-0.21.0", - aliases: ["runtime.raw_description"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'Eclipse OpenJ9 VM openj9-0.21.0', + aliases: ['runtime.raw_description'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "process.runtime.engine.name": { - brief: "The name of the runtime engine.", + 'process.runtime.engine.name': { + brief: 'The name of the runtime engine.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "v8", - changelog: [ - { version: "0.0.0" }, - ], + example: 'v8', + changelog: [{ version: '0.0.0' }], }, - "process.runtime.engine.version": { - brief: "The version of the runtime engine.", + 'process.runtime.engine.version': { + brief: 'The version of the runtime engine.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "12.9.202.13-rusty", - changelog: [ - { version: "0.0.0" }, - ], + example: '12.9.202.13-rusty', + changelog: [{ version: '0.0.0' }], }, - "process.runtime.name": { - brief: "The name of the runtime. Equivalent to `name` in the Sentry runtime context.", + 'process.runtime.name': { + brief: 'The name of the runtime. Equivalent to `name` in the Sentry runtime context.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "node", - aliases: ["runtime.name"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'node', + aliases: ['runtime.name'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "18.04.2", - aliases: ["runtime.version"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '18.04.2', + aliases: ['runtime.version'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "query.": { - brief: "An item in a query string. Usually added by client-side routing frameworks like vue-router.", + 'query.': { + brief: 'An item in a query string. Usually added by client-side routing frameworks like vue-router.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', 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.', }, - changelog: [ - { version: "0.1.0", prs: [103] }, - ], + changelog: [{ version: '0.1.0', prs: [103] }], }, - "react.version": { - brief: "The version of the React framework", + 'react.version': { + brief: 'The version of the React framework', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "18.2.0", - changelog: [ - { version: "0.7.0", prs: [368], description: "Added react.version attribute" }, - ], + example: '18.2.0', + changelog: [{ version: '0.7.0', prs: [368], description: 'Added react.version attribute' }], }, - "release": { - brief: "The sentry release.", + release: { + brief: 'The sentry release.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "production", + example: 'production', deprecation: { - replacement: "sentry.release" + replacement: 'sentry.release', }, - aliases: ["sentry.release"], - changelog: [ - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, - ], + aliases: ['sentry.release'], + changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, - "remix.action_form_data.": { - brief: "Remix form data, being the form data key, the value being the form data value.", + 'remix.action_form_data.': { + brief: 'Remix form data, being the form data key, the value being the form data value.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "http.response.header.text='test'", - changelog: [ - { version: "0.1.0", prs: [103] }, - ], + changelog: [{ version: '0.1.0', prs: [103] }], }, - "replay_id": { - brief: "The id of the sentry replay.", + replay_id: { + brief: 'The id of the sentry replay.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "123e4567e89b12d3a456426614174000", + example: '123e4567e89b12d3a456426614174000', deprecation: { - replacement: "sentry.replay_id" + replacement: 'sentry.replay_id', }, - aliases: ["sentry.replay_id"], - changelog: [ - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + aliases: ['sentry.replay_id'], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "resource.deployment.environment": { - brief: "The software deployment environment name.", + 'resource.deployment.environment': { + brief: 'The software deployment environment name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "production", + example: 'production', deprecation: { - replacement: "sentry.environment" + replacement: 'sentry.environment', }, - changelog: [ - { version: "0.5.0", prs: [266] }, - ], + changelog: [{ version: '0.5.0', prs: [266] }], }, - "resource.deployment.environment.name": { - brief: "The software deployment environment name.", + 'resource.deployment.environment.name': { + brief: 'The software deployment environment name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "production", + example: 'production', deprecation: { - replacement: "sentry.environment" + replacement: 'sentry.environment', }, - changelog: [ - { version: "0.3.1", prs: [196] }, - ], + changelog: [{ version: '0.3.1', prs: [196] }], }, - "resource.render_blocking_status": { - brief: "The render blocking status of the resource.", + 'resource.render_blocking_status': { + brief: 'The render blocking status of the resource.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "non-blocking", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'non-blocking', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "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.", + 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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "App\\Controller::indexAction", + example: 'App\\Controller::indexAction', deprecation: { - replacement: "http.route" + replacement: 'http.route', }, - aliases: ["http.route"], - changelog: [ - { version: "0.1.0", prs: [61, 74] }, - { version: "0.0.0" }, - ], + aliases: ['http.route'], + changelog: [{ version: '0.1.0', prs: [61, 74] }, { version: '0.0.0' }], }, - "rpc.grpc.status_code": { - brief: "The numeric status code of the gRPC request.", + 'rpc.grpc.status_code': { + brief: 'The numeric status code of the gRPC request.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 2, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "rpc.method": { - brief: "The fully-qualified logical name of the method from the RPC interface perspective.", + 'rpc.method': { + brief: 'The fully-qualified logical name of the method from the RPC interface perspective.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "com.example.ExampleService/exampleMethod", - changelog: [ - { version: "0.7.0", prs: [351], description: "Added rpc.method attribute" }, - ], + example: 'com.example.ExampleService/exampleMethod', + changelog: [{ version: '0.7.0', prs: [351], description: 'Added rpc.method attribute' }], }, - "rpc.response.status_code": { - brief: "Status code of the RPC returned by the RPC server or generated by the client.", + 'rpc.response.status_code': { + brief: 'Status code of the RPC returned by the RPC server or generated by the client.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "DEADLINE_EXCEEDED", - changelog: [ - { version: "0.7.0", prs: [352], description: "Added rpc.response.status_code attribute" }, - ], + example: 'DEADLINE_EXCEEDED', + changelog: [{ version: '0.7.0', prs: [352], description: 'Added rpc.response.status_code attribute' }], }, - "rpc.service": { - brief: "The full (logical) name of the service being called, including its package name, if applicable.", + 'rpc.service': { + brief: 'The full (logical) name of the service being called, including its package name, if applicable.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "myService.BestService", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'myService.BestService', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "runtime.build": { - brief: "The application build string, when it is separate from the version.", + 'runtime.build': { + brief: 'The application build string, when it is separate from the version.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "stable", + example: 'stable', deprecation: { - reason: "The runtime.* namespace is deprecated in favor of process.runtime.*. No direct OTel equivalent exists for this attribute." + reason: + 'The runtime.* namespace is deprecated in favor of process.runtime.*. No direct OTel equivalent exists for this attribute.', }, - changelog: [ - { version: "0.11.0", prs: [383], description: "Added and deprecated runtime.build attribute" }, - ], + changelog: [{ version: '0.11.0', prs: [383], description: 'Added and deprecated runtime.build attribute' }], }, - "runtime.name": { - brief: "The name of the runtime. For example node, CPython, or rustc.", + 'runtime.name': { + brief: 'The name of the runtime. For example node, CPython, or rustc.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "node", + example: 'node', deprecation: { - replacement: "process.runtime.name", - reason: "Prefer OTel-aligned process.runtime.name" + replacement: 'process.runtime.name', + reason: 'Prefer OTel-aligned process.runtime.name', }, - aliases: ["process.runtime.name"], + aliases: ['process.runtime.name'], changelog: [ - { version: "0.11.0", prs: [383], description: "Added and deprecated runtime.name attribute in favor of process.runtime.name" }, + { + version: '0.11.0', + prs: [383], + description: 'Added and deprecated runtime.name attribute in favor of process.runtime.name', + }, ], }, - "runtime.raw_description": { - brief: "Unprocessed description string as obtained from the runtime. Used to extract name and version for well-known runtimes.", + 'runtime.raw_description': { + brief: + 'Unprocessed description string as obtained from the runtime. Used to extract name and version for well-known runtimes.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Eclipse OpenJ9 VM openj9-0.21.0", + example: 'Eclipse OpenJ9 VM openj9-0.21.0', deprecation: { - replacement: "process.runtime.description", - reason: "Prefer OTel-aligned process.runtime.description" + replacement: 'process.runtime.description', + reason: 'Prefer OTel-aligned process.runtime.description', }, - aliases: ["process.runtime.description"], + aliases: ['process.runtime.description'], changelog: [ - { version: "0.11.0", prs: [383], description: "Added and deprecated runtime.raw_description attribute in favor of process.runtime.description" }, + { + version: '0.11.0', + prs: [383], + description: 'Added and deprecated runtime.raw_description attribute in favor of process.runtime.description', + }, ], }, - "runtime.version": { - brief: "The version of the runtime.", + 'runtime.version': { + brief: 'The version of the runtime.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "18.04.2", + example: '18.04.2', deprecation: { - replacement: "process.runtime.version", - reason: "Prefer OTel-aligned process.runtime.version" + replacement: 'process.runtime.version', + reason: 'Prefer OTel-aligned process.runtime.version', }, - aliases: ["process.runtime.version"], + aliases: ['process.runtime.version'], changelog: [ - { version: "0.11.0", prs: [383], description: "Added and deprecated runtime.version attribute in favor of process.runtime.version" }, + { + version: '0.11.0', + prs: [383], + description: 'Added and deprecated runtime.version attribute in favor of process.runtime.version', + }, ], }, - "score.": { - brief: "The weighted performance score for a web vital. This is defined as `score.weight.` * `score.ratio.`.", + 'score.': { + brief: + 'The weighted performance score for a web vital. This is defined as `score.weight.` * `score.ratio.`.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: "score.cls=0.1723", - changelog: [ - { version: "0.7.0", prs: [355], description: "Added score. attribute" }, - ], + example: 'score.cls=0.1723', + changelog: [{ version: '0.7.0', prs: [355], description: 'Added score. attribute' }], }, - "score.ratio.": { - brief: "The score for a web vital, normalized to a number between 0 and 1.", + 'score.ratio.': { + brief: 'The score for a web vital, normalized to a number between 0 and 1.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: "score.ratio.inp=0.7748", - changelog: [ - { version: "0.7.0", prs: [355], description: "Added score.ratio. attribute" }, - ], + example: 'score.ratio.inp=0.7748', + changelog: [{ version: '0.7.0', prs: [355], description: 'Added score.ratio. attribute' }], }, - "score.total": { - brief: "The total performance score of a span. This is the sum of individual weighted web vital scores (see `score.`).", + 'score.total': { + brief: + 'The total performance score of a span. This is the sum of individual weighted web vital scores (see `score.`).', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - changelog: [ - { version: "0.7.0", prs: [355], description: "Added score.total attribute" }, - ], + changelog: [{ version: '0.7.0', prs: [355], description: 'Added score.total attribute' }], }, - "score.weight.": { + 'score.weight.': { brief: "The relative weight of a web vital in a span's performance score.", type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, - example: "score.weight.fcp=0.25", - changelog: [ - { version: "0.7.0", prs: [355], description: "Added score.weight. attribute" }, - ], + example: 'score.weight.fcp=0.25', + changelog: [{ version: '0.7.0', prs: [355], description: 'Added score.weight. attribute' }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "SELECT", - changelog: [ - { version: "0.4.0", prs: [212] }, - ], + example: 'SELECT', + changelog: [{ version: '0.4.0', prs: [212] }], }, - "sentry.browser.name": { - brief: "The name of the browser.", + 'sentry.browser.name': { + brief: 'The name of the browser.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Chrome", + example: 'Chrome', deprecation: { - replacement: "browser.name" + replacement: 'browser.name', }, - aliases: ["browser.name"], - changelog: [ - { version: "0.1.0", prs: [139] }, - ], + aliases: ['browser.name'], + changelog: [{ version: '0.1.0', prs: [139] }], }, - "sentry.browser.version": { - brief: "The version of the browser.", + 'sentry.browser.version': { + brief: 'The version of the browser.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "120.0.6099.130", + example: '120.0.6099.130', deprecation: { - replacement: "browser.version" + replacement: 'browser.version', }, - aliases: ["browser.version"], - changelog: [ - { version: "0.1.0", prs: [139] }, - ], + aliases: ['browser.version'], + changelog: [{ version: '0.1.0', prs: [139] }], }, - "sentry.cancellation_reason": { - brief: "The reason why a span ended early.", + 'sentry.cancellation_reason': { + brief: 'The reason why a span ended early.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "document.hidden", - changelog: [ - { version: "0.0.0" }, - ], + example: 'document.hidden', + changelog: [{ version: '0.0.0' }], }, - "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'.", + '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'.", type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "db", - changelog: [ - { version: "0.4.0", prs: [218] }, - ], + example: 'db', + changelog: [{ version: '0.4.0', prs: [218] }], }, - "sentry.client_sample_rate": { - brief: "Rate at which a span was sampled in the SDK.", + 'sentry.client_sample_rate': { + brief: 'Rate at which a span was sampled in the SDK.', type: 'double', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', example: 0.5, - changelog: [ - { version: "0.1.0", prs: [102] }, - ], + changelog: [{ version: '0.1.0', prs: [102] }], }, - "sentry.description": { - brief: "The human-readable description of a span.", + 'sentry.description': { + brief: 'The human-readable description of a span.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "index view query", - changelog: [ - { version: "0.1.0", prs: [135] }, - ], + example: 'index view query', + changelog: [{ version: '0.1.0', prs: [135] }], }, - "sentry.dist": { - brief: "The sentry dist.", + 'sentry.dist': { + brief: 'The sentry dist.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "1.0", - changelog: [ - { version: "0.0.0" }, - ], + example: '1.0', + changelog: [{ version: '0.0.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.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "example.com", - changelog: [ - { version: "0.4.0", prs: [212] }, - ], + example: 'example.com', + changelog: [{ version: '0.4.0', prs: [212] }], }, - "sentry.dsc.environment": { - brief: "The environment from the dynamic sampling context.", + 'sentry.dsc.environment': { + brief: 'The environment from the dynamic sampling context.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'internal', - example: "prod", - changelog: [ - { version: "0.3.0", prs: [185] }, - ], + example: 'prod', + changelog: [{ version: '0.3.0', prs: [185] }], }, - "sentry.dsc.project_id": { - brief: "The ID of the project where the trace originated (i.e. the project of the SDK that started the trace). Propagated through the dynamic sampling context and set by Relay during ingestion.", + 'sentry.dsc.project_id': { + brief: + 'The ID of the project where the trace originated (i.e. the project of the SDK that started the trace). Propagated through the dynamic sampling context and set by Relay during ingestion.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'internal', - example: "12345", - changelog: [ - { version: "0.7.0", prs: [358], description: "Add sentry.dsc.project_id as an attribute" }, - ], + example: '12345', + changelog: [{ version: '0.7.0', prs: [358], description: 'Add sentry.dsc.project_id as an attribute' }], }, - "sentry.dsc.public_key": { - brief: "The public key from the dynamic sampling context.", + 'sentry.dsc.public_key': { + brief: 'The public key from the dynamic sampling context.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'internal', - example: "c51734c603c4430eb57cb0a5728a479d", - changelog: [ - { version: "0.3.0", prs: [185] }, - ], + example: 'c51734c603c4430eb57cb0a5728a479d', + changelog: [{ version: '0.3.0', prs: [185] }], }, - "sentry.dsc.release": { - brief: "The release identifier from the dynamic sampling context.", + 'sentry.dsc.release': { + brief: 'The release identifier from the dynamic sampling context.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'internal', - example: "frontend@e8211be71b214afab5b85de4b4c54be3714952bb", - changelog: [ - { version: "0.3.0", prs: [185] }, - ], + example: 'frontend@e8211be71b214afab5b85de4b4c54be3714952bb', + changelog: [{ version: '0.3.0', prs: [185] }], }, - "sentry.dsc.sampled": { - brief: "Whether the event was sampled according to the dynamic sampling context.", + 'sentry.dsc.sampled': { + brief: 'Whether the event was sampled according to the dynamic sampling context.', type: 'boolean', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'internal', example: true, - changelog: [ - { version: "0.3.0", prs: [185] }, - ], + changelog: [{ version: '0.3.0', prs: [185] }], }, - "sentry.dsc.sample_rate": { - brief: "The sample rate from the dynamic sampling context.", + 'sentry.dsc.sample_rate': { + brief: 'The sample rate from the dynamic sampling context.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'internal', - example: "1.0", - changelog: [ - { version: "0.3.0", prs: [185] }, - ], + example: '1.0', + changelog: [{ version: '0.3.0', prs: [185] }], }, - "sentry.dsc.trace_id": { - brief: "The trace ID from the dynamic sampling context.", + 'sentry.dsc.trace_id': { + brief: 'The trace ID from the dynamic sampling context.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'internal', - example: "047372980460430cbc78d9779df33a46", - changelog: [ - { version: "0.3.0", prs: [185] }, - ], + example: '047372980460430cbc78d9779df33a46', + changelog: [{ version: '0.3.0', prs: [185] }], }, - "sentry.dsc.transaction": { - brief: "The transaction name from the dynamic sampling context.", + 'sentry.dsc.transaction': { + brief: 'The transaction name from the dynamic sampling context.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'internal', - example: "/issues/errors-outages/", - changelog: [ - { version: "0.3.0", prs: [185] }, - ], + example: '/issues/errors-outages/', + changelog: [{ version: '0.3.0', prs: [185] }], }, - "sentry.environment": { - brief: "The sentry environment.", + 'sentry.environment': { + brief: 'The sentry environment.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "production", - aliases: ["environment"], - changelog: [ - { version: "0.0.0" }, - ], + example: 'production', + aliases: ['environment'], + changelog: [{ version: '0.0.0' }], }, - "sentry.exclusive_time": { - brief: "The exclusive time duration of the span in milliseconds.", + 'sentry.exclusive_time': { + brief: 'The exclusive time duration of the span in milliseconds.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.3.0", prs: [160] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.3.0', prs: [160] }, { version: '0.0.0' }], }, - "sentry.graphql.operation": { - brief: "Indicates the type of graphql operation, emitted by the Javascript SDK.", + 'sentry.graphql.operation': { + brief: 'Indicates the type of graphql operation, emitted by the Javascript SDK.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "getUserById", - changelog: [ - { version: "0.3.1", prs: [190] }, - ], + example: 'getUserById', + changelog: [{ version: '0.3.1', prs: [190] }], }, - "sentry.group": { - brief: "Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.", + 'sentry.group': { + brief: + 'Stores the hash of `sentry.normalized_description`. This is primarily used for grouping spans in the product end.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - changelog: [ - { version: "0.4.0", prs: [212] }, - ], + changelog: [{ version: '0.4.0', prs: [212] }], }, - "sentry.http.prefetch": { - brief: "If an http request was a prefetch request.", + 'sentry.http.prefetch': { + brief: 'If an http request was a prefetch request.', type: 'boolean', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "sentry.idle_span_finish_reason": { - brief: "The reason why an idle span ended early.", + 'sentry.idle_span_finish_reason': { + brief: 'The reason why an idle span ended early.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "idleTimeout", - changelog: [ - { version: "0.0.0" }, - ], + example: 'idleTimeout', + changelog: [{ version: '0.0.0' }], }, - "sentry.is_remote": { + 'sentry.is_remote': { brief: "Indicates whether a span's parent is remote.", type: 'boolean', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.3.1", prs: [190] }, - ], + changelog: [{ version: '0.3.1', prs: [190] }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "server", - aliases: ["otel.kind"], - changelog: [ - { version: "0.3.1", prs: [190] }, - ], + example: 'server', + aliases: ['otel.kind'], + changelog: [{ version: '0.3.1', prs: [190] }], }, - "sentry.main_thread": { - brief: "Whether the span or event occurred on the main thread. Computed by Relay and should not be set by SDKs.", + 'sentry.main_thread': { + brief: 'Whether the span or event occurred on the main thread. Computed by Relay and should not be set by SDKs.', type: 'boolean', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.5.0" }, - ], + changelog: [{ version: '0.5.0' }], }, - "sentry.message.parameter.": { - 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)", + 'sentry.message.parameter.': { + 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', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', example: "sentry.message.parameter.0='123'", - changelog: [ - { version: "0.1.0", prs: [116] }, - ], + changelog: [{ version: '0.1.0', prs: [116] }], }, - "sentry.message.template": { - brief: "The parameterized template string.", + 'sentry.message.template': { + brief: 'The parameterized template string.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Hello, {name}!", - changelog: [ - { version: "0.1.0", prs: [116] }, - ], + example: 'Hello, {name}!', + changelog: [{ version: '0.1.0', prs: [116] }], }, - "sentry.metric.source": { - brief: "The provenance of a metric. For example, this can be set to indicate if a metric was generated by Relay from a span.", + 'sentry.metric.source': { + brief: + 'The provenance of a metric. For example, this can be set to indicate if a metric was generated by Relay from a span.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "span", - changelog: [ - { version: "next", description: "Added sentry.metric.source attribute" }, - ], + example: 'span', + changelog: [{ version: 'next', description: 'Added sentry.metric.source attribute' }], }, - "sentry.mobile": { - brief: "Whether the application is using a mobile SDK. Computed by Relay and should not be set by SDKs.", + 'sentry.mobile': { + brief: 'Whether the application is using a mobile SDK. Computed by Relay and should not be set by SDKs.', type: 'boolean', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.5.0" }, - ], + changelog: [{ version: '0.5.0' }], }, - "sentry.module.": { - brief: "A module that was loaded in the process. The key is the name of the module.", + 'sentry.module.': { + brief: 'A module that was loaded in the process. The key is the name of the module.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "sentry.module.brianium/paratest='v7.7.0'", - changelog: [ - { version: "0.1.0", prs: [103] }, - ], + changelog: [{ version: '0.1.0', prs: [103] }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "/posts/[id]/layout", - changelog: [ - { version: "0.1.0", prs: [54, 106] }, - ], + example: '/posts/[id]/layout', + changelog: [{ version: '0.1.0', prs: [54, 106] }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "generateMetadata", - changelog: [ - { version: "0.1.0", prs: [54, 106] }, - ], + example: 'generateMetadata', + changelog: [{ version: '0.1.0', prs: [54, 106] }], }, - "sentry.normalized_db_query": { - brief: "The normalized version of `db.query.text`.", + 'sentry.normalized_db_query': { + brief: 'The normalized version of `db.query.text`.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "SELECT .. FROM sentry_project WHERE (project_id = %s)", - changelog: [ - { version: "0.3.1", prs: [194] }, - ], + example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', + changelog: [{ version: '0.3.1', prs: [194] }], }, - "sentry.normalized_db_query.hash": { - brief: "The hash of `sentry.normalized_db_query`.", + 'sentry.normalized_db_query.hash': { + brief: 'The hash of `sentry.normalized_db_query`.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - changelog: [ - { version: "0.4.0", prs: [200] }, - ], + changelog: [{ version: '0.4.0', prs: [200] }], }, - "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).", + '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).', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "SELECT .. FROM sentry_project WHERE (project_id = %s)", - changelog: [ - { version: "0.4.0", prs: [212] }, - ], + example: 'SELECT .. FROM sentry_project WHERE (project_id = %s)', + changelog: [{ version: '0.4.0', prs: [212] }], }, - "sentry.observed_timestamp_nanos": { - brief: "The timestamp at which an envelope was received by Relay, in nanoseconds.", + 'sentry.observed_timestamp_nanos': { + brief: 'The timestamp at which an envelope was received by Relay, in nanoseconds.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "1544712660300000000", + example: '1544712660300000000', changelog: [ - { version: "0.3.0", prs: [174] }, - { version: "0.2.0", prs: [137] }, + { version: '0.3.0', prs: [174] }, + { version: '0.2.0', prs: [137] }, ], }, - "sentry.op": { - brief: "The operation of a span.", + 'sentry.op': { + brief: 'The operation of a span.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "http.client", - changelog: [ - { version: "0.0.0" }, - ], + example: 'http.client', + changelog: [{ version: '0.0.0' }], }, - "sentry.origin": { - brief: "The origin of the instrumentation (e.g. span, log, etc.)", + 'sentry.origin': { + brief: 'The origin of the instrumentation (e.g. span, log, etc.)', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "auto.http.otel.fastify", - changelog: [ - { version: "0.1.0", prs: [68] }, - { version: "0.0.0" }, - ], + example: 'auto.http.otel.fastify', + changelog: [{ version: '0.1.0', prs: [68] }, { version: '0.0.0' }], }, - "sentry.platform": { - brief: "The sdk platform that generated the event.", + 'sentry.platform': { + brief: 'The sdk platform that generated the event.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "php", - changelog: [ - { version: "0.0.0" }, - ], + example: 'php', + changelog: [{ version: '0.0.0' }], }, - "sentry.profiler_id": { - brief: "The id of the currently running profiler (continuous profiling)", + 'sentry.profiler_id': { + brief: 'The id of the currently running profiler (continuous profiling)', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "18779b64dd35d1a538e7ce2dd2d3fad3", - changelog: [ - { version: "0.4.0", prs: [242] }, - ], + example: '18779b64dd35d1a538e7ce2dd2d3fad3', + changelog: [{ version: '0.4.0', prs: [242] }], }, - "sentry.profile_id": { - brief: "The ID of the Sentry profile the span is associated with. This is only meaningful for transaction-based profiling.", + 'sentry.profile_id': { + brief: + 'The ID of the Sentry profile the span is associated with. This is only meaningful for transaction-based profiling.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "123e4567e89b12d3a456426614174000", - changelog: [ - { version: "0.6.0", prs: [344], description: "Added sentry.profile_id attribute" }, - ], + example: '123e4567e89b12d3a456426614174000', + changelog: [{ version: '0.6.0', prs: [344], description: 'Added sentry.profile_id attribute' }], }, - "sentry.release": { - brief: "The sentry release.", + 'sentry.release': { + brief: 'The sentry release.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "7.0.0", - aliases: ["service.version", "release"], - changelog: [ - { version: "0.0.0" }, - ], + example: '7.0.0', + aliases: ['service.version', 'release'], + changelog: [{ version: '0.0.0' }], }, - "sentry.replay_id": { - brief: "The id of the sentry replay.", + 'sentry.replay_id': { + brief: 'The id of the sentry replay.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "123e4567e89b12d3a456426614174000", - aliases: ["replay_id"], - changelog: [ - { version: "0.0.0" }, - ], + example: '123e4567e89b12d3a456426614174000', + aliases: ['replay_id'], + changelog: [{ version: '0.0.0' }], }, - "sentry.replay_is_buffering": { - brief: "A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", + 'sentry.replay_is_buffering': { + brief: + 'A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).', type: 'boolean', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.3.0", prs: [185] }, - ], + changelog: [{ version: '0.3.0', prs: [185] }], }, - "sentry.report_event": { - brief: "(Deprecated) The event that caused the SDK to report CLS or LCP (pagehide or navigation)", + 'sentry.report_event': { + brief: '(Deprecated) The event that caused the SDK to report CLS or LCP (pagehide or navigation)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "pagehide", + example: 'pagehide', deprecation: { - reason: "The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required." + reason: + 'The report event is now recorded as a browser.web_vital.lcp.report_event or browser.web_vital.cls.report_event attribute. No backfill required.', }, - changelog: [ - { version: "0.5.0", prs: [320], description: "Added sentry.report_event attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [320], description: 'Added sentry.report_event attribute' }], }, - "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.", + '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.', type: 'string[]', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: ["InboundFilters","FunctionToString","BrowserApiErrors","Breadcrumbs"], - changelog: [ - { version: "0.0.0", prs: [42] }, - ], + example: ['InboundFilters', 'FunctionToString', 'BrowserApiErrors', 'Breadcrumbs'], + changelog: [{ version: '0.0.0', prs: [42] }], }, - "sentry.sdk.name": { - brief: "The sentry sdk name.", + 'sentry.sdk.name': { + brief: 'The sentry sdk name.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "@sentry/react", - changelog: [ - { version: "0.0.0" }, - ], + example: '@sentry/react', + changelog: [{ version: '0.0.0' }], }, - "sentry.sdk.version": { - brief: "The sentry sdk version.", + 'sentry.sdk.version': { + brief: 'The sentry sdk version.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "7.0.0", - changelog: [ - { version: "0.0.0" }, - ], + example: '7.0.0', + changelog: [{ version: '0.0.0' }], }, - "sentry.segment.id": { - brief: "The segment ID of a span", + 'sentry.segment.id': { + brief: 'The segment ID of a span', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "051581bf3cb55c13", - aliases: ["sentry.segment_id"], - changelog: [ - { version: "0.1.0", prs: [107, 124] }, - ], + example: '051581bf3cb55c13', + aliases: ['sentry.segment_id'], + changelog: [{ version: '0.1.0', prs: [107, 124] }], }, - "sentry.segment_id": { - brief: "The segment ID of a span", + 'sentry.segment_id': { + brief: 'The segment ID of a span', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "051581bf3cb55c13", + example: '051581bf3cb55c13', deprecation: { - replacement: "sentry.segment.id" + replacement: 'sentry.segment.id', }, - aliases: ["sentry.segment.id"], - changelog: [ - { version: "0.1.0", prs: [124] }, - ], + aliases: ['sentry.segment.id'], + changelog: [{ version: '0.1.0', prs: [124] }], }, - "sentry.segment.name": { - brief: "The segment name of a span", + 'sentry.segment.name': { + brief: 'The segment name of a span', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "GET /user", - aliases: ["sentry.transaction", "transaction"], + example: 'GET /user', + aliases: ['sentry.transaction', 'transaction'], changelog: [ - { version: "0.6.0", prs: [345], description: "Added sentry.transaction and transaction aliases" }, - { version: "0.1.0", prs: [104] }, + { version: '0.6.0', prs: [345], description: 'Added sentry.transaction and transaction aliases' }, + { version: '0.1.0', prs: [104] }, ], }, - "sentry.server_sample_rate": { - brief: "Rate at which a span was sampled in Relay.", + 'sentry.server_sample_rate': { + brief: 'Rate at which a span was sampled in Relay.', type: 'double', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', example: 0.5, - changelog: [ - { version: "0.1.0", prs: [102] }, - ], + changelog: [{ version: '0.1.0', prs: [102] }], }, - "sentry.source": { - brief: "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", + 'sentry.source': { + brief: + "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "route", + example: 'route', deprecation: { - replacement: "sentry.span.source", - reason: "This attribute is being deprecated in favor of sentry.span.source" + replacement: 'sentry.span.source', + reason: 'This attribute is being deprecated in favor of sentry.span.source', }, - changelog: [ - { version: "0.5.0" }, - ], + changelog: [{ version: '0.5.0' }], }, - "sentry.span.source": { - brief: "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", + 'sentry.span.source': { + brief: + "The source of a span, also referred to as transaction source. Known values are: `'custom'`, `'url'`, `'route'`, `'component'`, `'view'`, `'task'`. '`source`' describes a parametrized route, while `'url'` describes the full URL, potentially containing identifiers.", type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "route", - changelog: [ - { version: "0.4.0", prs: [214] }, - { version: "0.0.0" }, - ], + example: 'route', + changelog: [{ version: '0.4.0', prs: [214] }, { version: '0.0.0' }], }, - "sentry.status": { - brief: "The span's status (either \"ok\" or \"error\"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.", + 'sentry.status': { + brief: + 'The span\'s status (either "ok" or "error"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "ok", - changelog: [ - { version: "0.14.0", prs: [453] }, - ], + example: 'ok', + changelog: [{ version: '0.14.0', prs: [453] }], }, - "sentry.status_code": { - brief: "The HTTP status code used in Sentry Insights. Typically set by Sentry during ingestion, rather than by clients.", + 'sentry.status_code': { + brief: + 'The HTTP status code used in Sentry Insights. Typically set by Sentry during ingestion, rather than by clients.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 200, - changelog: [ - { version: "0.4.0", prs: [223, 228] }, - ], + changelog: [{ version: '0.4.0', prs: [223, 228] }], }, - "sentry.status.message": { - brief: "The from OTLP extracted status message.", + 'sentry.status.message': { + brief: 'The from OTLP extracted status message.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "foobar", - changelog: [ - { version: "0.3.1", prs: [190] }, - ], + example: 'foobar', + changelog: [{ version: '0.3.1', prs: [190] }], }, - "sentry.thread.id": { - brief: "Current “managed” thread ID.", + 'sentry.thread.id': { + brief: 'Current “managed” thread ID.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 56, deprecation: { - replacement: "thread.id", - reason: "This attribute is being deprecated in favor of the OTel-standard thread.id" + replacement: 'thread.id', + reason: 'This attribute is being deprecated in favor of the OTel-standard thread.id', }, - changelog: [ - { version: "0.13.0", prs: [451] }, - ], + changelog: [{ version: '0.13.0', prs: [451] }], }, - "sentry.timestamp.sequence": { - brief: "A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one.", + 'sentry.timestamp.sequence': { + brief: + 'A sequencing counter for deterministic ordering of logs or metrics when timestamps share the same integer millisecond. Starts at 0 on SDK initialization, increments by 1 for each captured item, and resets to 0 when the integer millisecond of the current item differs from the previous one.', type: 'integer', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', example: 0, - changelog: [ - { version: "0.5.0", prs: [262] }, - ], + changelog: [{ version: '0.5.0', prs: [262] }], }, - "sentry.trace_lifecycle": { - brief: "Indicates the chosen trace lifecycle mode of the SDK (stream or static)", + 'sentry.trace_lifecycle': { + brief: 'Indicates the chosen trace lifecycle mode of the SDK (stream or static)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "stream", - changelog: [ - { version: "0.13.0", prs: [442], description: "Added sentry.trace_lifecycle attribute" }, - ], + example: 'stream', + changelog: [{ version: '0.13.0', prs: [442], description: 'Added sentry.trace_lifecycle attribute' }], }, - "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.", + '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.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "b0e6f15b45c36b12", + example: 'b0e6f15b45c36b12', deprecation: {}, changelog: [ - { version: "0.5.0", prs: [287], description: "Deprecate `sentry.trace.parent_span_id`" }, - { version: "0.1.0", prs: [116] }, + { version: '0.5.0', prs: [287], description: 'Deprecate `sentry.trace.parent_span_id`' }, + { version: '0.1.0', prs: [116] }, ], }, - "sentry.trace.status": { - brief: "The segment's status (either \"ok\" or \"error\"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.", + 'sentry.trace.status': { + brief: + 'The segment\'s status (either "ok" or "error"). Older SDKs may set this to a more specific error, but this behaviour is deprecated.', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "ok", - changelog: [ - { version: "0.14.0", prs: [453] }, - ], + example: 'ok', + changelog: [{ version: '0.14.0', prs: [453] }], }, - "sentry.transaction": { - brief: "The sentry transaction (segment name).", + 'sentry.transaction': { + brief: 'The sentry transaction (segment name).', type: 'string', applyScrubbing: { - key: 'never' + key: 'never', }, isInOtel: false, visibility: 'public', - example: "GET /", + example: 'GET /', deprecation: { - replacement: "sentry.segment.name", - reason: "This attribute is being deprecated in favor of sentry.segment.name" + replacement: 'sentry.segment.name', + reason: 'This attribute is being deprecated in favor of sentry.segment.name', }, - aliases: ["sentry.segment.name", "transaction"], + aliases: ['sentry.segment.name', 'transaction'], changelog: [ - { version: "0.6.0", prs: [345], description: "Deprecated sentry.transaction in favor of sentry.segment.name" }, - { version: "0.0.0" }, + { version: '0.6.0', prs: [345], description: 'Deprecated sentry.transaction in favor of sentry.segment.name' }, + { version: '0.0.0' }, ], }, - "sentry.user.email": { - brief: "User email address.", + 'sentry.user.email': { + brief: 'User email address.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', deprecation: { - replacement: "user.email" + replacement: 'user.email', }, - aliases: ["user.email"], - changelog: [ - { version: "0.10.0", prs: [406] }, - ], + aliases: ['user.email'], + changelog: [{ version: '0.10.0', prs: [406] }], }, - "sentry.user.geo.city": { - brief: "Human readable city name.", + 'sentry.user.geo.city': { + brief: 'Human readable city name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', deprecation: { - replacement: "user.geo.city" + replacement: 'user.geo.city', }, - aliases: ["user.geo.city"], - changelog: [ - { version: "0.10.0", prs: [406] }, - ], + aliases: ['user.geo.city'], + changelog: [{ version: '0.10.0', prs: [406] }], }, - "sentry.user.geo.country_code": { - brief: "Two-letter country code (ISO 3166-1 alpha-2).", + 'sentry.user.geo.country_code': { + brief: 'Two-letter country code (ISO 3166-1 alpha-2).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', deprecation: { - replacement: "user.geo.country_code" + replacement: 'user.geo.country_code', }, - aliases: ["user.geo.country_code"], - changelog: [ - { version: "0.10.0", prs: [406] }, - ], + aliases: ['user.geo.country_code'], + changelog: [{ version: '0.10.0', prs: [406] }], }, - "sentry.user.geo.region": { - brief: "Human readable region name or code.", + 'sentry.user.geo.region': { + brief: 'Human readable region name or code.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', deprecation: { - replacement: "user.geo.region" + replacement: 'user.geo.region', }, - aliases: ["user.geo.region"], - changelog: [ - { version: "0.10.0", prs: [406] }, - ], + aliases: ['user.geo.region'], + changelog: [{ version: '0.10.0', prs: [406] }], }, - "sentry.user.geo.subdivision": { - brief: "Human readable subdivision name.", + 'sentry.user.geo.subdivision': { + brief: 'Human readable subdivision name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', deprecation: { - replacement: "user.geo.subdivision" + replacement: 'user.geo.subdivision', }, - aliases: ["user.geo.subdivision"], - changelog: [ - { version: "0.10.0", prs: [406] }, - ], + aliases: ['user.geo.subdivision'], + changelog: [{ version: '0.10.0', prs: [406] }], }, - "sentry.user.id": { - brief: "Unique identifier of the user.", + 'sentry.user.id': { + brief: 'Unique identifier of the user.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', deprecation: { - replacement: "user.id" + replacement: 'user.id', }, - aliases: ["user.id"], - changelog: [ - { version: "0.10.0", prs: [406] }, - ], + aliases: ['user.id'], + changelog: [{ version: '0.10.0', prs: [406] }], }, - "sentry.user.ip": { - brief: "The IP address of the user.", + 'sentry.user.ip': { + brief: 'The IP address of the user.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', deprecation: { - replacement: "user.ip_address" + replacement: 'user.ip_address', }, - aliases: ["user.ip_address"], - changelog: [ - { version: "0.10.0", prs: [406] }, - ], + aliases: ['user.ip_address'], + changelog: [{ version: '0.10.0', prs: [406] }], }, - "sentry.user.username": { - brief: "Short name or login/username of the user.", + 'sentry.user.username': { + brief: 'Short name or login/username of the user.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', deprecation: { - replacement: "user.name" - }, - aliases: ["user.name"], - changelog: [ - { version: "0.10.0", prs: [406] }, - ], + replacement: 'user.name', + }, + aliases: ['user.name'], + changelog: [{ version: '0.10.0', prs: [406] }], }, - "server.address": { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + 'server.address': { + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "example.com", - aliases: ["http.server_name", "net.host.name", "http.host", "server_address"], - changelog: [ - { version: "0.1.0", prs: [108, 127] }, - { version: "0.0.0" }, - ], + example: 'example.com', + aliases: ['http.server_name', 'net.host.name', 'http.host', 'server_address'], + changelog: [{ version: '0.1.0', prs: [108, 127] }, { version: '0.0.0' }], }, - "server_address": { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + server_address: { + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "example.com", + example: 'example.com', deprecation: { - replacement: "server.address", - reason: "This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement." + replacement: 'server.address', + reason: 'This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.', }, - aliases: ["server.address"], + aliases: ['server.address'], changelog: [ - { version: "next", description: "Added server_address attribute, deprecated in favor of server.address" }, + { version: 'next', description: 'Added server_address attribute, deprecated in favor of server.address' }, ], }, - "server.port": { - brief: "Server port number.", + 'server.port': { + brief: 'Server port number.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 1337, - aliases: ["net.host.port"], - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + aliases: ['net.host.port'], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "service.name": { - brief: "Logical name of the service.", + 'service.name': { + brief: 'Logical name of the service.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "omegastar", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'omegastar', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "service.version": { - brief: "The version string of the service API or implementation. The format is not defined by these conventions.", + 'service.version': { + brief: 'The version string of the service API or implementation. The format is not defined by these conventions.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "5.0.0", - aliases: ["sentry.release"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '5.0.0', + aliases: ['sentry.release'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "session.id": { - brief: "A unique id identifying the active session at the time of setting this attribute", + 'session.id': { + brief: 'A unique id identifying the active session at the time of setting this attribute', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "00112233-4455-6677-8899-aabbccddeeff", - changelog: [ - { version: "0.11.0", prs: [412], description: "Added session.id attribute" }, - ], + example: '00112233-4455-6677-8899-aabbccddeeff', + changelog: [{ version: '0.11.0', prs: [412], description: 'Added session.id attribute' }], }, - "stall_percentage": { - brief: "The fraction of time the app was stalled. Only applies to React Native. This is computed by Relay.", + stall_percentage: { + brief: 'The fraction of time the app was stalled. Only applies to React Native. This is computed by Relay.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - changelog: [ - { version: "0.7.0", prs: [362], description: "Added stall_percentage attribute" }, - ], + changelog: [{ version: '0.7.0', prs: [362], description: 'Added stall_percentage attribute' }], }, - "stall_total_time": { - brief: "The combined duration of all stalls in milliseconds. Only applies to React Native. This is computed by Relay.", + stall_total_time: { + brief: + 'The combined duration of all stalls in milliseconds. Only applies to React Native. This is computed by Relay.', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - changelog: [ - { version: "0.7.0", prs: [362], description: "Added stall_total_time attribute" }, - ], + changelog: [{ version: '0.7.0', prs: [362], description: 'Added stall_total_time attribute' }], }, - "state.type": { - brief: "The type of state management library", + 'state.type': { + brief: 'The type of state management library', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "redux", - changelog: [ - { version: "0.7.0", prs: [365], description: "Added state.type attribute" }, - ], + example: 'redux', + changelog: [{ version: '0.7.0', prs: [365], description: 'Added state.type attribute' }], }, - "thread.id": { - brief: "Current “managed” thread ID.", + 'thread.id': { + brief: 'Current “managed” thread ID.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 56, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "thread.name": { - brief: "Current thread name.", + 'thread.name': { + brief: 'Current thread name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "main", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'main', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "timber.tag": { - brief: "The log tag provided by the timber logging framework.", + 'timber.tag': { + brief: 'The log tag provided by the timber logging framework.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "MyTag", - changelog: [ - { version: "0.3.0", prs: [183] }, - ], + example: 'MyTag', + changelog: [{ version: '0.3.0', prs: [183] }], }, - "time_to_full_display": { - brief: "The duration of time to full display in milliseconds", + time_to_full_display: { + brief: 'The duration of time to full display in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, deprecation: { - replacement: "app.vitals.ttfd.value", - reason: "Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.ttfd.value', + reason: + 'Replaced by app.vitals.ttfd.value to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.ttfd.value"], + aliases: ['app.vitals.ttfd.value'], changelog: [ - { version: "0.5.0", prs: [313], description: "Added and deprecated in favor of app.vitals.ttfd.value" }, + { version: '0.5.0', prs: [313], description: 'Added and deprecated in favor of app.vitals.ttfd.value' }, ], }, - "time_to_initial_display": { - brief: "The duration of time to initial display in milliseconds", + time_to_initial_display: { + brief: 'The duration of time to initial display in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1234.56, deprecation: { - replacement: "app.vitals.ttid.value", - reason: "Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes" + replacement: 'app.vitals.ttid.value', + reason: + 'Replaced by app.vitals.ttid.value to align with the app.vitals.* namespace for mobile performance attributes', }, - aliases: ["app.vitals.ttid.value"], + aliases: ['app.vitals.ttid.value'], changelog: [ - { version: "0.5.0", prs: [313], description: "Added and deprecated in favor of app.vitals.ttid.value" }, + { version: '0.5.0', prs: [313], description: 'Added and deprecated in favor of app.vitals.ttid.value' }, ], }, - "transaction": { - brief: "The sentry transaction (segment name).", + transaction: { + brief: 'The sentry transaction (segment name).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "GET /", + example: 'GET /', deprecation: { - replacement: "sentry.segment.name" + replacement: 'sentry.segment.name', }, - aliases: ["sentry.segment.name", "sentry.transaction"], + aliases: ['sentry.segment.name', 'sentry.transaction'], changelog: [ - { version: "0.6.0", prs: [345], description: "Updated transaction deprecation replacement to sentry.segment.name" }, - { version: "0.1.0", prs: [61, 127] }, - { version: "0.0.0" }, + { + version: '0.6.0', + prs: [345], + description: 'Updated transaction deprecation replacement to sentry.segment.name', + }, + { version: '0.1.0', prs: [61, 127] }, + { version: '0.0.0' }, ], }, - "trpc.procedure_path": { - brief: "The path of the tRPC procedure being called", + 'trpc.procedure_path': { + brief: 'The path of the tRPC procedure being called', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "user.getById", - changelog: [ - { version: "0.7.0", prs: [370], description: "Added trpc.procedure_path attribute" }, - ], + example: 'user.getById', + changelog: [{ version: '0.7.0', prs: [370], description: 'Added trpc.procedure_path attribute' }], }, - "trpc.procedure_type": { - brief: "The type of the tRPC procedure", + 'trpc.procedure_type': { + brief: 'The type of the tRPC procedure', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "query", - changelog: [ - { version: "0.7.0", prs: [370], description: "Added trpc.procedure_type attribute" }, - ], + example: 'query', + changelog: [{ version: '0.7.0', prs: [370], description: 'Added trpc.procedure_type attribute' }], }, - "ttfb": { - brief: "The value of the recorded Time To First Byte (TTFB) web vital in milliseconds", + ttfb: { + brief: 'The value of the recorded Time To First Byte (TTFB) web vital in milliseconds', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 194, deprecation: { - replacement: "browser.web_vital.ttfb.value", - reason: "This attribute is being deprecated in favor of browser.web_vital.ttfb.value" + replacement: 'browser.web_vital.ttfb.value', + reason: 'This attribute is being deprecated in favor of browser.web_vital.ttfb.value', }, - aliases: ["browser.web_vital.ttfb.value"], - changelog: [ - { version: "0.5.0", prs: [235] }, - ], + aliases: ['browser.web_vital.ttfb.value'], + changelog: [{ version: '0.5.0', prs: [235] }], }, - "ttfb.requestTime": { - brief: "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", + 'ttfb.requestTime': { + brief: + "The time it takes for the server to process the initial request and send the first byte of a response to the user's browser", type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1554.5814, deprecation: { - replacement: "browser.web_vital.ttfb.request_time", - reason: "This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time" + replacement: 'browser.web_vital.ttfb.request_time', + reason: 'This attribute is being deprecated in favor of browser.web_vital.ttfb.request_time', }, - aliases: ["browser.web_vital.ttfb.request_time"], - changelog: [ - { version: "0.5.0", prs: [235] }, - ], + aliases: ['browser.web_vital.ttfb.request_time'], + changelog: [{ version: '0.5.0', prs: [235] }], }, - "type": { - brief: "More granular type of the operation happening.", + type: { + brief: 'More granular type of the operation happening.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "fetch", - changelog: [ - { version: "0.0.0" }, - ], + example: 'fetch', + changelog: [{ version: '0.0.0' }], }, - "ui.component_name": { - brief: "The name of the associated component.", + 'ui.component_name': { + brief: 'The name of the associated component.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "HomeButton", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'HomeButton', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "ui.contributes_to_ttfd": { - brief: "Whether the span execution contributed to the TTFD (time to fully drawn) metric.", + 'ui.contributes_to_ttfd': { + brief: 'Whether the span execution contributed to the TTFD (time to fully drawn) metric.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "ui.contributes_to_ttid": { - brief: "Whether the span execution contributed to the TTID (time to initial display) metric.", + 'ui.contributes_to_ttid': { + brief: 'Whether the span execution contributed to the TTID (time to initial display) metric.', type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, - changelog: [ - { version: "0.0.0" }, - ], + changelog: [{ version: '0.0.0' }], }, - "ui.element.height": { - brief: "The height of the UI element (for Html in pixels)", + 'ui.element.height': { + brief: 'The height of the UI element (for Html in pixels)', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 256, - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.height attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.height attribute' }], }, - "ui.element.id": { - brief: "The id of the UI element", + 'ui.element.id': { + brief: 'The id of the UI element', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "btn-login", - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.id attribute" }, - ], + example: 'btn-login', + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.id attribute' }], }, - "ui.element.identifier": { - brief: "The identifier used to measure the UI element timing", + 'ui.element.identifier': { + brief: 'The identifier used to measure the UI element timing', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "heroImage", - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.identifier attribute" }, - ], + example: 'heroImage', + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.identifier attribute' }], }, - "ui.element.load_time": { - brief: "The loading time of a UI element (from time origin to finished loading)", + 'ui.element.load_time': { + brief: 'The loading time of a UI element (from time origin to finished loading)', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 998.2234, - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.load_time attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.load_time attribute' }], }, - "ui.element.paint_type": { + 'ui.element.paint_type': { brief: "The type of element paint. Can either be 'image-paint' or 'text-paint'", type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "image-paint", - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.paint_type attribute" }, - ], + example: 'image-paint', + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.paint_type attribute' }], }, - "ui.element.render_time": { - brief: "The rendering time of the UI element (from time origin to finished rendering)", + 'ui.element.render_time': { + brief: 'The rendering time of the UI element (from time origin to finished rendering)', type: 'double', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1023.1124, - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.render_time attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.render_time attribute' }], }, - "ui.element.type": { - brief: "type of the UI element", + 'ui.element.type': { + brief: 'type of the UI element', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "img", - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.type attribute" }, - ], + example: 'img', + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.type attribute' }], }, - "ui.element.url": { - brief: "The URL of the UI element (e.g. an img src)", + 'ui.element.url': { + brief: 'The URL of the UI element (e.g. an img src)', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "https://assets.myapp.com/hero.png", - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.url attribute" }, - ], + example: 'https://assets.myapp.com/hero.png', + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.url attribute' }], }, - "ui.element.width": { - brief: "The width of the UI element (for HTML in pixels)", + 'ui.element.width': { + brief: 'The width of the UI element (for HTML in pixels)', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 512, - changelog: [ - { version: "0.5.0", prs: [284], description: "Added ui.element.width attribute" }, - ], + changelog: [{ version: '0.5.0', prs: [284], description: 'Added ui.element.width attribute' }], }, - "url": { - brief: "The URL of the resource that was fetched.", + url: { + brief: 'The URL of the resource that was fetched.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - 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"], - changelog: [ - { version: "0.1.0", prs: [61] }, - { version: "0.0.0" }, - ], + aliases: ['url.full', 'http.url'], + changelog: [{ version: '0.1.0', prs: [61] }, { version: '0.0.0' }], }, - "url.domain": { - brief: "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + 'url.domain': { + brief: + 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "example.com", - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'example.com', + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "url.fragment": { - brief: "The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", + 'url.fragment': { + brief: + 'The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "details", - changelog: [ - { version: "0.0.0" }, - ], + example: 'details', + changelog: [{ version: '0.0.0' }], }, - "url.full": { - brief: "The URL of the resource that was fetched.", + 'url.full': { + brief: 'The URL of the resource that was fetched.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "https://example.com/test?foo=bar#buzz", - aliases: ["http.url", "url"], - changelog: [ - { version: "0.1.0", prs: [108] }, - { version: "0.0.0" }, - ], + example: 'https://example.com/test?foo=bar#buzz', + aliases: ['http.url', 'url'], + changelog: [{ version: '0.1.0', prs: [108] }, { version: '0.0.0' }], }, - "url.path": { - brief: "The URI path component.", + 'url.path': { + brief: 'The URI path component.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "/foo", - changelog: [ - { version: "0.0.0" }, - ], + example: '/foo', + changelog: [{ version: '0.0.0' }], }, - "url.path.parameter.": { - brief: "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", + 'url.path.parameter.': { + brief: + 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', hasDynamicSuffix: true, example: "url.path.parameter.id='123'", - aliases: ["params."], - changelog: [ - { version: "0.1.0", prs: [103] }, - ], + aliases: ['params.'], + changelog: [{ version: '0.1.0', prs: [103] }], }, - "url.port": { - brief: "Server port number.", + 'url.port': { + brief: 'Server port number.', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', example: 1337, - changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.0.0" }, - ], + changelog: [{ version: '0.4.0', prs: [228] }, { version: '0.0.0' }], }, - "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.", + '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.', type: 'string', applyScrubbing: { key: 'auto', - 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, visibility: 'public', - example: "foo=bar&bar=baz", - changelog: [ - { version: "0.0.0" }, - ], + example: 'foo=bar&bar=baz', + changelog: [{ version: '0.0.0' }], }, - "url.same_origin": { + 'url.same_origin': { brief: "Indicates that a URL has the same origin as the current page's origin in the browser.", type: 'boolean', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: true, deprecation: { - replacement: "http.request.same_origin", - reason: "This attribute is being deprecated in favor of http.request.same_origin." + replacement: 'http.request.same_origin', + reason: 'This attribute is being deprecated in favor of http.request.same_origin.', }, - aliases: ["http.request.same_origin"], + aliases: ['http.request.same_origin'], changelog: [ - { version: "next", prs: [456], description: "Added url.same_origin attribute, deprecated in favor of http.request.same_origin" }, + { + version: 'next', + prs: [456], + description: 'Added url.same_origin attribute, deprecated in favor of http.request.same_origin', + }, ], }, - "url.scheme": { - brief: "The URI scheme component identifying the used protocol.", + 'url.scheme': { + brief: 'The URI scheme component identifying the used protocol.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "https", - aliases: ["http.scheme"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: 'https', + aliases: ['http.scheme'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "url.template": { - brief: "The low-cardinality template of an absolute path reference.", + 'url.template': { + brief: 'The low-cardinality template of an absolute path reference.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "/users/:id", - aliases: ["http.route"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: '/users/:id', + aliases: ['http.route'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "user_agent.original": { - brief: "Value of the HTTP User-Agent header sent by the client.", + 'user_agent.original': { + brief: 'Value of the HTTP User-Agent header sent by the client.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: true, visibility: 'public', - example: "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", - aliases: ["http.user_agent"], - changelog: [ - { version: "0.1.0", prs: [127] }, - { version: "0.0.0" }, - ], + example: + 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1', + aliases: ['http.user_agent'], + changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, - "user.email": { - brief: "User email address.", + 'user.email': { + brief: 'User email address.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "test@example.com", - aliases: ["sentry.user.email"], - changelog: [ - { version: "0.0.0" }, - ], + example: 'test@example.com', + aliases: ['sentry.user.email'], + changelog: [{ version: '0.0.0' }], }, - "user.full_name": { + 'user.full_name': { brief: "User's full name.", type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "John Smith", - changelog: [ - { version: "0.0.0" }, - ], + example: 'John Smith', + changelog: [{ version: '0.0.0' }], }, - "user.geo.city": { - brief: "Human readable city name.", + 'user.geo.city': { + brief: 'Human readable city name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Toronto", - aliases: ["sentry.user.geo.city"], - changelog: [ - { version: "0.0.0" }, - ], + example: 'Toronto', + aliases: ['sentry.user.geo.city'], + changelog: [{ version: '0.0.0' }], }, - "user.geo.country_code": { - brief: "Two-letter country code (ISO 3166-1 alpha-2).", + 'user.geo.country_code': { + brief: 'Two-letter country code (ISO 3166-1 alpha-2).', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "CA", - aliases: ["sentry.user.geo.country_code"], - changelog: [ - { version: "0.0.0" }, - ], + example: 'CA', + aliases: ['sentry.user.geo.country_code'], + changelog: [{ version: '0.0.0' }], }, - "user.geo.region": { - brief: "Human readable region name or code.", + 'user.geo.region': { + brief: 'Human readable region name or code.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Canada", - aliases: ["sentry.user.geo.region"], - changelog: [ - { version: "0.0.0" }, - ], + example: 'Canada', + aliases: ['sentry.user.geo.region'], + changelog: [{ version: '0.0.0' }], }, - "user.geo.subdivision": { - brief: "Human readable subdivision name.", + 'user.geo.subdivision': { + brief: 'Human readable subdivision name.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "Ontario", - aliases: ["sentry.user.geo.subdivision"], - changelog: [ - { version: "0.0.0" }, - ], + example: 'Ontario', + aliases: ['sentry.user.geo.subdivision'], + changelog: [{ version: '0.0.0' }], }, - "user.hash": { - brief: "Unique user hash to correlate information for a user in anonymized form.", + 'user.hash': { + brief: 'Unique user hash to correlate information for a user in anonymized form.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", - changelog: [ - { version: "0.0.0" }, - ], + example: '8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d', + changelog: [{ version: '0.0.0' }], }, - "user.id": { - brief: "Unique identifier of the user.", + 'user.id': { + brief: 'Unique identifier of the user.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "S-1-5-21-202424912787-2692429404-2351956786-1000", - aliases: ["sentry.user.id"], - changelog: [ - { version: "0.0.0" }, - ], + example: 'S-1-5-21-202424912787-2692429404-2351956786-1000', + aliases: ['sentry.user.id'], + changelog: [{ version: '0.0.0' }], }, - "user.ip_address": { - brief: "The IP address of the user.", + 'user.ip_address': { + brief: 'The IP address of the user.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "192.168.1.1", - aliases: ["sentry.user.ip"], - changelog: [ - { version: "0.1.0", prs: [75] }, - ], + example: '192.168.1.1', + aliases: ['sentry.user.ip'], + changelog: [{ version: '0.1.0', prs: [75] }], }, - "user.name": { - brief: "Short name or login/username of the user.", + 'user.name': { + brief: 'Short name or login/username of the user.', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: "j.smith", - aliases: ["sentry.user.username"], - changelog: [ - { version: "0.0.0" }, - ], + example: 'j.smith', + aliases: ['sentry.user.username'], + changelog: [{ version: '0.0.0' }], }, - "user.roles": { - brief: "Array of user roles at the time of the event.", + 'user.roles': { + brief: 'Array of user roles at the time of the event.', type: 'string[]', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: true, visibility: 'public', - example: ["admin","editor"], - changelog: [ - { version: "0.0.0" }, - ], + example: ['admin', 'editor'], + changelog: [{ version: '0.0.0' }], }, - "vercel.branch": { - brief: "Git branch name for Vercel project", + 'vercel.branch': { + brief: 'Git branch name for Vercel project', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "main", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'main', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.build_id": { - brief: "Identifier for the Vercel build (only present on build logs)", + 'vercel.build_id': { + brief: 'Identifier for the Vercel build (only present on build logs)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "bld_cotnkcr76", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'bld_cotnkcr76', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.deployment_id": { - brief: "Identifier for the Vercel deployment", + 'vercel.deployment_id': { + brief: 'Identifier for the Vercel deployment', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "dpl_233NRGRjVZX1caZrXWtz5g1TAksD", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'dpl_233NRGRjVZX1caZrXWtz5g1TAksD', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.destination": { - brief: "Origin of the external content in Vercel (only on external logs)", + 'vercel.destination': { + brief: 'Origin of the external content in Vercel (only on external logs)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "https://vitals.vercel-insights.com/v1", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'https://vitals.vercel-insights.com/v1', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.edge_type": { - brief: "Type of edge runtime in Vercel", + 'vercel.edge_type': { + brief: 'Type of edge runtime in Vercel', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "edge-function", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'edge-function', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.entrypoint": { - brief: "Entrypoint for the request in Vercel", + 'vercel.entrypoint': { + brief: 'Entrypoint for the request in Vercel', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "api/index.js", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'api/index.js', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.execution_region": { - brief: "Region where the request is executed", + 'vercel.execution_region': { + brief: 'Region where the request is executed', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "sfo1", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'sfo1', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.id": { - brief: "Unique identifier for the log entry in Vercel", + 'vercel.id': { + brief: 'Unique identifier for the log entry in Vercel', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "1573817187330377061717300000", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: '1573817187330377061717300000', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.ja3_digest": { - brief: "JA3 fingerprint digest of Vercel request", + 'vercel.ja3_digest': { + brief: 'JA3 fingerprint digest of Vercel request', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: '769,47-53-5-10-49161-49162-49171-49172-50-56-19-4,0-10-11,23-24-25,0', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.ja4_digest": { - brief: "JA4 fingerprint digest", + 'vercel.ja4_digest': { + brief: 'JA4 fingerprint digest', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "t13d1516h2_8daaf6152771_02713d6af862", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 't13d1516h2_8daaf6152771_02713d6af862', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.log_type": { - brief: "Vercel log output type", + 'vercel.log_type': { + brief: 'Vercel log output type', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "stdout", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'stdout', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.path": { - brief: "Function or dynamic path of the request in Vercel.", + 'vercel.path': { + brief: 'Function or dynamic path of the request in Vercel.', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "/dynamic/[route].json", - changelog: [ - { version: "0.6.0", prs: [349], description: "Added vercel.path attribute" }, - ], + example: '/dynamic/[route].json', + changelog: [{ version: '0.6.0', prs: [349], description: 'Added vercel.path attribute' }], }, - "vercel.project_id": { - brief: "Identifier for the Vercel project", + 'vercel.project_id': { + brief: 'Identifier for the Vercel project', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "gdufoJxB6b9b1fEqr1jUtFkyavUU", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'gdufoJxB6b9b1fEqr1jUtFkyavUU', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.project_name": { - brief: "Name of the Vercel project", + 'vercel.project_name': { + brief: 'Name of the Vercel project', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "my-app", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'my-app', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.cache_id": { - brief: "Original request ID when request is served from cache", + 'vercel.proxy.cache_id': { + brief: 'Original request ID when request is served from cache', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "pdx1::v8g4b-1744143786684-93dafbc0f70d", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'pdx1::v8g4b-1744143786684-93dafbc0f70d', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.client_ip": { - brief: "Client IP address", + 'vercel.proxy.client_ip': { + brief: 'Client IP address', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "120.75.16.101", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: '120.75.16.101', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.host": { - brief: "Hostname of the request", + 'vercel.proxy.host': { + brief: 'Hostname of the request', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "test.vercel.app", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'test.vercel.app', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.lambda_region": { - brief: "Region where lambda function executed", + 'vercel.proxy.lambda_region': { + brief: 'Region where lambda function executed', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "sfo1", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'sfo1', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.method": { - brief: "HTTP method of the request", + 'vercel.proxy.method': { + brief: 'HTTP method of the request', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "GET", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'GET', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.path": { - brief: "Request path with query parameters", + 'vercel.proxy.path': { + brief: 'Request path with query parameters', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "/dynamic/some-value.json?route=some-value", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: '/dynamic/some-value.json?route=some-value', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.path_type": { - brief: "How the request was served based on its path and project configuration", + 'vercel.proxy.path_type': { + brief: 'How the request was served based on its path and project configuration', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "func", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'func', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.path_type_variant": { - brief: "Variant of the path type", + 'vercel.proxy.path_type_variant': { + brief: 'Variant of the path type', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "api", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'api', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.referer": { - brief: "Referer of the request", + 'vercel.proxy.referer': { + brief: 'Referer of the request', type: 'string', applyScrubbing: { - key: 'auto' + key: 'auto', }, isInOtel: false, visibility: 'public', - example: "*.vercel.app", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: '*.vercel.app', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.region": { - brief: "Region where the request is processed", + 'vercel.proxy.region': { + brief: 'Region where the request is processed', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "sfo1", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'sfo1', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.response_byte_size": { - brief: "Size of the response in bytes", + 'vercel.proxy.response_byte_size': { + brief: 'Size of the response in bytes', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1024, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.2.0", prs: [163] }, + { version: '0.4.0', prs: [228] }, + { version: '0.2.0', prs: [163] }, ], }, - "vercel.proxy.scheme": { - brief: "Protocol of the request", + 'vercel.proxy.scheme': { + brief: 'Protocol of the request', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "https", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'https', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.status_code": { - brief: "HTTP status code of the proxy request", + 'vercel.proxy.status_code': { + brief: 'HTTP status code of the proxy request', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 200, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.2.0", prs: [163] }, + { version: '0.4.0', prs: [228] }, + { version: '0.2.0', prs: [163] }, ], }, - "vercel.proxy.timestamp": { - brief: "Unix timestamp when the proxy request was made", + 'vercel.proxy.timestamp': { + brief: 'Unix timestamp when the proxy request was made', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 1573817250172, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.2.0", prs: [163] }, + { version: '0.4.0', prs: [228] }, + { version: '0.2.0', prs: [163] }, ], }, - "vercel.proxy.user_agent": { - brief: "User agent strings of the request", + 'vercel.proxy.user_agent': { + brief: 'User agent strings of the request', type: 'string[]', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: ["Mozilla/5.0..."], - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: ['Mozilla/5.0...'], + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.vercel_cache": { - brief: "Cache status sent to the browser", + 'vercel.proxy.vercel_cache': { + brief: 'Cache status sent to the browser', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "REVALIDATED", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'REVALIDATED', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.vercel_id": { - brief: "Vercel-specific identifier", + 'vercel.proxy.vercel_id': { + brief: 'Vercel-specific identifier', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "sfo1::abc123", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'sfo1::abc123', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.waf_action": { - brief: "Action taken by firewall rules", + 'vercel.proxy.waf_action': { + brief: 'Action taken by firewall rules', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "deny", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'deny', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.proxy.waf_rule_id": { - brief: "ID of the firewall rule that matched", + 'vercel.proxy.waf_rule_id': { + brief: 'ID of the firewall rule that matched', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "rule_gAHz8jtSB1Gy", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'rule_gAHz8jtSB1Gy', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.request_id": { - brief: "Identifier of the Vercel request", + 'vercel.request_id': { + brief: 'Identifier of the Vercel request', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "643af4e3-975a-4cc7-9e7a-1eda11539d90", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: '643af4e3-975a-4cc7-9e7a-1eda11539d90', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.source": { - brief: "Origin of the Vercel log (build, edge, lambda, static, external, or firewall)", + 'vercel.source': { + brief: 'Origin of the Vercel log (build, edge, lambda, static, external, or firewall)', type: 'string', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', - example: "build", - changelog: [ - { version: "0.2.0", prs: [163] }, - ], + example: 'build', + changelog: [{ version: '0.2.0', prs: [163] }], }, - "vercel.status_code": { - brief: "HTTP status code of the request (-1 means no response returned and the lambda crashed)", + 'vercel.status_code': { + brief: 'HTTP status code of the request (-1 means no response returned and the lambda crashed)', type: 'integer', applyScrubbing: { - key: 'manual' + key: 'manual', }, isInOtel: false, visibility: 'public', example: 200, changelog: [ - { version: "0.4.0", prs: [228] }, - { version: "0.2.0", prs: [163] }, + { version: '0.4.0', prs: [228] }, + { version: '0.2.0', prs: [163] }, ], }, }; @@ -26408,4 +26122,3 @@ export type Attributes = { [VERCEL_SOURCE]?: VERCEL_SOURCE_TYPE; [VERCEL_STATUS_CODE]?: VERCEL_STATUS_CODE_TYPE; } & Record; - From 9be35159e4f53750c49a28620b14c72f5c6b400e Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Thu, 9 Jul 2026 23:26:53 +0200 Subject: [PATCH 3/6] ref(attributes): Move `server_address` into general namespace Co-Authored-By: Claude Opus 4.6 --- .../sentry-conventions/src/attributes.ts | 2 +- .../{ => general}/server_address.json | 0 python/src/sentry_conventions/attributes.py | 70 +++++++++---------- 3 files changed, 36 insertions(+), 36 deletions(-) rename model/attributes/{ => general}/server_address.json (100%) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 6af34200..e4f166a7 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -13022,7 +13022,7 @@ export const SERVER_ADDRESS = 'server.address'; */ export type SERVER_ADDRESS_TYPE = string; -// Path: model/attributes/server_address.json +// Path: model/attributes/general/server_address.json /** * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. `server_address` diff --git a/model/attributes/server_address.json b/model/attributes/general/server_address.json similarity index 100% rename from model/attributes/server_address.json rename to model/attributes/general/server_address.json diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index c261edcd..7eed75cb 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -198,6 +198,7 @@ class _AttributeNamesMeta(type): "GEN_AI_USAGE_INPUT_TOKENS_CACHED", "GEN_AI_USAGE_OUTPUT_TOKENS_REASONING", "GEN_AI_USAGE_PROMPT_TOKENS", + "_SERVER_ADDRESS", "HARDWARECONCURRENCY", "HTTP_CLIENT_IP", "HTTP_FLAVOR", @@ -273,7 +274,6 @@ class _AttributeNamesMeta(type): "SENTRY_USER_ID", "SENTRY_USER_IP", "SENTRY_USER_USERNAME", - "_SERVER_ADDRESS", "TIME_TO_FULL_DISPLAY", "TIME_TO_INITIAL_DISPLAY", "TRANSACTION", @@ -4283,6 +4283,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 20 """ + # Path: model/attributes/general/server_address.json + _SERVER_ADDRESS: Literal["server_address"] = "server_address" + """Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Aliases: server.address + DEPRECATED: Use server.address instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. + Example: "example.com" + """ + # Path: model/attributes/graphql/graphql__document.json GRAPHQL_DOCUMENT: Literal["graphql.document"] = "graphql.document" """The GraphQL document being executed. @@ -7595,19 +7608,6 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 1337 """ - # Path: model/attributes/server_address.json - _SERVER_ADDRESS: Literal["server_address"] = "server_address" - """Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. - - Type: str - Apply Scrubbing: manual - Defined in OTEL: No - Visibility: public - Aliases: server.address - DEPRECATED: Use server.address instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. - Example: "example.com" - """ - # Path: model/attributes/service/service__name.json SERVICE_NAME: Literal["service.name"] = "service.name" """Logical name of the service. @@ -13446,6 +13446,26 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "This is the sum of gen_ai.usage.input_tokens and gen_ai.usage.output_tokens. Do not sum this with either of them — they are already included.", ], ), + "server_address": AttributeMetadata( + brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="example.com", + deprecation=DeprecationInfo( + replacement="server.address", + reason="This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["server.address"], + changelog=[ + ChangelogEntry( + version="next", + description="Added server_address attribute, deprecated in favor of server.address", + ), + ], + ), "graphql.document": AttributeMetadata( brief="The GraphQL document being executed.", type=AttributeType.STRING, @@ -17141,26 +17161,6 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), - "server_address": AttributeMetadata( - brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", - type=AttributeType.STRING, - apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), - is_in_otel=False, - visibility=Visibility.PUBLIC, - example="example.com", - deprecation=DeprecationInfo( - replacement="server.address", - reason="This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.", - status=DeprecationStatus.BACKFILL, - ), - aliases=["server.address"], - changelog=[ - ChangelogEntry( - version="next", - description="Added server_address attribute, deprecated in favor of server.address", - ), - ], - ), "service.name": AttributeMetadata( brief="Logical name of the service.", type=AttributeType.STRING, @@ -18598,6 +18598,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.prompt_tokens": int, "gen_ai.usage.reasoning.output_tokens": int, "gen_ai.usage.total_tokens": int, + "server_address": str, "graphql.document": str, "graphql.operation.name": str, "graphql.operation.type": str, @@ -18869,7 +18870,6 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.user.username": str, "server.address": str, "server.port": int, - "server_address": str, "service.name": str, "service.version": str, "session.id": str, From f4ab73320b29be77135a100454cb8340a0cad3e4 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Thu, 9 Jul 2026 23:29:24 +0200 Subject: [PATCH 4/6] Revert "ref(attributes): Move `server_address` into general namespace" This reverts commit 9be35159e4f53750c49a28620b14c72f5c6b400e. --- .../sentry-conventions/src/attributes.ts | 2 +- .../{general => }/server_address.json | 0 python/src/sentry_conventions/attributes.py | 70 +++++++++---------- 3 files changed, 36 insertions(+), 36 deletions(-) rename model/attributes/{general => }/server_address.json (100%) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index e4f166a7..6af34200 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -13022,7 +13022,7 @@ export const SERVER_ADDRESS = 'server.address'; */ export type SERVER_ADDRESS_TYPE = string; -// Path: model/attributes/general/server_address.json +// Path: model/attributes/server_address.json /** * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. `server_address` diff --git a/model/attributes/general/server_address.json b/model/attributes/server_address.json similarity index 100% rename from model/attributes/general/server_address.json rename to model/attributes/server_address.json diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 7eed75cb..c261edcd 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -198,7 +198,6 @@ class _AttributeNamesMeta(type): "GEN_AI_USAGE_INPUT_TOKENS_CACHED", "GEN_AI_USAGE_OUTPUT_TOKENS_REASONING", "GEN_AI_USAGE_PROMPT_TOKENS", - "_SERVER_ADDRESS", "HARDWARECONCURRENCY", "HTTP_CLIENT_IP", "HTTP_FLAVOR", @@ -274,6 +273,7 @@ class _AttributeNamesMeta(type): "SENTRY_USER_ID", "SENTRY_USER_IP", "SENTRY_USER_USERNAME", + "_SERVER_ADDRESS", "TIME_TO_FULL_DISPLAY", "TIME_TO_INITIAL_DISPLAY", "TRANSACTION", @@ -4283,19 +4283,6 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 20 """ - # Path: model/attributes/general/server_address.json - _SERVER_ADDRESS: Literal["server_address"] = "server_address" - """Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. - - Type: str - Apply Scrubbing: manual - Defined in OTEL: No - Visibility: public - Aliases: server.address - DEPRECATED: Use server.address instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. - Example: "example.com" - """ - # Path: model/attributes/graphql/graphql__document.json GRAPHQL_DOCUMENT: Literal["graphql.document"] = "graphql.document" """The GraphQL document being executed. @@ -7608,6 +7595,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 1337 """ + # Path: model/attributes/server_address.json + _SERVER_ADDRESS: Literal["server_address"] = "server_address" + """Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Aliases: server.address + DEPRECATED: Use server.address instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. + Example: "example.com" + """ + # Path: model/attributes/service/service__name.json SERVICE_NAME: Literal["service.name"] = "service.name" """Logical name of the service. @@ -13446,26 +13446,6 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "This is the sum of gen_ai.usage.input_tokens and gen_ai.usage.output_tokens. Do not sum this with either of them — they are already included.", ], ), - "server_address": AttributeMetadata( - brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", - type=AttributeType.STRING, - apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), - is_in_otel=False, - visibility=Visibility.PUBLIC, - example="example.com", - deprecation=DeprecationInfo( - replacement="server.address", - reason="This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.", - status=DeprecationStatus.BACKFILL, - ), - aliases=["server.address"], - changelog=[ - ChangelogEntry( - version="next", - description="Added server_address attribute, deprecated in favor of server.address", - ), - ], - ), "graphql.document": AttributeMetadata( brief="The GraphQL document being executed.", type=AttributeType.STRING, @@ -17161,6 +17141,26 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "server_address": AttributeMetadata( + brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="example.com", + deprecation=DeprecationInfo( + replacement="server.address", + reason="This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.", + status=DeprecationStatus.BACKFILL, + ), + aliases=["server.address"], + changelog=[ + ChangelogEntry( + version="next", + description="Added server_address attribute, deprecated in favor of server.address", + ), + ], + ), "service.name": AttributeMetadata( brief="Logical name of the service.", type=AttributeType.STRING, @@ -18598,7 +18598,6 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.usage.prompt_tokens": int, "gen_ai.usage.reasoning.output_tokens": int, "gen_ai.usage.total_tokens": int, - "server_address": str, "graphql.document": str, "graphql.operation.name": str, "graphql.operation.type": str, @@ -18870,6 +18869,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.user.username": str, "server.address": str, "server.port": int, + "server_address": str, "service.name": str, "service.version": str, "session.id": str, From d43530dc69f3e523d8ad01f9f57f446cd374a804 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Thu, 9 Jul 2026 23:54:30 +0200 Subject: [PATCH 5/6] fix(attributes): Make `server_address` alias group symmetric Add `server_address` to the alias lists of `http.server_name`, `net.host.name`, and `http.host`, and add those three to the alias list of `server_address`. This ensures every member of the alias group references every other member, matching the pattern used by other deprecated attributes like `faas.execution`. Co-Authored-By: Claude Opus 4.6 --- javascript/sentry-conventions/src/attributes.ts | 16 ++++++++-------- model/attributes/http/http__host.json | 2 +- model/attributes/http/http__server_name.json | 2 +- model/attributes/net/net__host__name.json | 2 +- model/attributes/server_address.json | 2 +- python/src/sentry_conventions/attributes.py | 15 ++++++++------- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 6af34200..657b15d9 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -7280,7 +7280,7 @@ export type HTTP_FRAGMENT_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link CLIENT_ADDRESS} `client.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name` + * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link CLIENT_ADDRESS} `client.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link _SERVER_ADDRESS} `server_address` * * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead - Deprecated, use one of `server.address` or `client.address`, depending on the usage * @example "example.com" @@ -7967,7 +7967,7 @@ export type HTTP_SCHEME_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host` + * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host`, {@link _SERVER_ADDRESS} `server_address` * * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead * @example "example.com" @@ -10069,7 +10069,7 @@ export type NET_HOST_IP_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link HTTP_HOST} `http.host` + * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link HTTP_HOST} `http.host`, {@link _SERVER_ADDRESS} `server_address` * * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead * @example "example.com" @@ -13034,7 +13034,7 @@ export type SERVER_ADDRESS_TYPE = string; * Attribute defined in OTEL: No * Visibility: public * - * Aliases: {@link SERVER_ADDRESS} `server.address` + * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host` * * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. * @example "example.com" @@ -20939,7 +20939,7 @@ export const ATTRIBUTE_METADATA: Record = { 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'], + aliases: ['server.address', 'client.address', 'http.server_name', 'net.host.name', 'server_address'], changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, 'http.method': { @@ -21344,7 +21344,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'server.address', }, - aliases: ['server.address', 'net.host.name', 'http.host'], + aliases: ['server.address', 'net.host.name', 'http.host', 'server_address'], changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, 'http.server.request.time_in_queue': { @@ -22624,7 +22624,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'server.address', }, - aliases: ['server.address', 'http.server_name', 'http.host'], + aliases: ['server.address', 'http.server_name', 'http.host', 'server_address'], changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, 'net.host.port': { @@ -24364,7 +24364,7 @@ export const ATTRIBUTE_METADATA: Record = { replacement: 'server.address', reason: 'This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.', }, - aliases: ['server.address'], + aliases: ['server.address', 'http.server_name', 'net.host.name', 'http.host'], changelog: [ { version: 'next', description: 'Added server_address attribute, deprecated in favor of server.address' }, ], diff --git a/model/attributes/http/http__host.json b/model/attributes/http/http__host.json index 605245eb..a23dd2e5 100644 --- a/model/attributes/http/http__host.json +++ b/model/attributes/http/http__host.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "example.com", - "alias": ["server.address", "client.address", "http.server_name", "net.host.name"], + "alias": ["server.address", "client.address", "http.server_name", "net.host.name", "server_address"], "deprecation": { "_status": null, "replacement": "server.address", diff --git a/model/attributes/http/http__server_name.json b/model/attributes/http/http__server_name.json index 378b1a78..1cbadd32 100644 --- a/model/attributes/http/http__server_name.json +++ b/model/attributes/http/http__server_name.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "example.com", - "alias": ["server.address", "net.host.name", "http.host"], + "alias": ["server.address", "net.host.name", "http.host", "server_address"], "deprecation": { "_status": null, "replacement": "server.address" diff --git a/model/attributes/net/net__host__name.json b/model/attributes/net/net__host__name.json index 995e5fff..48889445 100644 --- a/model/attributes/net/net__host__name.json +++ b/model/attributes/net/net__host__name.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "example.com", - "alias": ["server.address", "http.server_name", "http.host"], + "alias": ["server.address", "http.server_name", "http.host", "server_address"], "deprecation": { "_status": null, "replacement": "server.address" diff --git a/model/attributes/server_address.json b/model/attributes/server_address.json index 85e95ad7..672e905a 100644 --- a/model/attributes/server_address.json +++ b/model/attributes/server_address.json @@ -7,7 +7,7 @@ }, "is_in_otel": false, "example": "example.com", - "alias": ["server.address"], + "alias": ["server.address", "http.server_name", "net.host.name", "http.host"], "deprecation": { "_status": "backfill", "replacement": "server.address", diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index c261edcd..78f79889 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -4387,7 +4387,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Aliases: server.address, client.address, http.server_name, net.host.name + Aliases: server.address, client.address, http.server_name, net.host.name, server_address DEPRECATED: Use server.address instead - Deprecated, use one of `server.address` or `client.address`, depending on the usage Example: "example.com" """ @@ -4806,7 +4806,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Aliases: server.address, net.host.name, http.host + Aliases: server.address, net.host.name, http.host, server_address DEPRECATED: Use server.address instead Example: "example.com" """ @@ -5823,7 +5823,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Aliases: server.address, http.server_name, http.host + Aliases: server.address, http.server_name, http.host, server_address DEPRECATED: Use server.address instead Example: "example.com" """ @@ -7603,7 +7603,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: No Visibility: public - Aliases: server.address + Aliases: server.address, http.server_name, net.host.name, http.host DEPRECATED: Use server.address instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. Example: "example.com" """ @@ -13575,6 +13575,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.address", "http.server_name", "net.host.name", + "server_address", ], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), @@ -14011,7 +14012,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): visibility=Visibility.PUBLIC, example="example.com", deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "net.host.name", "http.host"], + aliases=["server.address", "net.host.name", "http.host", "server_address"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -15207,7 +15208,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): visibility=Visibility.PUBLIC, example="example.com", deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "http.server_name", "http.host"], + aliases=["server.address", "http.server_name", "http.host", "server_address"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -17153,7 +17154,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): reason="This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.", status=DeprecationStatus.BACKFILL, ), - aliases=["server.address"], + aliases=["server.address", "http.server_name", "net.host.name", "http.host"], changelog=[ ChangelogEntry( version="next", From 237ab20e18e0e1c9219c7f14391604ac16d00597 Mon Sep 17 00:00:00 2001 From: Michi Hoffmann Date: Fri, 10 Jul 2026 14:10:23 +0200 Subject: [PATCH 6/6] fix(attributes): Replace `server_address` with `server_name` (deprecated) The deprecated attribute should be server_name, not server_address. Update all alias references across the server.address alias group. Co-Authored-By: Claude Opus 4.6 --- .../sentry-conventions/src/attributes.ts | 40 +++++++++---------- model/attributes/http/http__host.json | 2 +- model/attributes/http/http__server_name.json | 2 +- model/attributes/net/net__host__name.json | 2 +- model/attributes/server/server__address.json | 2 +- .../{server_address.json => server_name.json} | 4 +- python/src/sentry_conventions/attributes.py | 28 ++++++------- 7 files changed, 39 insertions(+), 41 deletions(-) rename model/attributes/{server_address.json => server_name.json} (84%) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 657b15d9..9beac6c7 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -7280,7 +7280,7 @@ export type HTTP_FRAGMENT_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link CLIENT_ADDRESS} `client.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link _SERVER_ADDRESS} `server_address` + * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link CLIENT_ADDRESS} `client.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link SERVER_NAME} `server_name` * * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead - Deprecated, use one of `server.address` or `client.address`, depending on the usage * @example "example.com" @@ -7967,7 +7967,7 @@ export type HTTP_SCHEME_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host`, {@link _SERVER_ADDRESS} `server_address` + * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host`, {@link SERVER_NAME} `server_name` * * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead * @example "example.com" @@ -10069,7 +10069,7 @@ export type NET_HOST_IP_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link HTTP_HOST} `http.host`, {@link _SERVER_ADDRESS} `server_address` + * Aliases: {@link SERVER_ADDRESS} `server.address`, {@link HTTP_SERVER_NAME} `http.server_name`, {@link HTTP_HOST} `http.host`, {@link SERVER_NAME} `server_name` * * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead * @example "example.com" @@ -13011,7 +13011,7 @@ export type SENTRY_USER_USERNAME_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * Aliases: {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host`, {@link _SERVER_ADDRESS} `server_address` + * Aliases: {@link HTTP_SERVER_NAME} `http.server_name`, {@link NET_HOST_NAME} `net.host.name`, {@link HTTP_HOST} `http.host`, {@link SERVER_NAME} `server_name` * * @example "example.com" */ @@ -13022,12 +13022,12 @@ export const SERVER_ADDRESS = 'server.address'; */ export type SERVER_ADDRESS_TYPE = string; -// Path: model/attributes/server_address.json +// Path: model/attributes/server_name.json /** - * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. `server_address` + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. `server_name` * - * Attribute Value Type: `string` {@link _SERVER_ADDRESS_TYPE} + * Attribute Value Type: `string` {@link SERVER_NAME_TYPE} * * Apply Scrubbing: manual * @@ -13039,12 +13039,12 @@ export type SERVER_ADDRESS_TYPE = string; * @deprecated Use {@link SERVER_ADDRESS} (server.address) instead - This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement. * @example "example.com" */ -export const _SERVER_ADDRESS = 'server_address'; +export const SERVER_NAME = 'server_name'; /** - * Type for {@link _SERVER_ADDRESS} server_address + * Type for {@link SERVER_NAME} server_name */ -export type _SERVER_ADDRESS_TYPE = string; +export type SERVER_NAME_TYPE = string; // Path: model/attributes/server/server__port.json @@ -15618,7 +15618,7 @@ export const ATTRIBUTE_TYPE: Record = { 'sentry.user.ip': 'string', 'sentry.user.username': 'string', 'server.address': 'string', - server_address: 'string', + server_name: 'string', 'server.port': 'integer', 'service.name': 'string', 'service.version': 'string', @@ -16301,7 +16301,7 @@ export type AttributeName = | typeof SENTRY_USER_IP | typeof SENTRY_USER_USERNAME | typeof SERVER_ADDRESS - | typeof _SERVER_ADDRESS + | typeof SERVER_NAME | typeof SERVER_PORT | typeof SERVICE_NAME | typeof SERVICE_VERSION @@ -20939,7 +20939,7 @@ export const ATTRIBUTE_METADATA: Record = { 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', 'server_address'], + aliases: ['server.address', 'client.address', 'http.server_name', 'net.host.name', 'server_name'], changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, 'http.method': { @@ -21344,7 +21344,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'server.address', }, - aliases: ['server.address', 'net.host.name', 'http.host', 'server_address'], + aliases: ['server.address', 'net.host.name', 'http.host', 'server_name'], changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, 'http.server.request.time_in_queue': { @@ -22624,7 +22624,7 @@ export const ATTRIBUTE_METADATA: Record = { deprecation: { replacement: 'server.address', }, - aliases: ['server.address', 'http.server_name', 'http.host', 'server_address'], + aliases: ['server.address', 'http.server_name', 'http.host', 'server_name'], changelog: [{ version: '0.1.0', prs: [61, 108, 127] }, { version: '0.0.0' }], }, 'net.host.port': { @@ -24347,10 +24347,10 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, visibility: 'public', example: 'example.com', - aliases: ['http.server_name', 'net.host.name', 'http.host', 'server_address'], + aliases: ['http.server_name', 'net.host.name', 'http.host', 'server_name'], changelog: [{ version: '0.1.0', prs: [108, 127] }, { version: '0.0.0' }], }, - server_address: { + server_name: { brief: 'Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.', type: 'string', @@ -24365,9 +24365,7 @@ export const ATTRIBUTE_METADATA: Record = { reason: 'This attribute is being deprecated in favor of server.address, which is the OTel-aligned replacement.', }, aliases: ['server.address', 'http.server_name', 'net.host.name', 'http.host'], - changelog: [ - { version: 'next', description: 'Added server_address attribute, deprecated in favor of server.address' }, - ], + changelog: [{ version: 'next', description: 'Added server_name attribute, deprecated in favor of server.address' }], }, 'server.port': { brief: 'Server port number.', @@ -26031,7 +26029,7 @@ export type Attributes = { [SENTRY_USER_IP]?: SENTRY_USER_IP_TYPE; [SENTRY_USER_USERNAME]?: SENTRY_USER_USERNAME_TYPE; [SERVER_ADDRESS]?: SERVER_ADDRESS_TYPE; - [_SERVER_ADDRESS]?: _SERVER_ADDRESS_TYPE; + [SERVER_NAME]?: SERVER_NAME_TYPE; [SERVER_PORT]?: SERVER_PORT_TYPE; [SERVICE_NAME]?: SERVICE_NAME_TYPE; [SERVICE_VERSION]?: SERVICE_VERSION_TYPE; diff --git a/model/attributes/http/http__host.json b/model/attributes/http/http__host.json index a23dd2e5..01b5ef4f 100644 --- a/model/attributes/http/http__host.json +++ b/model/attributes/http/http__host.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "example.com", - "alias": ["server.address", "client.address", "http.server_name", "net.host.name", "server_address"], + "alias": ["server.address", "client.address", "http.server_name", "net.host.name", "server_name"], "deprecation": { "_status": null, "replacement": "server.address", diff --git a/model/attributes/http/http__server_name.json b/model/attributes/http/http__server_name.json index 1cbadd32..34ee4f25 100644 --- a/model/attributes/http/http__server_name.json +++ b/model/attributes/http/http__server_name.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "example.com", - "alias": ["server.address", "net.host.name", "http.host", "server_address"], + "alias": ["server.address", "net.host.name", "http.host", "server_name"], "deprecation": { "_status": null, "replacement": "server.address" diff --git a/model/attributes/net/net__host__name.json b/model/attributes/net/net__host__name.json index 48889445..9b0d462e 100644 --- a/model/attributes/net/net__host__name.json +++ b/model/attributes/net/net__host__name.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "example.com", - "alias": ["server.address", "http.server_name", "http.host", "server_address"], + "alias": ["server.address", "http.server_name", "http.host", "server_name"], "deprecation": { "_status": null, "replacement": "server.address" diff --git a/model/attributes/server/server__address.json b/model/attributes/server/server__address.json index 7ffd0180..a6f7ccad 100644 --- a/model/attributes/server/server__address.json +++ b/model/attributes/server/server__address.json @@ -7,7 +7,7 @@ }, "is_in_otel": true, "example": "example.com", - "alias": ["http.server_name", "net.host.name", "http.host", "server_address"], + "alias": ["http.server_name", "net.host.name", "http.host", "server_name"], "visibility": "public", "changelog": [ { diff --git a/model/attributes/server_address.json b/model/attributes/server_name.json similarity index 84% rename from model/attributes/server_address.json rename to model/attributes/server_name.json index 672e905a..29264c58 100644 --- a/model/attributes/server_address.json +++ b/model/attributes/server_name.json @@ -1,5 +1,5 @@ { - "key": "server_address", + "key": "server_name", "brief": "Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", "type": "string", "apply_scrubbing": { @@ -18,7 +18,7 @@ { "version": "next", "prs": [], - "description": "Added server_address attribute, deprecated in favor of server.address" + "description": "Added server_name attribute, deprecated in favor of server.address" } ] } diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 78f79889..04379661 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -273,7 +273,7 @@ class _AttributeNamesMeta(type): "SENTRY_USER_ID", "SENTRY_USER_IP", "SENTRY_USER_USERNAME", - "_SERVER_ADDRESS", + "SERVER_NAME", "TIME_TO_FULL_DISPLAY", "TIME_TO_INITIAL_DISPLAY", "TRANSACTION", @@ -4387,7 +4387,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Aliases: server.address, client.address, http.server_name, net.host.name, server_address + Aliases: server.address, client.address, http.server_name, net.host.name, server_name DEPRECATED: Use server.address instead - Deprecated, use one of `server.address` or `client.address`, depending on the usage Example: "example.com" """ @@ -4806,7 +4806,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Aliases: server.address, net.host.name, http.host, server_address + Aliases: server.address, net.host.name, http.host, server_name DEPRECATED: Use server.address instead Example: "example.com" """ @@ -5823,7 +5823,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Aliases: server.address, http.server_name, http.host, server_address + Aliases: server.address, http.server_name, http.host, server_name DEPRECATED: Use server.address instead Example: "example.com" """ @@ -7579,7 +7579,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Aliases: http.server_name, net.host.name, http.host, server_address + Aliases: http.server_name, net.host.name, http.host, server_name Example: "example.com" """ @@ -7595,8 +7595,8 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 1337 """ - # Path: model/attributes/server_address.json - _SERVER_ADDRESS: Literal["server_address"] = "server_address" + # Path: model/attributes/server_name.json + SERVER_NAME: Literal["server_name"] = "server_name" """Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. Type: str @@ -13575,7 +13575,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.address", "http.server_name", "net.host.name", - "server_address", + "server_name", ], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), @@ -14012,7 +14012,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): visibility=Visibility.PUBLIC, example="example.com", deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "net.host.name", "http.host", "server_address"], + aliases=["server.address", "net.host.name", "http.host", "server_name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -15208,7 +15208,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): visibility=Visibility.PUBLIC, example="example.com", deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "http.server_name", "http.host", "server_address"], + aliases=["server.address", "http.server_name", "http.host", "server_name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[61, 108, 127]), ChangelogEntry(version="0.0.0"), @@ -17123,7 +17123,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, visibility=Visibility.PUBLIC, example="example.com", - aliases=["http.server_name", "net.host.name", "http.host", "server_address"], + aliases=["http.server_name", "net.host.name", "http.host", "server_name"], changelog=[ ChangelogEntry(version="0.1.0", prs=[108, 127]), ChangelogEntry(version="0.0.0"), @@ -17142,7 +17142,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), - "server_address": AttributeMetadata( + "server_name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), @@ -17158,7 +17158,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): changelog=[ ChangelogEntry( version="next", - description="Added server_address attribute, deprecated in favor of server.address", + description="Added server_name attribute, deprecated in favor of server.address", ), ], ), @@ -18870,7 +18870,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.user.username": str, "server.address": str, "server.port": int, - "server_address": str, + "server_name": str, "service.name": str, "service.version": str, "session.id": str,