diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index d6b6f0b0f..023433cff 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -13426,7 +13426,7 @@ export type OTEL_STATUS_DESCRIPTION_TYPE = string; * * Has Dynamic Suffix: true * - * Aliases: {@link URL_PATH_PARAMETER_KEY} `url.path.parameter.` + * Aliases: {@link URL_PATH_PARAMETER_KEY} `url.path.parameter.`, {@link URL_PATH_PARAMS_KEY} `url.path.params.` * * @example "params.id='123'" */ @@ -17130,7 +17130,7 @@ export type URL_PATH_TYPE = string; * * Has Dynamic Suffix: true * - * Aliases: {@link PARAMS_KEY} `params.` + * Aliases: {@link PARAMS_KEY} `params.`, {@link URL_PATH_PARAMS_KEY} `url.path.params.` * * @example "url.path.parameter.id='123'" */ @@ -17146,6 +17146,39 @@ export const URL_PATH_PARAMETER_KEY_BASE = 'url.path.parameter'; */ export type URL_PATH_PARAMETER_KEY_TYPE = string; +// Path: model/attributes/url/url__path__params__[key].json + +/** + * Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. `url.path.params.` + * + * Attribute Value Type: `string` {@link URL_PATH_PARAMS_KEY_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * Has Dynamic Suffix: true + * + * Aliases: {@link URL_PATH_PARAMETER_KEY} `url.path.parameter.`, {@link PARAMS_KEY} `params.` + * + * @deprecated Use {@link URL_PATH_PARAMETER_KEY} (url.path.parameter.) instead - This attribute is being deprecated in favor of url.path.parameter.. + * @example "url.path.params.id='123'" + */ +export const URL_PATH_PARAMS_KEY = 'url.path.params.'; + +/** + * Base key for {@link URL_PATH_PARAMS_KEY}. Use with a dynamic suffix, e.g. `${URL_PATH_PARAMS_KEY_BASE}.${key}`. + * + * @deprecated Use {@link URL_PATH_PARAMETER_KEY_BASE} (url.path.parameter) instead - This attribute is being deprecated in favor of url.path.parameter.. + */ +export const URL_PATH_PARAMS_KEY_BASE = 'url.path.params'; + +/** + * Type for {@link URL_PATH_PARAMS_KEY} url.path.params. + */ +export type URL_PATH_PARAMS_KEY_TYPE = string; + // Path: model/attributes/url/url__port.json /** @@ -19163,6 +19196,7 @@ export const ATTRIBUTE_TYPE: Record = { 'url.full': 'string', 'url.path': 'string', 'url.path.parameter.': 'string', + 'url.path.params.': 'string', 'url.port': 'integer', 'url.query': 'string', 'url.same_origin': 'boolean', @@ -19987,6 +20021,7 @@ export type AttributeName = | typeof URL_FULL | typeof URL_PATH | typeof URL_PATH_PARAMETER_KEY + | typeof URL_PATH_PARAMS_KEY | typeof URL_PORT | typeof URL_QUERY | typeof URL_SAME_ORIGIN @@ -29519,7 +29554,7 @@ export const ATTRIBUTE_METADATA: Record = { brief: 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', type: 'string', - keys: ['params.', 'url.path.parameter.'], + keys: ['params.', 'url.path.parameter.', 'url.path.params.'], applyScrubbing: { key: 'auto', }, @@ -29527,8 +29562,11 @@ export const ATTRIBUTE_METADATA: Record = { visibility: 'public', hasDynamicSuffix: true, example: "params.id='123'", - aliases: ['url.path.parameter.'], - changelog: [{ version: '0.1.0', prs: [103] }], + aliases: ['url.path.parameter.', 'url.path.params.'], + changelog: [ + { version: 'next', description: 'Added url.path.params. as an alias' }, + { version: '0.1.0', prs: [103] }, + ], }, 'performance.activationStart': { brief: 'The time between initiating a navigation to a page and the browser activating the page', @@ -32125,7 +32163,7 @@ export const ATTRIBUTE_METADATA: Record = { brief: 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', type: 'string', - keys: ['url.path.parameter.', 'params.'], + keys: ['url.path.parameter.', 'params.', 'url.path.params.'], applyScrubbing: { key: 'auto', }, @@ -32133,8 +32171,32 @@ export const ATTRIBUTE_METADATA: Record = { visibility: 'public', hasDynamicSuffix: true, example: "url.path.parameter.id='123'", - aliases: ['params.'], - changelog: [{ version: '0.1.0', prs: [103] }], + aliases: ['params.', 'url.path.params.'], + changelog: [ + { version: 'next', description: 'Added url.path.params. as an alias' }, + { version: '0.1.0', prs: [103] }, + ], + }, + 'url.path.params.': { + brief: + 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', + type: 'string', + keys: ['url.path.parameter.', 'params.', 'url.path.params.'], + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + hasDynamicSuffix: true, + example: "url.path.params.id='123'", + examples: ["url.path.params.id='123'"], + deprecation: { + replacement: 'url.path.parameter.', + reason: 'This attribute is being deprecated in favor of url.path.parameter..', + status: 'backfill', + }, + aliases: ['url.path.parameter.', 'params.'], + changelog: [{ version: 'next', prs: [586], description: 'Added url.path.params. attribute' }], }, 'url.port': { brief: 'Server port number.', @@ -36709,7 +36771,7 @@ export const ATTRIBUTE_SEARCH_METADATA: Record type: 'string', brief: 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', - deprecationChain: ['params.', 'url.path.parameter.'], + deprecationChain: ['params.', 'url.path.parameter.', 'url.path.params.'], }, 'performance.activationStart': { canonicalName: 'browser.performance.navigation.activation_start', @@ -37693,7 +37755,14 @@ export const ATTRIBUTE_SEARCH_METADATA: Record type: 'string', brief: 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', - deprecationChain: ['url.path.parameter.', 'params.'], + deprecationChain: ['url.path.parameter.', 'params.', 'url.path.params.'], + }, + 'url.path.params.': { + canonicalName: 'url.path.parameter.', + type: 'string', + brief: + 'Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.', + deprecationChain: ['url.path.parameter.', 'params.', 'url.path.params.'], }, 'url.port': { canonicalName: 'url.port', @@ -38799,6 +38868,7 @@ export type Attributes = { [URL_FULL]?: URL_FULL_TYPE; [URL_PATH]?: URL_PATH_TYPE; [URL_PATH_PARAMETER_KEY]?: URL_PATH_PARAMETER_KEY_TYPE; + [URL_PATH_PARAMS_KEY]?: URL_PATH_PARAMS_KEY_TYPE; [URL_PORT]?: URL_PORT_TYPE; [URL_QUERY]?: URL_QUERY_TYPE; [URL_SAME_ORIGIN]?: URL_SAME_ORIGIN_TYPE; diff --git a/model/attributes/params/params__[key].json b/model/attributes/params/params__[key].json index 74de76cf6..52d0b53f0 100644 --- a/model/attributes/params/params__[key].json +++ b/model/attributes/params/params__[key].json @@ -8,9 +8,13 @@ }, "is_in_otel": false, "example": "params.id='123'", - "alias": ["url.path.parameter."], + "alias": ["url.path.parameter.", "url.path.params."], "visibility": "public", "changelog": [ + { + "version": "next", + "description": "Added url.path.params. as an alias" + }, { "version": "0.1.0", "prs": [103] diff --git a/model/attributes/url/url__path__parameter__[key].json b/model/attributes/url/url__path__parameter__[key].json index 1a891b751..18fe3e49e 100644 --- a/model/attributes/url/url__path__parameter__[key].json +++ b/model/attributes/url/url__path__parameter__[key].json @@ -8,9 +8,13 @@ }, "is_in_otel": false, "example": "url.path.parameter.id='123'", - "alias": ["params."], + "alias": ["params.", "url.path.params."], "visibility": "public", "changelog": [ + { + "version": "next", + "description": "Added url.path.params. as an alias" + }, { "version": "0.1.0", "prs": [103] diff --git a/model/attributes/url/url__path__params__[key].json b/model/attributes/url/url__path__params__[key].json new file mode 100644 index 000000000..2b90d13c1 --- /dev/null +++ b/model/attributes/url/url__path__params__[key].json @@ -0,0 +1,25 @@ +{ + "key": "url.path.params.", + "brief": "Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", + "has_dynamic_suffix": true, + "type": "string", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "examples": ["url.path.params.id='123'"], + "alias": ["url.path.parameter.", "params."], + "deprecation": { + "_status": "backfill", + "replacement": "url.path.parameter.", + "reason": "This attribute is being deprecated in favor of url.path.parameter.." + }, + "visibility": "public", + "changelog": [ + { + "version": "next", + "prs": [586], + "description": "Added url.path.params. attribute" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 568709802..9cb74e8e5 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -392,6 +392,7 @@ class _AttributeNamesMeta(type): "TRANSACTION", "TTFB_REQUESTTIME", "TTFB", + "URL_PATH_PARAMS_KEY", "URL_SAME_ORIGIN", "URL", } @@ -7961,7 +7962,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Defined in OTEL: No Visibility: public Has Dynamic Suffix: true - Aliases: url.path.parameter. + Aliases: url.path.parameter., url.path.params. Example: "params.id='123'" """ @@ -9979,10 +9980,24 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Defined in OTEL: No Visibility: public Has Dynamic Suffix: true - Aliases: params. + Aliases: params., url.path.params. Example: "url.path.parameter.id='123'" """ + # Path: model/attributes/url/url__path__params__[key].json + URL_PATH_PARAMS_KEY: Literal["url.path.params."] = "url.path.params." + """Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router. + + Type: str + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Has Dynamic Suffix: true + Aliases: url.path.parameter., params. + DEPRECATED: Use url.path.parameter. instead - This attribute is being deprecated in favor of url.path.parameter.. + Example: "url.path.params.id='123'" + """ + # Path: model/attributes/url/url__port.json URL_PORT: Literal["url.port"] = "url.port" """Server port number. @@ -21792,14 +21807,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): keys=( "params.", "url.path.parameter.", + "url.path.params.", ), apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), is_in_otel=False, visibility=Visibility.PUBLIC, has_dynamic_suffix=True, example="params.id='123'", - aliases=["url.path.parameter."], + aliases=["url.path.parameter.", "url.path.params."], changelog=[ + ChangelogEntry( + version="next", description="Added url.path.params. as an alias" + ), ChangelogEntry(version="0.1.0", prs=[103]), ], ), @@ -24720,17 +24739,49 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): keys=( "url.path.parameter.", "params.", + "url.path.params.", ), apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), is_in_otel=False, visibility=Visibility.PUBLIC, has_dynamic_suffix=True, example="url.path.parameter.id='123'", - aliases=["params."], + aliases=["params.", "url.path.params."], changelog=[ + ChangelogEntry( + version="next", description="Added url.path.params. as an alias" + ), ChangelogEntry(version="0.1.0", prs=[103]), ], ), + "url.path.params.": AttributeMetadata( + brief="Decoded parameters extracted from a URL path. Usually added by client-side routing frameworks like vue-router.", + type=AttributeType.STRING, + keys=( + "url.path.parameter.", + "params.", + "url.path.params.", + ), + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + has_dynamic_suffix=True, + example="url.path.params.id='123'", + examples=["url.path.params.id='123'"], + deprecation=DeprecationInfo( + replacement="url.path.parameter.", + reason="This attribute is being deprecated in favor of url.path.parameter..", + status=DeprecationStatus.BACKFILL, + ), + aliases=["url.path.parameter.", "params."], + changelog=[ + ChangelogEntry( + version="next", + prs=[586], + description="Added url.path.params. attribute", + ), + ], + ), "url.port": AttributeMetadata( brief="Server port number.", type=AttributeType.INTEGER, @@ -26248,6 +26299,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "url.full": str, "url.path": str, "url.path.parameter.": str, + "url.path.params.": str, "url.port": int, "url.query": str, "url.same_origin": bool,