diff --git a/php/README.md b/php/README.md new file mode 100644 index 0000000..c22182b --- /dev/null +++ b/php/README.md @@ -0,0 +1,51 @@ +

+ + + + + Sentry + + +

+ +

Sentry Conventions

+ +

The Sentry Conventions are a set of semantic conventions for naming and describing events in Sentry.

+ +[![Packagist Version](https://img.shields.io/packagist/v/sentry/conventions.svg)](https://packagist.org/packages/sentry/conventions) +[![Discord Chat](https://img.shields.io/discord/621778831602221064.svg)](https://discord.gg/sentry) + +![GitHub Actions](https://github.com/getsentry/sentry-conventions/actions/workflows/build.yml/badge.svg) +[![Codecov](https://codecov.io/gh/getsentry/sentry-conventions/graph/badge.svg?token=fQNlGihNOf)](https://codecov.io/gh/getsentry/sentry-conventions) + +## Installation + +```bash +composer require sentry/conventions +``` + +## Usage + +The package exports: + +- `Sentry\Conventions\Attributes`: contains constants for all attribute names and their types, as defined in the Sentry semantic conventions +- `Sentry\Conventions\Op`: contains constants for span operations used in Sentry + +### Example + +```php + 'GET', + Attributes::URL_FULL => 'https://example.com/api/users', +]; + +// Use operation constants +$spanOp = Op::HTTP_CLIENT; +``` + diff --git a/php/composer.json b/php/composer.json new file mode 100644 index 0000000..94d4159 --- /dev/null +++ b/php/composer.json @@ -0,0 +1,34 @@ +{ + "name": "sentry/conventions", + "description": "Sentry Semantic Conventions", + "type": "library", + "license": "MIT", + "require": { + "php": ">=7.2" + }, + "autoload": { + "psr-4": { + "Sentry\\Conventions\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Sentry\\Conventions\\Tests\\": "tests/" + } + }, + "require-dev": { + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0" + }, + "authors": [ + { + "name": "Sentry", + "homepage": "https://sentry.io" + } + ], + "homepage": "https://github.com/getsentry/sentry-conventions", + "support": { + "issues": "https://github.com/getsentry/sentry-conventions/issues", + "source": "https://github.com/getsentry/sentry-conventions" + } +} + diff --git a/php/src/.gitkeep b/php/src/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/php/src/Attributes.php b/php/src/Attributes.php new file mode 100644 index 0000000..f98ec4a --- /dev/null +++ b/php/src/Attributes.php @@ -0,0 +1,5358 @@ + + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example ["Citation 1", "Citation 2"] + */ + public const AI_CITATIONS = 'ai.citations'; + + /** + * The number of tokens used to respond to the message. + * + * Attribute: `ai.completion_tokens.used` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.usage.output_tokens, gen_ai.usage.completion_tokens + * + * @deprecated Use gen_ai.usage.output_tokens instead + * + * @example 10 + */ + public const AI_COMPLETION_TOKENS_USED = 'ai.completion_tokens.used'; + + /** + * Documents or content chunks used as context for the AI model. + * + * Attribute: `ai.documents` + * + * Type: array + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example ["document1.txt", "document2.pdf"] + */ + public const AI_DOCUMENTS = 'ai.documents'; + + /** + * The reason why the model stopped generating. + * + * Attribute: `ai.finish_reason` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: gen_ai.response.finish_reasons + * + * @deprecated Use gen_ai.response.finish_reason instead + * + * @example "COMPLETE" + */ + public const AI_FINISH_REASON = 'ai.finish_reason'; + + /** + * 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. + * + * Attribute: `ai.frequency_penalty` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.request.frequency_penalty + * + * @deprecated Use gen_ai.request.frequency_penalty instead + * + * @example 0.5 + */ + public const AI_FREQUENCY_PENALTY = 'ai.frequency_penalty'; + + /** + * For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls + * + * Attribute: `ai.function_call` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: No + * + * Aliases: gen_ai.tool.name + * + * @deprecated Use gen_ai.tool.name instead + * + * @example "function_name" + */ + public const AI_FUNCTION_CALL = 'ai.function_call'; + + /** + * Unique identifier for the completion. + * + * Attribute: `ai.generation_id` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: gen_ai.response.id + * + * @deprecated Use gen_ai.response.id instead + * + * @example "gen_123abc" + */ + public const AI_GENERATION_ID = 'ai.generation_id'; + + /** + * The input messages sent to the model + * + * Attribute: `ai.input_messages` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: gen_ai.request.messages + * + * @deprecated Use gen_ai.request.messages instead + * + * @example "[{\"role\": \"user\", \"message\": \"hello\"}]" + */ + public const AI_INPUT_MESSAGES = 'ai.input_messages'; + + /** + * Boolean indicating if the model needs to perform a search. + * + * Attribute: `ai.is_search_required` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example false + */ + public const AI_IS_SEARCH_REQUIRED = 'ai.is_search_required'; + + /** + * Extra metadata passed to an AI pipeline step. + * + * Attribute: `ai.metadata` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "{\"user_id\": 123, \"session_id\": \"abc123\"}" + */ + public const AI_METADATA = 'ai.metadata'; + + /** + * The provider of the model. + * + * Attribute: `ai.model.provider` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: gen_ai.system + * + * @deprecated Use gen_ai.system instead + * + * @example "openai" + */ + public const AI_MODEL_PROVIDER = 'ai.model.provider'; + + /** + * The vendor-specific ID of the model used. + * + * Attribute: `ai.model_id` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: gen_ai.response.model + * + * @deprecated Use gen_ai.response.model instead + * + * @example "gpt-4" + */ + public const AI_MODEL_ID = 'ai.model_id'; + + /** + * The name of the AI pipeline. + * + * Attribute: `ai.pipeline.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: gen_ai.pipeline.name + * + * @deprecated Use gen_ai.pipeline.name instead + * + * @example "Autofix Pipeline" + */ + public const AI_PIPELINE_NAME = 'ai.pipeline.name'; + + /** + * 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. + * + * Attribute: `ai.preamble` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example "You are now a clown." + */ + public const AI_PREAMBLE = 'ai.preamble'; + + /** + * 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. + * + * Attribute: `ai.presence_penalty` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.request.presence_penalty + * + * @deprecated Use gen_ai.request.presence_penalty instead + * + * @example 0.5 + */ + public const AI_PRESENCE_PENALTY = 'ai.presence_penalty'; + + /** + * The number of tokens used to process just the prompt. + * + * Attribute: `ai.prompt_tokens.used` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.usage.prompt_tokens, gen_ai.usage.input_tokens + * + * @deprecated Use gen_ai.usage.input_tokens instead + * + * @example 20 + */ + public const AI_PROMPT_TOKENS_USED = 'ai.prompt_tokens.used'; + + /** + * When enabled, the user’s prompt will be sent to the model without any pre-processing. + * + * Attribute: `ai.raw_prompting` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example true + */ + public const AI_RAW_PROMPTING = 'ai.raw_prompting'; + + /** + * For an AI model call, the format of the response + * + * Attribute: `ai.response_format` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "json_object" + */ + public const AI_RESPONSE_FORMAT = 'ai.response_format'; + + /** + * The response messages sent back by the AI model. + * + * Attribute: `ai.responses` + * + * Type: array + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @deprecated Use gen_ai.response.text instead + * + * @example ["hello", "world"] + */ + public const AI_RESPONSES = 'ai.responses'; + + /** + * Queries used to search for relevant context or documents. + * + * Attribute: `ai.search_queries` + * + * Type: array + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example ["climate change effects", "renewable energy"] + */ + public const AI_SEARCH_QUERIES = 'ai.search_queries'; + + /** + * Results returned from search queries for context. + * + * Attribute: `ai.search_results` + * + * Type: array + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example ["search_result_1, search_result_2"] + */ + public const AI_SEARCH_RESULTS = 'ai.search_results'; + + /** + * The seed, ideally models given the same seed and same other parameters will produce the exact same output. + * + * Attribute: `ai.seed` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: gen_ai.request.seed + * + * @deprecated Use gen_ai.request.seed instead + * + * @example "1234567890" + */ + public const AI_SEED = 'ai.seed'; + + /** + * Whether the request was streamed back. + * + * Attribute: `ai.streaming` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.response.streaming + * + * @deprecated Use gen_ai.response.streaming instead + * + * @example true + */ + public const AI_STREAMING = 'ai.streaming'; + + /** + * Tags that describe an AI pipeline step. + * + * Attribute: `ai.tags` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "{\"executed_function\": \"add_integers\"}" + */ + public const AI_TAGS = 'ai.tags'; + + /** + * For an AI model call, the temperature parameter. Temperature essentially means how random the output will be. + * + * Attribute: `ai.temperature` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.request.temperature + * + * @deprecated Use gen_ai.request.temperature instead + * + * @example 0.1 + */ + public const AI_TEMPERATURE = 'ai.temperature'; + + /** + * Raw text inputs provided to the model. + * + * Attribute: `ai.texts` + * + * Type: array + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example ["Hello, how are you?", "What is the capital of France?"] + */ + public const AI_TEXTS = 'ai.texts'; + + /** + * For an AI model call, the tool calls that were made. + * + * Attribute: `ai.tool_calls` + * + * Type: array + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @deprecated Use gen_ai.response.tool_calls instead + * + * @example ["tool_call_1", "tool_call_2"] + */ + public const AI_TOOL_CALLS = 'ai.tool_calls'; + + /** + * For an AI model call, the functions that are available + * + * Attribute: `ai.tools` + * + * Type: array + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @deprecated Use gen_ai.request.available_tools instead + * + * @example ["function_1", "function_2"] + */ + public const AI_TOOLS = 'ai.tools'; + + /** + * 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). + * + * Attribute: `ai.top_k` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.request.top_k + * + * @deprecated Use gen_ai.request.top_k instead + * + * @example 35 + */ + public const AI_TOP_K = 'ai.top_k'; + + /** + * 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). + * + * Attribute: `ai.top_p` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.request.top_p + * + * @deprecated Use gen_ai.request.top_p instead + * + * @example 0.7 + */ + public const AI_TOP_P = 'ai.top_p'; + + /** + * The total cost for the tokens used. + * + * Attribute: `ai.total_cost` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 12.34 + */ + public const AI_TOTAL_COST = 'ai.total_cost'; + + /** + * The total number of tokens used to process the prompt. + * + * Attribute: `ai.total_tokens.used` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: gen_ai.usage.total_tokens + * + * @deprecated Use gen_ai.usage.total_tokens instead + * + * @example 30 + */ + public const AI_TOTAL_TOKENS_USED = 'ai.total_tokens.used'; + + /** + * Warning messages generated during model execution. + * + * Attribute: `ai.warnings` + * + * Type: array + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example ["Token limit exceeded"] + */ + public const AI_WARNINGS = 'ai.warnings'; + + /** + * Mobile app start variant. Either cold or warm. + * + * Attribute: `app_start_type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "cold" + */ + public const APP_START_TYPE = 'app_start_type'; + + /** + * Whether the main thread was blocked by the span. + * + * Attribute: `blocked_main_thread` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example true + */ + public const BLOCKED_MAIN_THREAD = 'blocked_main_thread'; + + /** + * The name of the browser. + * + * Attribute: `browser.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: sentry.browser.name + * + * @example "Chrome" + */ + public const BROWSER_NAME = 'browser.name'; + + /** + * A browser report sent via reporting API.. + * + * Attribute: `browser.report.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "network-error" + */ + public const BROWSER_REPORT_TYPE = 'browser.report.type'; + + /** + * How a script was called in the browser. + * + * Attribute: `browser.script.invoker` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "Window.requestAnimationFrame" + */ + public const BROWSER_SCRIPT_INVOKER = 'browser.script.invoker'; + + /** + * Browser script entry point type. + * + * Attribute: `browser.script.invoker_type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "event-listener" + */ + public const BROWSER_SCRIPT_INVOKER_TYPE = 'browser.script.invoker_type'; + + /** + * A number representing the script character position of the script. + * + * Attribute: `browser.script.source_char_position` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 678 + */ + public const BROWSER_SCRIPT_SOURCE_CHAR_POSITION = 'browser.script.source_char_position'; + + /** + * The version of the browser. + * + * Attribute: `browser.version` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: sentry.browser.version + * + * @example "120.0.6099.130" + */ + public const BROWSER_VERSION = 'browser.version'; + + /** + * If the cache was hit during this span. + * + * Attribute: `cache.hit` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example true + */ + public const CACHE_HIT = 'cache.hit'; + + /** + * The size of the requested item in the cache. In bytes. + * + * Attribute: `cache.item_size` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 58 + */ + public const CACHE_ITEM_SIZE = 'cache.item_size'; + + /** + * The key of the cache accessed. + * + * Attribute: `cache.key` + * + * Type: array + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example ["my-cache-key", "my-other-cache-key"] + */ + public const CACHE_KEY = 'cache.key'; + + /** + * The operation being performed on the cache. + * + * Attribute: `cache.operation` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "get" + */ + public const CACHE_OPERATION = 'cache.operation'; + + /** + * The ttl of the cache in seconds + * + * Attribute: `cache.ttl` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 120 + */ + public const CACHE_TTL = 'cache.ttl'; + + /** + * The channel name that is being used. + * + * Attribute: `channel` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "mail" + */ + public const CHANNEL = 'channel'; + + /** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * Attribute: `client.address` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * Aliases: http.client_ip + * + * @example "example.com" + */ + public const CLIENT_ADDRESS = 'client.address'; + + /** + * Client port number. + * + * Attribute: `client.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 5432 + */ + public const CLIENT_PORT = 'client.port'; + + /** + * The duration of a Cloudflare D1 operation. + * + * Attribute: `cloudflare.d1.duration` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 543 + */ + public const CLOUDFLARE_D1_DURATION = 'cloudflare.d1.duration'; + + /** + * The number of rows read in a Cloudflare D1 operation. + * + * Attribute: `cloudflare.d1.rows_read` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 12 + */ + public const CLOUDFLARE_D1_ROWS_READ = 'cloudflare.d1.rows_read'; + + /** + * The number of rows written in a Cloudflare D1 operation. + * + * Attribute: `cloudflare.d1.rows_written` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 12 + */ + public const CLOUDFLARE_D1_ROWS_WRITTEN = 'cloudflare.d1.rows_written'; + + /** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + * + * Attribute: `code.file.path` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: code.filepath + * + * @example "/app/myapplication/http/handler/server.py" + */ + public const CODE_FILE_PATH = 'code.file.path'; + + /** + * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). + * + * Attribute: `code.filepath` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: code.file.path + * + * @deprecated Use code.file.path instead + * + * @example "/app/myapplication/http/handler/server.py" + */ + public const CODE_FILEPATH = 'code.filepath'; + + /** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * + * Attribute: `code.function` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: code.function.name + * + * @deprecated Use code.function.name instead + * + * @example "server_request" + */ + public const CODE_FUNCTION = 'code.function'; + + /** + * The method or function name, or equivalent (usually rightmost part of the code unit's name). + * + * Attribute: `code.function.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: code.function + * + * @example "server_request" + */ + public const CODE_FUNCTION_NAME = 'code.function.name'; + + /** + * The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function + * + * Attribute: `code.line.number` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: code.lineno + * + * @example 42 + */ + public const CODE_LINE_NUMBER = 'code.line.number'; + + /** + * The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function + * + * Attribute: `code.lineno` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: code.line.number + * + * @deprecated Use code.line.number instead + * + * @example 42 + */ + public const CODE_LINENO = 'code.lineno'; + + /** + * 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. + * + * Attribute: `code.namespace` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @deprecated Use code.function.name instead - code.function.name should include the namespace. + * + * @example "http.handler" + */ + public const CODE_NAMESPACE = 'code.namespace'; + + /** + * The name of a collection (table, container) within the database. + * + * Attribute: `db.collection.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "users" + */ + public const DB_COLLECTION_NAME = 'db.collection.name'; + + /** + * The name of the database being accessed. + * + * Attribute: `db.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: db.namespace + * + * @deprecated Use db.namespace instead + * + * @example "customers" + */ + public const DB_NAME = 'db.name'; + + /** + * The name of the database being accessed. + * + * Attribute: `db.namespace` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: db.name + * + * @example "customers" + */ + public const DB_NAMESPACE = 'db.namespace'; + + /** + * The name of the operation being executed. + * + * Attribute: `db.operation` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: db.operation.name + * + * @deprecated Use db.operation.name instead + * + * @example "SELECT" + */ + public const DB_OPERATION = 'db.operation'; + + /** + * The name of the operation being executed. + * + * Attribute: `db.operation.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: db.operation + * + * @example "SELECT" + */ + public const DB_OPERATION_NAME = 'db.operation.name'; + + /** + * 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. + * + * Attribute: `db.query.parameter.` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Has Dynamic Suffix: true + * + * @example "db.query.parameter.foo='123'" + */ + public const DB_QUERY_PARAMETER_KEY = 'db.query.parameter.'; + + /** + * A database query being executed. Should be paramaterized. The full version of the query is in `db.query.text`. + * + * Attribute: `db.query.summary` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "SELECT * FROM users" + */ + public const DB_QUERY_SUMMARY = 'db.query.summary'; + + /** + * The database query being executed. Should be the full query, not a parameterized version. The parameterized version is in `db.query.summary`. + * + * Attribute: `db.query.text` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: db.statement + * + * @example "SELECT * FROM users" + */ + public const DB_QUERY_TEXT = 'db.query.text'; + + /** + * The redis connection name. + * + * Attribute: `db.redis.connection` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "my-redis-instance" + */ + public const DB_REDIS_CONNECTION = 'db.redis.connection'; + + /** + * The array of command parameters given to a redis command. + * + * Attribute: `db.redis.parameters` + * + * Type: array + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example ["test", "*"] + */ + public const DB_REDIS_PARAMETERS = 'db.redis.parameters'; + + /** + * The array of query bindings. + * + * Attribute: `db.sql.bindings` + * + * Type: array + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @deprecated Use db.query.parameter. instead - Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.. + * + * @example ["1", "foo"] + */ + public const DB_SQL_BINDINGS = 'db.sql.bindings'; + + /** + * The database statement being executed. + * + * Attribute: `db.statement` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: db.query.text + * + * @deprecated Use db.query.text instead + * + * @example "SELECT * FROM users" + */ + public const DB_STATEMENT = 'db.statement'; + + /** + * 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. + * + * Attribute: `db.system` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: db.system.name + * + * @deprecated Use db.system.name instead + * + * @example "postgresql" + */ + public const DB_SYSTEM = 'db.system'; + + /** + * 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. + * + * Attribute: `db.system.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: db.system + * + * @example "postgresql" + */ + public const DB_SYSTEM_NAME = 'db.system.name'; + + /** + * The database user. + * + * Attribute: `db.user` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * @example "fancy_user" + */ + public const DB_USER = 'db.user'; + + /** + * The brand of the device. + * + * Attribute: `device.brand` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "Apple" + */ + public const DEVICE_BRAND = 'device.brand'; + + /** + * The family of the device. + * + * Attribute: `device.family` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "iPhone" + */ + public const DEVICE_FAMILY = 'device.family'; + + /** + * The model of the device. + * + * Attribute: `device.model` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "iPhone 15 Pro Max" + */ + public const DEVICE_MODEL = 'device.model'; + + /** + * The sentry environment. + * + * Attribute: `environment` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: sentry.environment + * + * @deprecated Use sentry.environment instead + * + * @example "production" + */ + public const ENVIRONMENT = 'environment'; + + /** + * Describes a class of error the operation ended with. + * + * Attribute: `error.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "timeout" + */ + public const ERROR_TYPE = 'error.type'; + + /** + * The unique identifier for this event (log record) + * + * Attribute: `event.id` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1234567890 + */ + public const EVENT_ID = 'event.id'; + + /** + * The name that uniquely identifies this event (log record) + * + * Attribute: `event.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "Process Payload" + */ + public const EVENT_NAME = 'event.name'; + + /** + * 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. + * + * Attribute: `exception.escaped` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example true + */ + public const EXCEPTION_ESCAPED = 'exception.escaped'; + + /** + * The error message. + * + * Attribute: `exception.message` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "ENOENT: no such file or directory" + */ + public const EXCEPTION_MESSAGE = 'exception.message'; + + /** + * 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. + * + * Attribute: `exception.stacktrace` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @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)" + */ + public const EXCEPTION_STACKTRACE = 'exception.stacktrace'; + + /** + * 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. + * + * Attribute: `exception.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "OSError" + */ + public const EXCEPTION_TYPE = 'exception.type'; + + /** + * A boolean that is true if the serverless function is executed for the first time (aka cold-start). + * + * Attribute: `faas.coldstart` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example true + */ + public const FAAS_COLDSTART = 'faas.coldstart'; + + /** + * A string containing the schedule period as Cron Expression. + * + * Attribute: `faas.cron` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "0/5 * * * ? *" + */ + public const FAAS_CRON = 'faas.cron'; + + /** + * A string containing the function invocation time in the ISO 8601 format expressed in UTC. + * + * Attribute: `faas.time` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "2020-01-23T13:47:06Z" + */ + public const FAAS_TIME = 'faas.time'; + + /** + * Type of the trigger which caused this function invocation. + * + * Attribute: `faas.trigger` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "timer" + */ + public const FAAS_TRIGGER = 'faas.trigger'; + + /** + * 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. + * + * Attribute: `flag.evaluation.` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Has Dynamic Suffix: true + * + * @example "flag.evaluation.is_new_ui=true" + */ + public const FLAG_EVALUATION_KEY = 'flag.evaluation.'; + + /** + * 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/). + * + * Attribute: `frames.delay` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 5 + */ + public const FRAMES_DELAY = 'frames.delay'; + + /** + * The number of frozen frames rendered during the lifetime of the span. + * + * Attribute: `frames.frozen` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 3 + */ + public const FRAMES_FROZEN = 'frames.frozen'; + + /** + * The number of slow frames rendered during the lifetime of the span. + * + * Attribute: `frames.slow` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1 + */ + public const FRAMES_SLOW = 'frames.slow'; + + /** + * The number of total frames rendered during the lifetime of the span. + * + * Attribute: `frames.total` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 60 + */ + public const FRAMES_TOTAL = 'frames.total'; + + /** + * The error message of a file system error. + * + * Attribute: `fs_error` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @deprecated Use error.type instead - This attribute is not part of the OpenTelemetry specification and error.type fits much better. + * + * @example "ENOENT: no such file or directory" + */ + public const FS_ERROR = 'fs_error'; + + /** + * The name of the agent being used. + * + * Attribute: `gen_ai.agent.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "ResearchAssistant" + */ + public const GEN_AI_AGENT_NAME = 'gen_ai.agent.name'; + + /** + * The assistant message passed to the model. + * + * Attribute: `gen_ai.assistant.message` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example "get_weather tool call" + */ + public const GEN_AI_ASSISTANT_MESSAGE = 'gen_ai.assistant.message'; + + /** + * The model's response message. + * + * Attribute: `gen_ai.choice` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example "The weather in Paris is rainy and overcast, with temperatures around 57°F" + */ + public const GEN_AI_CHOICE = 'gen_ai.choice'; + + /** + * The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens). + * + * Attribute: `gen_ai.cost.input_tokens` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 123.45 + */ + public const GEN_AI_COST_INPUT_TOKENS = 'gen_ai.cost.input_tokens'; + + /** + * The cost of tokens used for creating the AI output in USD (without reasoning tokens). + * + * Attribute: `gen_ai.cost.output_tokens` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 123.45 + */ + public const GEN_AI_COST_OUTPUT_TOKENS = 'gen_ai.cost.output_tokens'; + + /** + * The total cost for the tokens used. + * + * Attribute: `gen_ai.cost.total_tokens` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 12.34 + */ + public const GEN_AI_COST_TOTAL_TOKENS = 'gen_ai.cost.total_tokens'; + + /** + * The name of the operation being performed. + * + * Attribute: `gen_ai.operation.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "chat" + */ + public const GEN_AI_OPERATION_NAME = 'gen_ai.operation.name'; + + /** + * The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier. + * + * Attribute: `gen_ai.operation.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "tool" + */ + public const GEN_AI_OPERATION_TYPE = 'gen_ai.operation.type'; + + /** + * Name of the AI pipeline or chain being executed. + * + * Attribute: `gen_ai.pipeline.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: ai.pipeline.name + * + * @example "Autofix Pipeline" + */ + public const GEN_AI_PIPELINE_NAME = 'gen_ai.pipeline.name'; + + /** + * The input messages sent to the model + * + * Attribute: `gen_ai.prompt` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @deprecated - Deprecated from OTEL, use gen_ai.input.messages with the new format instead. + * + * @example "[{\"role\": \"user\", \"message\": \"hello\"}]" + */ + public const GEN_AI_PROMPT = 'gen_ai.prompt'; + + /** + * The available tools for the model. It has to be a stringified version of an array of objects. + * + * Attribute: `gen_ai.request.available_tools` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]" + */ + public const GEN_AI_REQUEST_AVAILABLE_TOOLS = 'gen_ai.request.available_tools'; + + /** + * 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. + * + * Attribute: `gen_ai.request.frequency_penalty` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.frequency_penalty + * + * @example 0.5 + */ + public const GEN_AI_REQUEST_FREQUENCY_PENALTY = 'gen_ai.request.frequency_penalty'; + + /** + * The maximum number of tokens to generate in the response. + * + * Attribute: `gen_ai.request.max_tokens` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 2048 + */ + public const GEN_AI_REQUEST_MAX_TOKENS = 'gen_ai.request.max_tokens'; + + /** + * 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:"..."}`. + * + * Attribute: `gen_ai.request.messages` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: ai.input_messages + * + * @example "[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]" + */ + public const GEN_AI_REQUEST_MESSAGES = 'gen_ai.request.messages'; + + /** + * The model identifier being used for the request. + * + * Attribute: `gen_ai.request.model` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "gpt-4-turbo-preview" + */ + public const GEN_AI_REQUEST_MODEL = 'gen_ai.request.model'; + + /** + * 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. + * + * Attribute: `gen_ai.request.presence_penalty` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.presence_penalty + * + * @example 0.5 + */ + public const GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty'; + + /** + * The seed, ideally models given the same seed and same other parameters will produce the exact same output. + * + * Attribute: `gen_ai.request.seed` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: ai.seed + * + * @example "1234567890" + */ + public const GEN_AI_REQUEST_SEED = 'gen_ai.request.seed'; + + /** + * For an AI model call, the temperature parameter. Temperature essentially means how random the output will be. + * + * Attribute: `gen_ai.request.temperature` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.temperature + * + * @example 0.1 + */ + public const GEN_AI_REQUEST_TEMPERATURE = 'gen_ai.request.temperature'; + + /** + * 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). + * + * Attribute: `gen_ai.request.top_k` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.top_k + * + * @example 35 + */ + public const GEN_AI_REQUEST_TOP_K = 'gen_ai.request.top_k'; + + /** + * 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). + * + * Attribute: `gen_ai.request.top_p` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.top_p + * + * @example 0.7 + */ + public const GEN_AI_REQUEST_TOP_P = 'gen_ai.request.top_p'; + + /** + * The reason why the model stopped generating. + * + * Attribute: `gen_ai.response.finish_reasons` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: ai.finish_reason + * + * @example "COMPLETE" + */ + public const GEN_AI_RESPONSE_FINISH_REASONS = 'gen_ai.response.finish_reasons'; + + /** + * Unique identifier for the completion. + * + * Attribute: `gen_ai.response.id` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: ai.generation_id + * + * @example "gen_123abc" + */ + public const GEN_AI_RESPONSE_ID = 'gen_ai.response.id'; + + /** + * The vendor-specific ID of the model used. + * + * Attribute: `gen_ai.response.model` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: ai.model_id + * + * @example "gpt-4" + */ + public const GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model'; + + /** + * Whether or not the AI model call's response was streamed back asynchronously + * + * Attribute: `gen_ai.response.streaming` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: ai.streaming + * + * @example true + */ + public const GEN_AI_RESPONSE_STREAMING = 'gen_ai.response.streaming'; + + /** + * The model's response text messages. It has to be a stringified version of an array of response text messages. + * + * Attribute: `gen_ai.response.text` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "[\"The weather in Paris is rainy and overcast, with temperatures around 57°F\", \"The weather in London is sunny and warm, with temperatures around 65°F\"]" + */ + public const GEN_AI_RESPONSE_TEXT = 'gen_ai.response.text'; + + /** + * The total output tokens per seconds throughput + * + * Attribute: `gen_ai.response.tokens_per_second` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 12345.67 + */ + public const GEN_AI_RESPONSE_TOKENS_PER_SECOND = 'gen_ai.response.tokens_per_second'; + + /** + * The tool calls in the model's response. It has to be a stringified version of an array of objects. + * + * Attribute: `gen_ai.response.tool_calls` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]" + */ + public const GEN_AI_RESPONSE_TOOL_CALLS = 'gen_ai.response.tool_calls'; + + /** + * The provider of the model. + * + * Attribute: `gen_ai.system` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: ai.model.provider + * + * @example "openai" + */ + public const GEN_AI_SYSTEM = 'gen_ai.system'; + + /** + * The system instructions passed to the model. + * + * Attribute: `gen_ai.system.message` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example "You are a helpful assistant" + */ + public const GEN_AI_SYSTEM_MESSAGE = 'gen_ai.system.message'; + + /** + * The description of the tool being used. + * + * Attribute: `gen_ai.tool.description` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "Searches the web for current information about a topic" + */ + public const GEN_AI_TOOL_DESCRIPTION = 'gen_ai.tool.description'; + + /** + * The input of the tool being used. It has to be a stringified version of the input to the tool. + * + * Attribute: `gen_ai.tool.input` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "{\"location\": \"Paris\"}" + */ + public const GEN_AI_TOOL_INPUT = 'gen_ai.tool.input'; + + /** + * The response from a tool or function call passed to the model. + * + * Attribute: `gen_ai.tool.message` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example "rainy, 57°F" + */ + public const GEN_AI_TOOL_MESSAGE = 'gen_ai.tool.message'; + + /** + * Name of the tool utilized by the agent. + * + * Attribute: `gen_ai.tool.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: ai.function_call + * + * @example "Flights" + */ + public const GEN_AI_TOOL_NAME = 'gen_ai.tool.name'; + + /** + * The output of the tool being used. It has to be a stringified version of the output of the tool. + * + * Attribute: `gen_ai.tool.output` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "rainy, 57°F" + */ + public const GEN_AI_TOOL_OUTPUT = 'gen_ai.tool.output'; + + /** + * The type of tool being used. + * + * Attribute: `gen_ai.tool.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "function" + */ + public const GEN_AI_TOOL_TYPE = 'gen_ai.tool.type'; + + /** + * The number of tokens used in the GenAI response (completion). + * + * Attribute: `gen_ai.usage.completion_tokens` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.completion_tokens.used, gen_ai.usage.output_tokens + * + * @deprecated Use gen_ai.usage.output_tokens instead + * + * @example 10 + */ + public const GEN_AI_USAGE_COMPLETION_TOKENS = 'gen_ai.usage.completion_tokens'; + + /** + * The number of tokens used to process the AI input (prompt) without cached input tokens. + * + * Attribute: `gen_ai.usage.input_tokens` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.prompt_tokens.used, gen_ai.usage.prompt_tokens + * + * @example 10 + */ + public const GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens'; + + /** + * The number of cached tokens used to process the AI input (prompt). + * + * Attribute: `gen_ai.usage.input_tokens.cached` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 50 + */ + public const GEN_AI_USAGE_INPUT_TOKENS_CACHED = 'gen_ai.usage.input_tokens.cached'; + + /** + * The number of tokens used for creating the AI output (without reasoning tokens). + * + * Attribute: `gen_ai.usage.output_tokens` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.completion_tokens.used, gen_ai.usage.completion_tokens + * + * @example 10 + */ + public const GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens'; + + /** + * The number of tokens used for reasoning to create the AI output. + * + * Attribute: `gen_ai.usage.output_tokens.reasoning` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 75 + */ + public const GEN_AI_USAGE_OUTPUT_TOKENS_REASONING = 'gen_ai.usage.output_tokens.reasoning'; + + /** + * The number of tokens used in the GenAI input (prompt). + * + * Attribute: `gen_ai.usage.prompt_tokens` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: ai.prompt_tokens.used, gen_ai.usage.input_tokens + * + * @deprecated Use gen_ai.usage.input_tokens instead + * + * @example 20 + */ + public const GEN_AI_USAGE_PROMPT_TOKENS = 'gen_ai.usage.prompt_tokens'; + + /** + * The total cost for the tokens used. + * + * Attribute: `gen_ai.usage.total_cost` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @deprecated Use gen_ai.cost.total_tokens instead + * + * @example 12.34 + */ + public const GEN_AI_USAGE_TOTAL_COST = 'gen_ai.usage.total_cost'; + + /** + * The total number of tokens used to process the prompt. (input tokens plus output todkens) + * + * Attribute: `gen_ai.usage.total_tokens` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: ai.total_tokens.used + * + * @example 20 + */ + public const GEN_AI_USAGE_TOTAL_TOKENS = 'gen_ai.usage.total_tokens'; + + /** + * The user message passed to the model. + * + * Attribute: `gen_ai.user.message` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example "What's the weather in Paris?" + */ + public const GEN_AI_USER_MESSAGE = 'gen_ai.user.message'; + + /** + * The name of the operation being executed. + * + * Attribute: `graphql.operation.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "findBookById" + */ + public const GRAPHQL_OPERATION_NAME = 'graphql.operation.name'; + + /** + * The type of the operation being executed. + * + * Attribute: `graphql.operation.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "query" + */ + public const GRAPHQL_OPERATION_TYPE = 'graphql.operation.type'; + + /** + * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * Attribute: `http.client_ip` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * Aliases: client.address + * + * @deprecated Use client.address instead + * + * @example "example.com" + */ + public const HTTP_CLIENT_IP = 'http.client_ip'; + + /** + * The decoded body size of the response (in bytes). + * + * Attribute: `http.decoded_response_content_length` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 456 + */ + public const HTTP_DECODED_RESPONSE_CONTENT_LENGTH = 'http.decoded_response_content_length'; + + /** + * The actual version of the protocol used for network communication. + * + * Attribute: `http.flavor` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: network.protocol.version, net.protocol.version + * + * @deprecated Use network.protocol.version instead + * + * @example "1.1" + */ + public const HTTP_FLAVOR = 'http.flavor'; + + /** + * The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not. + * + * Attribute: `http.fragment` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "#details" + */ + public const HTTP_FRAGMENT = 'http.fragment'; + + /** + * The domain name. + * + * Attribute: `http.host` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: server.address, client.address, http.server_name, net.host.name + * + * @deprecated Use server.address instead - Deprecated, use one of `server.address` or `client.address`, depending on the usage + * + * @example "example.com" + */ + public const HTTP_HOST = 'http.host'; + + /** + * The HTTP method used. + * + * Attribute: `http.method` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: http.request.method + * + * @deprecated Use http.request.method instead + * + * @example "GET" + */ + public const HTTP_METHOD = 'http.method'; + + /** + * The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not. + * + * Attribute: `http.query` + * + * Type: string + * + * Contains PII: maybe - Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information. + * + * Defined in OTEL: No + * + * @example "?foo=bar&bar=baz" + */ + public const HTTP_QUERY = 'http.query'; + + /** + * The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource. + * + * Attribute: `http.request.connect_start` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.111 + */ + public const HTTP_REQUEST_CONNECT_START = 'http.request.connect_start'; + + /** + * 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. + * + * Attribute: `http.request.connection_end` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.15 + */ + public const HTTP_REQUEST_CONNECTION_END = 'http.request.connection_end'; + + /** + * The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource. + * + * Attribute: `http.request.domain_lookup_end` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.201 + */ + public const HTTP_REQUEST_DOMAIN_LOOKUP_END = 'http.request.domain_lookup_end'; + + /** + * The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource. + * + * Attribute: `http.request.domain_lookup_start` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.322 + */ + public const HTTP_REQUEST_DOMAIN_LOOKUP_START = 'http.request.domain_lookup_start'; + + /** + * The UNIX timestamp representing the time immediately before the browser starts to fetch the resource. + * + * Attribute: `http.request.fetch_start` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.389 + */ + public const HTTP_REQUEST_FETCH_START = 'http.request.fetch_start'; + + /** + * HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values. + * + * Attribute: `http.request.header.` + * + * Type: array + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Has Dynamic Suffix: true + * + * @example "http.request.header.custom-header=['foo', 'bar']" + */ + public const HTTP_REQUEST_HEADER_KEY = 'http.request.header.'; + + /** + * The HTTP method used. + * + * Attribute: `http.request.method` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: method, http.method + * + * @example "GET" + */ + public const HTTP_REQUEST_METHOD = 'http.request.method'; + + /** + * The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect + * + * Attribute: `http.request.redirect_end` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829558.502 + */ + public const HTTP_REQUEST_REDIRECT_END = 'http.request.redirect_end'; + + /** + * The UNIX timestamp representing the start time of the fetch which that initiates the redirect. + * + * Attribute: `http.request.redirect_start` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.495 + */ + public const HTTP_REQUEST_REDIRECT_START = 'http.request.redirect_start'; + + /** + * The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. + * + * Attribute: `http.request.request_start` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.51 + */ + public const HTTP_REQUEST_REQUEST_START = 'http.request.request_start'; + + /** + * The ordinal number of request resending attempt (for any reason, including redirects). + * + * Attribute: `http.request.resend_count` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 2 + */ + public const HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count'; + + /** + * 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. + * + * Attribute: `http.request.response_end` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.89 + */ + public const HTTP_REQUEST_RESPONSE_END = 'http.request.response_end'; + + /** + * 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. + * + * Attribute: `http.request.response_start` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.7 + */ + public const HTTP_REQUEST_RESPONSE_START = 'http.request.response_start'; + + /** + * The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero. + * + * Attribute: `http.request.secure_connection_start` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829555.73 + */ + public const HTTP_REQUEST_SECURE_CONNECTION_START = 'http.request.secure_connection_start'; + + /** + * 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 + * + * Attribute: `http.request.time_to_first_byte` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1.032 + */ + public const HTTP_REQUEST_TIME_TO_FIRST_BYTE = 'http.request.time_to_first_byte'; + + /** + * 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. + * + * Attribute: `http.request.worker_start` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732829553.68 + */ + public const HTTP_REQUEST_WORKER_START = 'http.request.worker_start'; + + /** + * The encoded body size of the response (in bytes). + * + * Attribute: `http.response.body.size` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: http.response_content_length, http.response.header.content-length + * + * @example 123 + */ + public const HTTP_RESPONSE_BODY_SIZE = 'http.response.body.size'; + + /** + * HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values. + * + * Attribute: `http.response.header.` + * + * Type: array + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Has Dynamic Suffix: true + * + * @example "http.response.header.custom-header=['foo', 'bar']" + */ + public const HTTP_RESPONSE_HEADER_KEY = 'http.response.header.'; + + /** + * The size of the message body sent to the recipient (in bytes) + * + * Attribute: `http.response.header.content-length` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: http.response_content_length, http.response.body.size + * + * @example "http.response.header.custom-header=['foo', 'bar']" + */ + public const HTTP_RESPONSE_HEADER_CONTENT_LENGTH = 'http.response.header.content-length'; + + /** + * The transfer size of the response (in bytes). + * + * Attribute: `http.response.size` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: http.response_transfer_size + * + * @example 456 + */ + public const HTTP_RESPONSE_SIZE = 'http.response.size'; + + /** + * The status code of the HTTP response. + * + * Attribute: `http.response.status_code` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: http.status_code + * + * @example 404 + */ + public const HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code'; + + /** + * The encoded body size of the response (in bytes). + * + * Attribute: `http.response_content_length` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: http.response.body.size, http.response.header.content-length + * + * @deprecated Use http.response.body.size instead + * + * @example 123 + */ + public const HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length'; + + /** + * The transfer size of the response (in bytes). + * + * Attribute: `http.response_transfer_size` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: http.response.size + * + * @deprecated Use http.response.size instead + * + * @example 456 + */ + public const HTTP_RESPONSE_TRANSFER_SIZE = 'http.response_transfer_size'; + + /** + * The matched route, that is, the path template in the format used by the respective server framework. + * + * Attribute: `http.route` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: url.template + * + * @example "/users/:id" + */ + public const HTTP_ROUTE = 'http.route'; + + /** + * The URI scheme component identifying the used protocol. + * + * Attribute: `http.scheme` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: url.scheme + * + * @deprecated Use url.scheme instead + * + * @example "https" + */ + public const HTTP_SCHEME = 'http.scheme'; + + /** + * The server domain name + * + * Attribute: `http.server_name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: server.address, net.host.name, http.host + * + * @deprecated Use server.address instead + * + * @example "example.com" + */ + public const HTTP_SERVER_NAME = 'http.server_name'; + + /** + * The status code of the HTTP response. + * + * Attribute: `http.status_code` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: http.response.status_code + * + * @deprecated Use http.response.status_code instead + * + * @example 404 + */ + public const HTTP_STATUS_CODE = 'http.status_code'; + + /** + * The pathname and query string of the URL. + * + * Attribute: `http.target` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @deprecated Use url.path instead - This attribute is being deprecated in favor of url.path and url.query + * + * @example "/test?foo=bar#buzz" + */ + public const HTTP_TARGET = 'http.target'; + + /** + * The URL of the resource that was fetched. + * + * Attribute: `http.url` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: url.full, url + * + * @deprecated Use url.full instead + * + * @example "https://example.com/test?foo=bar#buzz" + */ + public const HTTP_URL = 'http.url'; + + /** + * Value of the HTTP User-Agent header sent by the client. + * + * Attribute: `http.user_agent` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: user_agent.original + * + * @deprecated Use user_agent.original instead + * + * @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" + */ + public const HTTP_USER_AGENT = 'http.user_agent'; + + /** + * A unique identifier for the span. + * + * Attribute: `id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "f47ac10b58cc4372a5670e02b2c3d479" + */ + public const ID = 'id'; + + /** + * Name of the garbage collector action. + * + * Attribute: `jvm.gc.action` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "end of minor GC" + */ + public const JVM_GC_ACTION = 'jvm.gc.action'; + + /** + * Name of the garbage collector. + * + * Attribute: `jvm.gc.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "G1 Young Generation" + */ + public const JVM_GC_NAME = 'jvm.gc.name'; + + /** + * Name of the memory pool. + * + * Attribute: `jvm.memory.pool.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "G1 Old Gen" + */ + public const JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name'; + + /** + * Name of the memory pool. + * + * Attribute: `jvm.memory.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "G1 Old Gen" + */ + public const JVM_MEMORY_TYPE = 'jvm.memory.type'; + + /** + * Whether the thread is daemon or not. + * + * Attribute: `jvm.thread.daemon` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example true + */ + public const JVM_THREAD_DAEMON = 'jvm.thread.daemon'; + + /** + * State of the thread. + * + * Attribute: `jvm.thread.state` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "blocked" + */ + public const JVM_THREAD_STATE = 'jvm.thread.state'; + + /** + * The dom element responsible for the largest contentful paint. + * + * Attribute: `lcp.element` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "img" + */ + public const LCP_ELEMENT = 'lcp.element'; + + /** + * The id of the dom element responsible for the largest contentful paint. + * + * Attribute: `lcp.id` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "#hero" + */ + public const LCP_ID = 'lcp.id'; + + /** + * The size of the largest contentful paint element. + * + * Attribute: `lcp.size` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1234 + */ + public const LCP_SIZE = 'lcp.size'; + + /** + * The url of the dom element responsible for the largest contentful paint. + * + * Attribute: `lcp.url` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "https://example.com" + */ + public const LCP_URL = 'lcp.url'; + + /** + * The name of the logger that generated this event. + * + * Attribute: `logger.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "myLogger" + */ + public const LOGGER_NAME = 'logger.name'; + + /** + * The message destination connection. + * + * Attribute: `messaging.destination.connection` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "BestTopic" + */ + public const MESSAGING_DESTINATION_CONNECTION = 'messaging.destination.connection'; + + /** + * The message destination name. + * + * Attribute: `messaging.destination.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "BestTopic" + */ + public const MESSAGING_DESTINATION_NAME = 'messaging.destination.name'; + + /** + * The size of the message body in bytes. + * + * Attribute: `messaging.message.body.size` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 839 + */ + public const MESSAGING_MESSAGE_BODY_SIZE = 'messaging.message.body.size'; + + /** + * The size of the message body and metadata in bytes. + * + * Attribute: `messaging.message.envelope.size` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 1045 + */ + public const MESSAGING_MESSAGE_ENVELOPE_SIZE = 'messaging.message.envelope.size'; + + /** + * A value used by the messaging system as an identifier for the message, represented as a string. + * + * Attribute: `messaging.message.id` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "f47ac10b58cc4372a5670e02b2c3d479" + */ + public const MESSAGING_MESSAGE_ID = 'messaging.message.id'; + + /** + * The latency between when the message was published and received. + * + * Attribute: `messaging.message.receive.latency` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1732847252 + */ + public const MESSAGING_MESSAGE_RECEIVE_LATENCY = 'messaging.message.receive.latency'; + + /** + * The amount of attempts to send the message. + * + * Attribute: `messaging.message.retry.count` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 2 + */ + public const MESSAGING_MESSAGE_RETRY_COUNT = 'messaging.message.retry.count'; + + /** + * A string identifying the type of the messaging operation + * + * Attribute: `messaging.operation.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "create" + */ + public const MESSAGING_OPERATION_TYPE = 'messaging.operation.type'; + + /** + * The messaging system as identified by the client instrumentation. + * + * Attribute: `messaging.system` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "activemq" + */ + public const MESSAGING_SYSTEM = 'messaging.system'; + + /** + * The HTTP method used. + * + * Attribute: `method` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: http.request.method + * + * @deprecated Use http.request.method instead + * + * @example "GET" + */ + public const METHOD = 'method'; + + /** + * The type of navigation done by a client-side router. + * + * Attribute: `navigation.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "router.push" + */ + public const NAVIGATION_TYPE = 'navigation.type'; + + /** + * The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent. + * + * Attribute: `nel.elapsed_time` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 100 + */ + public const NEL_ELAPSED_TIME = 'nel.elapsed_time'; + + /** + * If request failed, the phase of its network error. If request succeeded, "application". + * + * Attribute: `nel.phase` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "application" + */ + public const NEL_PHASE = 'nel.phase'; + + /** + * request's referrer, as determined by the referrer policy associated with its client. + * + * Attribute: `nel.referrer` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "https://example.com/foo?bar=baz" + */ + public const NEL_REFERRER = 'nel.referrer'; + + /** + * The sampling function used to determine if the request should be sampled. + * + * Attribute: `nel.sampling_function` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 0.5 + */ + public const NEL_SAMPLING_FUNCTION = 'nel.sampling_function'; + + /** + * If request failed, the type of its network error. If request succeeded, "ok". + * + * Attribute: `nel.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "dns.unreachable" + */ + public const NEL_TYPE = 'nel.type'; + + /** + * Local address of the network connection - IP address or Unix domain socket name. + * + * Attribute: `net.host.ip` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: network.local.address, net.sock.host.addr + * + * @deprecated Use network.local.address instead + * + * @example "192.168.0.1" + */ + public const NET_HOST_IP = 'net.host.ip'; + + /** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * Attribute: `net.host.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: server.address, http.server_name, http.host + * + * @deprecated Use server.address instead + * + * @example "example.com" + */ + public const NET_HOST_NAME = 'net.host.name'; + + /** + * Server port number. + * + * Attribute: `net.host.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: server.port + * + * @deprecated Use server.port instead + * + * @example 1337 + */ + public const NET_HOST_PORT = 'net.host.port'; + + /** + * Peer address of the network connection - IP address or Unix domain socket name. + * + * Attribute: `net.peer.ip` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: network.peer.address, net.sock.peer.addr + * + * @deprecated Use network.peer.address instead + * + * @example "192.168.0.1" + */ + public const NET_PEER_IP = 'net.peer.ip'; + + /** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * Attribute: `net.peer.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @deprecated Use server.address instead - Deprecated, use server.address on client spans and client.address on server spans. + * + * @example "example.com" + */ + public const NET_PEER_NAME = 'net.peer.name'; + + /** + * Peer port number. + * + * Attribute: `net.peer.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @deprecated Use server.port instead - Deprecated, use server.port on client spans and client.port on server spans. + * + * @example 1337 + */ + public const NET_PEER_PORT = 'net.peer.port'; + + /** + * OSI application layer or non-OSI equivalent. + * + * Attribute: `net.protocol.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: network.protocol.name + * + * @deprecated Use network.protocol.name instead + * + * @example "http" + */ + public const NET_PROTOCOL_NAME = 'net.protocol.name'; + + /** + * The actual version of the protocol used for network communication. + * + * Attribute: `net.protocol.version` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: network.protocol.version, http.flavor + * + * @deprecated Use network.protocol.version instead + * + * @example "1.1" + */ + public const NET_PROTOCOL_VERSION = 'net.protocol.version'; + + /** + * OSI transport and network layer + * + * Attribute: `net.sock.family` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @deprecated Use network.transport instead - Deprecated, use network.transport and network.type. + * + * @example "inet" + */ + public const NET_SOCK_FAMILY = 'net.sock.family'; + + /** + * Local address of the network connection mapping to Unix domain socket name. + * + * Attribute: `net.sock.host.addr` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: network.local.address, net.host.ip + * + * @deprecated Use network.local.address instead + * + * @example "/var/my.sock" + */ + public const NET_SOCK_HOST_ADDR = 'net.sock.host.addr'; + + /** + * Local port number of the network connection. + * + * Attribute: `net.sock.host.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: network.local.port + * + * @deprecated Use network.local.port instead + * + * @example 8080 + */ + public const NET_SOCK_HOST_PORT = 'net.sock.host.port'; + + /** + * Peer address of the network connection - IP address + * + * Attribute: `net.sock.peer.addr` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: network.peer.address, net.peer.ip + * + * @deprecated Use network.peer.address instead + * + * @example "192.168.0.1" + */ + public const NET_SOCK_PEER_ADDR = 'net.sock.peer.addr'; + + /** + * Peer address of the network connection - Unix domain socket name + * + * Attribute: `net.sock.peer.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @deprecated - Deprecated from OTEL, no replacement at this time + * + * @example "/var/my.sock" + */ + public const NET_SOCK_PEER_NAME = 'net.sock.peer.name'; + + /** + * Peer port number of the network connection. + * + * Attribute: `net.sock.peer.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @deprecated Use network.peer.port instead + * + * @example 8080 + */ + public const NET_SOCK_PEER_PORT = 'net.sock.peer.port'; + + /** + * OSI transport layer or inter-process communication method. + * + * Attribute: `net.transport` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: network.transport + * + * @deprecated Use network.transport instead + * + * @example "tcp" + */ + public const NET_TRANSPORT = 'net.transport'; + + /** + * Local address of the network connection - IP address or Unix domain socket name. + * + * Attribute: `network.local.address` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: net.host.ip, net.sock.host.addr + * + * @example "10.1.2.80" + */ + public const NETWORK_LOCAL_ADDRESS = 'network.local.address'; + + /** + * Local port number of the network connection. + * + * Attribute: `network.local.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: net.sock.host.port + * + * @example 65400 + */ + public const NETWORK_LOCAL_PORT = 'network.local.port'; + + /** + * Peer address of the network connection - IP address or Unix domain socket name. + * + * Attribute: `network.peer.address` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: net.peer.ip, net.sock.peer.addr + * + * @example "10.1.2.80" + */ + public const NETWORK_PEER_ADDRESS = 'network.peer.address'; + + /** + * Peer port number of the network connection. + * + * Attribute: `network.peer.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 65400 + */ + public const NETWORK_PEER_PORT = 'network.peer.port'; + + /** + * OSI application layer or non-OSI equivalent. + * + * Attribute: `network.protocol.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: net.protocol.name + * + * @example "http" + */ + public const NETWORK_PROTOCOL_NAME = 'network.protocol.name'; + + /** + * The actual version of the protocol used for network communication. + * + * Attribute: `network.protocol.version` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: http.flavor, net.protocol.version + * + * @example "1.1" + */ + public const NETWORK_PROTOCOL_VERSION = 'network.protocol.version'; + + /** + * OSI transport layer or inter-process communication method. + * + * Attribute: `network.transport` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: net.transport + * + * @example "tcp" + */ + public const NETWORK_TRANSPORT = 'network.transport'; + + /** + * OSI network layer or non-OSI equivalent. + * + * Attribute: `network.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "ipv4" + */ + public const NETWORK_TYPE = 'network.type'; + + /** + * The build ID of the operating system. + * + * Attribute: `os.build_id` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "1234567890" + */ + public const OS_BUILD_ID = 'os.build_id'; + + /** + * Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands. + * + * Attribute: `os.description` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "Ubuntu 18.04.1 LTS" + */ + public const OS_DESCRIPTION = 'os.description'; + + /** + * Human readable operating system name. + * + * Attribute: `os.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "Ubuntu" + */ + public const OS_NAME = 'os.name'; + + /** + * The operating system type. + * + * Attribute: `os.type` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "linux" + */ + public const OS_TYPE = 'os.type'; + + /** + * The version of the operating system. + * + * Attribute: `os.version` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "18.04.2" + */ + public const OS_VERSION = 'os.version'; + + /** + * The name of the instrumentation scope - (InstrumentationScope.Name in OTLP). + * + * Attribute: `otel.scope.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "io.opentelemetry.contrib.mongodb" + */ + public const OTEL_SCOPE_NAME = 'otel.scope.name'; + + /** + * The version of the instrumentation scope - (InstrumentationScope.Version in OTLP). + * + * Attribute: `otel.scope.version` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "2.4.5" + */ + public const OTEL_SCOPE_VERSION = 'otel.scope.version'; + + /** + * Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET. + * + * Attribute: `otel.status_code` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "OK" + */ + public const OTEL_STATUS_CODE = 'otel.status_code'; + + /** + * Description of the Status if it has a value, otherwise not set. + * + * Attribute: `otel.status_description` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "resource not found" + */ + public const OTEL_STATUS_DESCRIPTION = 'otel.status_description'; + + /** + * Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. + * + * Attribute: `params.` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Has Dynamic Suffix: true + * + * Aliases: url.path.parameter. + * + * @example "params.id='123'" + */ + public const PARAMS_KEY = 'params.'; + + /** + * Also used by mobile SDKs to indicate the previous route in the application. + * + * Attribute: `previous_route` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "HomeScreen" + */ + public const PREVIOUS_ROUTE = 'previous_route'; + + /** + * The name of the executable that started the process. + * + * Attribute: `process.executable.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "getsentry" + */ + public const PROCESS_EXECUTABLE_NAME = 'process.executable.name'; + + /** + * The process ID of the running process. + * + * Attribute: `process.pid` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 12345 + */ + public const PROCESS_PID = 'process.pid'; + + /** + * 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. + * + * Attribute: `process.runtime.description` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "Eclipse OpenJ9 VM openj9-0.21.0" + */ + public const PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description'; + + /** + * The name of the runtime. Equivalent to `name` in the Sentry runtime context. + * + * Attribute: `process.runtime.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "node" + */ + public const PROCESS_RUNTIME_NAME = 'process.runtime.name'; + + /** + * The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context. + * + * Attribute: `process.runtime.version` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "18.04.2" + */ + public const PROCESS_RUNTIME_VERSION = 'process.runtime.version'; + + /** + * The id of the sentry profile. + * + * Attribute: `profile_id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: sentry.profile_id + * + * @deprecated Use sentry.profile_id instead + * + * @example "123e4567e89b12d3a456426614174000" + */ + public const PROFILE_ID = 'profile_id'; + + /** + * An item in a query string. Usually added by client-side routing frameworks like vue-router. + * + * Attribute: `query.` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Has Dynamic Suffix: true + * + * @deprecated Use url.query instead - Instead of sending items individually in query., they should be sent all together with url.query. + * + * @example "query.id='123'" + */ + public const QUERY_KEY = 'query.'; + + /** + * The sentry release. + * + * Attribute: `release` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: sentry.release + * + * @deprecated Use sentry.release instead + * + * @example "production" + */ + public const RELEASE = 'release'; + + /** + * Remix form data, being the form data key, the value being the form data value. + * + * Attribute: `remix.action_form_data.` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Has Dynamic Suffix: true + * + * @example "http.response.header.text='test'" + */ + public const REMIX_ACTION_FORM_DATA_KEY = 'remix.action_form_data.'; + + /** + * The id of the sentry replay. + * + * Attribute: `replay_id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: sentry.replay_id + * + * @deprecated Use sentry.replay_id instead + * + * @example "123e4567e89b12d3a456426614174000" + */ + public const REPLAY_ID = 'replay_id'; + + /** + * The render blocking status of the resource. + * + * Attribute: `resource.render_blocking_status` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "non-blocking" + */ + public const RESOURCE_RENDER_BLOCKING_STATUS = 'resource.render_blocking_status'; + + /** + * 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. + * + * Attribute: `route` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: http.route + * + * @deprecated Use http.route instead + * + * @example "App\\Controller::indexAction" + */ + public const ROUTE = 'route'; + + /** + * The numeric status code of the gRPC request. + * + * Attribute: `rpc.grpc.status_code` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 2 + */ + public const RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code'; + + /** + * The full (logical) name of the service being called, including its package name, if applicable. + * + * Attribute: `rpc.service` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "myService.BestService" + */ + public const RPC_SERVICE = 'rpc.service'; + + /** + * The environment from the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.environment` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "prod" + */ + public const SENTRY_INTERNAL_DSC_ENVIRONMENT = 'sentry._internal.dsc.environment'; + + /** + * The organization ID from the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.org_id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "1" + */ + public const SENTRY_INTERNAL_DSC_ORG_ID = 'sentry._internal.dsc.org_id'; + + /** + * The public key from the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.public_key` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "c51734c603c4430eb57cb0a5728a479d" + */ + public const SENTRY_INTERNAL_DSC_PUBLIC_KEY = 'sentry._internal.dsc.public_key'; + + /** + * The release identifier from the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.release` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "frontend@e8211be71b214afab5b85de4b4c54be3714952bb" + */ + public const SENTRY_INTERNAL_DSC_RELEASE = 'sentry._internal.dsc.release'; + + /** + * The random sampling value from the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.sample_rand` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "0.8286147972820134" + */ + public const SENTRY_INTERNAL_DSC_SAMPLE_RAND = 'sentry._internal.dsc.sample_rand'; + + /** + * The sample rate from the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.sample_rate` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "1.0" + */ + public const SENTRY_INTERNAL_DSC_SAMPLE_RATE = 'sentry._internal.dsc.sample_rate'; + + /** + * Whether the event was sampled according to the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.sampled` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example true + */ + public const SENTRY_INTERNAL_DSC_SAMPLED = 'sentry._internal.dsc.sampled'; + + /** + * The trace ID from the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.trace_id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "047372980460430cbc78d9779df33a46" + */ + public const SENTRY_INTERNAL_DSC_TRACE_ID = 'sentry._internal.dsc.trace_id'; + + /** + * The transaction name from the dynamic sampling context. + * + * Attribute: `sentry._internal.dsc.transaction` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "/issues/errors-outages/" + */ + public const SENTRY_INTERNAL_DSC_TRANSACTION = 'sentry._internal.dsc.transaction'; + + /** + * The timestamp at which an envelope was received by Relay, in nanoseconds. + * + * Attribute: `sentry._internal.observed_timestamp_nanos` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: sentry.observed_timestamp_nanos + * + * @example "1544712660300000000" + */ + public const SENTRY_INTERNAL_OBSERVED_TIMESTAMP_NANOS = 'sentry._internal.observed_timestamp_nanos'; + + /** + * A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate). + * + * Attribute: `sentry._internal.replay_is_buffering` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example true + */ + public const SENTRY_INTERNAL_REPLAY_IS_BUFFERING = 'sentry._internal.replay_is_buffering'; + + /** + * The name of the browser. + * + * Attribute: `sentry.browser.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: browser.name + * + * @deprecated Use browser.name instead + * + * @example "Chrome" + */ + public const SENTRY_BROWSER_NAME = 'sentry.browser.name'; + + /** + * The version of the browser. + * + * Attribute: `sentry.browser.version` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: browser.version + * + * @deprecated Use browser.version instead + * + * @example "120.0.6099.130" + */ + public const SENTRY_BROWSER_VERSION = 'sentry.browser.version'; + + /** + * The reason why a span ended early. + * + * Attribute: `sentry.cancellation_reason` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "document.hidden" + */ + public const SENTRY_CANCELLATION_REASON = 'sentry.cancellation_reason'; + + /** + * Rate at which a span was sampled in the SDK. + * + * Attribute: `sentry.client_sample_rate` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 0.5 + */ + public const SENTRY_CLIENT_SAMPLE_RATE = 'sentry.client_sample_rate'; + + /** + * The human-readable description of a span. + * + * Attribute: `sentry.description` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "index view query" + */ + public const SENTRY_DESCRIPTION = 'sentry.description'; + + /** + * The sentry dist. + * + * Attribute: `sentry.dist` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "1.0" + */ + public const SENTRY_DIST = 'sentry.dist'; + + /** + * The sentry environment. + * + * Attribute: `sentry.environment` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: environment + * + * @example "production" + */ + public const SENTRY_ENVIRONMENT = 'sentry.environment'; + + /** + * The exclusive time duration of the span. + * + * Attribute: `sentry.exclusive_time` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 1234 + */ + public const SENTRY_EXCLUSIVE_TIME = 'sentry.exclusive_time'; + + /** + * If an http request was a prefetch request. + * + * Attribute: `sentry.http.prefetch` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example true + */ + public const SENTRY_HTTP_PREFETCH = 'sentry.http.prefetch'; + + /** + * The reason why an idle span ended early. + * + * Attribute: `sentry.idle_span_finish_reason` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "idleTimeout" + */ + public const SENTRY_IDLE_SPAN_FINISH_REASON = 'sentry.idle_span_finish_reason'; + + /** + * 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) + * + * Attribute: `sentry.message.parameter.` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "sentry.message.parameter.0='123'" + */ + public const SENTRY_MESSAGE_PARAMETER_KEY = 'sentry.message.parameter.'; + + /** + * The parameterized template string. + * + * Attribute: `sentry.message.template` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "Hello, {name}!" + */ + public const SENTRY_MESSAGE_TEMPLATE = 'sentry.message.template'; + + /** + * A module that was loaded in the process. The key is the name of the module. + * + * Attribute: `sentry.module.` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Has Dynamic Suffix: true + * + * @example "sentry.module.brianium/paratest='v7.7.0'" + */ + public const SENTRY_MODULE_KEY = 'sentry.module.'; + + /** + * 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. + * + * Attribute: `sentry.nextjs.ssr.function.route` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "/posts/[id]/layout" + */ + public const SENTRY_NEXTJS_SSR_FUNCTION_ROUTE = 'sentry.nextjs.ssr.function.route'; + + /** + * 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. + * + * Attribute: `sentry.nextjs.ssr.function.type` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "generateMetadata" + */ + public const SENTRY_NEXTJS_SSR_FUNCTION_TYPE = 'sentry.nextjs.ssr.function.type'; + + /** + * The timestamp at which an envelope was received by Relay, in nanoseconds. + * + * Attribute: `sentry.observed_timestamp_nanos` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: sentry._internal.observed_timestamp_nanos + * + * @deprecated Use sentry._internal.observed_timestamp_nanos instead + * + * @example "1544712660300000000" + */ + public const SENTRY_OBSERVED_TIMESTAMP_NANOS = 'sentry.observed_timestamp_nanos'; + + /** + * The operation of a span. + * + * Attribute: `sentry.op` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "http.client" + */ + public const SENTRY_OP = 'sentry.op'; + + /** + * The origin of the instrumentation (e.g. span, log, etc.) + * + * Attribute: `sentry.origin` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "auto.http.otel.fastify" + */ + public const SENTRY_ORIGIN = 'sentry.origin'; + + /** + * The sdk platform that generated the event. + * + * Attribute: `sentry.platform` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "php" + */ + public const SENTRY_PLATFORM = 'sentry.platform'; + + /** + * The id of the sentry profile. + * + * Attribute: `sentry.profile_id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: profile_id + * + * @example "123e4567e89b12d3a456426614174000" + */ + public const SENTRY_PROFILE_ID = 'sentry.profile_id'; + + /** + * The sentry release. + * + * Attribute: `sentry.release` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: service.version, release + * + * @example "7.0.0" + */ + public const SENTRY_RELEASE = 'sentry.release'; + + /** + * The id of the sentry replay. + * + * Attribute: `sentry.replay_id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: replay_id + * + * @example "123e4567e89b12d3a456426614174000" + */ + public const SENTRY_REPLAY_ID = 'sentry.replay_id'; + + /** + * 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. + * + * Attribute: `sentry.sdk.integrations` + * + * Type: array + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example ["InboundFilters", "FunctionToString", "BrowserApiErrors", "Breadcrumbs"] + */ + public const SENTRY_SDK_INTEGRATIONS = 'sentry.sdk.integrations'; + + /** + * The sentry sdk name. + * + * Attribute: `sentry.sdk.name` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "@sentry/react" + */ + public const SENTRY_SDK_NAME = 'sentry.sdk.name'; + + /** + * The sentry sdk version. + * + * Attribute: `sentry.sdk.version` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "7.0.0" + */ + public const SENTRY_SDK_VERSION = 'sentry.sdk.version'; + + /** + * The segment ID of a span + * + * Attribute: `sentry.segment.id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: sentry.segment_id + * + * @example "051581bf3cb55c13" + */ + public const SENTRY_SEGMENT_ID = 'sentry.segment.id'; + + /** + * The segment name of a span + * + * Attribute: `sentry.segment.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "GET /user" + */ + public const SENTRY_SEGMENT_NAME = 'sentry.segment.name'; + + /** + * The segment ID of a span + * + * Attribute: `sentry.segment_id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: sentry.segment.id + * + * @deprecated Use sentry.segment.id instead + * + * @example "051581bf3cb55c13" + */ + public const _SENTRY_SEGMENT_ID = 'sentry.segment_id'; + + /** + * Rate at which a span was sampled in Relay. + * + * Attribute: `sentry.server_sample_rate` + * + * Type: float + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example 0.5 + */ + public const SENTRY_SERVER_SAMPLE_RATE = 'sentry.server_sample_rate'; + + /** + * The source of a span, also referred to as transaction source. + * + * Attribute: `sentry.span.source` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "route" + */ + public const SENTRY_SPAN_SOURCE = 'sentry.span.source'; + + /** + * 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. + * + * Attribute: `sentry.trace.parent_span_id` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "b0e6f15b45c36b12" + */ + public const SENTRY_TRACE_PARENT_SPAN_ID = 'sentry.trace.parent_span_id'; + + /** + * The sentry transaction (segment name). + * + * Attribute: `sentry.transaction` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * Aliases: transaction + * + * @example "GET /" + */ + public const SENTRY_TRANSACTION = 'sentry.transaction'; + + /** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * Attribute: `server.address` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: http.server_name, net.host.name, http.host + * + * @example "example.com" + */ + public const SERVER_ADDRESS = 'server.address'; + + /** + * Server port number. + * + * Attribute: `server.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * Aliases: net.host.port + * + * @example 1337 + */ + public const SERVER_PORT = 'server.port'; + + /** + * Logical name of the service. + * + * Attribute: `service.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "omegastar" + */ + public const SERVICE_NAME = 'service.name'; + + /** + * The version string of the service API or implementation. The format is not defined by these conventions. + * + * Attribute: `service.version` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: sentry.release + * + * @example "5.0.0" + */ + public const SERVICE_VERSION = 'service.version'; + + /** + * Current “managed” thread ID. + * + * Attribute: `thread.id` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 56 + */ + public const THREAD_ID = 'thread.id'; + + /** + * Current thread name. + * + * Attribute: `thread.name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "main" + */ + public const THREAD_NAME = 'thread.name'; + + /** + * The sentry transaction (segment name). + * + * Attribute: `transaction` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: sentry.transaction + * + * @deprecated Use sentry.transaction instead + * + * @example "GET /" + */ + public const TRANSACTION = 'transaction'; + + /** + * More granular type of the operation happening. + * + * Attribute: `type` + * + * Type: string + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example "fetch" + */ + public const TYPE = 'type'; + + /** + * The name of the associated component. + * + * Attribute: `ui.component_name` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "HomeButton" + */ + public const UI_COMPONENT_NAME = 'ui.component_name'; + + /** + * Whether the span execution contributed to the TTFD (time to fully drawn) metric. + * + * Attribute: `ui.contributes_to_ttfd` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example true + */ + public const UI_CONTRIBUTES_TO_TTFD = 'ui.contributes_to_ttfd'; + + /** + * Whether the span execution contributed to the TTID (time to initial display) metric. + * + * Attribute: `ui.contributes_to_ttid` + * + * Type: bool + * + * Contains PII: false + * + * Defined in OTEL: No + * + * @example true + */ + public const UI_CONTRIBUTES_TO_TTID = 'ui.contributes_to_ttid'; + + /** + * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name. + * + * Attribute: `url.domain` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "example.com" + */ + public const URL_DOMAIN = 'url.domain'; + + /** + * The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does. + * + * Attribute: `url.fragment` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "details" + */ + public const URL_FRAGMENT = 'url.fragment'; + + /** + * The URL of the resource that was fetched. + * + * Attribute: `url.full` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: http.url, url + * + * @example "https://example.com/test?foo=bar#buzz" + */ + public const URL_FULL = 'url.full'; + + /** + * The URI path component. + * + * Attribute: `url.path` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * @example "/foo" + */ + public const URL_PATH = 'url.path'; + + /** + * Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. + * + * Attribute: `url.path.parameter.` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Has Dynamic Suffix: true + * + * Aliases: params. + * + * @example "url.path.parameter.id='123'" + */ + public const URL_PATH_PARAMETER_KEY = 'url.path.parameter.'; + + /** + * Server port number. + * + * Attribute: `url.port` + * + * Type: int + * + * Contains PII: false + * + * Defined in OTEL: Yes + * + * @example 1337 + */ + public const URL_PORT = 'url.port'; + + /** + * The query string present in the URL. Note that this does not contain the leading ? character, while the `http.query` attribute does. + * + * Attribute: `url.query` + * + * Type: string + * + * Contains PII: maybe - Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information. + * + * Defined in OTEL: Yes + * + * @example "foo=bar&bar=baz" + */ + public const URL_QUERY = 'url.query'; + + /** + * The URI scheme component identifying the used protocol. + * + * Attribute: `url.scheme` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: http.scheme + * + * @example "https" + */ + public const URL_SCHEME = 'url.scheme'; + + /** + * The low-cardinality template of an absolute path reference. + * + * Attribute: `url.template` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: http.route + * + * @example "/users/:id" + */ + public const URL_TEMPLATE = 'url.template'; + + /** + * The URL of the resource that was fetched. + * + * Attribute: `url` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * Aliases: url.full, http.url + * + * @deprecated Use url.full instead + * + * @example "https://example.com/test?foo=bar#buzz" + */ + public const URL = 'url'; + + /** + * User email address. + * + * Attribute: `user.email` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * @example "test@example.com" + */ + public const USER_EMAIL = 'user.email'; + + /** + * User's full name. + * + * Attribute: `user.full_name` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * @example "John Smith" + */ + public const USER_FULL_NAME = 'user.full_name'; + + /** + * Human readable city name. + * + * Attribute: `user.geo.city` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "Toronto" + */ + public const USER_GEO_CITY = 'user.geo.city'; + + /** + * Two-letter country code (ISO 3166-1 alpha-2). + * + * Attribute: `user.geo.country_code` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "CA" + */ + public const USER_GEO_COUNTRY_CODE = 'user.geo.country_code'; + + /** + * Human readable region name or code. + * + * Attribute: `user.geo.region` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "Canada" + */ + public const USER_GEO_REGION = 'user.geo.region'; + + /** + * Human readable subdivision name. + * + * Attribute: `user.geo.subdivision` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: No + * + * @example "Ontario" + */ + public const USER_GEO_SUBDIVISION = 'user.geo.subdivision'; + + /** + * Unique user hash to correlate information for a user in anonymized form. + * + * Attribute: `user.hash` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * @example "8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d" + */ + public const USER_HASH = 'user.hash'; + + /** + * Unique identifier of the user. + * + * Attribute: `user.id` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * @example "S-1-5-21-202424912787-2692429404-2351956786-1000" + */ + public const USER_ID = 'user.id'; + + /** + * The IP address of the user. + * + * Attribute: `user.ip_address` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: No + * + * @example "192.168.1.1" + */ + public const USER_IP_ADDRESS = 'user.ip_address'; + + /** + * Short name or login/username of the user. + * + * Attribute: `user.name` + * + * Type: string + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * @example "j.smith" + */ + public const USER_NAME = 'user.name'; + + /** + * Array of user roles at the time of the event. + * + * Attribute: `user.roles` + * + * Type: array + * + * Contains PII: true + * + * Defined in OTEL: Yes + * + * @example ["admin", "editor"] + */ + public const USER_ROLES = 'user.roles'; + + /** + * Value of the HTTP User-Agent header sent by the client. + * + * Attribute: `user_agent.original` + * + * Type: string + * + * Contains PII: maybe + * + * Defined in OTEL: Yes + * + * Aliases: http.user_agent + * + * @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" + */ + public const USER_AGENT_ORIGINAL = 'user_agent.original'; + +} diff --git a/php/src/Op.php b/php/src/Op.php new file mode 100644 index 0000000..0c45cd3 --- /dev/null +++ b/php/src/Op.php @@ -0,0 +1,201 @@ + where is dynamic""" - + example: Optional[AttributeValue] = None """An example value of the attribute""" - + deprecation: Optional[DeprecationInfo] = None """If an attribute was deprecated, and what it was replaced with""" - + aliases: Optional[List[str]] = None """If there are attributes that alias to this attribute""" - + sdks: Optional[List[str]] = None """If an attribute is SDK specific, list the SDKs that use this attribute. This is not an exhaustive list, there might be SDKs that send this attribute that are is not documented here.""" - class _AttributeNamesMeta(type): _deprecated_names = { "AI_COMPLETION_TOKENS_USED", @@ -172,7 +161,6 @@ def __getattribute__(cls, name: str): ) return super().__getattribute__(name) - class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """Contains all attribute names as class attributes with their documentation.""" @@ -187,9 +175,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/ai/ai__completion_tokens__used.json - AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = ( - "ai.completion_tokens.used" - ) + AI_COMPLETION_TOKENS_USED: Literal["ai.completion_tokens.used"] = "ai.completion_tokens.used" """The number of tokens used to respond to the message. Type: int @@ -597,9 +583,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__invoker_type.json - BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = ( - "browser.script.invoker_type" - ) + BROWSER_SCRIPT_INVOKER_TYPE: Literal["browser.script.invoker_type"] = "browser.script.invoker_type" """Browser script entry point type. Type: str @@ -609,9 +593,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/browser/browser__script__source_char_position.json - BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal[ - "browser.script.source_char_position" - ] = "browser.script.source_char_position" + BROWSER_SCRIPT_SOURCE_CHAR_POSITION: Literal["browser.script.source_char_position"] = "browser.script.source_char_position" """A number representing the script character position of the script. Type: int @@ -723,9 +705,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_read.json - CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = ( - "cloudflare.d1.rows_read" - ) + CLOUDFLARE_D1_ROWS_READ: Literal["cloudflare.d1.rows_read"] = "cloudflare.d1.rows_read" """The number of rows read in a Cloudflare D1 operation. Type: int @@ -735,9 +715,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/cloudflare/cloudflare__d1__rows_written.json - CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = ( - "cloudflare.d1.rows_written" - ) + CLOUDFLARE_D1_ROWS_WRITTEN: Literal["cloudflare.d1.rows_written"] = "cloudflare.d1.rows_written" """The number of rows written in a Cloudflare D1 operation. Type: int @@ -883,9 +861,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/db/db__query__parameter__[key].json - DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = ( - "db.query.parameter." - ) + DB_QUERY_PARAMETER_KEY: Literal["db.query.parameter."] = "db.query.parameter." """A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value. Type: str @@ -1217,9 +1193,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__assistant__message.json - GEN_AI_ASSISTANT_MESSAGE: Literal["gen_ai.assistant.message"] = ( - "gen_ai.assistant.message" - ) + GEN_AI_ASSISTANT_MESSAGE: Literal["gen_ai.assistant.message"] = "gen_ai.assistant.message" """The assistant message passed to the model. Type: str @@ -1239,9 +1213,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__input_tokens.json - GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = ( - "gen_ai.cost.input_tokens" - ) + GEN_AI_COST_INPUT_TOKENS: Literal["gen_ai.cost.input_tokens"] = "gen_ai.cost.input_tokens" """The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens). Type: float @@ -1251,9 +1223,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__output_tokens.json - GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = ( - "gen_ai.cost.output_tokens" - ) + GEN_AI_COST_OUTPUT_TOKENS: Literal["gen_ai.cost.output_tokens"] = "gen_ai.cost.output_tokens" """The cost of tokens used for creating the AI output in USD (without reasoning tokens). Type: float @@ -1263,9 +1233,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__cost__total_tokens.json - GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = ( - "gen_ai.cost.total_tokens" - ) + GEN_AI_COST_TOTAL_TOKENS: Literal["gen_ai.cost.total_tokens"] = "gen_ai.cost.total_tokens" """The total cost for the tokens used. Type: float @@ -1317,9 +1285,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__available_tools.json - GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = ( - "gen_ai.request.available_tools" - ) + GEN_AI_REQUEST_AVAILABLE_TOOLS: Literal["gen_ai.request.available_tools"] = "gen_ai.request.available_tools" """The available tools for the model. It has to be a stringified version of an array of objects. Type: str @@ -1329,9 +1295,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__frequency_penalty.json - GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = ( - "gen_ai.request.frequency_penalty" - ) + GEN_AI_REQUEST_FREQUENCY_PENALTY: Literal["gen_ai.request.frequency_penalty"] = "gen_ai.request.frequency_penalty" """Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation. Type: float @@ -1342,9 +1306,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__max_tokens.json - GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = ( - "gen_ai.request.max_tokens" - ) + GEN_AI_REQUEST_MAX_TOKENS: Literal["gen_ai.request.max_tokens"] = "gen_ai.request.max_tokens" """The maximum number of tokens to generate in the response. Type: int @@ -1354,9 +1316,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__messages.json - GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = ( - "gen_ai.request.messages" - ) + GEN_AI_REQUEST_MESSAGES: Literal["gen_ai.request.messages"] = "gen_ai.request.messages" """The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`. Type: str @@ -1377,9 +1337,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__presence_penalty.json - GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = ( - "gen_ai.request.presence_penalty" - ) + GEN_AI_REQUEST_PRESENCE_PENALTY: Literal["gen_ai.request.presence_penalty"] = "gen_ai.request.presence_penalty" """Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies. Type: float @@ -1401,9 +1359,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__request__temperature.json - GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = ( - "gen_ai.request.temperature" - ) + GEN_AI_REQUEST_TEMPERATURE: Literal["gen_ai.request.temperature"] = "gen_ai.request.temperature" """For an AI model call, the temperature parameter. Temperature essentially means how random the output will be. Type: float @@ -1436,9 +1392,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__finish_reasons.json - GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = ( - "gen_ai.response.finish_reasons" - ) + GEN_AI_RESPONSE_FINISH_REASONS: Literal["gen_ai.response.finish_reasons"] = "gen_ai.response.finish_reasons" """The reason why the model stopped generating. Type: str @@ -1471,9 +1425,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__streaming.json - GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = ( - "gen_ai.response.streaming" - ) + GEN_AI_RESPONSE_STREAMING: Literal["gen_ai.response.streaming"] = "gen_ai.response.streaming" """Whether or not the AI model call's response was streamed back asynchronously Type: bool @@ -1494,9 +1446,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tokens_per_second.json - GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = ( - "gen_ai.response.tokens_per_second" - ) + GEN_AI_RESPONSE_TOKENS_PER_SECOND: Literal["gen_ai.response.tokens_per_second"] = "gen_ai.response.tokens_per_second" """The total output tokens per seconds throughput Type: float @@ -1506,9 +1456,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__response__tool_calls.json - GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = ( - "gen_ai.response.tool_calls" - ) + GEN_AI_RESPONSE_TOOL_CALLS: Literal["gen_ai.response.tool_calls"] = "gen_ai.response.tool_calls" """The tool calls in the model's response. It has to be a stringified version of an array of objects. Type: str @@ -1539,9 +1487,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__tool__description.json - GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = ( - "gen_ai.tool.description" - ) + GEN_AI_TOOL_DESCRIPTION: Literal["gen_ai.tool.description"] = "gen_ai.tool.description" """The description of the tool being used. Type: str @@ -1602,9 +1548,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__completion_tokens.json - GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = ( - "gen_ai.usage.completion_tokens" - ) + GEN_AI_USAGE_COMPLETION_TOKENS: Literal["gen_ai.usage.completion_tokens"] = "gen_ai.usage.completion_tokens" """The number of tokens used in the GenAI response (completion). Type: int @@ -1616,9 +1560,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens.json - GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = ( - "gen_ai.usage.input_tokens" - ) + GEN_AI_USAGE_INPUT_TOKENS: Literal["gen_ai.usage.input_tokens"] = "gen_ai.usage.input_tokens" """The number of tokens used to process the AI input (prompt) without cached input tokens. Type: int @@ -1629,9 +1571,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__input_tokens__cached.json - GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = ( - "gen_ai.usage.input_tokens.cached" - ) + GEN_AI_USAGE_INPUT_TOKENS_CACHED: Literal["gen_ai.usage.input_tokens.cached"] = "gen_ai.usage.input_tokens.cached" """The number of cached tokens used to process the AI input (prompt). Type: int @@ -1641,9 +1581,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens.json - GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = ( - "gen_ai.usage.output_tokens" - ) + GEN_AI_USAGE_OUTPUT_TOKENS: Literal["gen_ai.usage.output_tokens"] = "gen_ai.usage.output_tokens" """The number of tokens used for creating the AI output (without reasoning tokens). Type: int @@ -1654,9 +1592,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__output_tokens__reasoning.json - GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal[ - "gen_ai.usage.output_tokens.reasoning" - ] = "gen_ai.usage.output_tokens.reasoning" + GEN_AI_USAGE_OUTPUT_TOKENS_REASONING: Literal["gen_ai.usage.output_tokens.reasoning"] = "gen_ai.usage.output_tokens.reasoning" """The number of tokens used for reasoning to create the AI output. Type: int @@ -1666,9 +1602,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__prompt_tokens.json - GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = ( - "gen_ai.usage.prompt_tokens" - ) + GEN_AI_USAGE_PROMPT_TOKENS: Literal["gen_ai.usage.prompt_tokens"] = "gen_ai.usage.prompt_tokens" """The number of tokens used in the GenAI input (prompt). Type: int @@ -1680,9 +1614,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__total_cost.json - GEN_AI_USAGE_TOTAL_COST: Literal["gen_ai.usage.total_cost"] = ( - "gen_ai.usage.total_cost" - ) + GEN_AI_USAGE_TOTAL_COST: Literal["gen_ai.usage.total_cost"] = "gen_ai.usage.total_cost" """The total cost for the tokens used. Type: float @@ -1693,9 +1625,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/gen_ai/gen_ai__usage__total_tokens.json - GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = ( - "gen_ai.usage.total_tokens" - ) + GEN_AI_USAGE_TOTAL_TOKENS: Literal["gen_ai.usage.total_tokens"] = "gen_ai.usage.total_tokens" """The total number of tokens used to process the prompt. (input tokens plus output todkens) Type: int @@ -1748,9 +1678,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__decoded_response_content_length.json - HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal[ - "http.decoded_response_content_length" - ] = "http.decoded_response_content_length" + HTTP_DECODED_RESPONSE_CONTENT_LENGTH: Literal["http.decoded_response_content_length"] = "http.decoded_response_content_length" """The decoded body size of the response (in bytes). Type: int @@ -1816,9 +1744,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connect_start.json - HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = ( - "http.request.connect_start" - ) + HTTP_REQUEST_CONNECT_START: Literal["http.request.connect_start"] = "http.request.connect_start" """The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource. Type: float @@ -1828,9 +1754,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__connection_end.json - HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = ( - "http.request.connection_end" - ) + HTTP_REQUEST_CONNECTION_END: Literal["http.request.connection_end"] = "http.request.connection_end" """The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication. Type: float @@ -1840,9 +1764,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_end.json - HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = ( - "http.request.domain_lookup_end" - ) + HTTP_REQUEST_DOMAIN_LOOKUP_END: Literal["http.request.domain_lookup_end"] = "http.request.domain_lookup_end" """The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource. Type: float @@ -1852,9 +1774,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__domain_lookup_start.json - HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = ( - "http.request.domain_lookup_start" - ) + HTTP_REQUEST_DOMAIN_LOOKUP_START: Literal["http.request.domain_lookup_start"] = "http.request.domain_lookup_start" """The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource. Type: float @@ -1864,9 +1784,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__fetch_start.json - HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = ( - "http.request.fetch_start" - ) + HTTP_REQUEST_FETCH_START: Literal["http.request.fetch_start"] = "http.request.fetch_start" """The UNIX timestamp representing the time immediately before the browser starts to fetch the resource. Type: float @@ -1876,9 +1794,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__header__[key].json - HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = ( - "http.request.header." - ) + HTTP_REQUEST_HEADER_KEY: Literal["http.request.header."] = "http.request.header." """HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -1900,9 +1816,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_end.json - HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = ( - "http.request.redirect_end" - ) + HTTP_REQUEST_REDIRECT_END: Literal["http.request.redirect_end"] = "http.request.redirect_end" """The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect Type: float @@ -1912,9 +1826,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__redirect_start.json - HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = ( - "http.request.redirect_start" - ) + HTTP_REQUEST_REDIRECT_START: Literal["http.request.redirect_start"] = "http.request.redirect_start" """The UNIX timestamp representing the start time of the fetch which that initiates the redirect. Type: float @@ -1924,9 +1836,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__request_start.json - HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = ( - "http.request.request_start" - ) + HTTP_REQUEST_REQUEST_START: Literal["http.request.request_start"] = "http.request.request_start" """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -1936,9 +1846,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__resend_count.json - HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = ( - "http.request.resend_count" - ) + HTTP_REQUEST_RESEND_COUNT: Literal["http.request.resend_count"] = "http.request.resend_count" """The ordinal number of request resending attempt (for any reason, including redirects). Type: int @@ -1948,9 +1856,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_end.json - HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = ( - "http.request.response_end" - ) + HTTP_REQUEST_RESPONSE_END: Literal["http.request.response_end"] = "http.request.response_end" """The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first. Type: float @@ -1960,9 +1866,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__response_start.json - HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = ( - "http.request.response_start" - ) + HTTP_REQUEST_RESPONSE_START: Literal["http.request.response_start"] = "http.request.response_start" """The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request. Type: float @@ -1972,9 +1876,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__secure_connection_start.json - HTTP_REQUEST_SECURE_CONNECTION_START: Literal[ - "http.request.secure_connection_start" - ] = "http.request.secure_connection_start" + HTTP_REQUEST_SECURE_CONNECTION_START: Literal["http.request.secure_connection_start"] = "http.request.secure_connection_start" """The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero. Type: float @@ -1984,9 +1886,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__time_to_first_byte.json - HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = ( - "http.request.time_to_first_byte" - ) + HTTP_REQUEST_TIME_TO_FIRST_BYTE: Literal["http.request.time_to_first_byte"] = "http.request.time_to_first_byte" """The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests Type: float @@ -1996,9 +1896,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__request__worker_start.json - HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = ( - "http.request.worker_start" - ) + HTTP_REQUEST_WORKER_START: Literal["http.request.worker_start"] = "http.request.worker_start" """The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running. Type: float @@ -2008,9 +1906,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__body__size.json - HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = ( - "http.response.body.size" - ) + HTTP_RESPONSE_BODY_SIZE: Literal["http.response.body.size"] = "http.response.body.size" """The encoded body size of the response (in bytes). Type: int @@ -2021,9 +1917,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__[key].json - HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = ( - "http.response.header." - ) + HTTP_RESPONSE_HEADER_KEY: Literal["http.response.header."] = "http.response.header." """HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values. Type: List[str] @@ -2034,9 +1928,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__header__content-length.json - HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal[ - "http.response.header.content-length" - ] = "http.response.header.content-length" + HTTP_RESPONSE_HEADER_CONTENT_LENGTH: Literal["http.response.header.content-length"] = "http.response.header.content-length" """The size of the message body sent to the recipient (in bytes) Type: str @@ -2058,9 +1950,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response__status_code.json - HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = ( - "http.response.status_code" - ) + HTTP_RESPONSE_STATUS_CODE: Literal["http.response.status_code"] = "http.response.status_code" """The status code of the HTTP response. Type: int @@ -2071,9 +1961,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_content_length.json - HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = ( - "http.response_content_length" - ) + HTTP_RESPONSE_CONTENT_LENGTH: Literal["http.response_content_length"] = "http.response_content_length" """The encoded body size of the response (in bytes). Type: int @@ -2085,9 +1973,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/http/http__response_transfer_size.json - HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = ( - "http.response_transfer_size" - ) + HTTP_RESPONSE_TRANSFER_SIZE: Literal["http.response_transfer_size"] = "http.response_transfer_size" """The transfer size of the response (in bytes). Type: int @@ -2301,9 +2187,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__connection.json - MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = ( - "messaging.destination.connection" - ) + MESSAGING_DESTINATION_CONNECTION: Literal["messaging.destination.connection"] = "messaging.destination.connection" """The message destination connection. Type: str @@ -2313,9 +2197,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__destination__name.json - MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = ( - "messaging.destination.name" - ) + MESSAGING_DESTINATION_NAME: Literal["messaging.destination.name"] = "messaging.destination.name" """The message destination name. Type: str @@ -2325,9 +2207,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__body__size.json - MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = ( - "messaging.message.body.size" - ) + MESSAGING_MESSAGE_BODY_SIZE: Literal["messaging.message.body.size"] = "messaging.message.body.size" """The size of the message body in bytes. Type: int @@ -2337,9 +2217,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__envelope__size.json - MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = ( - "messaging.message.envelope.size" - ) + MESSAGING_MESSAGE_ENVELOPE_SIZE: Literal["messaging.message.envelope.size"] = "messaging.message.envelope.size" """The size of the message body and metadata in bytes. Type: int @@ -2359,9 +2237,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__receive__latency.json - MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = ( - "messaging.message.receive.latency" - ) + MESSAGING_MESSAGE_RECEIVE_LATENCY: Literal["messaging.message.receive.latency"] = "messaging.message.receive.latency" """The latency between when the message was published and received. Type: int @@ -2371,9 +2247,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__message__retry__count.json - MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = ( - "messaging.message.retry.count" - ) + MESSAGING_MESSAGE_RETRY_COUNT: Literal["messaging.message.retry.count"] = "messaging.message.retry.count" """The amount of attempts to send the message. Type: int @@ -2383,9 +2257,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/messaging/messaging__operation__type.json - MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = ( - "messaging.operation.type" - ) + MESSAGING_OPERATION_TYPE: Literal["messaging.operation.type"] = "messaging.operation.type" """A string identifying the type of the messaging operation Type: str @@ -2706,9 +2578,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/network/network__protocol__version.json - NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = ( - "network.protocol.version" - ) + NETWORK_PROTOCOL_VERSION: Literal["network.protocol.version"] = "network.protocol.version" """The actual version of the protocol used for network communication. Type: str @@ -2820,9 +2690,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/otel/otel__status_description.json - OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = ( - "otel.status_description" - ) + OTEL_STATUS_DESCRIPTION: Literal["otel.status_description"] = "otel.status_description" """Description of the Status if it has a value, otherwise not set. Type: str @@ -2854,9 +2722,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__executable__name.json - PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = ( - "process.executable.name" - ) + PROCESS_EXECUTABLE_NAME: Literal["process.executable.name"] = "process.executable.name" """The name of the executable that started the process. Type: str @@ -2876,9 +2742,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__description.json - PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = ( - "process.runtime.description" - ) + PROCESS_RUNTIME_DESCRIPTION: Literal["process.runtime.description"] = "process.runtime.description" """An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context. Type: str @@ -2898,9 +2762,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/process/process__runtime__version.json - PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = ( - "process.runtime.version" - ) + PROCESS_RUNTIME_VERSION: Literal["process.runtime.version"] = "process.runtime.version" """The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context. Type: str @@ -2946,9 +2808,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/remix/remix__action_form_data__[key].json - REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = ( - "remix.action_form_data." - ) + REMIX_ACTION_FORM_DATA_KEY: Literal["remix.action_form_data."] = "remix.action_form_data." """Remix form data, being the form data key, the value being the form data value. Type: str @@ -2971,9 +2831,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/resource/resource__render_blocking_status.json - RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = ( - "resource.render_blocking_status" - ) + RESOURCE_RENDER_BLOCKING_STATUS: Literal["resource.render_blocking_status"] = "resource.render_blocking_status" """The render blocking status of the resource. Type: str @@ -3015,9 +2873,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__environment.json - SENTRY_INTERNAL_DSC_ENVIRONMENT: Literal["sentry._internal.dsc.environment"] = ( - "sentry._internal.dsc.environment" - ) + SENTRY_INTERNAL_DSC_ENVIRONMENT: Literal["sentry._internal.dsc.environment"] = "sentry._internal.dsc.environment" """The environment from the dynamic sampling context. Type: str @@ -3027,9 +2883,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__org_id.json - SENTRY_INTERNAL_DSC_ORG_ID: Literal["sentry._internal.dsc.org_id"] = ( - "sentry._internal.dsc.org_id" - ) + SENTRY_INTERNAL_DSC_ORG_ID: Literal["sentry._internal.dsc.org_id"] = "sentry._internal.dsc.org_id" """The organization ID from the dynamic sampling context. Type: str @@ -3039,9 +2893,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__public_key.json - SENTRY_INTERNAL_DSC_PUBLIC_KEY: Literal["sentry._internal.dsc.public_key"] = ( - "sentry._internal.dsc.public_key" - ) + SENTRY_INTERNAL_DSC_PUBLIC_KEY: Literal["sentry._internal.dsc.public_key"] = "sentry._internal.dsc.public_key" """The public key from the dynamic sampling context. Type: str @@ -3051,9 +2903,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__release.json - SENTRY_INTERNAL_DSC_RELEASE: Literal["sentry._internal.dsc.release"] = ( - "sentry._internal.dsc.release" - ) + SENTRY_INTERNAL_DSC_RELEASE: Literal["sentry._internal.dsc.release"] = "sentry._internal.dsc.release" """The release identifier from the dynamic sampling context. Type: str @@ -3063,9 +2913,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__sample_rand.json - SENTRY_INTERNAL_DSC_SAMPLE_RAND: Literal["sentry._internal.dsc.sample_rand"] = ( - "sentry._internal.dsc.sample_rand" - ) + SENTRY_INTERNAL_DSC_SAMPLE_RAND: Literal["sentry._internal.dsc.sample_rand"] = "sentry._internal.dsc.sample_rand" """The random sampling value from the dynamic sampling context. Type: str @@ -3075,9 +2923,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__sample_rate.json - SENTRY_INTERNAL_DSC_SAMPLE_RATE: Literal["sentry._internal.dsc.sample_rate"] = ( - "sentry._internal.dsc.sample_rate" - ) + SENTRY_INTERNAL_DSC_SAMPLE_RATE: Literal["sentry._internal.dsc.sample_rate"] = "sentry._internal.dsc.sample_rate" """The sample rate from the dynamic sampling context. Type: str @@ -3087,9 +2933,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__sampled.json - SENTRY_INTERNAL_DSC_SAMPLED: Literal["sentry._internal.dsc.sampled"] = ( - "sentry._internal.dsc.sampled" - ) + SENTRY_INTERNAL_DSC_SAMPLED: Literal["sentry._internal.dsc.sampled"] = "sentry._internal.dsc.sampled" """Whether the event was sampled according to the dynamic sampling context. Type: bool @@ -3099,9 +2943,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__trace_id.json - SENTRY_INTERNAL_DSC_TRACE_ID: Literal["sentry._internal.dsc.trace_id"] = ( - "sentry._internal.dsc.trace_id" - ) + SENTRY_INTERNAL_DSC_TRACE_ID: Literal["sentry._internal.dsc.trace_id"] = "sentry._internal.dsc.trace_id" """The trace ID from the dynamic sampling context. Type: str @@ -3111,9 +2953,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__dsc__transaction.json - SENTRY_INTERNAL_DSC_TRANSACTION: Literal["sentry._internal.dsc.transaction"] = ( - "sentry._internal.dsc.transaction" - ) + SENTRY_INTERNAL_DSC_TRANSACTION: Literal["sentry._internal.dsc.transaction"] = "sentry._internal.dsc.transaction" """The transaction name from the dynamic sampling context. Type: str @@ -3123,9 +2963,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__observed_timestamp_nanos.json - SENTRY_INTERNAL_OBSERVED_TIMESTAMP_NANOS: Literal[ - "sentry._internal.observed_timestamp_nanos" - ] = "sentry._internal.observed_timestamp_nanos" + SENTRY_INTERNAL_OBSERVED_TIMESTAMP_NANOS: Literal["sentry._internal.observed_timestamp_nanos"] = "sentry._internal.observed_timestamp_nanos" """The timestamp at which an envelope was received by Relay, in nanoseconds. Type: str @@ -3136,9 +2974,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry___internal__replay_is_buffering.json - SENTRY_INTERNAL_REPLAY_IS_BUFFERING: Literal[ - "sentry._internal.replay_is_buffering" - ] = "sentry._internal.replay_is_buffering" + SENTRY_INTERNAL_REPLAY_IS_BUFFERING: Literal["sentry._internal.replay_is_buffering"] = "sentry._internal.replay_is_buffering" """A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate). Type: bool @@ -3172,9 +3008,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__cancellation_reason.json - SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = ( - "sentry.cancellation_reason" - ) + SENTRY_CANCELLATION_REASON: Literal["sentry.cancellation_reason"] = "sentry.cancellation_reason" """The reason why a span ended early. Type: str @@ -3184,9 +3018,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__client_sample_rate.json - SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = ( - "sentry.client_sample_rate" - ) + SENTRY_CLIENT_SAMPLE_RATE: Literal["sentry.client_sample_rate"] = "sentry.client_sample_rate" """Rate at which a span was sampled in the SDK. Type: float @@ -3247,9 +3079,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__idle_span_finish_reason.json - SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = ( - "sentry.idle_span_finish_reason" - ) + SENTRY_IDLE_SPAN_FINISH_REASON: Literal["sentry.idle_span_finish_reason"] = "sentry.idle_span_finish_reason" """The reason why an idle span ended early. Type: str @@ -3259,9 +3089,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__parameter__[key].json - SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = ( - "sentry.message.parameter." - ) + SENTRY_MESSAGE_PARAMETER_KEY: Literal["sentry.message.parameter."] = "sentry.message.parameter." """A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc) Type: str @@ -3271,9 +3099,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__message__template.json - SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = ( - "sentry.message.template" - ) + SENTRY_MESSAGE_TEMPLATE: Literal["sentry.message.template"] = "sentry.message.template" """The parameterized template string. Type: str @@ -3294,9 +3120,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__route.json - SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = ( - "sentry.nextjs.ssr.function.route" - ) + SENTRY_NEXTJS_SSR_FUNCTION_ROUTE: Literal["sentry.nextjs.ssr.function.route"] = "sentry.nextjs.ssr.function.route" """A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known. Type: str @@ -3306,9 +3130,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__nextjs__ssr__function__type.json - SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = ( - "sentry.nextjs.ssr.function.type" - ) + SENTRY_NEXTJS_SSR_FUNCTION_TYPE: Literal["sentry.nextjs.ssr.function.type"] = "sentry.nextjs.ssr.function.type" """A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions. Type: str @@ -3318,9 +3140,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__observed_timestamp_nanos.json - SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = ( - "sentry.observed_timestamp_nanos" - ) + SENTRY_OBSERVED_TIMESTAMP_NANOS: Literal["sentry.observed_timestamp_nanos"] = "sentry.observed_timestamp_nanos" """The timestamp at which an envelope was received by Relay, in nanoseconds. Type: str @@ -3395,9 +3215,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__sdk__integrations.json - SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = ( - "sentry.sdk.integrations" - ) + SENTRY_SDK_INTEGRATIONS: Literal["sentry.sdk.integrations"] = "sentry.sdk.integrations" """A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations. Type: List[str] @@ -3460,9 +3278,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__server_sample_rate.json - SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = ( - "sentry.server_sample_rate" - ) + SENTRY_SERVER_SAMPLE_RATE: Literal["sentry.server_sample_rate"] = "sentry.server_sample_rate" """Rate at which a span was sampled in Relay. Type: float @@ -3482,9 +3298,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/sentry/sentry__trace__parent_span_id.json - SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = ( - "sentry.trace.parent_span_id" - ) + SENTRY_TRACE_PARENT_SPAN_ID: Literal["sentry.trace.parent_span_id"] = "sentry.trace.parent_span_id" """The span id of the span that was active when the log was collected. This should not be set if there was no active span. Type: str @@ -3661,9 +3475,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): """ # Path: model/attributes/url/url__path__parameter__[key].json - URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = ( - "url.path.parameter." - ) + URL_PATH_PARAMETER_KEY: Literal["url.path.parameter."] = "url.path.parameter." """Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. Type: str @@ -3854,296 +3666,408 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "ai.citations": AttributeMetadata( brief="References or sources cited by the AI model in its response.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Citation 1", "Citation 2"], ), "ai.completion_tokens.used": AttributeMetadata( brief="The number of tokens used to respond to the message.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=10, - deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), - aliases=["gen_ai.usage.output_tokens", "gen_ai.usage.completion_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.output_tokens" + ), + aliases=["gen_ai.usage.output_tokens","gen_ai.usage.completion_tokens"], sdks=["python"], ), "ai.documents": AttributeMetadata( brief="Documents or content chunks used as context for the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["document1.txt", "document2.pdf"], ), "ai.finish_reason": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="COMPLETE", - deprecation=DeprecationInfo(replacement="gen_ai.response.finish_reason"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.finish_reason" + ), aliases=["gen_ai.response.finish_reasons"], ), "ai.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo(replacement="gen_ai.request.frequency_penalty"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.frequency_penalty" + ), aliases=["gen_ai.request.frequency_penalty"], ), "ai.function_call": AttributeMetadata( brief="For an AI model call, the function that was called. This is deprecated for OpenAI, and replaced by tool_calls", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="function_name", - deprecation=DeprecationInfo(replacement="gen_ai.tool.name"), + deprecation=DeprecationInfo( + replacement="gen_ai.tool.name" + ), aliases=["gen_ai.tool.name"], ), "ai.generation_id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="gen_123abc", - deprecation=DeprecationInfo(replacement="gen_ai.response.id"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.id" + ), aliases=["gen_ai.response.id"], ), "ai.input_messages": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"role": "user", "message": "hello"}]', - deprecation=DeprecationInfo(replacement="gen_ai.request.messages"), + example="[{\"role\": \"user\", \"message\": \"hello\"}]", + deprecation=DeprecationInfo( + replacement="gen_ai.request.messages" + ), aliases=["gen_ai.request.messages"], sdks=["python"], ), "ai.is_search_required": AttributeMetadata( brief="Boolean indicating if the model needs to perform a search.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=False, ), "ai.metadata": AttributeMetadata( brief="Extra metadata passed to an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"user_id": 123, "session_id": "abc123"}', + example="{\"user_id\": 123, \"session_id\": \"abc123\"}", ), "ai.model.provider": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="openai", - deprecation=DeprecationInfo(replacement="gen_ai.system"), + deprecation=DeprecationInfo( + replacement="gen_ai.system" + ), aliases=["gen_ai.system"], ), "ai.model_id": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="gpt-4", - deprecation=DeprecationInfo(replacement="gen_ai.response.model"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.model" + ), aliases=["gen_ai.response.model"], sdks=["python"], ), "ai.pipeline.name": AttributeMetadata( brief="The name of the AI pipeline.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Autofix Pipeline", - deprecation=DeprecationInfo(replacement="gen_ai.pipeline.name"), + deprecation=DeprecationInfo( + replacement="gen_ai.pipeline.name" + ), aliases=["gen_ai.pipeline.name"], ), "ai.preamble": AttributeMetadata( brief="For an AI model call, the preamble parameter. Preambles are a part of the prompt used to adjust the model's overall behavior and conversation style.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="You are now a clown.", ), "ai.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, - deprecation=DeprecationInfo(replacement="gen_ai.request.presence_penalty"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.presence_penalty" + ), aliases=["gen_ai.request.presence_penalty"], ), "ai.prompt_tokens.used": AttributeMetadata( brief="The number of tokens used to process just the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=20, - deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), - aliases=["gen_ai.usage.prompt_tokens", "gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.input_tokens" + ), + aliases=["gen_ai.usage.prompt_tokens","gen_ai.usage.input_tokens"], sdks=["python"], ), "ai.raw_prompting": AttributeMetadata( brief="When enabled, the user’s prompt will be sent to the model without any pre-processing.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "ai.response_format": AttributeMetadata( brief="For an AI model call, the format of the response", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="json_object", ), "ai.responses": AttributeMetadata( brief="The response messages sent back by the AI model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["hello", "world"], - deprecation=DeprecationInfo(replacement="gen_ai.response.text"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.text" + ), sdks=["python"], ), "ai.search_queries": AttributeMetadata( brief="Queries used to search for relevant context or documents.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["climate change effects", "renewable energy"], ), "ai.search_results": AttributeMetadata( brief="Results returned from search queries for context.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["search_result_1, search_result_2"], ), "ai.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="1234567890", - deprecation=DeprecationInfo(replacement="gen_ai.request.seed"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.seed" + ), aliases=["gen_ai.request.seed"], ), "ai.streaming": AttributeMetadata( brief="Whether the request was streamed back.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, - deprecation=DeprecationInfo(replacement="gen_ai.response.streaming"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.streaming" + ), aliases=["gen_ai.response.streaming"], sdks=["python"], ), "ai.tags": AttributeMetadata( brief="Tags that describe an AI pipeline step.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"executed_function": "add_integers"}', + example="{\"executed_function\": \"add_integers\"}", ), "ai.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.1, - deprecation=DeprecationInfo(replacement="gen_ai.request.temperature"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.temperature" + ), aliases=["gen_ai.request.temperature"], ), "ai.texts": AttributeMetadata( brief="Raw text inputs provided to the model.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Hello, how are you?", "What is the capital of France?"], ), "ai.tool_calls": AttributeMetadata( brief="For an AI model call, the tool calls that were made.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["tool_call_1", "tool_call_2"], - deprecation=DeprecationInfo(replacement="gen_ai.response.tool_calls"), + deprecation=DeprecationInfo( + replacement="gen_ai.response.tool_calls" + ), ), "ai.tools": AttributeMetadata( brief="For an AI model call, the functions that are available", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["function_1", "function_2"], - deprecation=DeprecationInfo(replacement="gen_ai.request.available_tools"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.available_tools" + ), ), "ai.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=35, - deprecation=DeprecationInfo(replacement="gen_ai.request.top_k"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.top_k" + ), aliases=["gen_ai.request.top_k"], ), "ai.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.7, - deprecation=DeprecationInfo(replacement="gen_ai.request.top_p"), + deprecation=DeprecationInfo( + replacement="gen_ai.request.top_p" + ), aliases=["gen_ai.request.top_p"], ), "ai.total_cost": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12.34, ), "ai.total_tokens.used": AttributeMetadata( brief="The total number of tokens used to process the prompt.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=30, - deprecation=DeprecationInfo(replacement="gen_ai.usage.total_tokens"), + deprecation=DeprecationInfo( + replacement="gen_ai.usage.total_tokens" + ), aliases=["gen_ai.usage.total_tokens"], sdks=["python"], ), "ai.warnings": AttributeMetadata( brief="Warning messages generated during model execution.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example=["Token limit exceeded"], ), "app_start_type": AttributeMetadata( brief="Mobile app start variant. Either cold or warm.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="cold", ), "blocked_main_thread": AttributeMetadata( brief="Whether the main thread was blocked by the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Chrome", aliases=["sentry.browser.name"], @@ -4151,14 +4075,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.report.type": AttributeMetadata( brief="A browser report sent via reporting API..", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="network-error", ), "browser.script.invoker": AttributeMetadata( brief="How a script was called in the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Window.requestAnimationFrame", sdks=["browser"], @@ -4166,7 +4094,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.invoker_type": AttributeMetadata( brief="Browser script entry point type.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="event-listener", sdks=["browser"], @@ -4174,7 +4104,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.script.source_char_position": AttributeMetadata( brief="A number representing the script character position of the script.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=678, sdks=["browser"], @@ -4182,7 +4114,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="120.0.6099.130", aliases=["sentry.browser.version"], @@ -4190,7 +4124,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.hit": AttributeMetadata( brief="If the cache was hit during this span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, sdks=["php-laravel"], @@ -4198,14 +4134,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.item_size": AttributeMetadata( brief="The size of the requested item in the cache. In bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=58, ), "cache.key": AttributeMetadata( brief="The key of the cache accessed.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["my-cache-key", "my-other-cache-key"], sdks=["php-laravel"], @@ -4213,7 +4153,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.operation": AttributeMetadata( brief="The operation being performed on the cache.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="get", sdks=["php-laravel"], @@ -4221,7 +4163,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cache.ttl": AttributeMetadata( brief="The ttl of the cache in seconds", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=120, sdks=["php-laravel"], @@ -4229,7 +4173,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "channel": AttributeMetadata( brief="The channel name that is being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="mail", sdks=["php-laravel"], @@ -4237,7 +4183,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.address": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="example.com", aliases=["http.client_ip"], @@ -4245,14 +4193,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "client.port": AttributeMetadata( brief="Client port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=5432, ), "cloudflare.d1.duration": AttributeMetadata( brief="The duration of a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=543, sdks=["javascript-cloudflare"], @@ -4260,7 +4212,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_read": AttributeMetadata( brief="The number of rows read in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -4268,7 +4222,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "cloudflare.d1.rows_written": AttributeMetadata( brief="The number of rows written in a Cloudflare D1 operation.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12, sdks=["javascript-cloudflare"], @@ -4276,7 +4232,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.file.path": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/app/myapplication/http/handler/server.py", aliases=["code.filepath"], @@ -4284,25 +4242,35 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.filepath": AttributeMetadata( brief="The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/app/myapplication/http/handler/server.py", - deprecation=DeprecationInfo(replacement="code.file.path"), + deprecation=DeprecationInfo( + replacement="code.file.path" + ), aliases=["code.file.path"], ), "code.function": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="server_request", - deprecation=DeprecationInfo(replacement="code.function.name"), + deprecation=DeprecationInfo( + replacement="code.function.name" + ), aliases=["code.function.name"], ), "code.function.name": AttributeMetadata( brief="The method or function name, or equivalent (usually rightmost part of the code unit's name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="server_request", aliases=["code.function"], @@ -4310,7 +4278,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.line.number": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=42, aliases=["code.lineno"], @@ -4318,43 +4288,57 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "code.lineno": AttributeMetadata( brief="The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=42, - deprecation=DeprecationInfo(replacement="code.line.number"), + deprecation=DeprecationInfo( + replacement="code.line.number" + ), aliases=["code.line.number"], ), "code.namespace": AttributeMetadata( brief="The 'namespace' within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http.handler", deprecation=DeprecationInfo( replacement="code.function.name", - reason="code.function.name should include the namespace.", + reason="code.function.name should include the namespace." ), ), "db.collection.name": AttributeMetadata( brief="The name of a collection (table, container) within the database.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="users", ), "db.name": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="customers", - deprecation=DeprecationInfo(replacement="db.namespace"), + deprecation=DeprecationInfo( + replacement="db.namespace" + ), aliases=["db.namespace"], ), "db.namespace": AttributeMetadata( brief="The name of the database being accessed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="customers", aliases=["db.name"], @@ -4362,16 +4346,22 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.operation": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT", - deprecation=DeprecationInfo(replacement="db.operation.name"), + deprecation=DeprecationInfo( + replacement="db.operation.name" + ), aliases=["db.operation.name"], ), "db.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT", aliases=["db.operation"], @@ -4379,7 +4369,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.parameter.": AttributeMetadata( brief="A query parameter used in db.query.text, with being the parameter name, and the attribute value being a string representation of the parameter value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="db.query.parameter.foo='123'", @@ -4387,14 +4379,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.query.summary": AttributeMetadata( brief="A database query being executed. Should be paramaterized. The full version of the query is in `db.query.text`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT * FROM users", ), "db.query.text": AttributeMetadata( brief="The database query being executed. Should be the full query, not a parameterized version. The parameterized version is in `db.query.summary`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT * FROM users", aliases=["db.statement"], @@ -4402,7 +4398,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.connection": AttributeMetadata( brief="The redis connection name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="my-redis-instance", sdks=["php-laravel"], @@ -4410,7 +4408,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.redis.parameters": AttributeMetadata( brief="The array of command parameters given to a redis command.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["test", "*"], sdks=["php-laravel"], @@ -4418,37 +4418,49 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.sql.bindings": AttributeMetadata( brief="The array of query bindings.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example=["1", "foo"], deprecation=DeprecationInfo( replacement="db.query.parameter.", - reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter..", + reason="Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.." ), sdks=["php-laravel"], ), "db.statement": AttributeMetadata( brief="The database statement being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="SELECT * FROM users", - deprecation=DeprecationInfo(replacement="db.query.text"), + deprecation=DeprecationInfo( + replacement="db.query.text" + ), aliases=["db.query.text"], ), "db.system": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="postgresql", - deprecation=DeprecationInfo(replacement="db.system.name"), + deprecation=DeprecationInfo( + replacement="db.system.name" + ), aliases=["db.system.name"], ), "db.system.name": AttributeMetadata( brief="An identifier for the database management system (DBMS) product being used. See [OpenTelemetry docs](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/database/database-spans.md#notes-and-well-known-identifiers-for-dbsystem) for a list of well-known identifiers.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="postgresql", aliases=["db.system"], @@ -4456,121 +4468,157 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "db.user": AttributeMetadata( brief="The database user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="fancy_user", ), "device.brand": AttributeMetadata( brief="The brand of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Apple", ), "device.family": AttributeMetadata( brief="The family of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="iPhone", ), "device.model": AttributeMetadata( brief="The model of the device.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="iPhone 15 Pro Max", ), "environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="production", - deprecation=DeprecationInfo(replacement="sentry.environment"), + deprecation=DeprecationInfo( + replacement="sentry.environment" + ), aliases=["sentry.environment"], ), "error.type": AttributeMetadata( brief="Describes a class of error the operation ended with.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="timeout", ), "event.id": AttributeMetadata( brief="The unique identifier for this event (log record)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1234567890, ), "event.name": AttributeMetadata( brief="The name that uniquely identifies this event (log record)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Process Payload", ), "exception.escaped": AttributeMetadata( brief="SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, ), "exception.message": AttributeMetadata( brief="The error message.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ENOENT: no such file or directory", ), "exception.stacktrace": AttributeMetadata( brief="A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='Exception in thread "main" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)', + example="Exception in thread \"main\" java.lang.RuntimeException: Test exception\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n at com.example.GenerateTrace.main(GenerateTrace.java:5)", ), "exception.type": AttributeMetadata( brief="The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="OSError", ), "faas.coldstart": AttributeMetadata( brief="A boolean that is true if the serverless function is executed for the first time (aka cold-start).", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, ), "faas.cron": AttributeMetadata( brief="A string containing the schedule period as Cron Expression.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="0/5 * * * ? *", ), "faas.time": AttributeMetadata( brief="A string containing the function invocation time in the ISO 8601 format expressed in UTC.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="2020-01-23T13:47:06Z", ), "faas.trigger": AttributeMetadata( brief="Type of the trigger which caused this function invocation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="timer", ), "flag.evaluation.": AttributeMetadata( brief="An instance of a feature flag evaluation. The value of this attribute is the boolean representing the evaluation result. The suffix is the name of the feature flag.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, has_dynamic_suffix=True, example="flag.evaluation.is_new_ui=true", @@ -4578,103 +4626,131 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "frames.delay": AttributeMetadata( brief="The sum of all delayed frame durations in seconds during the lifetime of the span. For more information see [frames delay](https://develop.sentry.dev/sdk/performance/frames-delay/).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), - is_in_otel=False, + pii=PiiInfo( + isPii=IsPii.FALSE + ), + is_in_otel=False, example=5, ), "frames.frozen": AttributeMetadata( brief="The number of frozen frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=3, ), "frames.slow": AttributeMetadata( brief="The number of slow frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1, ), "frames.total": AttributeMetadata( brief="The number of total frames rendered during the lifetime of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=60, ), "fs_error": AttributeMetadata( brief="The error message of a file system error.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="ENOENT: no such file or directory", deprecation=DeprecationInfo( replacement="error.type", - reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better.", + reason="This attribute is not part of the OpenTelemetry specification and error.type fits much better." ), sdks=["javascript-node"], ), "gen_ai.agent.name": AttributeMetadata( brief="The name of the agent being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ResearchAssistant", ), "gen_ai.assistant.message": AttributeMetadata( brief="The assistant message passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="get_weather tool call", ), "gen_ai.choice": AttributeMetadata( brief="The model's response message.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="The weather in Paris is rainy and overcast, with temperatures around 57°F", ), "gen_ai.cost.input_tokens": AttributeMetadata( brief="The cost of tokens used to process the AI input (prompt) in USD (without cached input tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=123.45, ), "gen_ai.cost.output_tokens": AttributeMetadata( brief="The cost of tokens used for creating the AI output in USD (without reasoning tokens).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=123.45, ), "gen_ai.cost.total_tokens": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12.34, ), "gen_ai.operation.name": AttributeMetadata( brief="The name of the operation being performed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="chat", ), "gen_ai.operation.type": AttributeMetadata( brief="The type of AI operation. Must be one of 'agent', 'ai_client', 'tool', 'handoff', 'guardrail'. Makes querying for spans in the UI easier.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="tool", ), "gen_ai.pipeline.name": AttributeMetadata( brief="Name of the AI pipeline or chain being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Autofix Pipeline", aliases=["ai.pipeline.name"], @@ -4682,9 +4758,11 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.prompt": AttributeMetadata( brief="The input messages sent to the model", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, - example='[{"role": "user", "message": "hello"}]', + example="[{\"role\": \"user\", \"message\": \"hello\"}]", deprecation=DeprecationInfo( reason="Deprecated from OTEL, use gen_ai.input.messages with the new format instead." ), @@ -4692,14 +4770,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.available_tools": AttributeMetadata( brief="The available tools for the model. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"name": "get_weather", "description": "Get the weather for a given location"}, {"name": "get_news", "description": "Get the news for a given topic"}]', + example="[{\"name\": \"get_weather\", \"description\": \"Get the weather for a given location\"}, {\"name\": \"get_news\", \"description\": \"Get the news for a given topic\"}]", ), "gen_ai.request.frequency_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. The higher the value, the stronger a penalty is applied to previously present tokens, proportional to how many times they have already appeared in the prompt or prior generation.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=0.5, aliases=["ai.frequency_penalty"], @@ -4707,29 +4789,37 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.max_tokens": AttributeMetadata( brief="The maximum number of tokens to generate in the response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=2048, ), "gen_ai.request.messages": AttributeMetadata( - brief='The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `"user"`, `"assistant"`, `"tool"`, or `"system"`. For messages of the role `"tool"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: "text", text:"..."}`.', + brief="The messages passed to the model. It has to be a stringified version of an array of objects. The `role` attribute of each object must be `\"user\"`, `\"assistant\"`, `\"tool\"`, or `\"system\"`. For messages of the role `\"tool\"`, the `content` can be a string or an arbitrary object with information about the tool call. For other messages the `content` can be either a string or a list of objects in the format `{type: \"text\", text:\"...\"}`.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"role": "system", "content": "Generate a random number."}, {"role": "user", "content": [{"text": "Generate a random number between 0 and 10.", "type": "text"}]}, {"role": "tool", "content": {"toolCallId": "1", "toolName": "Weather", "output": "rainy"}}]', + example="[{\"role\": \"system\", \"content\": \"Generate a random number.\"}, {\"role\": \"user\", \"content\": [{\"text\": \"Generate a random number between 0 and 10.\", \"type\": \"text\"}]}, {\"role\": \"tool\", \"content\": {\"toolCallId\": \"1\", \"toolName\": \"Weather\", \"output\": \"rainy\"}}]", aliases=["ai.input_messages"], ), "gen_ai.request.model": AttributeMetadata( brief="The model identifier being used for the request.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gpt-4-turbo-preview", ), "gen_ai.request.presence_penalty": AttributeMetadata( brief="Used to reduce repetitiveness of generated tokens. Similar to frequency_penalty, except that this penalty is applied equally to all tokens that have already appeared, regardless of their exact frequencies.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=0.5, aliases=["ai.presence_penalty"], @@ -4737,7 +4827,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1234567890", aliases=["ai.seed"], @@ -4745,7 +4837,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.temperature": AttributeMetadata( brief="For an AI model call, the temperature parameter. Temperature essentially means how random the output will be.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=0.1, aliases=["ai.temperature"], @@ -4753,7 +4847,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_k": AttributeMetadata( brief="Limits the model to only consider the K most likely next tokens, where K is an integer (e.g., top_k=20 means only the 20 highest probability tokens are considered).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=35, aliases=["ai.top_k"], @@ -4761,7 +4857,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.top_p": AttributeMetadata( brief="Limits the model to only consider tokens whose cumulative probability mass adds up to p, where p is a float between 0 and 1 (e.g., top_p=0.7 means only tokens that sum up to 70% of the probability mass are considered).", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=0.7, aliases=["ai.top_p"], @@ -4769,7 +4867,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.finish_reasons": AttributeMetadata( brief="The reason why the model stopped generating.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="COMPLETE", aliases=["ai.finish_reason"], @@ -4777,7 +4877,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.id": AttributeMetadata( brief="Unique identifier for the completion.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gen_123abc", aliases=["ai.generation_id"], @@ -4785,7 +4887,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.model": AttributeMetadata( brief="The vendor-specific ID of the model used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="gpt-4", aliases=["ai.model_id"], @@ -4793,7 +4897,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.streaming": AttributeMetadata( brief="Whether or not the AI model call's response was streamed back asynchronously", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, aliases=["ai.streaming"], @@ -4801,28 +4907,36 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.response.text": AttributeMetadata( brief="The model's response text messages. It has to be a stringified version of an array of response text messages.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='["The weather in Paris is rainy and overcast, with temperatures around 57°F", "The weather in London is sunny and warm, with temperatures around 65°F"]', + example="[\"The weather in Paris is rainy and overcast, with temperatures around 57°F\", \"The weather in London is sunny and warm, with temperatures around 65°F\"]", ), "gen_ai.response.tokens_per_second": AttributeMetadata( brief="The total output tokens per seconds throughput", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12345.67, ), "gen_ai.response.tool_calls": AttributeMetadata( brief="The tool calls in the model's response. It has to be a stringified version of an array of objects.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='[{"name": "get_weather", "arguments": {"location": "Paris"}}]', + example="[{\"name\": \"get_weather\", \"arguments\": {\"location\": \"Paris\"}}]", ), "gen_ai.system": AttributeMetadata( brief="The provider of the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="openai", aliases=["ai.model.provider"], @@ -4830,35 +4944,45 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.system.message": AttributeMetadata( brief="The system instructions passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="You are a helpful assistant", ), "gen_ai.tool.description": AttributeMetadata( brief="The description of the tool being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Searches the web for current information about a topic", ), "gen_ai.tool.input": AttributeMetadata( brief="The input of the tool being used. It has to be a stringified version of the input to the tool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, - example='{"location": "Paris"}', + example="{\"location\": \"Paris\"}", ), "gen_ai.tool.message": AttributeMetadata( brief="The response from a tool or function call passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="rainy, 57°F", ), "gen_ai.tool.name": AttributeMetadata( brief="Name of the tool utilized by the agent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Flights", aliases=["ai.function_call"], @@ -4866,79 +4990,104 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.tool.output": AttributeMetadata( brief="The output of the tool being used. It has to be a stringified version of the output of the tool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="rainy, 57°F", ), "gen_ai.tool.type": AttributeMetadata( brief="The type of tool being used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="function", ), "gen_ai.usage.completion_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI response (completion).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=10, - deprecation=DeprecationInfo(replacement="gen_ai.usage.output_tokens"), - aliases=["ai.completion_tokens.used", "gen_ai.usage.output_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.output_tokens" + ), + aliases=["ai.completion_tokens.used","gen_ai.usage.output_tokens"], ), "gen_ai.usage.input_tokens": AttributeMetadata( brief="The number of tokens used to process the AI input (prompt) without cached input tokens.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=10, - aliases=["ai.prompt_tokens.used", "gen_ai.usage.prompt_tokens"], + aliases=["ai.prompt_tokens.used","gen_ai.usage.prompt_tokens"], ), "gen_ai.usage.input_tokens.cached": AttributeMetadata( brief="The number of cached tokens used to process the AI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=50, ), "gen_ai.usage.output_tokens": AttributeMetadata( brief="The number of tokens used for creating the AI output (without reasoning tokens).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=10, - aliases=["ai.completion_tokens.used", "gen_ai.usage.completion_tokens"], + aliases=["ai.completion_tokens.used","gen_ai.usage.completion_tokens"], ), "gen_ai.usage.output_tokens.reasoning": AttributeMetadata( brief="The number of tokens used for reasoning to create the AI output.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=75, ), "gen_ai.usage.prompt_tokens": AttributeMetadata( brief="The number of tokens used in the GenAI input (prompt).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=20, - deprecation=DeprecationInfo(replacement="gen_ai.usage.input_tokens"), - aliases=["ai.prompt_tokens.used", "gen_ai.usage.input_tokens"], + deprecation=DeprecationInfo( + replacement="gen_ai.usage.input_tokens" + ), + aliases=["ai.prompt_tokens.used","gen_ai.usage.input_tokens"], ), "gen_ai.usage.total_cost": AttributeMetadata( brief="The total cost for the tokens used.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=12.34, deprecation=DeprecationInfo( - replacement="gen_ai.cost.total_tokens", status=DeprecationStatus.BACKFILL + replacement="gen_ai.cost.total_tokens", + status=DeprecationStatus.BACKFILL ), ), "gen_ai.usage.total_tokens": AttributeMetadata( brief="The total number of tokens used to process the prompt. (input tokens plus output todkens)", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=20, aliases=["ai.total_tokens.used"], @@ -4946,37 +5095,49 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.user.message": AttributeMetadata( brief="The user message passed to the model.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="What's the weather in Paris?", ), "graphql.operation.name": AttributeMetadata( brief="The name of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="findBookById", ), "graphql.operation.type": AttributeMetadata( brief="The type of the operation being executed.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="query", ), "http.client_ip": AttributeMetadata( brief="Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="client.address"), + deprecation=DeprecationInfo( + replacement="client.address" + ), aliases=["client.address"], ), "http.decoded_response_content_length": AttributeMetadata( brief="The decoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=456, sdks=["javascript-browser"], @@ -4984,43 +5145,50 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.flavor": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo(replacement="network.protocol.version"), - aliases=["network.protocol.version", "net.protocol.version"], + deprecation=DeprecationInfo( + replacement="network.protocol.version" + ), + aliases=["network.protocol.version","net.protocol.version"], ), "http.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="#details", ), "http.host": AttributeMetadata( brief="The domain name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage", + reason="Deprecated, use one of `server.address` or `client.address`, depending on the usage" ), - aliases=[ - "server.address", - "client.address", - "http.server_name", - "net.host.name", - ], + aliases=["server.address","client.address","http.server_name","net.host.name"], ), "http.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="GET", - deprecation=DeprecationInfo(replacement="http.request.method"), + deprecation=DeprecationInfo( + replacement="http.request.method" + ), aliases=["http.request.method"], ), "http.query": AttributeMetadata( @@ -5028,7 +5196,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." ), is_in_otel=False, example="?foo=bar&bar=baz", @@ -5036,7 +5204,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connect_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.111, sdks=["javascript-browser"], @@ -5044,7 +5214,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.connection_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.15, sdks=["javascript-browser"], @@ -5052,7 +5224,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.201, sdks=["javascript-browser"], @@ -5060,7 +5234,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.domain_lookup_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.322, sdks=["javascript-browser"], @@ -5068,7 +5244,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.fetch_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.389, sdks=["javascript-browser"], @@ -5076,7 +5254,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.header.": AttributeMetadata( brief="HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="http.request.header.custom-header=['foo', 'bar']", @@ -5084,15 +5264,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="GET", - aliases=["method", "http.method"], + aliases=["method","http.method"], ), "http.request.redirect_end": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829558.502, sdks=["javascript-browser"], @@ -5100,7 +5284,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.redirect_start": AttributeMetadata( brief="The UNIX timestamp representing the start time of the fetch which that initiates the redirect.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.495, sdks=["javascript-browser"], @@ -5108,7 +5294,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.request_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.51, sdks=["javascript-browser"], @@ -5116,14 +5304,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.resend_count": AttributeMetadata( brief="The ordinal number of request resending attempt (for any reason, including redirects).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=2, ), "http.request.response_end": AttributeMetadata( brief="The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.89, sdks=["javascript-browser"], @@ -5131,7 +5323,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.response_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.7, sdks=["javascript-browser"], @@ -5139,7 +5333,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.secure_connection_start": AttributeMetadata( brief="The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829555.73, sdks=["javascript-browser"], @@ -5147,7 +5343,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.time_to_first_byte": AttributeMetadata( brief="The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1.032, sdks=["javascript-browser"], @@ -5155,7 +5353,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.request.worker_start": AttributeMetadata( brief="The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732829553.68, sdks=["javascript-browser"], @@ -5163,15 +5363,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.body.size": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=123, - aliases=["http.response_content_length", "http.response.header.content-length"], + aliases=["http.response_content_length","http.response.header.content-length"], ), "http.response.header.": AttributeMetadata( brief="HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, has_dynamic_suffix=True, example="http.response.header.custom-header=['foo', 'bar']", @@ -5179,15 +5383,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.header.content-length": AttributeMetadata( brief="The size of the message body sent to the recipient (in bytes)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http.response.header.custom-header=['foo', 'bar']", - aliases=["http.response_content_length", "http.response.body.size"], + aliases=["http.response_content_length","http.response.body.size"], ), "http.response.size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=456, aliases=["http.response_transfer_size"], @@ -5195,7 +5403,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=404, aliases=["http.status_code"], @@ -5203,29 +5413,37 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.response_content_length": AttributeMetadata( brief="The encoded body size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=123, deprecation=DeprecationInfo( - replacement="http.response.body.size", status=DeprecationStatus.BACKFILL + replacement="http.response.body.size", + status=DeprecationStatus.BACKFILL ), - aliases=["http.response.body.size", "http.response.header.content-length"], + aliases=["http.response.body.size","http.response.header.content-length"], ), "http.response_transfer_size": AttributeMetadata( brief="The transfer size of the response (in bytes).", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=456, deprecation=DeprecationInfo( - replacement="http.response.size", status=DeprecationStatus.BACKFILL + replacement="http.response.size", + status=DeprecationStatus.BACKFILL ), aliases=["http.response.size"], ), "http.route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/users/:id", aliases=["url.template"], @@ -5233,63 +5451,87 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "http.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https", - deprecation=DeprecationInfo(replacement="url.scheme"), + deprecation=DeprecationInfo( + replacement="url.scheme" + ), aliases=["url.scheme"], ), "http.server_name": AttributeMetadata( brief="The server domain name", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "net.host.name", "http.host"], + deprecation=DeprecationInfo( + replacement="server.address" + ), + aliases=["server.address","net.host.name","http.host"], ), "http.status_code": AttributeMetadata( brief="The status code of the HTTP response.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=404, - deprecation=DeprecationInfo(replacement="http.response.status_code"), + deprecation=DeprecationInfo( + replacement="http.response.status_code" + ), aliases=["http.response.status_code"], ), "http.target": AttributeMetadata( brief="The pathname and query string of the URL.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/test?foo=bar#buzz", deprecation=DeprecationInfo( replacement="url.path", - reason="This attribute is being deprecated in favor of url.path and url.query", + reason="This attribute is being deprecated in favor of url.path and url.query" ), ), "http.url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo(replacement="url.full"), - aliases=["url.full", "url"], + deprecation=DeprecationInfo( + replacement="url.full" + ), + aliases=["url.full","url"], ), "http.user_agent": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", - deprecation=DeprecationInfo(replacement="user_agent.original"), + deprecation=DeprecationInfo( + replacement="user_agent.original" + ), aliases=["user_agent.original"], ), "id": AttributeMetadata( brief="A unique identifier for the span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -5297,84 +5539,108 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "jvm.gc.action": AttributeMetadata( brief="Name of the garbage collector action.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="end of minor GC", ), "jvm.gc.name": AttributeMetadata( brief="Name of the garbage collector.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Young Generation", ), "jvm.memory.pool.name": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Old Gen", ), "jvm.memory.type": AttributeMetadata( brief="Name of the memory pool.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="G1 Old Gen", ), "jvm.thread.daemon": AttributeMetadata( brief="Whether the thread is daemon or not.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=True, ), "jvm.thread.state": AttributeMetadata( brief="State of the thread.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="blocked", ), "lcp.element": AttributeMetadata( brief="The dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="img", ), "lcp.id": AttributeMetadata( brief="The id of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="#hero", ), "lcp.size": AttributeMetadata( brief="The size of the largest contentful paint element.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1234, ), "lcp.url": AttributeMetadata( brief="The url of the dom element responsible for the largest contentful paint.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com", ), "logger.name": AttributeMetadata( brief="The name of the logger that generated this event.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="myLogger", ), "messaging.destination.connection": AttributeMetadata( brief="The message destination connection.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="BestTopic", sdks=["php-laravel"], @@ -5382,7 +5648,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.destination.name": AttributeMetadata( brief="The message destination name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="BestTopic", sdks=["php-laravel"], @@ -5390,7 +5658,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.body.size": AttributeMetadata( brief="The size of the message body in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=839, sdks=["php-laravel"], @@ -5398,7 +5668,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.envelope.size": AttributeMetadata( brief="The size of the message body and metadata in bytes.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1045, sdks=["php-laravel"], @@ -5406,7 +5678,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.id": AttributeMetadata( brief="A value used by the messaging system as an identifier for the message, represented as a string.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="f47ac10b58cc4372a5670e02b2c3d479", sdks=["php-laravel"], @@ -5414,7 +5688,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.receive.latency": AttributeMetadata( brief="The latency between when the message was published and received.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1732847252, sdks=["php-laravel"], @@ -5422,7 +5698,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.message.retry.count": AttributeMetadata( brief="The amount of attempts to send the message.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=2, sdks=["php-laravel"], @@ -5430,14 +5708,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "messaging.operation.type": AttributeMetadata( brief="A string identifying the type of the messaging operation", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="create", ), "messaging.system": AttributeMetadata( brief="The messaging system as identified by the client instrumentation.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="activemq", sdks=["php-laravel"], @@ -5445,173 +5727,233 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "method": AttributeMetadata( brief="The HTTP method used.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET", - deprecation=DeprecationInfo(replacement="http.request.method"), + deprecation=DeprecationInfo( + replacement="http.request.method" + ), aliases=["http.request.method"], - sdks=["javascript-browser", "javascript-node"], + sdks=["javascript-browser","javascript-node"], ), "navigation.type": AttributeMetadata( brief="The type of navigation done by a client-side router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="router.push", ), "nel.elapsed_time": AttributeMetadata( brief="The elapsed number of milliseconds between the start of the resource fetch and when it was completed or aborted by the user agent.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=100, ), "nel.phase": AttributeMetadata( - brief='If request failed, the phase of its network error. If request succeeded, "application".', + brief="If request failed, the phase of its network error. If request succeeded, \"application\".", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="application", ), "nel.referrer": AttributeMetadata( brief="request's referrer, as determined by the referrer policy associated with its client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com/foo?bar=baz", ), "nel.sampling_function": AttributeMetadata( brief="The sampling function used to determine if the request should be sampled.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, ), "nel.type": AttributeMetadata( - brief='If request failed, the type of its network error. If request succeeded, "ok".', + brief="If request failed, the type of its network error. If request succeeded, \"ok\".", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="dns.unreachable", ), "net.host.ip": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.local.address"), - aliases=["network.local.address", "net.sock.host.addr"], - ), + deprecation=DeprecationInfo( + replacement="network.local.address" + ), + aliases=["network.local.address","net.sock.host.addr"], + ), "net.host.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - deprecation=DeprecationInfo(replacement="server.address"), - aliases=["server.address", "http.server_name", "http.host"], + deprecation=DeprecationInfo( + replacement="server.address" + ), + aliases=["server.address","http.server_name","http.host"], ), "net.host.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1337, - deprecation=DeprecationInfo(replacement="server.port"), + deprecation=DeprecationInfo( + replacement="server.port" + ), aliases=["server.port"], ), "net.peer.ip": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.peer.address"), - aliases=["network.peer.address", "net.sock.peer.addr"], + deprecation=DeprecationInfo( + replacement="network.peer.address" + ), + aliases=["network.peer.address","net.sock.peer.addr"], ), "net.peer.name": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", deprecation=DeprecationInfo( replacement="server.address", - reason="Deprecated, use server.address on client spans and client.address on server spans.", + reason="Deprecated, use server.address on client spans and client.address on server spans." ), ), "net.peer.port": AttributeMetadata( brief="Peer port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1337, deprecation=DeprecationInfo( replacement="server.port", - reason="Deprecated, use server.port on client spans and client.port on server spans.", + reason="Deprecated, use server.port on client spans and client.port on server spans." ), ), "net.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http", - deprecation=DeprecationInfo(replacement="network.protocol.name"), + deprecation=DeprecationInfo( + replacement="network.protocol.name" + ), aliases=["network.protocol.name"], ), "net.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - deprecation=DeprecationInfo(replacement="network.protocol.version"), - aliases=["network.protocol.version", "http.flavor"], + deprecation=DeprecationInfo( + replacement="network.protocol.version" + ), + aliases=["network.protocol.version","http.flavor"], ), "net.sock.family": AttributeMetadata( brief="OSI transport and network layer", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="inet", deprecation=DeprecationInfo( replacement="network.transport", - reason="Deprecated, use network.transport and network.type.", + reason="Deprecated, use network.transport and network.type." ), ), "net.sock.host.addr": AttributeMetadata( brief="Local address of the network connection mapping to Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/var/my.sock", - deprecation=DeprecationInfo(replacement="network.local.address"), - aliases=["network.local.address", "net.host.ip"], + deprecation=DeprecationInfo( + replacement="network.local.address" + ), + aliases=["network.local.address","net.host.ip"], ), "net.sock.host.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=8080, - deprecation=DeprecationInfo(replacement="network.local.port"), + deprecation=DeprecationInfo( + replacement="network.local.port" + ), aliases=["network.local.port"], ), "net.sock.peer.addr": AttributeMetadata( brief="Peer address of the network connection - IP address", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="192.168.0.1", - deprecation=DeprecationInfo(replacement="network.peer.address"), - aliases=["network.peer.address", "net.peer.ip"], + deprecation=DeprecationInfo( + replacement="network.peer.address" + ), + aliases=["network.peer.address","net.peer.ip"], ), "net.sock.peer.name": AttributeMetadata( brief="Peer address of the network connection - Unix domain socket name", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/var/my.sock", deprecation=DeprecationInfo( @@ -5621,32 +5963,44 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "net.sock.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=8080, - deprecation=DeprecationInfo(replacement="network.peer.port"), + deprecation=DeprecationInfo( + replacement="network.peer.port" + ), ), "net.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="tcp", - deprecation=DeprecationInfo(replacement="network.transport"), + deprecation=DeprecationInfo( + replacement="network.transport" + ), aliases=["network.transport"], ), "network.local.address": AttributeMetadata( brief="Local address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="10.1.2.80", - aliases=["net.host.ip", "net.sock.host.addr"], + aliases=["net.host.ip","net.sock.host.addr"], ), "network.local.port": AttributeMetadata( brief="Local port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=65400, aliases=["net.sock.host.port"], @@ -5654,22 +6008,28 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.peer.address": AttributeMetadata( brief="Peer address of the network connection - IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="10.1.2.80", - aliases=["net.peer.ip", "net.sock.peer.addr"], + aliases=["net.peer.ip","net.sock.peer.addr"], ), "network.peer.port": AttributeMetadata( brief="Peer port number of the network connection.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=65400, ), "network.protocol.name": AttributeMetadata( brief="OSI application layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="http", aliases=["net.protocol.name"], @@ -5677,15 +6037,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.protocol.version": AttributeMetadata( brief="The actual version of the protocol used for network communication.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1.1", - aliases=["http.flavor", "net.protocol.version"], + aliases=["http.flavor","net.protocol.version"], ), "network.transport": AttributeMetadata( brief="OSI transport layer or inter-process communication method.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="tcp", aliases=["net.transport"], @@ -5693,77 +6057,99 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.type": AttributeMetadata( brief="OSI network layer or non-OSI equivalent.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="ipv4", ), "os.build_id": AttributeMetadata( brief="The build ID of the operating system.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="1234567890", ), "os.description": AttributeMetadata( brief="Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Ubuntu 18.04.1 LTS", ), "os.name": AttributeMetadata( brief="Human readable operating system name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Ubuntu", ), "os.type": AttributeMetadata( brief="The operating system type.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="linux", ), "os.version": AttributeMetadata( brief="The version of the operating system.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="18.04.2", ), "otel.scope.name": AttributeMetadata( brief="The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="io.opentelemetry.contrib.mongodb", ), "otel.scope.version": AttributeMetadata( brief="The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="2.4.5", ), "otel.status_code": AttributeMetadata( brief="Name of the code, either “OK” or “ERROR”. MUST NOT be set if the status code is UNSET.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="OK", ), "otel.status_description": AttributeMetadata( brief="Description of the Status if it has a value, otherwise not set.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="resource not found", ), "params.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="params.id='123'", @@ -5772,7 +6158,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "previous_route": AttributeMetadata( brief="Also used by mobile SDKs to indicate the previous route in the application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="HomeScreen", sdks=["javascript-reactnative"], @@ -5780,72 +6168,94 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "process.executable.name": AttributeMetadata( brief="The name of the executable that started the process.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="getsentry", ), "process.pid": AttributeMetadata( brief="The process ID of the running process.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=12345, ), "process.runtime.description": AttributeMetadata( brief="An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment. Equivalent to `raw_description` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Eclipse OpenJ9 VM openj9-0.21.0", ), "process.runtime.name": AttributeMetadata( brief="The name of the runtime. Equivalent to `name` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="node", ), "process.runtime.version": AttributeMetadata( brief="The version of the runtime of this process, as returned by the runtime without modification. Equivalent to `version` in the Sentry runtime context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="18.04.2", ), "profile_id": AttributeMetadata( brief="The id of the sentry profile.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", - deprecation=DeprecationInfo(replacement="sentry.profile_id"), + deprecation=DeprecationInfo( + replacement="sentry.profile_id" + ), aliases=["sentry.profile_id"], ), "query.": AttributeMetadata( brief="An item in a query string. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="query.id='123'", deprecation=DeprecationInfo( replacement="url.query", - reason="Instead of sending items individually in query., they should be sent all together with url.query.", + reason="Instead of sending items individually in query., they should be sent all together with url.query." ), ), "release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="production", - deprecation=DeprecationInfo(replacement="sentry.release"), + deprecation=DeprecationInfo( + replacement="sentry.release" + ), aliases=["sentry.release"], ), "remix.action_form_data.": AttributeMetadata( brief="Remix form data, being the form data key, the value being the form data value.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="http.response.header.text='test'", @@ -5854,16 +6264,22 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", - deprecation=DeprecationInfo(replacement="sentry.replay_id"), + deprecation=DeprecationInfo( + replacement="sentry.replay_id" + ), aliases=["sentry.replay_id"], ), "resource.render_blocking_status": AttributeMetadata( brief="The render blocking status of the resource.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="non-blocking", sdks=["javascript-browser"], @@ -5871,94 +6287,122 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "route": AttributeMetadata( brief="The matched route, that is, the path template in the format used by the respective server framework. Also used by mobile SDKs to indicate the current route in the application.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="App\\Controller::indexAction", - deprecation=DeprecationInfo(replacement="http.route"), + deprecation=DeprecationInfo( + replacement="http.route" + ), aliases=["http.route"], - sdks=["php-laravel", "javascript-reactnative"], + sdks=["php-laravel","javascript-reactnative"], ), "rpc.grpc.status_code": AttributeMetadata( brief="The numeric status code of the gRPC request.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=2, ), "rpc.service": AttributeMetadata( brief="The full (logical) name of the service being called, including its package name, if applicable.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="myService.BestService", ), "sentry._internal.dsc.environment": AttributeMetadata( brief="The environment from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="prod", ), "sentry._internal.dsc.org_id": AttributeMetadata( brief="The organization ID from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1", ), "sentry._internal.dsc.public_key": AttributeMetadata( brief="The public key from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="c51734c603c4430eb57cb0a5728a479d", ), "sentry._internal.dsc.release": AttributeMetadata( brief="The release identifier from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="frontend@e8211be71b214afab5b85de4b4c54be3714952bb", ), "sentry._internal.dsc.sample_rand": AttributeMetadata( brief="The random sampling value from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="0.8286147972820134", ), "sentry._internal.dsc.sample_rate": AttributeMetadata( brief="The sample rate from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1.0", ), "sentry._internal.dsc.sampled": AttributeMetadata( brief="Whether the event was sampled according to the dynamic sampling context.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "sentry._internal.dsc.trace_id": AttributeMetadata( brief="The trace ID from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="047372980460430cbc78d9779df33a46", ), "sentry._internal.dsc.transaction": AttributeMetadata( brief="The transaction name from the dynamic sampling context.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="/issues/errors-outages/", ), "sentry._internal.observed_timestamp_nanos": AttributeMetadata( brief="The timestamp at which an envelope was received by Relay, in nanoseconds.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1544712660300000000", aliases=["sentry.observed_timestamp_nanos"], @@ -5966,60 +6410,80 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry._internal.replay_is_buffering": AttributeMetadata( brief="A sentinel attribute on log events indicating whether the current Session Replay is being buffered (onErrorSampleRate).", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "sentry.browser.name": AttributeMetadata( brief="The name of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Chrome", - deprecation=DeprecationInfo(replacement="browser.name"), + deprecation=DeprecationInfo( + replacement="browser.name" + ), aliases=["browser.name"], ), "sentry.browser.version": AttributeMetadata( brief="The version of the browser.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="120.0.6099.130", - deprecation=DeprecationInfo(replacement="browser.version"), + deprecation=DeprecationInfo( + replacement="browser.version" + ), aliases=["browser.version"], ), "sentry.cancellation_reason": AttributeMetadata( brief="The reason why a span ended early.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="document.hidden", ), "sentry.client_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in the SDK.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, ), "sentry.description": AttributeMetadata( brief="The human-readable description of a span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="index view query", ), "sentry.dist": AttributeMetadata( brief="The sentry dist.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1.0", ), "sentry.environment": AttributeMetadata( brief="The sentry environment.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="production", aliases=["environment"], @@ -6027,42 +6491,54 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.exclusive_time": AttributeMetadata( brief="The exclusive time duration of the span.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=1234, ), "sentry.http.prefetch": AttributeMetadata( brief="If an http request was a prefetch request.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "sentry.idle_span_finish_reason": AttributeMetadata( brief="The reason why an idle span ended early.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="idleTimeout", ), "sentry.message.parameter.": AttributeMetadata( brief="A parameter used in the message template. can either be the number that represent the parameter's position in the template string (sentry.message.parameter.0, sentry.message.parameter.1, etc) or the parameter's name (sentry.message.parameter.item_id, sentry.message.parameter.user_id, etc)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="sentry.message.parameter.0='123'", ), "sentry.message.template": AttributeMetadata( brief="The parameterized template string.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Hello, {name}!", ), "sentry.module.": AttributeMetadata( brief="A module that was loaded in the process. The key is the name of the module.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="sentry.module.brianium/paratest='v7.7.0'", @@ -6070,7 +6546,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.route": AttributeMetadata( brief="A parameterized route for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions when the file location of the function is known.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="/posts/[id]/layout", sdks=["javascript"], @@ -6078,7 +6556,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.nextjs.ssr.function.type": AttributeMetadata( brief="A descriptor for a for a function in Next.js that contributes to Server-Side Rendering. Should be present on spans that track such functions.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="generateMetadata", sdks=["javascript"], @@ -6086,40 +6566,50 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.observed_timestamp_nanos": AttributeMetadata( brief="The timestamp at which an envelope was received by Relay, in nanoseconds.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="1544712660300000000", deprecation=DeprecationInfo( replacement="sentry._internal.observed_timestamp_nanos", - status=DeprecationStatus.BACKFILL, + status=DeprecationStatus.BACKFILL ), aliases=["sentry._internal.observed_timestamp_nanos"], ), "sentry.op": AttributeMetadata( brief="The operation of a span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="http.client", ), "sentry.origin": AttributeMetadata( brief="The origin of the instrumentation (e.g. span, log, etc.)", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="auto.http.otel.fastify", ), "sentry.platform": AttributeMetadata( brief="The sdk platform that generated the event.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="php", ), "sentry.profile_id": AttributeMetadata( brief="The id of the sentry profile.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["profile_id"], @@ -6127,15 +6617,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.release": AttributeMetadata( brief="The sentry release.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="7.0.0", - aliases=["service.version", "release"], + aliases=["service.version","release"], ), "sentry.replay_id": AttributeMetadata( brief="The id of the sentry replay.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="123e4567e89b12d3a456426614174000", aliases=["replay_id"], @@ -6143,33 +6637,36 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.sdk.integrations": AttributeMetadata( brief="A list of names identifying enabled integrations. The list shouldhave all enabled integrations, including default integrations. Defaultintegrations are included because different SDK releases may contain differentdefault integrations.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, - example=[ - "InboundFilters", - "FunctionToString", - "BrowserApiErrors", - "Breadcrumbs", - ], + example=["InboundFilters", "FunctionToString", "BrowserApiErrors", "Breadcrumbs"], ), "sentry.sdk.name": AttributeMetadata( brief="The sentry sdk name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="@sentry/react", ), "sentry.sdk.version": AttributeMetadata( brief="The sentry sdk version.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="7.0.0", ), "sentry.segment.id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="051581bf3cb55c13", aliases=["sentry.segment_id"], @@ -6177,44 +6674,58 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "sentry.segment.name": AttributeMetadata( brief="The segment name of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET /user", ), "sentry.segment_id": AttributeMetadata( brief="The segment ID of a span", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="051581bf3cb55c13", - deprecation=DeprecationInfo(replacement="sentry.segment.id"), + deprecation=DeprecationInfo( + replacement="sentry.segment.id" + ), aliases=["sentry.segment.id"], ), "sentry.server_sample_rate": AttributeMetadata( brief="Rate at which a span was sampled in Relay.", type=AttributeType.DOUBLE, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=0.5, ), "sentry.span.source": AttributeMetadata( brief="The source of a span, also referred to as transaction source.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="route", ), "sentry.trace.parent_span_id": AttributeMetadata( brief="The span id of the span that was active when the log was collected. This should not be set if there was no active span.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="b0e6f15b45c36b12", ), "sentry.transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="GET /", aliases=["transaction"], @@ -6222,15 +6733,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "server.address": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", - aliases=["http.server_name", "net.host.name", "http.host"], + aliases=["http.server_name","net.host.name","http.host"], ), "server.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1337, aliases=["net.host.port"], @@ -6238,14 +6753,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "service.name": AttributeMetadata( brief="Logical name of the service.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="omegastar", ), "service.version": AttributeMetadata( brief="The version string of the service API or implementation. The format is not defined by these conventions.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="5.0.0", aliases=["sentry.release"], @@ -6253,88 +6772,114 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "thread.id": AttributeMetadata( brief="Current “managed” thread ID.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=56, ), "thread.name": AttributeMetadata( brief="Current thread name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="main", ), "transaction": AttributeMetadata( brief="The sentry transaction (segment name).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="GET /", - deprecation=DeprecationInfo(replacement="sentry.transaction"), + deprecation=DeprecationInfo( + replacement="sentry.transaction" + ), aliases=["sentry.transaction"], ), "type": AttributeMetadata( brief="More granular type of the operation happening.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example="fetch", - sdks=["javascript-browser", "javascript-node"], + sdks=["javascript-browser","javascript-node"], ), "ui.component_name": AttributeMetadata( brief="The name of the associated component.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="HomeButton", ), "ui.contributes_to_ttfd": AttributeMetadata( brief="Whether the span execution contributed to the TTFD (time to fully drawn) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "ui.contributes_to_ttid": AttributeMetadata( brief="Whether the span execution contributed to the TTID (time to initial display) metric.", type=AttributeType.BOOLEAN, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=False, example=True, ), "url.domain": AttributeMetadata( brief="Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="example.com", ), "url.fragment": AttributeMetadata( brief="The fragments present in the URI. Note that this does not contain the leading # character, while the `http.fragment` attribute does.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="details", ), "url.full": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https://example.com/test?foo=bar#buzz", - aliases=["http.url", "url"], + aliases=["http.url","url"], ), "url.path": AttributeMetadata( brief="The URI path component.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/foo", ), "url.path.parameter.": AttributeMetadata( brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, has_dynamic_suffix=True, example="url.path.parameter.id='123'", @@ -6343,7 +6888,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, - pii=PiiInfo(isPii=IsPii.FALSE), + pii=PiiInfo( + isPii=IsPii.FALSE + ), is_in_otel=True, example=1337, ), @@ -6352,7 +6899,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): type=AttributeType.STRING, pii=PiiInfo( isPii=IsPii.MAYBE, - reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.", + reason="Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information." ), is_in_otel=True, example="foo=bar&bar=baz", @@ -6360,7 +6907,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.scheme": AttributeMetadata( brief="The URI scheme component identifying the used protocol.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="https", aliases=["http.scheme"], @@ -6368,7 +6917,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.template": AttributeMetadata( brief="The low-cardinality template of an absolute path reference.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="/users/:id", aliases=["http.route"], @@ -6376,94 +6927,122 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url": AttributeMetadata( brief="The URL of the resource that was fetched.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="https://example.com/test?foo=bar#buzz", - deprecation=DeprecationInfo(replacement="url.full"), - aliases=["url.full", "http.url"], - sdks=["javascript-browser", "javascript-node"], + deprecation=DeprecationInfo( + replacement="url.full" + ), + aliases=["url.full","http.url"], + sdks=["javascript-browser","javascript-node"], ), "user.email": AttributeMetadata( brief="User email address.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="test@example.com", ), "user.full_name": AttributeMetadata( brief="User's full name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="John Smith", ), "user.geo.city": AttributeMetadata( brief="Human readable city name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Toronto", ), "user.geo.country_code": AttributeMetadata( brief="Two-letter country code (ISO 3166-1 alpha-2).", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="CA", ), "user.geo.region": AttributeMetadata( brief="Human readable region name or code.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Canada", ), "user.geo.subdivision": AttributeMetadata( brief="Human readable subdivision name.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=False, example="Ontario", ), "user.hash": AttributeMetadata( brief="Unique user hash to correlate information for a user in anonymized form.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="8ae4c2993e0f4f3b8b2d1b1f3b5e8f4d", ), "user.id": AttributeMetadata( brief="Unique identifier of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="S-1-5-21-202424912787-2692429404-2351956786-1000", ), "user.ip_address": AttributeMetadata( brief="The IP address of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=False, example="192.168.1.1", ), "user.name": AttributeMetadata( brief="Short name or login/username of the user.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example="j.smith", ), "user.roles": AttributeMetadata( brief="Array of user roles at the time of the event.", type=AttributeType.STRING_ARRAY, - pii=PiiInfo(isPii=IsPii.TRUE), + pii=PiiInfo( + isPii=IsPii.TRUE + ), is_in_otel=True, example=["admin", "editor"], ), "user_agent.original": AttributeMetadata( brief="Value of the HTTP User-Agent header sent by the client.", type=AttributeType.STRING, - pii=PiiInfo(isPii=IsPii.MAYBE), + pii=PiiInfo( + isPii=IsPii.MAYBE + ), is_in_otel=True, example="Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1", aliases=["http.user_agent"], @@ -6475,342 +7054,338 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): If a key is not present in this dictionary, it means that attribute is not defined in the Sentry Semantic Conventions. """ -Attributes = TypedDict( - "Attributes", - { - "ai.citations": List[str], - "ai.completion_tokens.used": int, - "ai.documents": List[str], - "ai.finish_reason": str, - "ai.frequency_penalty": float, - "ai.function_call": str, - "ai.generation_id": str, - "ai.input_messages": str, - "ai.is_search_required": bool, - "ai.metadata": str, - "ai.model.provider": str, - "ai.model_id": str, - "ai.pipeline.name": str, - "ai.preamble": str, - "ai.presence_penalty": float, - "ai.prompt_tokens.used": int, - "ai.raw_prompting": bool, - "ai.response_format": str, - "ai.responses": List[str], - "ai.search_queries": List[str], - "ai.search_results": List[str], - "ai.seed": str, - "ai.streaming": bool, - "ai.tags": str, - "ai.temperature": float, - "ai.texts": List[str], - "ai.tool_calls": List[str], - "ai.tools": List[str], - "ai.top_k": int, - "ai.top_p": float, - "ai.total_cost": float, - "ai.total_tokens.used": int, - "ai.warnings": List[str], - "app_start_type": str, - "blocked_main_thread": bool, - "browser.name": str, - "browser.report.type": str, - "browser.script.invoker": str, - "browser.script.invoker_type": str, - "browser.script.source_char_position": int, - "browser.version": str, - "cache.hit": bool, - "cache.item_size": int, - "cache.key": List[str], - "cache.operation": str, - "cache.ttl": int, - "channel": str, - "client.address": str, - "client.port": int, - "cloudflare.d1.duration": int, - "cloudflare.d1.rows_read": int, - "cloudflare.d1.rows_written": int, - "code.file.path": str, - "code.filepath": str, - "code.function": str, - "code.function.name": str, - "code.line.number": int, - "code.lineno": int, - "code.namespace": str, - "db.collection.name": str, - "db.name": str, - "db.namespace": str, - "db.operation": str, - "db.operation.name": str, - "db.query.parameter.": str, - "db.query.summary": str, - "db.query.text": str, - "db.redis.connection": str, - "db.redis.parameters": List[str], - "db.sql.bindings": List[str], - "db.statement": str, - "db.system": str, - "db.system.name": str, - "db.user": str, - "device.brand": str, - "device.family": str, - "device.model": str, - "environment": str, - "error.type": str, - "event.id": int, - "event.name": str, - "exception.escaped": bool, - "exception.message": str, - "exception.stacktrace": str, - "exception.type": str, - "faas.coldstart": bool, - "faas.cron": str, - "faas.time": str, - "faas.trigger": str, - "flag.evaluation.": bool, - "frames.delay": int, - "frames.frozen": int, - "frames.slow": int, - "frames.total": int, - "fs_error": str, - "gen_ai.agent.name": str, - "gen_ai.assistant.message": str, - "gen_ai.choice": str, - "gen_ai.cost.input_tokens": float, - "gen_ai.cost.output_tokens": float, - "gen_ai.cost.total_tokens": float, - "gen_ai.operation.name": str, - "gen_ai.operation.type": str, - "gen_ai.pipeline.name": str, - "gen_ai.prompt": str, - "gen_ai.request.available_tools": str, - "gen_ai.request.frequency_penalty": float, - "gen_ai.request.max_tokens": int, - "gen_ai.request.messages": str, - "gen_ai.request.model": str, - "gen_ai.request.presence_penalty": float, - "gen_ai.request.seed": str, - "gen_ai.request.temperature": float, - "gen_ai.request.top_k": int, - "gen_ai.request.top_p": float, - "gen_ai.response.finish_reasons": str, - "gen_ai.response.id": str, - "gen_ai.response.model": str, - "gen_ai.response.streaming": bool, - "gen_ai.response.text": str, - "gen_ai.response.tokens_per_second": float, - "gen_ai.response.tool_calls": str, - "gen_ai.system": str, - "gen_ai.system.message": str, - "gen_ai.tool.description": str, - "gen_ai.tool.input": str, - "gen_ai.tool.message": str, - "gen_ai.tool.name": str, - "gen_ai.tool.output": str, - "gen_ai.tool.type": str, - "gen_ai.usage.completion_tokens": int, - "gen_ai.usage.input_tokens": int, - "gen_ai.usage.input_tokens.cached": int, - "gen_ai.usage.output_tokens": int, - "gen_ai.usage.output_tokens.reasoning": int, - "gen_ai.usage.prompt_tokens": int, - "gen_ai.usage.total_cost": float, - "gen_ai.usage.total_tokens": int, - "gen_ai.user.message": str, - "graphql.operation.name": str, - "graphql.operation.type": str, - "http.client_ip": str, - "http.decoded_response_content_length": int, - "http.flavor": str, - "http.fragment": str, - "http.host": str, - "http.method": str, - "http.query": str, - "http.request.connect_start": float, - "http.request.connection_end": float, - "http.request.domain_lookup_end": float, - "http.request.domain_lookup_start": float, - "http.request.fetch_start": float, - "http.request.header.": List[str], - "http.request.method": str, - "http.request.redirect_end": float, - "http.request.redirect_start": float, - "http.request.request_start": float, - "http.request.resend_count": int, - "http.request.response_end": float, - "http.request.response_start": float, - "http.request.secure_connection_start": float, - "http.request.time_to_first_byte": float, - "http.request.worker_start": float, - "http.response.body.size": int, - "http.response.header.": List[str], - "http.response.header.content-length": str, - "http.response.size": int, - "http.response.status_code": int, - "http.response_content_length": int, - "http.response_transfer_size": int, - "http.route": str, - "http.scheme": str, - "http.server_name": str, - "http.status_code": int, - "http.target": str, - "http.url": str, - "http.user_agent": str, - "id": str, - "jvm.gc.action": str, - "jvm.gc.name": str, - "jvm.memory.pool.name": str, - "jvm.memory.type": str, - "jvm.thread.daemon": bool, - "jvm.thread.state": str, - "lcp.element": str, - "lcp.id": str, - "lcp.size": int, - "lcp.url": str, - "logger.name": str, - "messaging.destination.connection": str, - "messaging.destination.name": str, - "messaging.message.body.size": int, - "messaging.message.envelope.size": int, - "messaging.message.id": str, - "messaging.message.receive.latency": int, - "messaging.message.retry.count": int, - "messaging.operation.type": str, - "messaging.system": str, - "method": str, - "navigation.type": str, - "nel.elapsed_time": int, - "nel.phase": str, - "nel.referrer": str, - "nel.sampling_function": float, - "nel.type": str, - "net.host.ip": str, - "net.host.name": str, - "net.host.port": int, - "net.peer.ip": str, - "net.peer.name": str, - "net.peer.port": int, - "net.protocol.name": str, - "net.protocol.version": str, - "net.sock.family": str, - "net.sock.host.addr": str, - "net.sock.host.port": int, - "net.sock.peer.addr": str, - "net.sock.peer.name": str, - "net.sock.peer.port": int, - "net.transport": str, - "network.local.address": str, - "network.local.port": int, - "network.peer.address": str, - "network.peer.port": int, - "network.protocol.name": str, - "network.protocol.version": str, - "network.transport": str, - "network.type": str, - "os.build_id": str, - "os.description": str, - "os.name": str, - "os.type": str, - "os.version": str, - "otel.scope.name": str, - "otel.scope.version": str, - "otel.status_code": str, - "otel.status_description": str, - "params.": str, - "previous_route": str, - "process.executable.name": str, - "process.pid": int, - "process.runtime.description": str, - "process.runtime.name": str, - "process.runtime.version": str, - "profile_id": str, - "query.": str, - "release": str, - "remix.action_form_data.": str, - "replay_id": str, - "resource.render_blocking_status": str, - "route": str, - "rpc.grpc.status_code": int, - "rpc.service": str, - "sentry._internal.dsc.environment": str, - "sentry._internal.dsc.org_id": str, - "sentry._internal.dsc.public_key": str, - "sentry._internal.dsc.release": str, - "sentry._internal.dsc.sample_rand": str, - "sentry._internal.dsc.sample_rate": str, - "sentry._internal.dsc.sampled": bool, - "sentry._internal.dsc.trace_id": str, - "sentry._internal.dsc.transaction": str, - "sentry._internal.observed_timestamp_nanos": str, - "sentry._internal.replay_is_buffering": bool, - "sentry.browser.name": str, - "sentry.browser.version": str, - "sentry.cancellation_reason": str, - "sentry.client_sample_rate": float, - "sentry.description": str, - "sentry.dist": str, - "sentry.environment": str, - "sentry.exclusive_time": int, - "sentry.http.prefetch": bool, - "sentry.idle_span_finish_reason": str, - "sentry.message.parameter.": str, - "sentry.message.template": str, - "sentry.module.": str, - "sentry.nextjs.ssr.function.route": str, - "sentry.nextjs.ssr.function.type": str, - "sentry.observed_timestamp_nanos": str, - "sentry.op": str, - "sentry.origin": str, - "sentry.platform": str, - "sentry.profile_id": str, - "sentry.release": str, - "sentry.replay_id": str, - "sentry.sdk.integrations": List[str], - "sentry.sdk.name": str, - "sentry.sdk.version": str, - "sentry.segment.id": str, - "sentry.segment.name": str, - "sentry.segment_id": str, - "sentry.server_sample_rate": float, - "sentry.span.source": str, - "sentry.trace.parent_span_id": str, - "sentry.transaction": str, - "server.address": str, - "server.port": int, - "service.name": str, - "service.version": str, - "thread.id": int, - "thread.name": str, - "transaction": str, - "type": str, - "ui.component_name": str, - "ui.contributes_to_ttfd": bool, - "ui.contributes_to_ttid": bool, - "url.domain": str, - "url.fragment": str, - "url.full": str, - "url.path": str, - "url.path.parameter.": str, - "url.port": int, - "url.query": str, - "url.scheme": str, - "url.template": str, - "url": str, - "user.email": str, - "user.full_name": str, - "user.geo.city": str, - "user.geo.country_code": str, - "user.geo.region": str, - "user.geo.subdivision": str, - "user.hash": str, - "user.id": str, - "user.ip_address": str, - "user.name": str, - "user.roles": List[str], - "user_agent.original": str, - }, - total=False, -) +Attributes = TypedDict("Attributes", { + "ai.citations": List[str], + "ai.completion_tokens.used": int, + "ai.documents": List[str], + "ai.finish_reason": str, + "ai.frequency_penalty": float, + "ai.function_call": str, + "ai.generation_id": str, + "ai.input_messages": str, + "ai.is_search_required": bool, + "ai.metadata": str, + "ai.model.provider": str, + "ai.model_id": str, + "ai.pipeline.name": str, + "ai.preamble": str, + "ai.presence_penalty": float, + "ai.prompt_tokens.used": int, + "ai.raw_prompting": bool, + "ai.response_format": str, + "ai.responses": List[str], + "ai.search_queries": List[str], + "ai.search_results": List[str], + "ai.seed": str, + "ai.streaming": bool, + "ai.tags": str, + "ai.temperature": float, + "ai.texts": List[str], + "ai.tool_calls": List[str], + "ai.tools": List[str], + "ai.top_k": int, + "ai.top_p": float, + "ai.total_cost": float, + "ai.total_tokens.used": int, + "ai.warnings": List[str], + "app_start_type": str, + "blocked_main_thread": bool, + "browser.name": str, + "browser.report.type": str, + "browser.script.invoker": str, + "browser.script.invoker_type": str, + "browser.script.source_char_position": int, + "browser.version": str, + "cache.hit": bool, + "cache.item_size": int, + "cache.key": List[str], + "cache.operation": str, + "cache.ttl": int, + "channel": str, + "client.address": str, + "client.port": int, + "cloudflare.d1.duration": int, + "cloudflare.d1.rows_read": int, + "cloudflare.d1.rows_written": int, + "code.file.path": str, + "code.filepath": str, + "code.function": str, + "code.function.name": str, + "code.line.number": int, + "code.lineno": int, + "code.namespace": str, + "db.collection.name": str, + "db.name": str, + "db.namespace": str, + "db.operation": str, + "db.operation.name": str, + "db.query.parameter.": str, + "db.query.summary": str, + "db.query.text": str, + "db.redis.connection": str, + "db.redis.parameters": List[str], + "db.sql.bindings": List[str], + "db.statement": str, + "db.system": str, + "db.system.name": str, + "db.user": str, + "device.brand": str, + "device.family": str, + "device.model": str, + "environment": str, + "error.type": str, + "event.id": int, + "event.name": str, + "exception.escaped": bool, + "exception.message": str, + "exception.stacktrace": str, + "exception.type": str, + "faas.coldstart": bool, + "faas.cron": str, + "faas.time": str, + "faas.trigger": str, + "flag.evaluation.": bool, + "frames.delay": int, + "frames.frozen": int, + "frames.slow": int, + "frames.total": int, + "fs_error": str, + "gen_ai.agent.name": str, + "gen_ai.assistant.message": str, + "gen_ai.choice": str, + "gen_ai.cost.input_tokens": float, + "gen_ai.cost.output_tokens": float, + "gen_ai.cost.total_tokens": float, + "gen_ai.operation.name": str, + "gen_ai.operation.type": str, + "gen_ai.pipeline.name": str, + "gen_ai.prompt": str, + "gen_ai.request.available_tools": str, + "gen_ai.request.frequency_penalty": float, + "gen_ai.request.max_tokens": int, + "gen_ai.request.messages": str, + "gen_ai.request.model": str, + "gen_ai.request.presence_penalty": float, + "gen_ai.request.seed": str, + "gen_ai.request.temperature": float, + "gen_ai.request.top_k": int, + "gen_ai.request.top_p": float, + "gen_ai.response.finish_reasons": str, + "gen_ai.response.id": str, + "gen_ai.response.model": str, + "gen_ai.response.streaming": bool, + "gen_ai.response.text": str, + "gen_ai.response.tokens_per_second": float, + "gen_ai.response.tool_calls": str, + "gen_ai.system": str, + "gen_ai.system.message": str, + "gen_ai.tool.description": str, + "gen_ai.tool.input": str, + "gen_ai.tool.message": str, + "gen_ai.tool.name": str, + "gen_ai.tool.output": str, + "gen_ai.tool.type": str, + "gen_ai.usage.completion_tokens": int, + "gen_ai.usage.input_tokens": int, + "gen_ai.usage.input_tokens.cached": int, + "gen_ai.usage.output_tokens": int, + "gen_ai.usage.output_tokens.reasoning": int, + "gen_ai.usage.prompt_tokens": int, + "gen_ai.usage.total_cost": float, + "gen_ai.usage.total_tokens": int, + "gen_ai.user.message": str, + "graphql.operation.name": str, + "graphql.operation.type": str, + "http.client_ip": str, + "http.decoded_response_content_length": int, + "http.flavor": str, + "http.fragment": str, + "http.host": str, + "http.method": str, + "http.query": str, + "http.request.connect_start": float, + "http.request.connection_end": float, + "http.request.domain_lookup_end": float, + "http.request.domain_lookup_start": float, + "http.request.fetch_start": float, + "http.request.header.": List[str], + "http.request.method": str, + "http.request.redirect_end": float, + "http.request.redirect_start": float, + "http.request.request_start": float, + "http.request.resend_count": int, + "http.request.response_end": float, + "http.request.response_start": float, + "http.request.secure_connection_start": float, + "http.request.time_to_first_byte": float, + "http.request.worker_start": float, + "http.response.body.size": int, + "http.response.header.": List[str], + "http.response.header.content-length": str, + "http.response.size": int, + "http.response.status_code": int, + "http.response_content_length": int, + "http.response_transfer_size": int, + "http.route": str, + "http.scheme": str, + "http.server_name": str, + "http.status_code": int, + "http.target": str, + "http.url": str, + "http.user_agent": str, + "id": str, + "jvm.gc.action": str, + "jvm.gc.name": str, + "jvm.memory.pool.name": str, + "jvm.memory.type": str, + "jvm.thread.daemon": bool, + "jvm.thread.state": str, + "lcp.element": str, + "lcp.id": str, + "lcp.size": int, + "lcp.url": str, + "logger.name": str, + "messaging.destination.connection": str, + "messaging.destination.name": str, + "messaging.message.body.size": int, + "messaging.message.envelope.size": int, + "messaging.message.id": str, + "messaging.message.receive.latency": int, + "messaging.message.retry.count": int, + "messaging.operation.type": str, + "messaging.system": str, + "method": str, + "navigation.type": str, + "nel.elapsed_time": int, + "nel.phase": str, + "nel.referrer": str, + "nel.sampling_function": float, + "nel.type": str, + "net.host.ip": str, + "net.host.name": str, + "net.host.port": int, + "net.peer.ip": str, + "net.peer.name": str, + "net.peer.port": int, + "net.protocol.name": str, + "net.protocol.version": str, + "net.sock.family": str, + "net.sock.host.addr": str, + "net.sock.host.port": int, + "net.sock.peer.addr": str, + "net.sock.peer.name": str, + "net.sock.peer.port": int, + "net.transport": str, + "network.local.address": str, + "network.local.port": int, + "network.peer.address": str, + "network.peer.port": int, + "network.protocol.name": str, + "network.protocol.version": str, + "network.transport": str, + "network.type": str, + "os.build_id": str, + "os.description": str, + "os.name": str, + "os.type": str, + "os.version": str, + "otel.scope.name": str, + "otel.scope.version": str, + "otel.status_code": str, + "otel.status_description": str, + "params.": str, + "previous_route": str, + "process.executable.name": str, + "process.pid": int, + "process.runtime.description": str, + "process.runtime.name": str, + "process.runtime.version": str, + "profile_id": str, + "query.": str, + "release": str, + "remix.action_form_data.": str, + "replay_id": str, + "resource.render_blocking_status": str, + "route": str, + "rpc.grpc.status_code": int, + "rpc.service": str, + "sentry._internal.dsc.environment": str, + "sentry._internal.dsc.org_id": str, + "sentry._internal.dsc.public_key": str, + "sentry._internal.dsc.release": str, + "sentry._internal.dsc.sample_rand": str, + "sentry._internal.dsc.sample_rate": str, + "sentry._internal.dsc.sampled": bool, + "sentry._internal.dsc.trace_id": str, + "sentry._internal.dsc.transaction": str, + "sentry._internal.observed_timestamp_nanos": str, + "sentry._internal.replay_is_buffering": bool, + "sentry.browser.name": str, + "sentry.browser.version": str, + "sentry.cancellation_reason": str, + "sentry.client_sample_rate": float, + "sentry.description": str, + "sentry.dist": str, + "sentry.environment": str, + "sentry.exclusive_time": int, + "sentry.http.prefetch": bool, + "sentry.idle_span_finish_reason": str, + "sentry.message.parameter.": str, + "sentry.message.template": str, + "sentry.module.": str, + "sentry.nextjs.ssr.function.route": str, + "sentry.nextjs.ssr.function.type": str, + "sentry.observed_timestamp_nanos": str, + "sentry.op": str, + "sentry.origin": str, + "sentry.platform": str, + "sentry.profile_id": str, + "sentry.release": str, + "sentry.replay_id": str, + "sentry.sdk.integrations": List[str], + "sentry.sdk.name": str, + "sentry.sdk.version": str, + "sentry.segment.id": str, + "sentry.segment.name": str, + "sentry.segment_id": str, + "sentry.server_sample_rate": float, + "sentry.span.source": str, + "sentry.trace.parent_span_id": str, + "sentry.transaction": str, + "server.address": str, + "server.port": int, + "service.name": str, + "service.version": str, + "thread.id": int, + "thread.name": str, + "transaction": str, + "type": str, + "ui.component_name": str, + "ui.contributes_to_ttfd": bool, + "ui.contributes_to_ttid": bool, + "url.domain": str, + "url.fragment": str, + "url.full": str, + "url.path": str, + "url.path.parameter.": str, + "url.port": int, + "url.query": str, + "url.scheme": str, + "url.template": str, + "url": str, + "user.email": str, + "user.full_name": str, + "user.geo.city": str, + "user.geo.country_code": str, + "user.geo.region": str, + "user.geo.subdivision": str, + "user.hash": str, + "user.id": str, + "user.ip_address": str, + "user.name": str, + "user.roles": List[str], + "user_agent.original": str, +}, total=False) """TypedDict representing a collection of attributes, including deprecated and non-deprecated ones.""" __all__ = [ @@ -6818,3 +7393,4 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "Attributes", "ATTRIBUTE_NAMES", ] + diff --git a/scripts/generate_attributes.ts b/scripts/generate_attributes.ts index de997dc..305263a 100644 --- a/scripts/generate_attributes.ts +++ b/scripts/generate_attributes.ts @@ -13,6 +13,9 @@ export async function generateAttributes() { // Generate and write Python code writeToPython(attributesDir, attributeFiles); + + // Generate and write PHP code + writeToPhp(attributesDir, attributeFiles); } async function getAllJsonFiles(dir: string): Promise { @@ -512,3 +515,112 @@ function convertToPythonLiteral(value: AttributeJson['example']): string { } return JSON.stringify(value); } + +function writeToPhp(attributesDir: string, attributeFiles: string[]) { + let content = ' 0) { + content += ` *\n`; + content += ` * Aliases: ${alias.join(', ')}\n`; + } + + if (deprecation) { + content += ` *\n`; + let deprecationText = '@deprecated'; + if (deprecation.replacement) { + deprecationText += ` Use ${deprecation.replacement} instead`; + } + if (deprecation.reason) { + deprecationText += ` - ${deprecation.reason}`; + } + content += ` * ${deprecationText}\n`; + } + + if (example !== undefined) { + const phpExample = convertToPhpLiteral(example); + content += ` *\n`; + content += ` * @example ${phpExample}\n`; + } + + content += ` */\n`; + content += ` public const ${constantName} = '${key}';\n\n`; + } + + content += '}\n'; + + // Write the generated content to the file + const outputFilePath = path.join(__dirname, '..', 'php', 'src', 'Attributes.php'); + fs.writeFileSync(outputFilePath, content); + + console.log(`Generated PHP attributes file at: ${outputFilePath}`); +} + +function getPhpType(type: AttributeJson['type']): string { + switch (type) { + case 'string': + return 'string'; + case 'boolean': + return 'bool'; + case 'integer': + return 'int'; + case 'double': + return 'float'; + case 'string[]': + return 'array'; + case 'boolean[]': + return 'array'; + case 'integer[]': + return 'array'; + case 'double[]': + return 'array'; + default: + throw new Error(`Unknown attribute type: ${type}`); + } +} + +function convertToPhpLiteral(value: AttributeJson['example']): string { + if (value === null) return 'null'; + if (typeof value === 'boolean') return value ? 'true' : 'false'; + if (typeof value === 'string') return JSON.stringify(value); + if (typeof value === 'number') return value.toString(); + if (Array.isArray(value)) { + const items = value.map(convertToPhpLiteral); + return `[${items.join(', ')}]`; + } + return JSON.stringify(value); +} diff --git a/scripts/generate_op.ts b/scripts/generate_op.ts index 11476af..22fb3e7 100644 --- a/scripts/generate_op.ts +++ b/scripts/generate_op.ts @@ -7,6 +7,7 @@ export async function generateOps() { const opFiles = await fs.promises.readdir(opDir); writeToJs(opDir, opFiles); writeToRust(opDir, opFiles); + writeToPhp(opDir, opFiles); } function writeToRust(opDir: string, opFiles: string[]) { @@ -75,3 +76,46 @@ function writeToJs(opDir: string, opFiles: string[]) { fs.writeFileSync(opFilePath, opContent); } + +function writeToPhp(opDir: string, opFiles: string[]) { + let content = '", "reason": "Instead of adding every binding in the db.sql.bindings attribute, add them as individual entires with db.query.parameter.." }, - "example": ["1", "foo"], - "sdks": ["php-laravel"] + "example": [ + "1", + "foo" + ], + "sdks": [ + "php-laravel" + ] }, { "key": "db.statement", @@ -563,7 +665,9 @@ "_status": null, "replacement": "db.query.text" }, - "alias": ["db.query.text"] + "alias": [ + "db.query.text" + ] }, { "key": "db.system", @@ -578,7 +682,9 @@ "_status": null, "replacement": "db.system.name" }, - "alias": ["db.system.name"] + "alias": [ + "db.system.name" + ] }, { "key": "gen_ai.prompt", @@ -607,7 +713,10 @@ "_status": null, "replacement": "gen_ai.usage.output_tokens" }, - "alias": ["ai.completion_tokens.used", "gen_ai.usage.output_tokens"] + "alias": [ + "ai.completion_tokens.used", + "gen_ai.usage.output_tokens" + ] }, { "key": "gen_ai.usage.prompt_tokens", @@ -622,7 +731,10 @@ "_status": null, "replacement": "gen_ai.usage.input_tokens" }, - "alias": ["ai.prompt_tokens.used", "gen_ai.usage.input_tokens"] + "alias": [ + "ai.prompt_tokens.used", + "gen_ai.usage.input_tokens" + ] }, { "key": "gen_ai.usage.total_cost", @@ -651,7 +763,9 @@ "_status": null, "replacement": "client.address" }, - "alias": ["client.address"] + "alias": [ + "client.address" + ] }, { "key": "http.flavor", @@ -666,7 +780,10 @@ "_status": null, "replacement": "network.protocol.version" }, - "alias": ["network.protocol.version", "net.protocol.version"] + "alias": [ + "network.protocol.version", + "net.protocol.version" + ] }, { "key": "http.host", @@ -682,7 +799,12 @@ "replacement": "server.address", "reason": "Deprecated, use one of `server.address` or `client.address`, depending on the usage" }, - "alias": ["server.address", "client.address", "http.server_name", "net.host.name"] + "alias": [ + "server.address", + "client.address", + "http.server_name", + "net.host.name" + ] }, { "key": "http.method", @@ -697,7 +819,9 @@ "_status": null, "replacement": "http.request.method" }, - "alias": ["http.request.method"] + "alias": [ + "http.request.method" + ] }, { "key": "http.response_content_length", @@ -712,7 +836,10 @@ "_status": "backfill", "replacement": "http.response.body.size" }, - "alias": ["http.response.body.size", "http.response.header.content-length"] + "alias": [ + "http.response.body.size", + "http.response.header.content-length" + ] }, { "key": "http.response_transfer_size", @@ -727,7 +854,9 @@ "_status": "backfill", "replacement": "http.response.size" }, - "alias": ["http.response.size"] + "alias": [ + "http.response.size" + ] }, { "key": "http.scheme", @@ -742,7 +871,9 @@ "_status": null, "replacement": "url.scheme" }, - "alias": ["url.scheme"] + "alias": [ + "url.scheme" + ] }, { "key": "http.server_name", @@ -757,7 +888,11 @@ "_status": null, "replacement": "server.address" }, - "alias": ["server.address", "net.host.name", "http.host"] + "alias": [ + "server.address", + "net.host.name", + "http.host" + ] }, { "key": "http.status_code", @@ -772,7 +907,9 @@ "_status": null, "replacement": "http.response.status_code" }, - "alias": ["http.response.status_code"] + "alias": [ + "http.response.status_code" + ] }, { "key": "http.target", @@ -802,7 +939,10 @@ "_status": null, "replacement": "url.full" }, - "alias": ["url.full", "url"] + "alias": [ + "url.full", + "url" + ] }, { "key": "http.user_agent", @@ -817,7 +957,9 @@ "_status": null, "replacement": "user_agent.original" }, - "alias": ["user_agent.original"] + "alias": [ + "user_agent.original" + ] }, { "key": "net.host.ip", @@ -832,7 +974,10 @@ "_status": null, "replacement": "network.local.address" }, - "alias": ["network.local.address", "net.sock.host.addr"] + "alias": [ + "network.local.address", + "net.sock.host.addr" + ] }, { "key": "net.host.name", @@ -847,7 +992,11 @@ "_status": null, "replacement": "server.address" }, - "alias": ["server.address", "http.server_name", "http.host"] + "alias": [ + "server.address", + "http.server_name", + "http.host" + ] }, { "key": "net.host.port", @@ -862,7 +1011,9 @@ "_status": null, "replacement": "server.port" }, - "alias": ["server.port"] + "alias": [ + "server.port" + ] }, { "key": "net.peer.ip", @@ -877,7 +1028,10 @@ "_status": null, "replacement": "network.peer.address" }, - "alias": ["network.peer.address", "net.sock.peer.addr"] + "alias": [ + "network.peer.address", + "net.sock.peer.addr" + ] }, { "key": "net.peer.name", @@ -922,7 +1076,9 @@ "_status": null, "replacement": "network.protocol.name" }, - "alias": ["network.protocol.name"] + "alias": [ + "network.protocol.name" + ] }, { "key": "net.protocol.version", @@ -937,7 +1093,10 @@ "_status": null, "replacement": "network.protocol.version" }, - "alias": ["network.protocol.version", "http.flavor"] + "alias": [ + "network.protocol.version", + "http.flavor" + ] }, { "key": "net.sock.family", @@ -967,7 +1126,10 @@ "_status": null, "replacement": "network.local.address" }, - "alias": ["network.local.address", "net.host.ip"] + "alias": [ + "network.local.address", + "net.host.ip" + ] }, { "key": "net.sock.host.port", @@ -982,7 +1144,9 @@ "_status": null, "replacement": "network.local.port" }, - "alias": ["network.local.port"] + "alias": [ + "network.local.port" + ] }, { "key": "net.sock.peer.addr", @@ -997,7 +1161,10 @@ "_status": null, "replacement": "network.peer.address" }, - "alias": ["network.peer.address", "net.peer.ip"] + "alias": [ + "network.peer.address", + "net.peer.ip" + ] }, { "key": "net.sock.peer.name", @@ -1040,7 +1207,9 @@ "_status": null, "replacement": "network.transport" }, - "alias": ["network.transport"] + "alias": [ + "network.transport" + ] }, { "key": "query.", @@ -1071,7 +1240,9 @@ "_status": null, "replacement": "browser.name" }, - "alias": ["browser.name"] + "alias": [ + "browser.name" + ] }, { "key": "sentry.browser.version", @@ -1086,7 +1257,9 @@ "_status": null, "replacement": "browser.version" }, - "alias": ["browser.version"] + "alias": [ + "browser.version" + ] }, { "key": "sentry.observed_timestamp_nanos", @@ -1101,7 +1274,9 @@ "_status": "backfill", "replacement": "sentry._internal.observed_timestamp_nanos" }, - "alias": ["sentry._internal.observed_timestamp_nanos"] + "alias": [ + "sentry._internal.observed_timestamp_nanos" + ] }, { "key": "sentry.segment_id", @@ -1112,11 +1287,13 @@ }, "is_in_otel": false, "example": "051581bf3cb55c13", - "alias": ["sentry.segment.id"], + "alias": [ + "sentry.segment.id" + ], "deprecation": { "_status": null, "replacement": "sentry.segment.id" } } ] -} +} \ No newline at end of file