groups:
  - id: registry.otel
    type: attribute_group
    display_name: OTel Attributes
    brief: Attributes reserved for OpenTelemetry
    attributes:
      - id: otel.status_code
        type:
          members:
            - id: ok
              value: OK
              brief: 'The operation has been validated by an Application developer or Operator to have completed successfully.'
              stability: stable
            - id: error
              value: ERROR
              brief: 'The operation contains an error.'
              stability: stable
        brief: Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code is UNSET.
        stability: stable
      - id: otel.status_description
        type: string
        brief: "Description of the Status if it has a value, otherwise not set."
        examples: ['resource not found']
        stability: stable
      - id: otel.span.sampling_result
        type:
          members:
            - id: drop
              value: DROP
              brief: 'The span is not sampled and not recording'
              stability: development
            - id: record_only
              value: RECORD_ONLY
              brief: 'The span is not sampled, but recording'
              stability: development
            - id: record_and_sample
              value: RECORD_AND_SAMPLE
              brief: 'The span is sampled and recording'
              stability: development
        brief: "The result value of the sampler for this span"
        stability: development
      - id: otel.span.parent.origin
        type:
          members:
            - id: none
              value: none
              brief: 'The span does not have a parent, it is a root span'
              stability: development
            - id: local
              value: local
              brief: The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is false
              stability: development
            - id: remote
              value: remote
              brief: The span has a parent and the parent's span context [isRemote()](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote) is true
              stability: development
        brief: "Determines whether the span has a parent span, and if so, [whether it is a remote parent](https://opentelemetry.io/docs/specs/otel/trace/api/#isremote)"
        stability: development
  - id: registry.otel.scope
    type: attribute_group
    display_name: OTel Scope Attributes
    brief: Attributes used by non-OTLP exporters to represent OpenTelemetry Scope's concepts.
    attributes:
      - id: otel.scope.name
        type: string
        brief: The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).
        examples: ['io.opentelemetry.contrib.mongodb']
        stability: stable
      - id: otel.scope.version
        type: string
        brief: The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).
        examples: ['1.0.0']
        stability: stable
      - id: otel.scope.schema_url
        type: string
        brief: The schema URL of the instrumentation scope.
        examples: ['https://opentelemetry.io/schemas/1.31.0']
        stability: development
  - id: registry.otel.component
    type: attribute_group
    display_name: OTel Component Attributes
    brief: Attributes used for OpenTelemetry component self-monitoring
    attributes:
      - id: otel.component.type
        type:
          members:
            - id: batching_span_processor
              value: "batching_span_processor"
              brief: >
                The builtin SDK batching span processor
              stability: development
            - id: simple_span_processor
              value: "simple_span_processor"
              brief: >
                The builtin SDK simple span processor
              stability: development
            - id: batching_log_processor
              value: "batching_log_processor"
              brief: >
                The builtin SDK batching log record processor
              stability: development
            - id: simple_log_processor
              value: "simple_log_processor"
              brief: >
                The builtin SDK simple log record processor
              stability: development
            - id: otlp_grpc_span_exporter
              value: "otlp_grpc_span_exporter"
              brief: >
                OTLP span exporter over gRPC with protobuf serialization
              stability: development
            - id: otlp_http_span_exporter
              value: "otlp_http_span_exporter"
              brief: >
                OTLP span exporter over HTTP with protobuf serialization
              stability: development
            - id: otlp_http_json_span_exporter
              value: "otlp_http_json_span_exporter"
              brief: >
                OTLP span exporter over HTTP with JSON serialization
              stability: development
            - id: zipkin_http_span_exporter
              value: "zipkin_http_span_exporter"
              brief: >
                Zipkin span exporter over HTTP
              stability: development
            - id: otlp_grpc_log_exporter
              value: "otlp_grpc_log_exporter"
              brief: >
                OTLP log record exporter over gRPC with protobuf serialization
              stability: development
            - id: otlp_http_log_exporter
              value: "otlp_http_log_exporter"
              brief: >
                OTLP log record exporter over HTTP with protobuf serialization
              stability: development
            - id: otlp_http_json_log_exporter
              value: "otlp_http_json_log_exporter"
              brief: >
                OTLP log record exporter over HTTP with JSON serialization
              stability: development
            - id: periodic_metric_reader
              value: "periodic_metric_reader"
              brief: >
                The builtin SDK periodically exporting metric reader
              stability: development
            - id: otlp_grpc_metric_exporter
              value: "otlp_grpc_metric_exporter"
              brief: >
                OTLP metric exporter over gRPC with protobuf serialization
              stability: development
            - id: otlp_http_metric_exporter
              value: "otlp_http_metric_exporter"
              brief: >
                OTLP metric exporter over HTTP with protobuf serialization
              stability: development
            - id: otlp_http_json_metric_exporter
              value: "otlp_http_json_metric_exporter"
              brief: >
                OTLP metric exporter over HTTP with JSON serialization
              stability: development
            - id: prometheus_http_text_metric_exporter
              value: "prometheus_http_text_metric_exporter"
              brief: >
                Prometheus metric exporter over HTTP with the default text-based format
              stability: development
        stability: development
        brief: >
          A name identifying the type of the OpenTelemetry component.
        note: |
          If none of the standardized values apply, implementations SHOULD use the language-defined name of the type.
          E.g. for Java the fully qualified classname SHOULD be used in this case.
        examples: ["batching_span_processor", "com.example.MySpanExporter"]
      - id: otel.component.name
        type: string
        stability: development
        brief: >
          A name uniquely identifying the instance of the OpenTelemetry component within its containing SDK instance.
        note: |
          Implementations SHOULD ensure a low cardinality for this attribute, even across application or SDK restarts.
          E.g. implementations MUST NOT use UUIDs as values for this attribute.

          Implementations MAY achieve these goals by following a `<otel.component.type>/<instance-counter>` pattern, e.g. `batching_span_processor/0`.
          Hereby `otel.component.type` refers to the corresponding attribute value of the component.

          The value of `instance-counter` MAY be automatically assigned by the component and uniqueness within the enclosing SDK instance MUST be guaranteed.
          For example, `<instance-counter>` MAY be implemented by using a monotonically increasing counter (starting with `0`), which is incremented every time an
          instance of the given component type is started.

          With this implementation, for example the first Batching Span Processor would have `batching_span_processor/0`
          as `otel.component.name`, the second one `batching_span_processor/1` and so on.
          These values will therefore be reused in the case of an application restart.
        examples: ["otlp_grpc_span_exporter/0", "custom-name"]
