diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 6e68f75d..d4caf14d 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -6889,6 +6889,29 @@ export const NET_TRANSPORT = 'net.transport'; */ export type NET_TRANSPORT_TYPE = string; +// Path: model/attributes/os/os__build.json + +/** + * The build ID of the operating system. `os.build` + * + * Attribute Value Type: `string` {@link OS_BUILD_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * Aliases: {@link OS_BUILD_ID} `os.build_id` + * + * @deprecated Use {@link OS_BUILD_ID} (os.build_id) instead + * @example "1234567890" + */ +export const OS_BUILD = 'os.build'; + +/** + * Type for {@link OS_BUILD} os.build + */ +export type OS_BUILD_TYPE = string; + // Path: model/attributes/os/os__build_id.json /** @@ -6900,6 +6923,8 @@ export type NET_TRANSPORT_TYPE = string; * * Attribute defined in OTEL: Yes * + * Aliases: {@link OS_BUILD} `os.build` + * * @example "1234567890" */ export const OS_BUILD_ID = 'os.build_id'; @@ -6929,6 +6954,26 @@ export const OS_DESCRIPTION = 'os.description'; */ export type OS_DESCRIPTION_TYPE = string; +// Path: model/attributes/os/os__kernel_version.json + +/** + * An independent kernel version string. Typically the entire output of the `uname` syscall. `os.kernel_version` + * + * Attribute Value Type: `string` {@link OS_KERNEL_VERSION_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "20.2.0" + */ +export const OS_KERNEL_VERSION = 'os.kernel_version'; + +/** + * Type for {@link OS_KERNEL_VERSION} os.kernel_version + */ +export type OS_KERNEL_VERSION_TYPE = string; + // Path: model/attributes/os/os__name.json /** @@ -6949,6 +6994,66 @@ export const OS_NAME = 'os.name'; */ export type OS_NAME_TYPE = string; +// Path: model/attributes/os/os__raw_description.json + +/** + * An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given. `os.raw_description` + * + * Attribute Value Type: `string` {@link OS_RAW_DESCRIPTION_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "Ubuntu 22.04.4 LTS (Jammy Jellyfish)" + */ +export const OS_RAW_DESCRIPTION = 'os.raw_description'; + +/** + * Type for {@link OS_RAW_DESCRIPTION} os.raw_description + */ +export type OS_RAW_DESCRIPTION_TYPE = string; + +// Path: model/attributes/os/os__rooted.json + +/** + * Whether the operating system has been jailbroken or rooted. `os.rooted` + * + * Attribute Value Type: `boolean` {@link OS_ROOTED_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example true + */ +export const OS_ROOTED = 'os.rooted'; + +/** + * Type for {@link OS_ROOTED} os.rooted + */ +export type OS_ROOTED_TYPE = boolean; + +// Path: model/attributes/os/os__theme.json + +/** + * Whether the OS runs in dark mode or light mode. `os.theme` + * + * Attribute Value Type: `string` {@link OS_THEME_TYPE} + * + * Contains PII: maybe + * + * Attribute defined in OTEL: No + * + * @example "dark" + */ +export const OS_THEME = 'os.theme'; + +/** + * Type for {@link OS_THEME} os.theme + */ +export type OS_THEME_TYPE = string; + // Path: model/attributes/os/os__type.json /** @@ -10543,9 +10648,14 @@ export const ATTRIBUTE_TYPE: Record = { [NET_SOCK_PEER_NAME]: 'string', [NET_SOCK_PEER_PORT]: 'integer', [NET_TRANSPORT]: 'string', + [OS_BUILD]: 'string', [OS_BUILD_ID]: 'string', [OS_DESCRIPTION]: 'string', + [OS_KERNEL_VERSION]: 'string', [OS_NAME]: 'string', + [OS_RAW_DESCRIPTION]: 'string', + [OS_ROOTED]: 'boolean', + [OS_THEME]: 'string', [OS_TYPE]: 'string', [OS_VERSION]: 'string', [OTEL_SCOPE_NAME]: 'string', @@ -11031,9 +11141,14 @@ export type AttributeName = | typeof NET_SOCK_PEER_NAME | typeof NET_SOCK_PEER_PORT | typeof NET_TRANSPORT + | typeof OS_BUILD | typeof OS_BUILD_ID | typeof OS_DESCRIPTION + | typeof OS_KERNEL_VERSION | typeof OS_NAME + | typeof OS_RAW_DESCRIPTION + | typeof OS_ROOTED + | typeof OS_THEME | typeof OS_TYPE | typeof OS_VERSION | typeof OTEL_SCOPE_NAME @@ -15350,6 +15465,22 @@ export const ATTRIBUTE_METADATA: Record = { aliases: [NETWORK_TRANSPORT], changelog: [{ version: '0.1.0', prs: [61, 127] }, { version: '0.0.0' }], }, + [OS_BUILD]: { + brief: 'The build ID of the operating system.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '1234567890', + deprecation: { + replacement: 'os.build_id', + }, + aliases: [OS_BUILD_ID], + changelog: [ + { version: 'next', prs: [301], description: 'Added os.build attribute, deprecated in favor of os.build_id' }, + ], + }, [OS_BUILD_ID]: { brief: 'The build ID of the operating system.', type: 'string', @@ -15358,7 +15489,12 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, example: '1234567890', - changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], + aliases: [OS_BUILD], + changelog: [ + { version: 'next', prs: [301], description: 'Added os.build as alias' }, + { version: '0.1.0', prs: [127] }, + { version: '0.0.0' }, + ], }, [OS_DESCRIPTION]: { brief: @@ -15371,6 +15507,16 @@ export const ATTRIBUTE_METADATA: Record = { example: 'Ubuntu 18.04.1 LTS', changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, + [OS_KERNEL_VERSION]: { + brief: 'An independent kernel version string. Typically the entire output of the `uname` syscall.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: '20.2.0', + changelog: [{ version: 'next', prs: [301], description: 'Added os.kernel_version attribute' }], + }, [OS_NAME]: { brief: 'Human readable operating system name.', type: 'string', @@ -15381,6 +15527,37 @@ export const ATTRIBUTE_METADATA: Record = { example: 'Ubuntu', changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, + [OS_RAW_DESCRIPTION]: { + brief: + 'An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'Ubuntu 22.04.4 LTS (Jammy Jellyfish)', + changelog: [{ version: 'next', prs: [301], description: 'Added os.raw_description attribute' }], + }, + [OS_ROOTED]: { + brief: 'Whether the operating system has been jailbroken or rooted.', + type: 'boolean', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: true, + changelog: [{ version: 'next', prs: [301], description: 'Added os.rooted attribute' }], + }, + [OS_THEME]: { + brief: 'Whether the OS runs in dark mode or light mode.', + type: 'string', + pii: { + isPii: 'maybe', + }, + isInOtel: false, + example: 'dark', + changelog: [{ version: 'next', prs: [301], description: 'Added os.theme attribute' }], + }, [OS_TYPE]: { brief: 'The operating system type.', type: 'string', @@ -17422,9 +17599,14 @@ export type Attributes = { [NET_SOCK_PEER_NAME]?: NET_SOCK_PEER_NAME_TYPE; [NET_SOCK_PEER_PORT]?: NET_SOCK_PEER_PORT_TYPE; [NET_TRANSPORT]?: NET_TRANSPORT_TYPE; + [OS_BUILD]?: OS_BUILD_TYPE; [OS_BUILD_ID]?: OS_BUILD_ID_TYPE; [OS_DESCRIPTION]?: OS_DESCRIPTION_TYPE; + [OS_KERNEL_VERSION]?: OS_KERNEL_VERSION_TYPE; [OS_NAME]?: OS_NAME_TYPE; + [OS_RAW_DESCRIPTION]?: OS_RAW_DESCRIPTION_TYPE; + [OS_ROOTED]?: OS_ROOTED_TYPE; + [OS_THEME]?: OS_THEME_TYPE; [OS_TYPE]?: OS_TYPE_TYPE; [OS_VERSION]?: OS_VERSION_TYPE; [OTEL_SCOPE_NAME]?: OTEL_SCOPE_NAME_TYPE; diff --git a/model/attributes/os/os__build.json b/model/attributes/os/os__build.json new file mode 100644 index 00000000..67a90be7 --- /dev/null +++ b/model/attributes/os/os__build.json @@ -0,0 +1,22 @@ +{ + "key": "os.build", + "brief": "The build ID of the operating system.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "1234567890", + "deprecation": { + "_status": "backfill", + "replacement": "os.build_id" + }, + "alias": ["os.build_id"], + "changelog": [ + { + "version": "next", + "prs": [301], + "description": "Added os.build attribute, deprecated in favor of os.build_id" + } + ] +} diff --git a/model/attributes/os/os__build_id.json b/model/attributes/os/os__build_id.json index 6f62aeb0..8f2f88ba 100644 --- a/model/attributes/os/os__build_id.json +++ b/model/attributes/os/os__build_id.json @@ -7,7 +7,13 @@ }, "is_in_otel": true, "example": "1234567890", + "alias": ["os.build"], "changelog": [ + { + "version": "next", + "prs": [301], + "description": "Added os.build as alias" + }, { "version": "0.1.0", "prs": [127] diff --git a/model/attributes/os/os__kernel_version.json b/model/attributes/os/os__kernel_version.json new file mode 100644 index 00000000..e0264be0 --- /dev/null +++ b/model/attributes/os/os__kernel_version.json @@ -0,0 +1,17 @@ +{ + "key": "os.kernel_version", + "brief": "An independent kernel version string. Typically the entire output of the `uname` syscall.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "20.2.0", + "changelog": [ + { + "version": "next", + "prs": [301], + "description": "Added os.kernel_version attribute" + } + ] +} diff --git a/model/attributes/os/os__raw_description.json b/model/attributes/os/os__raw_description.json new file mode 100644 index 00000000..9fbd9d8e --- /dev/null +++ b/model/attributes/os/os__raw_description.json @@ -0,0 +1,17 @@ +{ + "key": "os.raw_description", + "brief": "An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "Ubuntu 22.04.4 LTS (Jammy Jellyfish)", + "changelog": [ + { + "version": "next", + "prs": [301], + "description": "Added os.raw_description attribute" + } + ] +} diff --git a/model/attributes/os/os__rooted.json b/model/attributes/os/os__rooted.json new file mode 100644 index 00000000..83b00bdb --- /dev/null +++ b/model/attributes/os/os__rooted.json @@ -0,0 +1,17 @@ +{ + "key": "os.rooted", + "brief": "Whether the operating system has been jailbroken or rooted.", + "type": "boolean", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": true, + "changelog": [ + { + "version": "next", + "prs": [301], + "description": "Added os.rooted attribute" + } + ] +} diff --git a/model/attributes/os/os__theme.json b/model/attributes/os/os__theme.json new file mode 100644 index 00000000..9b054fef --- /dev/null +++ b/model/attributes/os/os__theme.json @@ -0,0 +1,17 @@ +{ + "key": "os.theme", + "brief": "Whether the OS runs in dark mode or light mode.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "dark", + "changelog": [ + { + "version": "next", + "prs": [301], + "description": "Added os.theme attribute" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index a1602e9b..4884eaae 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -204,6 +204,7 @@ class _AttributeNamesMeta(type): "NET_SOCK_PEER_NAME", "NET_SOCK_PEER_PORT", "NET_TRANSPORT", + "OS_BUILD", "QUERY_KEY", "RELEASE", "REPLAY_ID", @@ -3923,6 +3924,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "ipv4" """ + # Path: model/attributes/os/os__build.json + OS_BUILD: Literal["os.build"] = "os.build" + """The build ID of the operating system. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Aliases: os.build_id + DEPRECATED: Use os.build_id instead + Example: "1234567890" + """ + # Path: model/attributes/os/os__build_id.json OS_BUILD_ID: Literal["os.build_id"] = "os.build_id" """The build ID of the operating system. @@ -3930,6 +3943,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Type: str Contains PII: maybe Defined in OTEL: Yes + Aliases: os.build Example: "1234567890" """ @@ -3943,6 +3957,16 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "Ubuntu 18.04.1 LTS" """ + # Path: model/attributes/os/os__kernel_version.json + OS_KERNEL_VERSION: Literal["os.kernel_version"] = "os.kernel_version" + """An independent kernel version string. Typically the entire output of the `uname` syscall. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "20.2.0" + """ + # Path: model/attributes/os/os__name.json OS_NAME: Literal["os.name"] = "os.name" """Human readable operating system name. @@ -3953,6 +3977,36 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "Ubuntu" """ + # Path: model/attributes/os/os__raw_description.json + OS_RAW_DESCRIPTION: Literal["os.raw_description"] = "os.raw_description" + """An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "Ubuntu 22.04.4 LTS (Jammy Jellyfish)" + """ + + # Path: model/attributes/os/os__rooted.json + OS_ROOTED: Literal["os.rooted"] = "os.rooted" + """Whether the operating system has been jailbroken or rooted. + + Type: bool + Contains PII: maybe + Defined in OTEL: No + Example: true + """ + + # Path: model/attributes/os/os__theme.json + OS_THEME: Literal["os.theme"] = "os.theme" + """Whether the OS runs in dark mode or light mode. + + Type: str + Contains PII: maybe + Defined in OTEL: No + Example: "dark" + """ + # Path: model/attributes/os/os__type.json OS_TYPE: Literal["os.type"] = "os.type" """The operating system type. @@ -9717,13 +9771,35 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "os.build": AttributeMetadata( + brief="The build ID of the operating system.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="1234567890", + deprecation=DeprecationInfo( + replacement="os.build_id", status=DeprecationStatus.BACKFILL + ), + aliases=["os.build_id"], + changelog=[ + ChangelogEntry( + version="next", + prs=[301], + description="Added os.build attribute, deprecated in favor of os.build_id", + ), + ], + ), "os.build_id": AttributeMetadata( brief="The build ID of the operating system.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.MAYBE), is_in_otel=True, example="1234567890", + aliases=["os.build"], changelog=[ + ChangelogEntry( + version="next", prs=[301], description="Added os.build as alias" + ), ChangelogEntry(version="0.1.0", prs=[127]), ChangelogEntry(version="0.0.0"), ], @@ -9739,6 +9815,20 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "os.kernel_version": AttributeMetadata( + brief="An independent kernel version string. Typically the entire output of the `uname` syscall.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="20.2.0", + changelog=[ + ChangelogEntry( + version="next", + prs=[301], + description="Added os.kernel_version attribute", + ), + ], + ), "os.name": AttributeMetadata( brief="Human readable operating system name.", type=AttributeType.STRING, @@ -9750,6 +9840,44 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "os.raw_description": AttributeMetadata( + brief="An unprocessed description string obtained by the operating system. For some well-known runtimes, Sentry will attempt to parse `name` and `version` from this string, if they are not explicitly given.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="Ubuntu 22.04.4 LTS (Jammy Jellyfish)", + changelog=[ + ChangelogEntry( + version="next", + prs=[301], + description="Added os.raw_description attribute", + ), + ], + ), + "os.rooted": AttributeMetadata( + brief="Whether the operating system has been jailbroken or rooted.", + type=AttributeType.BOOLEAN, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example=True, + changelog=[ + ChangelogEntry( + version="next", prs=[301], description="Added os.rooted attribute" + ), + ], + ), + "os.theme": AttributeMetadata( + brief="Whether the OS runs in dark mode or light mode.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.MAYBE), + is_in_otel=False, + example="dark", + changelog=[ + ChangelogEntry( + version="next", prs=[301], description="Added os.theme attribute" + ), + ], + ), "os.type": AttributeMetadata( brief="The operating system type.", type=AttributeType.STRING, @@ -11820,9 +11948,14 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "network.protocol.version": str, "network.transport": str, "network.type": str, + "os.build": str, "os.build_id": str, "os.description": str, + "os.kernel_version": str, "os.name": str, + "os.raw_description": str, + "os.rooted": bool, + "os.theme": str, "os.type": str, "os.version": str, "otel.scope.name": str, diff --git a/shared/deprecated_attributes.json b/shared/deprecated_attributes.json index 9e75c710..c36d73c0 100644 --- a/shared/deprecated_attributes.json +++ b/shared/deprecated_attributes.json @@ -2650,6 +2650,28 @@ } ] }, + { + "key": "os.build", + "brief": "The build ID of the operating system.", + "type": "string", + "pii": { + "key": "maybe" + }, + "is_in_otel": false, + "example": "1234567890", + "deprecation": { + "_status": "backfill", + "replacement": "os.build_id" + }, + "alias": ["os.build_id"], + "changelog": [ + { + "version": "next", + "prs": [301], + "description": "Added os.build attribute, deprecated in favor of os.build_id" + } + ] + }, { "key": "query.", "brief": "An item in a query string. Usually added by client-side routing frameworks like vue-router.",