diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 3a4b2b80..6a00f4aa 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -7083,6 +7083,281 @@ export const GRAPHQL_OPERATION_TYPE = 'graphql.operation.type'; */ export type GRAPHQL_OPERATION_TYPE_TYPE = string; +// Path: model/attributes/grpc/grpc__error__bad_request__field_violations.json + +/** + * The individual field violations from a google.rpc.BadRequest error detail. Each entry is a JSON-encoded object with field, description, reason, and (optional) localized_message keys, mirroring google.rpc.BadRequest.FieldViolation. `grpc.error.bad_request.field_violations` + * + * Attribute Value Type: `Array` {@link GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example ["{\"field\":\"email\",\"description\":\"must be a valid email address\",\"reason\":\"FIELD_INVALID\",\"localized_message\":{\"locale\":\"en-US\",\"message\":\"Must be a valid email address\"}}"] + */ +export const GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS = 'grpc.error.bad_request.field_violations'; + +/** + * Type for {@link GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS} grpc.error.bad_request.field_violations + */ +export type GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS_TYPE = Array; + +// Path: model/attributes/grpc/grpc__error__debug_info__detail.json + +/** + * Additional debugging information, such as a server-side stack trace, from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly. `grpc.error.debug_info.detail` + * + * Attribute Value Type: `string` {@link GRPC_ERROR_DEBUG_INFO_DETAIL_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "at com.example.Service.method(Service.java:42)" + */ +export const GRPC_ERROR_DEBUG_INFO_DETAIL = 'grpc.error.debug_info.detail'; + +/** + * Type for {@link GRPC_ERROR_DEBUG_INFO_DETAIL} grpc.error.debug_info.detail + */ +export type GRPC_ERROR_DEBUG_INFO_DETAIL_TYPE = string; + +// Path: model/attributes/grpc/grpc__error__debug_info__stack_entries.json + +/** + * The server-side stack trace entries from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled. `grpc.error.debug_info.stack_entries` + * + * Attribute Value Type: `Array` {@link GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example ["com.example.Service.method(Service.java:42)","com.example.Server.handle(Server.java:100)"] + */ +export const GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES = 'grpc.error.debug_info.stack_entries'; + +/** + * Type for {@link GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES} grpc.error.debug_info.stack_entries + */ +export type GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES_TYPE = Array; + +// Path: model/attributes/grpc/grpc__error__error_info__domain.json + +/** + * The logical grouping to which the gRPC error reason belongs, from the google.rpc.ErrorInfo error detail. `grpc.error.error_info.domain` + * + * Attribute Value Type: `string` {@link GRPC_ERROR_ERROR_INFO_DOMAIN_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "example.sentry.io" + */ +export const GRPC_ERROR_ERROR_INFO_DOMAIN = 'grpc.error.error_info.domain'; + +/** + * Type for {@link GRPC_ERROR_ERROR_INFO_DOMAIN} grpc.error.error_info.domain + */ +export type GRPC_ERROR_ERROR_INFO_DOMAIN_TYPE = string; + +// Path: model/attributes/grpc/grpc__error__error_info__metadata__[key].json + +/** + * Additional structured metadata attached to a google.rpc.ErrorInfo error detail, with being the metadata key name. SDKs should only send this attribute when sendDefaultPii is enabled. `grpc.error.error_info.metadata.` + * + * Attribute Value Type: `string` {@link GRPC_ERROR_ERROR_INFO_METADATA_KEY_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * Has Dynamic Suffix: true + * + * @example "grpc.error.error_info.metadata.user_id='123'" + */ +export const GRPC_ERROR_ERROR_INFO_METADATA_KEY = 'grpc.error.error_info.metadata.'; + +/** + * Type for {@link GRPC_ERROR_ERROR_INFO_METADATA_KEY} grpc.error.error_info.metadata. + */ +export type GRPC_ERROR_ERROR_INFO_METADATA_KEY_TYPE = string; + +// Path: model/attributes/grpc/grpc__error__error_info__reason.json + +/** + * The reason for the gRPC error, as defined by the service that generated it, from the google.rpc.ErrorInfo error detail. `grpc.error.error_info.reason` + * + * Attribute Value Type: `string` {@link GRPC_ERROR_ERROR_INFO_REASON_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "FIELD_INVALID" + */ +export const GRPC_ERROR_ERROR_INFO_REASON = 'grpc.error.error_info.reason'; + +/** + * Type for {@link GRPC_ERROR_ERROR_INFO_REASON} grpc.error.error_info.reason + */ +export type GRPC_ERROR_ERROR_INFO_REASON_TYPE = string; + +// Path: model/attributes/grpc/grpc__error__precondition_failure__violations.json + +/** + * The individual precondition violations from a google.rpc.PreconditionFailure error detail. Each entry is a JSON-encoded object with type, subject, and description keys. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users. `grpc.error.precondition_failure.violations` + * + * Attribute Value Type: `Array` {@link GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example ["{\"type\":\"TOS\",\"subject\":\"example.com/user/123\",\"description\":\"User must accept the terms of service\"}"] + */ +export const GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS = 'grpc.error.precondition_failure.violations'; + +/** + * Type for {@link GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS} grpc.error.precondition_failure.violations + */ +export type GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS_TYPE = Array; + +// Path: model/attributes/grpc/grpc__error__quota_failure__violations.json + +/** + * The individual quota violations from a google.rpc.QuotaFailure error detail. Each entry is a JSON-encoded object with subject, description, api_service, quota_metric, quota_id, quota_dimensions, quota_value, and (optional) future_quota_value keys, mirroring google.rpc.QuotaFailure.Violation. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users. `grpc.error.quota_failure.violations` + * + * Attribute Value Type: `Array` {@link GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example ["{\"subject\":\"clientip:127.0.0.1\",\"description\":\"Limit checks failed.\",\"api_service\":\"example.googleapis.com\",\"quota_metric\":\"example.googleapis.com/read_requests\",\"quota_id\":\"ReadRequestsPerMinutePerProject\",\"quota_dimensions\":{\"region\":\"us-central1\"},\"quota_value\":1000}"] + */ +export const GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS = 'grpc.error.quota_failure.violations'; + +/** + * Type for {@link GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS} grpc.error.quota_failure.violations + */ +export type GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS_TYPE = Array; + +// Path: model/attributes/grpc/grpc__error__resource_info__description.json + +/** + * A description of the error that occurred while accessing the resource, from a google.rpc.ResourceInfo error detail. `grpc.error.resource_info.description` + * + * Attribute Value Type: `string` {@link GRPC_ERROR_RESOURCE_INFO_DESCRIPTION_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "Instance is not ready for the request." + */ +export const GRPC_ERROR_RESOURCE_INFO_DESCRIPTION = 'grpc.error.resource_info.description'; + +/** + * Type for {@link GRPC_ERROR_RESOURCE_INFO_DESCRIPTION} grpc.error.resource_info.description + */ +export type GRPC_ERROR_RESOURCE_INFO_DESCRIPTION_TYPE = string; + +// Path: model/attributes/grpc/grpc__error__resource_info__owner.json + +/** + * The owner of the resource being accessed (e.g. project or account owning it), from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled. `grpc.error.resource_info.owner` + * + * Attribute Value Type: `string` {@link GRPC_ERROR_RESOURCE_INFO_OWNER_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "user@example.com" + */ +export const GRPC_ERROR_RESOURCE_INFO_OWNER = 'grpc.error.resource_info.owner'; + +/** + * Type for {@link GRPC_ERROR_RESOURCE_INFO_OWNER} grpc.error.resource_info.owner + */ +export type GRPC_ERROR_RESOURCE_INFO_OWNER_TYPE = string; + +// Path: model/attributes/grpc/grpc__error__resource_info__resource_name.json + +/** + * The name of the resource being accessed, from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled. `grpc.error.resource_info.resource_name` + * + * Attribute Value Type: `string` {@link GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME_TYPE} + * + * Apply Scrubbing: auto + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "projects/example/instances/example-instance" + */ +export const GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME = 'grpc.error.resource_info.resource_name'; + +/** + * Type for {@link GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME} grpc.error.resource_info.resource_name + */ +export type GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME_TYPE = string; + +// Path: model/attributes/grpc/grpc__error__resource_info__resource_type.json + +/** + * The type of resource being accessed, from a google.rpc.ResourceInfo error detail. `grpc.error.resource_info.resource_type` + * + * Attribute Value Type: `string` {@link GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example "database" + */ +export const GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE = 'grpc.error.resource_info.resource_type'; + +/** + * Type for {@link GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE} grpc.error.resource_info.resource_type + */ +export type GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE_TYPE = string; + +// Path: model/attributes/grpc/grpc__error__retry_info__retry_delay_in_ms.json + +/** + * How long the client should wait before retrying the gRPC call, in milliseconds, from the google.rpc.RetryInfo error detail. `grpc.error.retry_info.retry_delay_in_ms` + * + * Attribute Value Type: `number` {@link GRPC_ERROR_RETRY_INFO_RETRY_DELAY_IN_MS_TYPE} + * + * Apply Scrubbing: manual + * + * Attribute defined in OTEL: No + * Visibility: public + * + * @example 5000 + */ +export const GRPC_ERROR_RETRY_INFO_RETRY_DELAY_IN_MS = 'grpc.error.retry_info.retry_delay_in_ms'; + +/** + * Type for {@link GRPC_ERROR_RETRY_INFO_RETRY_DELAY_IN_MS} grpc.error.retry_info.retry_delay_in_ms + */ +export type GRPC_ERROR_RETRY_INFO_RETRY_DELAY_IN_MS_TYPE = number; + // Path: model/attributes/hardwareConcurrency.json /** @@ -15143,6 +15418,19 @@ export const ATTRIBUTE_TYPE: Record = { 'graphql.document': 'string', 'graphql.operation.name': 'string', 'graphql.operation.type': 'string', + 'grpc.error.bad_request.field_violations': 'string[]', + 'grpc.error.debug_info.detail': 'string', + 'grpc.error.debug_info.stack_entries': 'string[]', + 'grpc.error.error_info.domain': 'string', + 'grpc.error.error_info.metadata.': 'string', + 'grpc.error.error_info.reason': 'string', + 'grpc.error.precondition_failure.violations': 'string[]', + 'grpc.error.quota_failure.violations': 'string[]', + 'grpc.error.resource_info.description': 'string', + 'grpc.error.resource_info.owner': 'string', + 'grpc.error.resource_info.resource_name': 'string', + 'grpc.error.resource_info.resource_type': 'string', + 'grpc.error.retry_info.retry_delay_in_ms': 'integer', hardwareConcurrency: 'string', 'http.client_ip': 'string', 'http.decoded_response_content_length': 'integer', @@ -15817,6 +16105,19 @@ export type AttributeName = | typeof GRAPHQL_DOCUMENT | typeof GRAPHQL_OPERATION_NAME | typeof GRAPHQL_OPERATION_TYPE + | typeof GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS + | typeof GRPC_ERROR_DEBUG_INFO_DETAIL + | typeof GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES + | typeof GRPC_ERROR_ERROR_INFO_DOMAIN + | typeof GRPC_ERROR_ERROR_INFO_METADATA_KEY + | typeof GRPC_ERROR_ERROR_INFO_REASON + | typeof GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS + | typeof GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS + | typeof GRPC_ERROR_RESOURCE_INFO_DESCRIPTION + | typeof GRPC_ERROR_RESOURCE_INFO_OWNER + | typeof GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME + | typeof GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE + | typeof GRPC_ERROR_RETRY_INFO_RETRY_DELAY_IN_MS | typeof HARDWARECONCURRENCY | typeof HTTP_CLIENT_IP | typeof HTTP_DECODED_RESPONSE_CONTENT_LENGTH @@ -20565,6 +20866,171 @@ export const ATTRIBUTE_METADATA: Record = { example: 'query', changelog: [{ version: '0.1.0', prs: [127] }, { version: '0.0.0' }], }, + 'grpc.error.bad_request.field_violations': { + brief: + 'The individual field violations from a google.rpc.BadRequest error detail. Each entry is a JSON-encoded object with field, description, reason, and (optional) localized_message keys, mirroring google.rpc.BadRequest.FieldViolation.', + type: 'string[]', + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: [ + '{"field":"email","description":"must be a valid email address","reason":"FIELD_INVALID","localized_message":{"locale":"en-US","message":"Must be a valid email address"}}', + ], + changelog: [ + { version: 'next', prs: [460], description: 'Added grpc.error.bad_request.field_violations attribute' }, + ], + }, + 'grpc.error.debug_info.detail': { + brief: + 'Additional debugging information, such as a server-side stack trace, from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly.', + type: 'string', + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + example: 'at com.example.Service.method(Service.java:42)', + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.debug_info.detail attribute' }], + }, + 'grpc.error.debug_info.stack_entries': { + brief: + 'The server-side stack trace entries from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.', + type: 'string[]', + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + example: ['com.example.Service.method(Service.java:42)', 'com.example.Server.handle(Server.java:100)'], + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.debug_info.stack_entries attribute' }], + }, + 'grpc.error.error_info.domain': { + brief: 'The logical grouping to which the gRPC error reason belongs, from the google.rpc.ErrorInfo error detail.', + type: 'string', + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'example.sentry.io', + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.error_info.domain attribute' }], + }, + 'grpc.error.error_info.metadata.': { + brief: + 'Additional structured metadata attached to a google.rpc.ErrorInfo error detail, with being the metadata key name. SDKs should only send this attribute when sendDefaultPii is enabled.', + type: 'string', + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + hasDynamicSuffix: true, + example: "grpc.error.error_info.metadata.user_id='123'", + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.error_info.metadata. attribute' }], + }, + 'grpc.error.error_info.reason': { + brief: + 'The reason for the gRPC error, as defined by the service that generated it, from the google.rpc.ErrorInfo error detail.', + type: 'string', + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'FIELD_INVALID', + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.error_info.reason attribute' }], + }, + 'grpc.error.precondition_failure.violations': { + brief: + 'The individual precondition violations from a google.rpc.PreconditionFailure error detail. Each entry is a JSON-encoded object with type, subject, and description keys. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users.', + type: 'string[]', + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + example: ['{"type":"TOS","subject":"example.com/user/123","description":"User must accept the terms of service"}'], + changelog: [ + { version: 'next', prs: [460], description: 'Added grpc.error.precondition_failure.violations attribute' }, + ], + }, + 'grpc.error.quota_failure.violations': { + brief: + 'The individual quota violations from a google.rpc.QuotaFailure error detail. Each entry is a JSON-encoded object with subject, description, api_service, quota_metric, quota_id, quota_dimensions, quota_value, and (optional) future_quota_value keys, mirroring google.rpc.QuotaFailure.Violation. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users.', + type: 'string[]', + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + example: [ + '{"subject":"clientip:127.0.0.1","description":"Limit checks failed.","api_service":"example.googleapis.com","quota_metric":"example.googleapis.com/read_requests","quota_id":"ReadRequestsPerMinutePerProject","quota_dimensions":{"region":"us-central1"},"quota_value":1000}', + ], + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.quota_failure.violations attribute' }], + }, + 'grpc.error.resource_info.description': { + brief: + 'A description of the error that occurred while accessing the resource, from a google.rpc.ResourceInfo error detail.', + type: 'string', + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'Instance is not ready for the request.', + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.resource_info.description attribute' }], + }, + 'grpc.error.resource_info.owner': { + brief: + 'The owner of the resource being accessed (e.g. project or account owning it), from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.', + type: 'string', + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + example: 'user@example.com', + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.resource_info.owner attribute' }], + }, + 'grpc.error.resource_info.resource_name': { + brief: + 'The name of the resource being accessed, from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.', + type: 'string', + applyScrubbing: { + key: 'auto', + }, + isInOtel: false, + visibility: 'public', + example: 'projects/example/instances/example-instance', + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.resource_info.resource_name attribute' }], + }, + 'grpc.error.resource_info.resource_type': { + brief: 'The type of resource being accessed, from a google.rpc.ResourceInfo error detail.', + type: 'string', + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 'database', + changelog: [{ version: 'next', prs: [460], description: 'Added grpc.error.resource_info.resource_type attribute' }], + }, + 'grpc.error.retry_info.retry_delay_in_ms': { + brief: + 'How long the client should wait before retrying the gRPC call, in milliseconds, from the google.rpc.RetryInfo error detail.', + type: 'integer', + applyScrubbing: { + key: 'manual', + }, + isInOtel: false, + visibility: 'public', + example: 5000, + changelog: [ + { version: 'next', prs: [460], description: 'Added grpc.error.retry_info.retry_delay_in_ms attribute' }, + ], + }, hardwareConcurrency: { brief: 'The number of logical CPU cores available.', type: 'string', @@ -25386,6 +25852,19 @@ export type Attributes = { [GRAPHQL_DOCUMENT]?: GRAPHQL_DOCUMENT_TYPE; [GRAPHQL_OPERATION_NAME]?: GRAPHQL_OPERATION_NAME_TYPE; [GRAPHQL_OPERATION_TYPE]?: GRAPHQL_OPERATION_TYPE_TYPE; + [GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS]?: GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS_TYPE; + [GRPC_ERROR_DEBUG_INFO_DETAIL]?: GRPC_ERROR_DEBUG_INFO_DETAIL_TYPE; + [GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES]?: GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES_TYPE; + [GRPC_ERROR_ERROR_INFO_DOMAIN]?: GRPC_ERROR_ERROR_INFO_DOMAIN_TYPE; + [GRPC_ERROR_ERROR_INFO_METADATA_KEY]?: GRPC_ERROR_ERROR_INFO_METADATA_KEY_TYPE; + [GRPC_ERROR_ERROR_INFO_REASON]?: GRPC_ERROR_ERROR_INFO_REASON_TYPE; + [GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS]?: GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS_TYPE; + [GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS]?: GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS_TYPE; + [GRPC_ERROR_RESOURCE_INFO_DESCRIPTION]?: GRPC_ERROR_RESOURCE_INFO_DESCRIPTION_TYPE; + [GRPC_ERROR_RESOURCE_INFO_OWNER]?: GRPC_ERROR_RESOURCE_INFO_OWNER_TYPE; + [GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME]?: GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME_TYPE; + [GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE]?: GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE_TYPE; + [GRPC_ERROR_RETRY_INFO_RETRY_DELAY_IN_MS]?: GRPC_ERROR_RETRY_INFO_RETRY_DELAY_IN_MS_TYPE; [HARDWARECONCURRENCY]?: HARDWARECONCURRENCY_TYPE; [HTTP_CLIENT_IP]?: HTTP_CLIENT_IP_TYPE; [HTTP_DECODED_RESPONSE_CONTENT_LENGTH]?: HTTP_DECODED_RESPONSE_CONTENT_LENGTH_TYPE; diff --git a/model/attributes/grpc/grpc__error__bad_request__field_violations.json b/model/attributes/grpc/grpc__error__bad_request__field_violations.json new file mode 100644 index 00000000..0fb8a012 --- /dev/null +++ b/model/attributes/grpc/grpc__error__bad_request__field_violations.json @@ -0,0 +1,20 @@ +{ + "key": "grpc.error.bad_request.field_violations", + "brief": "The individual field violations from a google.rpc.BadRequest error detail. Each entry is a JSON-encoded object with field, description, reason, and (optional) localized_message keys, mirroring google.rpc.BadRequest.FieldViolation.", + "type": "string[]", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "example": [ + "{\"field\":\"email\",\"description\":\"must be a valid email address\",\"reason\":\"FIELD_INVALID\",\"localized_message\":{\"locale\":\"en-US\",\"message\":\"Must be a valid email address\"}}" + ], + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.bad_request.field_violations attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__debug_info__detail.json b/model/attributes/grpc/grpc__error__debug_info__detail.json new file mode 100644 index 00000000..b5caf18d --- /dev/null +++ b/model/attributes/grpc/grpc__error__debug_info__detail.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.debug_info.detail", + "brief": "Additional debugging information, such as a server-side stack trace, from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly.", + "type": "string", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "example": "at com.example.Service.method(Service.java:42)", + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.debug_info.detail attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__debug_info__stack_entries.json b/model/attributes/grpc/grpc__error__debug_info__stack_entries.json new file mode 100644 index 00000000..3e6b932c --- /dev/null +++ b/model/attributes/grpc/grpc__error__debug_info__stack_entries.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.debug_info.stack_entries", + "brief": "The server-side stack trace entries from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.", + "type": "string[]", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "example": ["com.example.Service.method(Service.java:42)", "com.example.Server.handle(Server.java:100)"], + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.debug_info.stack_entries attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__error_info__domain.json b/model/attributes/grpc/grpc__error__error_info__domain.json new file mode 100644 index 00000000..42b912b0 --- /dev/null +++ b/model/attributes/grpc/grpc__error__error_info__domain.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.error_info.domain", + "brief": "The logical grouping to which the gRPC error reason belongs, from the google.rpc.ErrorInfo error detail.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "example": "example.sentry.io", + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.error_info.domain attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__error_info__metadata__[key].json b/model/attributes/grpc/grpc__error__error_info__metadata__[key].json new file mode 100644 index 00000000..ab47be77 --- /dev/null +++ b/model/attributes/grpc/grpc__error__error_info__metadata__[key].json @@ -0,0 +1,19 @@ +{ + "key": "grpc.error.error_info.metadata.", + "brief": "Additional structured metadata attached to a google.rpc.ErrorInfo error detail, with being the metadata key name. SDKs should only send this attribute when sendDefaultPii is enabled.", + "has_dynamic_suffix": true, + "type": "string", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "example": "grpc.error.error_info.metadata.user_id='123'", + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.error_info.metadata. attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__error_info__reason.json b/model/attributes/grpc/grpc__error__error_info__reason.json new file mode 100644 index 00000000..de6e6caf --- /dev/null +++ b/model/attributes/grpc/grpc__error__error_info__reason.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.error_info.reason", + "brief": "The reason for the gRPC error, as defined by the service that generated it, from the google.rpc.ErrorInfo error detail.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "example": "FIELD_INVALID", + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.error_info.reason attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__precondition_failure__violations.json b/model/attributes/grpc/grpc__error__precondition_failure__violations.json new file mode 100644 index 00000000..899beb32 --- /dev/null +++ b/model/attributes/grpc/grpc__error__precondition_failure__violations.json @@ -0,0 +1,20 @@ +{ + "key": "grpc.error.precondition_failure.violations", + "brief": "The individual precondition violations from a google.rpc.PreconditionFailure error detail. Each entry is a JSON-encoded object with type, subject, and description keys. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users.", + "type": "string[]", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "example": [ + "{\"type\":\"TOS\",\"subject\":\"example.com/user/123\",\"description\":\"User must accept the terms of service\"}" + ], + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.precondition_failure.violations attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__quota_failure__violations.json b/model/attributes/grpc/grpc__error__quota_failure__violations.json new file mode 100644 index 00000000..6e767493 --- /dev/null +++ b/model/attributes/grpc/grpc__error__quota_failure__violations.json @@ -0,0 +1,20 @@ +{ + "key": "grpc.error.quota_failure.violations", + "brief": "The individual quota violations from a google.rpc.QuotaFailure error detail. Each entry is a JSON-encoded object with subject, description, api_service, quota_metric, quota_id, quota_dimensions, quota_value, and (optional) future_quota_value keys, mirroring google.rpc.QuotaFailure.Violation. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users.", + "type": "string[]", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "example": [ + "{\"subject\":\"clientip:127.0.0.1\",\"description\":\"Limit checks failed.\",\"api_service\":\"example.googleapis.com\",\"quota_metric\":\"example.googleapis.com/read_requests\",\"quota_id\":\"ReadRequestsPerMinutePerProject\",\"quota_dimensions\":{\"region\":\"us-central1\"},\"quota_value\":1000}" + ], + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.quota_failure.violations attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__resource_info__description.json b/model/attributes/grpc/grpc__error__resource_info__description.json new file mode 100644 index 00000000..1de30107 --- /dev/null +++ b/model/attributes/grpc/grpc__error__resource_info__description.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.resource_info.description", + "brief": "A description of the error that occurred while accessing the resource, from a google.rpc.ResourceInfo error detail.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "example": "Instance is not ready for the request.", + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.resource_info.description attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__resource_info__owner.json b/model/attributes/grpc/grpc__error__resource_info__owner.json new file mode 100644 index 00000000..53db5c76 --- /dev/null +++ b/model/attributes/grpc/grpc__error__resource_info__owner.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.resource_info.owner", + "brief": "The owner of the resource being accessed (e.g. project or account owning it), from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.", + "type": "string", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "example": "user@example.com", + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.resource_info.owner attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__resource_info__resource_name.json b/model/attributes/grpc/grpc__error__resource_info__resource_name.json new file mode 100644 index 00000000..39f2a3e7 --- /dev/null +++ b/model/attributes/grpc/grpc__error__resource_info__resource_name.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.resource_info.resource_name", + "brief": "The name of the resource being accessed, from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.", + "type": "string", + "apply_scrubbing": { + "key": "auto" + }, + "is_in_otel": false, + "visibility": "public", + "example": "projects/example/instances/example-instance", + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.resource_info.resource_name attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__resource_info__resource_type.json b/model/attributes/grpc/grpc__error__resource_info__resource_type.json new file mode 100644 index 00000000..0956c8f4 --- /dev/null +++ b/model/attributes/grpc/grpc__error__resource_info__resource_type.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.resource_info.resource_type", + "brief": "The type of resource being accessed, from a google.rpc.ResourceInfo error detail.", + "type": "string", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "example": "database", + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.resource_info.resource_type attribute" + } + ] +} diff --git a/model/attributes/grpc/grpc__error__retry_info__retry_delay_in_ms.json b/model/attributes/grpc/grpc__error__retry_info__retry_delay_in_ms.json new file mode 100644 index 00000000..dcf1a49f --- /dev/null +++ b/model/attributes/grpc/grpc__error__retry_info__retry_delay_in_ms.json @@ -0,0 +1,18 @@ +{ + "key": "grpc.error.retry_info.retry_delay_in_ms", + "brief": "How long the client should wait before retrying the gRPC call, in milliseconds, from the google.rpc.RetryInfo error detail.", + "type": "integer", + "apply_scrubbing": { + "key": "manual" + }, + "is_in_otel": false, + "visibility": "public", + "example": 5000, + "changelog": [ + { + "version": "next", + "prs": [460], + "description": "Added grpc.error.retry_info.retry_delay_in_ms attribute" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index f8ca9a0b..5d6765db 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -4272,6 +4272,176 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: "query" """ + # Path: model/attributes/grpc/grpc__error__bad_request__field_violations.json + GRPC_ERROR_BAD_REQUEST_FIELD_VIOLATIONS: Literal[ + "grpc.error.bad_request.field_violations" + ] = "grpc.error.bad_request.field_violations" + """The individual field violations from a google.rpc.BadRequest error detail. Each entry is a JSON-encoded object with field, description, reason, and (optional) localized_message keys, mirroring google.rpc.BadRequest.FieldViolation. + + Type: List[str] + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: ["{\"field\":\"email\",\"description\":\"must be a valid email address\",\"reason\":\"FIELD_INVALID\",\"localized_message\":{\"locale\":\"en-US\",\"message\":\"Must be a valid email address\"}}"] + """ + + # Path: model/attributes/grpc/grpc__error__debug_info__detail.json + GRPC_ERROR_DEBUG_INFO_DETAIL: Literal["grpc.error.debug_info.detail"] = ( + "grpc.error.debug_info.detail" + ) + """Additional debugging information, such as a server-side stack trace, from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly. + + Type: str + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Example: "at com.example.Service.method(Service.java:42)" + """ + + # Path: model/attributes/grpc/grpc__error__debug_info__stack_entries.json + GRPC_ERROR_DEBUG_INFO_STACK_ENTRIES: Literal[ + "grpc.error.debug_info.stack_entries" + ] = "grpc.error.debug_info.stack_entries" + """The server-side stack trace entries from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled. + + Type: List[str] + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Example: ["com.example.Service.method(Service.java:42)","com.example.Server.handle(Server.java:100)"] + """ + + # Path: model/attributes/grpc/grpc__error__error_info__domain.json + GRPC_ERROR_ERROR_INFO_DOMAIN: Literal["grpc.error.error_info.domain"] = ( + "grpc.error.error_info.domain" + ) + """The logical grouping to which the gRPC error reason belongs, from the google.rpc.ErrorInfo error detail. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "example.sentry.io" + """ + + # Path: model/attributes/grpc/grpc__error__error_info__metadata__[key].json + GRPC_ERROR_ERROR_INFO_METADATA_KEY: Literal[ + "grpc.error.error_info.metadata." + ] = "grpc.error.error_info.metadata." + """Additional structured metadata attached to a google.rpc.ErrorInfo error detail, with being the metadata key name. SDKs should only send this attribute when sendDefaultPii is enabled. + + Type: str + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Has Dynamic Suffix: true + Example: "grpc.error.error_info.metadata.user_id='123'" + """ + + # Path: model/attributes/grpc/grpc__error__error_info__reason.json + GRPC_ERROR_ERROR_INFO_REASON: Literal["grpc.error.error_info.reason"] = ( + "grpc.error.error_info.reason" + ) + """The reason for the gRPC error, as defined by the service that generated it, from the google.rpc.ErrorInfo error detail. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "FIELD_INVALID" + """ + + # Path: model/attributes/grpc/grpc__error__precondition_failure__violations.json + GRPC_ERROR_PRECONDITION_FAILURE_VIOLATIONS: Literal[ + "grpc.error.precondition_failure.violations" + ] = "grpc.error.precondition_failure.violations" + """The individual precondition violations from a google.rpc.PreconditionFailure error detail. Each entry is a JSON-encoded object with type, subject, and description keys. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users. + + Type: List[str] + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Example: ["{\"type\":\"TOS\",\"subject\":\"example.com/user/123\",\"description\":\"User must accept the terms of service\"}"] + """ + + # Path: model/attributes/grpc/grpc__error__quota_failure__violations.json + GRPC_ERROR_QUOTA_FAILURE_VIOLATIONS: Literal[ + "grpc.error.quota_failure.violations" + ] = "grpc.error.quota_failure.violations" + """The individual quota violations from a google.rpc.QuotaFailure error detail. Each entry is a JSON-encoded object with subject, description, api_service, quota_metric, quota_id, quota_dimensions, quota_value, and (optional) future_quota_value keys, mirroring google.rpc.QuotaFailure.Violation. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users. + + Type: List[str] + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Example: ["{\"subject\":\"clientip:127.0.0.1\",\"description\":\"Limit checks failed.\",\"api_service\":\"example.googleapis.com\",\"quota_metric\":\"example.googleapis.com/read_requests\",\"quota_id\":\"ReadRequestsPerMinutePerProject\",\"quota_dimensions\":{\"region\":\"us-central1\"},\"quota_value\":1000}"] + """ + + # Path: model/attributes/grpc/grpc__error__resource_info__description.json + GRPC_ERROR_RESOURCE_INFO_DESCRIPTION: Literal[ + "grpc.error.resource_info.description" + ] = "grpc.error.resource_info.description" + """A description of the error that occurred while accessing the resource, from a google.rpc.ResourceInfo error detail. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "Instance is not ready for the request." + """ + + # Path: model/attributes/grpc/grpc__error__resource_info__owner.json + GRPC_ERROR_RESOURCE_INFO_OWNER: Literal["grpc.error.resource_info.owner"] = ( + "grpc.error.resource_info.owner" + ) + """The owner of the resource being accessed (e.g. project or account owning it), from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled. + + Type: str + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Example: "user@example.com" + """ + + # Path: model/attributes/grpc/grpc__error__resource_info__resource_name.json + GRPC_ERROR_RESOURCE_INFO_RESOURCE_NAME: Literal[ + "grpc.error.resource_info.resource_name" + ] = "grpc.error.resource_info.resource_name" + """The name of the resource being accessed, from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled. + + Type: str + Apply Scrubbing: auto + Defined in OTEL: No + Visibility: public + Example: "projects/example/instances/example-instance" + """ + + # Path: model/attributes/grpc/grpc__error__resource_info__resource_type.json + GRPC_ERROR_RESOURCE_INFO_RESOURCE_TYPE: Literal[ + "grpc.error.resource_info.resource_type" + ] = "grpc.error.resource_info.resource_type" + """The type of resource being accessed, from a google.rpc.ResourceInfo error detail. + + Type: str + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: "database" + """ + + # Path: model/attributes/grpc/grpc__error__retry_info__retry_delay_in_ms.json + GRPC_ERROR_RETRY_INFO_RETRY_DELAY_IN_MS: Literal[ + "grpc.error.retry_info.retry_delay_in_ms" + ] = "grpc.error.retry_info.retry_delay_in_ms" + """How long the client should wait before retrying the gRPC call, in milliseconds, from the google.rpc.RetryInfo error detail. + + Type: int + Apply Scrubbing: manual + Defined in OTEL: No + Visibility: public + Example: 5000 + """ + # Path: model/attributes/hardwareConcurrency.json HARDWARECONCURRENCY: Literal["hardwareConcurrency"] = "hardwareConcurrency" """The number of logical CPU cores available. @@ -13295,6 +13465,211 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.0.0"), ], ), + "grpc.error.bad_request.field_violations": AttributeMetadata( + brief="The individual field violations from a google.rpc.BadRequest error detail. Each entry is a JSON-encoded object with field, description, reason, and (optional) localized_message keys, mirroring google.rpc.BadRequest.FieldViolation.", + type=AttributeType.STRING_ARRAY, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=[ + '{"field":"email","description":"must be a valid email address","reason":"FIELD_INVALID","localized_message":{"locale":"en-US","message":"Must be a valid email address"}}' + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.bad_request.field_violations attribute", + ), + ], + ), + "grpc.error.debug_info.detail": AttributeMetadata( + brief="Additional debugging information, such as a server-side stack trace, from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled or dataCollection is configured accordingly.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="at com.example.Service.method(Service.java:42)", + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.debug_info.detail attribute", + ), + ], + ), + "grpc.error.debug_info.stack_entries": AttributeMetadata( + brief="The server-side stack trace entries from a google.rpc.DebugInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.", + type=AttributeType.STRING_ARRAY, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=[ + "com.example.Service.method(Service.java:42)", + "com.example.Server.handle(Server.java:100)", + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.debug_info.stack_entries attribute", + ), + ], + ), + "grpc.error.error_info.domain": AttributeMetadata( + brief="The logical grouping to which the gRPC error reason belongs, from the google.rpc.ErrorInfo error detail.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="example.sentry.io", + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.error_info.domain attribute", + ), + ], + ), + "grpc.error.error_info.metadata.": AttributeMetadata( + brief="Additional structured metadata attached to a google.rpc.ErrorInfo error detail, with being the metadata key name. SDKs should only send this attribute when sendDefaultPii is enabled.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + has_dynamic_suffix=True, + example="grpc.error.error_info.metadata.user_id='123'", + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.error_info.metadata. attribute", + ), + ], + ), + "grpc.error.error_info.reason": AttributeMetadata( + brief="The reason for the gRPC error, as defined by the service that generated it, from the google.rpc.ErrorInfo error detail.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="FIELD_INVALID", + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.error_info.reason attribute", + ), + ], + ), + "grpc.error.precondition_failure.violations": AttributeMetadata( + brief="The individual precondition violations from a google.rpc.PreconditionFailure error detail. Each entry is a JSON-encoded object with type, subject, and description keys. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users.", + type=AttributeType.STRING_ARRAY, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=[ + '{"type":"TOS","subject":"example.com/user/123","description":"User must accept the terms of service"}' + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.precondition_failure.violations attribute", + ), + ], + ), + "grpc.error.quota_failure.violations": AttributeMetadata( + brief="The individual quota violations from a google.rpc.QuotaFailure error detail. Each entry is a JSON-encoded object with subject, description, api_service, quota_metric, quota_id, quota_dimensions, quota_value, and (optional) future_quota_value keys, mirroring google.rpc.QuotaFailure.Violation. SDKs should only send this attribute when sendDefaultPii is enabled, since violation subjects may identify specific resources or users.", + type=AttributeType.STRING_ARRAY, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=[ + '{"subject":"clientip:127.0.0.1","description":"Limit checks failed.","api_service":"example.googleapis.com","quota_metric":"example.googleapis.com/read_requests","quota_id":"ReadRequestsPerMinutePerProject","quota_dimensions":{"region":"us-central1"},"quota_value":1000}' + ], + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.quota_failure.violations attribute", + ), + ], + ), + "grpc.error.resource_info.description": AttributeMetadata( + brief="A description of the error that occurred while accessing the resource, from a google.rpc.ResourceInfo error detail.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="Instance is not ready for the request.", + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.resource_info.description attribute", + ), + ], + ), + "grpc.error.resource_info.owner": AttributeMetadata( + brief="The owner of the resource being accessed (e.g. project or account owning it), from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="user@example.com", + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.resource_info.owner attribute", + ), + ], + ), + "grpc.error.resource_info.resource_name": AttributeMetadata( + brief="The name of the resource being accessed, from a google.rpc.ResourceInfo error detail. SDKs should only send this attribute when sendDefaultPii is enabled.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.AUTO), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="projects/example/instances/example-instance", + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.resource_info.resource_name attribute", + ), + ], + ), + "grpc.error.resource_info.resource_type": AttributeMetadata( + brief="The type of resource being accessed, from a google.rpc.ResourceInfo error detail.", + type=AttributeType.STRING, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example="database", + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.resource_info.resource_type attribute", + ), + ], + ), + "grpc.error.retry_info.retry_delay_in_ms": AttributeMetadata( + brief="How long the client should wait before retrying the gRPC call, in milliseconds, from the google.rpc.RetryInfo error detail.", + type=AttributeType.INTEGER, + apply_scrubbing=ApplyScrubbingInfo(key=ApplyScrubbing.MANUAL), + is_in_otel=False, + visibility=Visibility.PUBLIC, + example=5000, + changelog=[ + ChangelogEntry( + version="next", + prs=[460], + description="Added grpc.error.retry_info.retry_delay_in_ms attribute", + ), + ], + ), "hardwareConcurrency": AttributeMetadata( brief="The number of logical CPU cores available.", type=AttributeType.STRING, @@ -18306,6 +18681,19 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "graphql.document": str, "graphql.operation.name": str, "graphql.operation.type": str, + "grpc.error.bad_request.field_violations": List[str], + "grpc.error.debug_info.detail": str, + "grpc.error.debug_info.stack_entries": List[str], + "grpc.error.error_info.domain": str, + "grpc.error.error_info.metadata.": str, + "grpc.error.error_info.reason": str, + "grpc.error.precondition_failure.violations": List[str], + "grpc.error.quota_failure.violations": List[str], + "grpc.error.resource_info.description": str, + "grpc.error.resource_info.owner": str, + "grpc.error.resource_info.resource_name": str, + "grpc.error.resource_info.resource_type": str, + "grpc.error.retry_info.retry_delay_in_ms": int, "hardwareConcurrency": str, "http.client_ip": str, "http.decoded_response_content_length": int,