From 83b55cb97cca92f4a36b3723c209c3e8913e33b3 Mon Sep 17 00:00:00 2001 From: Pablo Deputter Date: Tue, 13 Oct 2026 16:53:01 +0200 Subject: [PATCH 1/2] ref(attributes): Use JSON for `aws.s3.delete`, document multi-collection `db.collection/name` --- .../sentry-conventions/src/attributes.ts | 21 ++++++++++++----- javascript/sentry-conventions/src/search.ts | 2 +- model/attributes/aws/aws__s3__delete.json | 8 +++++-- model/attributes/db/db__collection__name.json | 9 +++++++- python/src/sentry_conventions/attributes.py | 23 +++++++++++++++---- 5 files changed, 48 insertions(+), 15 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 644461a67..7dc121d1f 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -3092,7 +3092,7 @@ export type AWS_S3_COPY_SOURCE_TYPE = string; // Path: model/attributes/aws/aws__s3__delete.json /** - * The delete request container that specifies the objects to be deleted. `aws.s3.delete` + * The JSON-serialized value of delete request field, which specifies the object to be deleted. `aws.s3.delete` * * Attribute Value Type: `string` {@link AWS_S3_DELETE_TYPE} * @@ -3101,7 +3101,7 @@ export type AWS_S3_COPY_SOURCE_TYPE = string; * Attribute defined in OTEL: Yes * Visibility: public * - * @example "Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean" + * @example "{\"Objects\":[{\"Key\":\"someFile.yml\",\"VersionId\":\"3HL4kqtJlcpXroDTDmJ\"}],\"Quiet\":false}" */ export const AWS_S3_DELETE = 'aws.s3.delete'; @@ -5234,6 +5234,7 @@ export type CULTURE_TIMEZONE_TYPE = string; * Aliases: {@link DB_MONGODB_COLLECTION} `db.mongodb.collection` * * @example "users" + * @example ",customers,orders," */ export const DB_COLLECTION_NAME = 'db.collection.name'; @@ -24531,7 +24532,7 @@ export const ATTRIBUTE_METADATA: Record = { ], }, 'aws.s3.delete': { - brief: 'The delete request container that specifies the objects to be deleted.', + brief: 'The JSON-serialized value of delete request field, which specifies the object to be deleted.', type: 'string', keys: ['aws.s3.delete'], applyScrubbing: { @@ -24539,9 +24540,12 @@ export const ATTRIBUTE_METADATA: Record = { }, isInOtel: true, visibility: 'public', - example: 'Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean', - examples: ['Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean'], - changelog: [{ version: '0.27.0', prs: [672], description: 'Added aws.s3.delete attribute' }], + example: '{"Objects":[{"Key":"someFile.yml","VersionId":"3HL4kqtJlcpXroDTDmJ"}],"Quiet":false}', + examples: ['{"Objects":[{"Key":"someFile.yml","VersionId":"3HL4kqtJlcpXroDTDmJ"}],"Quiet":false}'], + changelog: [ + { version: 'next', description: 'Changed the value to a JSON-serialized field, with an example' }, + { version: '0.27.0', prs: [672], description: 'Added aws.s3.delete attribute' }, + ], additionalContext: ['Applicable only to the delete-objects operation, corresponding to its Delete parameter.'], }, 'aws.s3.key': { @@ -25940,12 +25944,17 @@ export const ATTRIBUTE_METADATA: Record = { isInOtel: true, visibility: 'public', example: 'users', + examples: ['users', ',customers,orders,'], aliases: ['db.mongodb.collection'], changelog: [ + { version: 'next', description: 'Add comma-wrapped format for calls on more than one collection' }, { version: '0.19.0', prs: [483], description: 'Added db.mongodb.collection as an alias' }, { version: '0.1.0', prs: [106, 127] }, { version: '0.0.0' }, ], + additionalContext: [ + 'For a call on more than one collection: the unique names, sorted and wrapped in commas (`,customers,orders,`), so each name matches `,,`.', + ], }, 'db.connection_string': { brief: 'The connection string used to connect to the database.', diff --git a/javascript/sentry-conventions/src/search.ts b/javascript/sentry-conventions/src/search.ts index 663e145e5..167fb1dfb 100644 --- a/javascript/sentry-conventions/src/search.ts +++ b/javascript/sentry-conventions/src/search.ts @@ -7125,7 +7125,7 @@ export const ATTRIBUTE_SEARCH_METADATA: Record 'aws.s3.delete': { canonicalName: 'aws.s3.delete', type: 'string', - brief: 'The delete request container that specifies the objects to be deleted.', + brief: 'The JSON-serialized value of delete request field, which specifies the object to be deleted.', deprecationChain: ['aws.s3.delete'], }, 'aws.s3.key': { diff --git a/model/attributes/aws/aws__s3__delete.json b/model/attributes/aws/aws__s3__delete.json index adf22ee01..2ab9efb58 100644 --- a/model/attributes/aws/aws__s3__delete.json +++ b/model/attributes/aws/aws__s3__delete.json @@ -1,6 +1,6 @@ { "key": "aws.s3.delete", - "brief": "The delete request container that specifies the objects to be deleted.", + "brief": "The JSON-serialized value of delete request field, which specifies the object to be deleted.", "additional_context": ["Applicable only to the delete-objects operation, corresponding to its Delete parameter."], "type": "string", "apply_scrubbing": { @@ -8,8 +8,12 @@ }, "is_in_otel": true, "visibility": "public", - "examples": ["Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean"], + "examples": ["{\"Objects\":[{\"Key\":\"someFile.yml\",\"VersionId\":\"3HL4kqtJlcpXroDTDmJ\"}],\"Quiet\":false}"], "changelog": [ + { + "version": "next", + "description": "Changed the value to a JSON-serialized field, with an example" + }, { "version": "0.27.0", "prs": [672], diff --git a/model/attributes/db/db__collection__name.json b/model/attributes/db/db__collection__name.json index 674533e44..442619050 100644 --- a/model/attributes/db/db__collection__name.json +++ b/model/attributes/db/db__collection__name.json @@ -1,15 +1,22 @@ { "key": "db.collection.name", "brief": "The name of a collection (table, container) within the database.", + "additional_context": [ + "For a call on more than one collection: the unique names, sorted and wrapped in commas (`,customers,orders,`), so each name matches `,,`." + ], "type": "string", "apply_scrubbing": { "key": "manual" }, "is_in_otel": true, - "example": "users", + "examples": ["users", ",customers,orders,"], "alias": ["db.mongodb.collection"], "visibility": "public", "changelog": [ + { + "version": "next", + "description": "Add comma-wrapped format for calls on more than one collection" + }, { "version": "0.19.0", "prs": [483], diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 6b1f9e863..8a33aea22 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -2182,13 +2182,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): # Path: model/attributes/aws/aws__s3__delete.json AWS_S3_DELETE: Literal["aws.s3.delete"] = "aws.s3.delete" - """The delete request container that specifies the objects to be deleted. + """The JSON-serialized value of delete request field, which specifies the object to be deleted. Type: str Apply Scrubbing: manual Defined in OTEL: Yes Visibility: public - Example: "Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean" + Example: "{\"Objects\":[{\"Key\":\"someFile.yml\",\"VersionId\":\"3HL4kqtJlcpXroDTDmJ\"}],\"Quiet\":false}" """ # Path: model/attributes/aws/aws__s3__key.json @@ -3420,6 +3420,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Visibility: public Aliases: db.mongodb.collection Example: "users" + Example: ",customers,orders," """ # Path: model/attributes/db/db__connection_string.json @@ -14681,17 +14682,21 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "aws.s3.delete": AttributeMetadata( - brief="The delete request container that specifies the objects to be deleted.", + brief="The JSON-serialized value of delete request field, which specifies the object to be deleted.", type=AttributeType.STRING, keys=("aws.s3.delete",), apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), is_in_otel=True, visibility=Visibility.PUBLIC, - example="Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean", + example='{"Objects":[{"Key":"someFile.yml","VersionId":"3HL4kqtJlcpXroDTDmJ"}],"Quiet":false}', examples=[ - "Objects=[{Key=string,VersionId=string},{Key=string,VersionId=string}],Quiet=boolean" + '{"Objects":[{"Key":"someFile.yml","VersionId":"3HL4kqtJlcpXroDTDmJ"}],"Quiet":false}' ], changelog=[ + ChangelogEntry( + version="next", + description="Changed the value to a JSON-serialized field, with an example", + ), ChangelogEntry( version="0.27.0", prs=[672], description="Added aws.s3.delete attribute" ), @@ -16397,8 +16402,13 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): is_in_otel=True, visibility=Visibility.PUBLIC, example="users", + examples=["users", ",customers,orders,"], aliases=["db.mongodb.collection"], changelog=[ + ChangelogEntry( + version="next", + description="Add comma-wrapped format for calls on more than one collection", + ), ChangelogEntry( version="0.19.0", prs=[483], @@ -16407,6 +16417,9 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.1.0", prs=[106, 127]), ChangelogEntry(version="0.0.0"), ], + additional_context=[ + "For a call on more than one collection: the unique names, sorted and wrapped in commas (`,customers,orders,`), so each name matches `,,`." + ], ), "db.connection_string": AttributeMetadata( brief="The connection string used to connect to the database.", From 06ef18a32ac022947be7171828c0a8b15d90e37d Mon Sep 17 00:00:00 2001 From: Pablo Deputter Date: Wed, 14 Oct 2026 10:36:27 +0200 Subject: [PATCH 2/2] fix(attributes): Fix `brief` fpr `aws.s3.delete` --- javascript/sentry-conventions/src/attributes.ts | 4 ++-- javascript/sentry-conventions/src/search.ts | 2 +- model/attributes/aws/aws__s3__delete.json | 2 +- python/src/sentry_conventions/attributes.py | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 7dc121d1f..423a357db 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -3092,7 +3092,7 @@ export type AWS_S3_COPY_SOURCE_TYPE = string; // Path: model/attributes/aws/aws__s3__delete.json /** - * The JSON-serialized value of delete request field, which specifies the object to be deleted. `aws.s3.delete` + * The JSON-serialized value of Delete request field, which specifies the objects to be deleted. `aws.s3.delete` * * Attribute Value Type: `string` {@link AWS_S3_DELETE_TYPE} * @@ -24532,7 +24532,7 @@ export const ATTRIBUTE_METADATA: Record = { ], }, 'aws.s3.delete': { - brief: 'The JSON-serialized value of delete request field, which specifies the object to be deleted.', + brief: 'The JSON-serialized value of Delete request field, which specifies the objects to be deleted.', type: 'string', keys: ['aws.s3.delete'], applyScrubbing: { diff --git a/javascript/sentry-conventions/src/search.ts b/javascript/sentry-conventions/src/search.ts index 167fb1dfb..facb796c7 100644 --- a/javascript/sentry-conventions/src/search.ts +++ b/javascript/sentry-conventions/src/search.ts @@ -7125,7 +7125,7 @@ export const ATTRIBUTE_SEARCH_METADATA: Record 'aws.s3.delete': { canonicalName: 'aws.s3.delete', type: 'string', - brief: 'The JSON-serialized value of delete request field, which specifies the object to be deleted.', + brief: 'The JSON-serialized value of Delete request field, which specifies the objects to be deleted.', deprecationChain: ['aws.s3.delete'], }, 'aws.s3.key': { diff --git a/model/attributes/aws/aws__s3__delete.json b/model/attributes/aws/aws__s3__delete.json index 2ab9efb58..c94b7eb21 100644 --- a/model/attributes/aws/aws__s3__delete.json +++ b/model/attributes/aws/aws__s3__delete.json @@ -1,6 +1,6 @@ { "key": "aws.s3.delete", - "brief": "The JSON-serialized value of delete request field, which specifies the object to be deleted.", + "brief": "The JSON-serialized value of Delete request field, which specifies the objects to be deleted.", "additional_context": ["Applicable only to the delete-objects operation, corresponding to its Delete parameter."], "type": "string", "apply_scrubbing": { diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 8a33aea22..42adccfeb 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -2182,7 +2182,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): # Path: model/attributes/aws/aws__s3__delete.json AWS_S3_DELETE: Literal["aws.s3.delete"] = "aws.s3.delete" - """The JSON-serialized value of delete request field, which specifies the object to be deleted. + """The JSON-serialized value of Delete request field, which specifies the objects to be deleted. Type: str Apply Scrubbing: manual @@ -14682,7 +14682,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "aws.s3.delete": AttributeMetadata( - brief="The JSON-serialized value of delete request field, which specifies the object to be deleted.", + brief="The JSON-serialized value of Delete request field, which specifies the objects to be deleted.", type=AttributeType.STRING, keys=("aws.s3.delete",), apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL),