groups:
  - id: error
    type: attribute_group
    prefix: error
    brief: >
      This document defines the shared attributes used to
      report an error.
    attributes:
      - id: type
        stability: stable
        brief: 'Describes a class of error the operation ended with.'
        type:
          allow_custom_values: true
          members:
            - id: other
              value: "_OTHER"
              brief: "A fallback error value to be used when the instrumentation doesn't define a custom value."
        examples: ['timeout', 'java.net.UnknownHostException', 'server_certificate_invalid', '500']
        note: |
          The `error.type` SHOULD be predictable and SHOULD have low cardinality.
          Instrumentations SHOULD document the list of errors they report.

          The cardinality of `error.type` within one instrumentation library SHOULD be low.
          Telemetry consumers that aggregate data from multiple instrumentation libraries and applications
          should be prepared for `error.type` to have high cardinality at query time when no
          additional filters are applied.

          If the operation has completed successfully, instrumentations SHOULD NOT set `error.type`.

          If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),
          it's RECOMMENDED to:
            * Use a domain-specific attribute
            * Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.
