diff --git a/semantic-conventions/src/opentelemetry/semconv/model/semantic_attribute.py b/semantic-conventions/src/opentelemetry/semconv/model/semantic_attribute.py
index edde7808..5d1c1b49 100644
--- a/semantic-conventions/src/opentelemetry/semconv/model/semantic_attribute.py
+++ b/semantic-conventions/src/opentelemetry/semconv/model/semantic_attribute.py
@@ -128,6 +128,12 @@ def parse(
if "type" in attribute:
msg = f"Ref attribute '{ref}' must not declare a type"
raise ValidationError.from_yaml_pos(position, msg)
+ if "stability" in attribute:
+ msg = f"Ref attribute '{ref}' must not override stability"
+ raise ValidationError.from_yaml_pos(position, msg)
+ if "deprecated" in attribute:
+ msg = f"Ref attribute '{ref}' must not override deprecation status"
+ raise ValidationError.from_yaml_pos(position, msg)
brief = attribute.get("brief")
examples = attribute.get("examples")
ref = ref.strip()
@@ -224,7 +230,7 @@ def parse(
@staticmethod
def parse_attribute(attribute):
- check_no_missing_keys(attribute, ["type", "brief"])
+ check_no_missing_keys(attribute, ["type", "brief", "stability"])
attr_val = attribute["type"]
try:
attr_type = EnumAttributeType.parse(attr_val)
@@ -284,7 +290,7 @@ def parse_attribute(attribute):
@staticmethod
def parse_stability(stability, position_data, strict_validation=True):
if stability is None:
- return StabilityLevel.EXPERIMENTAL
+ return None
stability_value_map = {
"experimental": StabilityLevel.EXPERIMENTAL,
diff --git a/semantic-conventions/src/opentelemetry/semconv/model/semantic_convention.py b/semantic-conventions/src/opentelemetry/semconv/model/semantic_convention.py
index af51a6e0..932cd578 100644
--- a/semantic-conventions/src/opentelemetry/semconv/model/semantic_convention.py
+++ b/semantic-conventions/src/opentelemetry/semconv/model/semantic_convention.py
@@ -104,6 +104,7 @@ class BaseSemanticConvention(ValidatableYamlNode):
"extends",
"attributes",
"constraints",
+ "deprecated",
)
GROUP_TYPE_NAME: str
@@ -268,11 +269,11 @@ def __init__(self, group, strict_validation=True):
self.validate()
def validate(self):
- val_tuple = (self.metric_name, self.unit, self.instrument)
+ val_tuple = (self.metric_name, self.unit, self.instrument, self.stability)
if not all(val_tuple):
raise ValidationError.from_yaml_pos(
self._position,
- "All of metric_name, units, and instrument must be defined",
+ "All of metric_name, units, instrument, and stability must be defined",
)
if self.instrument not in self.allowed_instruments:
@@ -483,6 +484,8 @@ def _fill_inherited_attribute(self, attr, semconv):
def _merge_attribute(self, child, parent):
child.attr_type = parent.attr_type
+ child.stability = parent.stability
+ child.deprecated = parent.deprecated
if not child.brief:
child.brief = parent.brief
if not child.requirement_level:
diff --git a/semantic-conventions/src/opentelemetry/semconv/templating/markdown/__init__.py b/semantic-conventions/src/opentelemetry/semconv/templating/markdown/__init__.py
index 20537ced..bbd9f3e4 100644
--- a/semantic-conventions/src/opentelemetry/semconv/templating/markdown/__init__.py
+++ b/semantic-conventions/src/opentelemetry/semconv/templating/markdown/__init__.py
@@ -124,25 +124,7 @@ def to_markdown_attr(
if isinstance(attribute.attr_type, EnumAttributeType)
else AttributeType.get_instantiated_type(attribute.attr_type)
)
- description = ""
- if attribute.deprecated and self.options.enable_deprecated:
- if "deprecated" in attribute.deprecated.lower():
- description = f"**{attribute.deprecated}**
"
- else:
- deprecated_msg = self.options.deprecated_md_snippet().format(
- attribute.deprecated
- )
- description = f"{deprecated_msg}
"
- elif (
- attribute.stability == StabilityLevel.STABLE and self.options.enable_stable
- ):
- description = f"{self.options.stable_md_snippet()}
"
- elif (
- attribute.stability == StabilityLevel.EXPERIMENTAL
- and self.options.enable_experimental
- ):
- description = f"{self.options.experimental_md_snippet()}
"
- description += attribute.brief
+ description = self._description_with_badge(attribute) + attribute.brief
if attribute.note:
self.render_ctx.add_note(attribute.note)
description += f" [{len(self.render_ctx.notes)}]"
@@ -258,7 +240,7 @@ def to_markdown_metric_table(
"| -------- | --------------- | ----------- | -------------- |\n"
)
- description = semconv.brief
+ description = self._description_with_badge(semconv) + semconv.brief
if semconv.note:
self.render_ctx.add_note(semconv.note)
description += f" [{len(self.render_ctx.notes)}]"
@@ -544,3 +526,25 @@ def _render_group(self, semconv, parameters, output):
self.to_markdown_unit_table(semconv.members, output)
output.write("")
+
+ def _description_with_badge(
+ self, item: typing.Union[SemanticAttribute | BaseSemanticConvention]
+ ):
+ description = ""
+ if item.deprecated and self.options.enable_deprecated:
+ if "deprecated" in item.deprecated.lower():
+ description = f"**{item.deprecated}**
"
+ else:
+ deprecated_msg = self.options.deprecated_md_snippet().format(
+ item.deprecated
+ )
+ description = f"{deprecated_msg}
"
+ elif item.stability == StabilityLevel.STABLE and self.options.enable_stable:
+ description = f"{self.options.stable_md_snippet()}
"
+ elif (
+ item.stability == StabilityLevel.EXPERIMENTAL
+ and self.options.enable_experimental
+ ):
+ description = f"{self.options.experimental_md_snippet()}
"
+
+ return description
diff --git a/semantic-conventions/src/tests/data/compat/attribute_stable_to_experimental/vnext.yaml b/semantic-conventions/src/tests/data/compat/attribute_stable_to_experimental/vnext.yaml
index a26c943f..d83717a1 100644
--- a/semantic-conventions/src/tests/data/compat/attribute_stable_to_experimental/vnext.yaml
+++ b/semantic-conventions/src/tests/data/compat/attribute_stable_to_experimental/vnext.yaml
@@ -22,3 +22,4 @@ groups:
brief: "Request headers."
note: "Request headers note."
examples: '`first.fifth_attr.bar=["foo"]`'
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/compat/attribute_stable_to_experimental/vprev.yaml b/semantic-conventions/src/tests/data/compat/attribute_stable_to_experimental/vprev.yaml
index 74f0d577..4664a214 100644
--- a/semantic-conventions/src/tests/data/compat/attribute_stable_to_experimental/vprev.yaml
+++ b/semantic-conventions/src/tests/data/compat/attribute_stable_to_experimental/vprev.yaml
@@ -10,6 +10,7 @@ groups:
brief: "first attribute"
note: "first attribute note"
examples: "first example"
+ stability: experimental
- id: second_attr
type: int
brief: "second attribute"
diff --git a/semantic-conventions/src/tests/data/compat/attribute_type_changed/vprev.yaml b/semantic-conventions/src/tests/data/compat/attribute_type_changed/vprev.yaml
index 74f0d577..4664a214 100644
--- a/semantic-conventions/src/tests/data/compat/attribute_type_changed/vprev.yaml
+++ b/semantic-conventions/src/tests/data/compat/attribute_type_changed/vprev.yaml
@@ -10,6 +10,7 @@ groups:
brief: "first attribute"
note: "first attribute note"
examples: "first example"
+ stability: experimental
- id: second_attr
type: int
brief: "second attribute"
diff --git a/semantic-conventions/src/tests/data/compat/removed_attribute/vprev.yaml b/semantic-conventions/src/tests/data/compat/removed_attribute/vprev.yaml
index 5d674714..5d3189d3 100644
--- a/semantic-conventions/src/tests/data/compat/removed_attribute/vprev.yaml
+++ b/semantic-conventions/src/tests/data/compat/removed_attribute/vprev.yaml
@@ -10,6 +10,7 @@ groups:
brief: "first attribute"
note: "first attribute note"
examples: "first example"
+ stability: experimental
- id: second_attr
type: int
brief: "second attribute"
@@ -20,3 +21,4 @@ groups:
type: template[string[]]
brief: "request headers"
examples: '`first.fifth_attr.foo=["bar"]`'
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/compat/success/vprev.yaml b/semantic-conventions/src/tests/data/compat/success/vprev.yaml
index 8fc72dc2..0c3ca727 100644
--- a/semantic-conventions/src/tests/data/compat/success/vprev.yaml
+++ b/semantic-conventions/src/tests/data/compat/success/vprev.yaml
@@ -10,6 +10,7 @@ groups:
brief: "first attribute"
note: "first attribute note"
examples: "first example"
+ stability: experimental
- id: second_attr
type: int
brief: "second attribute"
diff --git a/semantic-conventions/src/tests/data/markdown/attribute_group/attribute_group.yaml b/semantic-conventions/src/tests/data/markdown/attribute_group/attribute_group.yaml
index 9aee0e17..5b2fab95 100644
--- a/semantic-conventions/src/tests/data/markdown/attribute_group/attribute_group.yaml
+++ b/semantic-conventions/src/tests/data/markdown/attribute_group/attribute_group.yaml
@@ -6,10 +6,11 @@ groups:
attributes:
- id: bar
type: string
- requirement_level:
+ requirement_level:
recommended: if available
brief: Attribute 1
examples: ['baz']
+ stability: experimental
- id: derived_attributes
type: attribute_group
@@ -19,10 +20,11 @@ groups:
attributes:
- id: qux
type: int
- requirement_level:
+ requirement_level:
conditionally_required: if available
brief: Attribute 2
examples: [42]
+ stability: experimental
- id: span_attribute_group
prefix: ""
diff --git a/semantic-conventions/src/tests/data/markdown/attribute_templates/attribute_templates.yaml b/semantic-conventions/src/tests/data/markdown/attribute_templates/attribute_templates.yaml
index ebaa1644..8bec259c 100644
--- a/semantic-conventions/src/tests/data/markdown/attribute_templates/attribute_templates.yaml
+++ b/semantic-conventions/src/tests/data/markdown/attribute_templates/attribute_templates.yaml
@@ -14,12 +14,14 @@ groups:
HTTP request headers, `` being the normalized HTTP Header name
(lowercase, with - characters replaced by _), the value being the header values.
examples: '`http.request.header.content_type=["application/json"]`'
+ stability: experimental
- id: request.method
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
+ stability: experimental
- ref: referenced_http.request.referenced.header
- id: referenced_http_id
type: span
@@ -31,6 +33,7 @@ groups:
brief: >
This is a referenced attribute.
examples: '`http.request.header.content_type=["application/json"]`'
+ stability: experimental
- id: general
type: span
prefix: general
@@ -41,3 +44,4 @@ groups:
brief: >
This is a general attribute.
examples: '`some_general_attribute.some_key="abc"`'
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/markdown/deprecated/general.yaml b/semantic-conventions/src/tests/data/markdown/deprecated/general.yaml
index 32cc7f48..907fd00a 100644
--- a/semantic-conventions/src/tests/data/markdown/deprecated/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/deprecated/general.yaml
@@ -6,6 +6,7 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: transport
+ stability: experimental
type:
allow_custom_values: false
members:
@@ -36,28 +37,34 @@ groups:
Transport protocol used. See note below.
examples: 'IP.TCP'
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -68,16 +75,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/deprecated/http.yaml b/semantic-conventions/src/tests/data/markdown/deprecated/http.yaml
index b41ca89e..4f668d6d 100644
--- a/semantic-conventions/src/tests/data/markdown/deprecated/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/deprecated/http.yaml
@@ -8,43 +8,51 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
When the header is empty or not present, this attribute should be the same.
examples: ['www.example.org']
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: "if and only if one was received/sent"
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
deprecated: Use attribute `status_description` instead.
examples: ['OK']
- id: flavor
+ stability: experimental
type:
# Default value: `true`. If false, it helps the code gen tool to
# encode checks that only accept the listed values.
@@ -72,6 +80,7 @@ groups:
is `QUIC`, in which case `IP.UDP` is assumed.
examples: ['1.0']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -95,6 +104,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
diff --git a/semantic-conventions/src/tests/data/markdown/empty/general.yaml b/semantic-conventions/src/tests/data/markdown/empty/general.yaml
index 32cc7f48..907fd00a 100644
--- a/semantic-conventions/src/tests/data/markdown/empty/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/empty/general.yaml
@@ -6,6 +6,7 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: transport
+ stability: experimental
type:
allow_custom_values: false
members:
@@ -36,28 +37,34 @@ groups:
Transport protocol used. See note below.
examples: 'IP.TCP'
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -68,16 +75,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/empty/http.yaml b/semantic-conventions/src/tests/data/markdown/empty/http.yaml
index 66cc08b1..96300950 100644
--- a/semantic-conventions/src/tests/data/markdown/empty/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/empty/http.yaml
@@ -8,6 +8,7 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
@@ -20,30 +21,36 @@ groups:
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless. See note [1]
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
When the header is empty or not present, this attribute should be the same.
examples: ['www.example.org']
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: "if and only if one was received/sent"
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -67,6 +74,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
diff --git a/semantic-conventions/src/tests/data/markdown/empty_table/faas.yaml b/semantic-conventions/src/tests/data/markdown/empty_table/faas.yaml
index 8c3288cc..648eb26e 100644
--- a/semantic-conventions/src/tests/data/markdown/empty_table/faas.yaml
+++ b/semantic-conventions/src/tests/data/markdown/empty_table/faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
diff --git a/semantic-conventions/src/tests/data/markdown/empty_table/general.yaml b/semantic-conventions/src/tests/data/markdown/empty_table/general.yaml
index 32cc7f48..907fd00a 100644
--- a/semantic-conventions/src/tests/data/markdown/empty_table/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/empty_table/general.yaml
@@ -6,6 +6,7 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: transport
+ stability: experimental
type:
allow_custom_values: false
members:
@@ -36,28 +37,34 @@ groups:
Transport protocol used. See note below.
examples: 'IP.TCP'
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -68,16 +75,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/empty_table/http.yaml b/semantic-conventions/src/tests/data/markdown/empty_table/http.yaml
index c27fcba5..c754967f 100644
--- a/semantic-conventions/src/tests/data/markdown/empty_table/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/empty_table/http.yaml
@@ -8,42 +8,50 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
When the header is empty or not present, this attribute should be the same.
examples: ['www.example.org']
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -67,6 +75,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -81,11 +90,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/enum_int/rpc.yaml b/semantic-conventions/src/tests/data/markdown/enum_int/rpc.yaml
index 601d05a2..1c13a243 100644
--- a/semantic-conventions/src/tests/data/markdown/enum_int/rpc.yaml
+++ b/semantic-conventions/src/tests/data/markdown/enum_int/rpc.yaml
@@ -5,6 +5,7 @@ groups:
brief: 'Tech-specific attributes for gRPC.'
attributes:
- id: status_code
+ stability: experimental
type:
members:
- id: ok
diff --git a/semantic-conventions/src/tests/data/markdown/event/event.yaml b/semantic-conventions/src/tests/data/markdown/event/event.yaml
index e90e4a21..ba74c1ae 100644
--- a/semantic-conventions/src/tests/data/markdown/event/event.yaml
+++ b/semantic-conventions/src/tests/data/markdown/event/event.yaml
@@ -7,15 +7,18 @@ groups:
report a single exception associated with a span.
attributes:
- id: type
+ stability: experimental
type: string
brief: >
The type of the exception.
examples: ["java.net.ConnectException","OSError"]
- id: message
+ stability: experimental
type: string
brief: The exception message.
examples: ["Division by zero","Can't convert 'int' object to str implicitly"]
- id: stacktrace
+ stability: experimental
type: string
brief: >
A stacktrace.
@@ -24,6 +27,7 @@ groups:
at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n
at com.example.GenerateTrace.main(GenerateTrace.java:5)'
- id: escaped
+ stability: experimental
type: boolean
brief: >
SHOULD be set to true if the exception event is recorded at a point where
diff --git a/semantic-conventions/src/tests/data/markdown/event_noprefix/event.yaml b/semantic-conventions/src/tests/data/markdown/event_noprefix/event.yaml
index 3e41bf3c..ff215b42 100644
--- a/semantic-conventions/src/tests/data/markdown/event_noprefix/event.yaml
+++ b/semantic-conventions/src/tests/data/markdown/event_noprefix/event.yaml
@@ -7,3 +7,4 @@ groups:
- id: attr
type: boolean
brief: attrbrief
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/markdown/event_renamed/event.yaml b/semantic-conventions/src/tests/data/markdown/event_renamed/event.yaml
index f90d2e53..5b79be99 100644
--- a/semantic-conventions/src/tests/data/markdown/event_renamed/event.yaml
+++ b/semantic-conventions/src/tests/data/markdown/event_renamed/event.yaml
@@ -8,3 +8,4 @@ groups:
- id: attr
type: boolean
brief: attrbrief
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/markdown/example_array/http.yaml b/semantic-conventions/src/tests/data/markdown/example_array/http.yaml
index 2f90ce2d..4c884123 100644
--- a/semantic-conventions/src/tests/data/markdown/example_array/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/example_array/http.yaml
@@ -8,6 +8,7 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string[]
requirement_level: required
sampling_relevant: false
diff --git a/semantic-conventions/src/tests/data/markdown/extend_constraint/database.yaml b/semantic-conventions/src/tests/data/markdown/extend_constraint/database.yaml
index a9427dc7..a64b6d85 100644
--- a/semantic-conventions/src/tests/data/markdown/extend_constraint/database.yaml
+++ b/semantic-conventions/src/tests/data/markdown/extend_constraint/database.yaml
@@ -8,6 +8,7 @@ groups:
span_kind: client
attributes:
- id: system
+ stability: experimental
tag: connection-level
brief: An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.
requirement_level: required
@@ -144,6 +145,7 @@ groups:
value: 'neo4j'
brief: 'Neo4j'
- id: connection_string
+ stability: experimental
tag: connection-level
type: string
brief: >
@@ -151,12 +153,14 @@ groups:
note: It is recommended to remove embedded credentials.
examples: 'Server=(localdb)\v11.0;Integrated Security=true;'
- id: user
+ stability: experimental
tag: connection-level
type: string
brief: >
Username for accessing the database.
examples: ['readonly_user', 'reporting_user']
- id: mssql.instance_name
+ stability: experimental
tag: connection-level-tech-specific
type: string
note: >
@@ -167,12 +171,14 @@ groups:
connecting to. This name is used to determine the port of a named instance.
examples: 'MSSQLSERVER'
- id: jdbc.driver_classname
+ stability: experimental
tag: connection-level-tech-specific
type: string
brief: >
The fully-qualified class name of the JDBC driver used to connect.
examples: ['org.postgresql.Driver', 'com.microsoft.sqlserver.jdbc.SQLServerDriver']
- id: name
+ stability: experimental
tag: call-level
type: string
requirement_level:
@@ -185,6 +191,7 @@ groups:
In some SQL databases, the database name to be used is called "schema name".
examples: [ 'customers', 'main' ]
- id: statement
+ stability: experimental
tag: call-level
type: string
requirement_level:
@@ -194,6 +201,7 @@ groups:
note: The value may be sanitized to exclude sensitive information.
examples: ['SELECT * FROM wuser_table', 'SET mykey "WuValue"']
- id: operation
+ stability: experimental
tag: call-level
type: string
requirement_level:
@@ -231,6 +239,7 @@ groups:
Call-level attributes for Cassandra
attributes:
- id: keyspace
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -245,6 +254,7 @@ groups:
Call-level attributes for Apache HBase
attributes:
- id: namespace
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -260,6 +270,7 @@ groups:
Call-level attributes for Redis
attributes:
- id: database_index
+ stability: experimental
type: int
requirement_level:
conditionally_required: if other than the default database (`0`).
@@ -276,6 +287,7 @@ groups:
Call-level attributes for MongoDB
attributes:
- id: collection
+ stability: experimental
type: string
requirement_level: required
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/extend_constraint/general.yaml b/semantic-conventions/src/tests/data/markdown/extend_constraint/general.yaml
index 32cc7f48..907fd00a 100644
--- a/semantic-conventions/src/tests/data/markdown/extend_constraint/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/extend_constraint/general.yaml
@@ -6,6 +6,7 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: transport
+ stability: experimental
type:
allow_custom_values: false
members:
@@ -36,28 +37,34 @@ groups:
Transport protocol used. See note below.
examples: 'IP.TCP'
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -68,16 +75,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/extend_grandparent/database.yaml b/semantic-conventions/src/tests/data/markdown/extend_grandparent/database.yaml
index af4aaa1d..ef74b20f 100644
--- a/semantic-conventions/src/tests/data/markdown/extend_grandparent/database.yaml
+++ b/semantic-conventions/src/tests/data/markdown/extend_grandparent/database.yaml
@@ -5,6 +5,7 @@ groups:
brief: These attributes describe database calls.
attributes:
- id: name
+ stability: experimental
brief: Database name.
type: string
examples: [ 'the_shop' ]
@@ -16,6 +17,7 @@ groups:
extends: database.common_attributes
attributes:
- id: bar
+ stability: experimental
brief: Some property.
type: string
examples: [ 'baz' ]
@@ -28,6 +30,7 @@ groups:
- id: database.foo.duration.metric
type: metric
+ stability: experimental
metric_name: db.foo.duration
instrument: histogram
unit: s
diff --git a/semantic-conventions/src/tests/data/markdown/include/faas.yaml b/semantic-conventions/src/tests/data/markdown/include/faas.yaml
index bfca14c3..b9d592b1 100644
--- a/semantic-conventions/src/tests/data/markdown/include/faas.yaml
+++ b/semantic-conventions/src/tests/data/markdown/include/faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
diff --git a/semantic-conventions/src/tests/data/markdown/include/general.yaml b/semantic-conventions/src/tests/data/markdown/include/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/include/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/include/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/include/http.yaml b/semantic-conventions/src/tests/data/markdown/include/http.yaml
index 65ed4497..2bd266f2 100644
--- a/semantic-conventions/src/tests/data/markdown/include/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/include/http.yaml
@@ -8,56 +8,66 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
When the header is empty or not present, this attribute should be the same.
examples: ['www.example.org']
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: "if and only if one was received/sent"
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
requirement_level: recommended
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
- id: recommended_attribute
+ stability: experimental
brief: brief
type: string
- requirement_level:
+ requirement_level:
recommended: short note
examples: foo
- id: recommended_attribute_long_note
+ stability: experimental
brief: brief
type: string
- requirement_level:
+ requirement_level:
recommended: some very long note that should be written under the semconv table
examples: bar
@@ -81,6 +91,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -93,7 +104,7 @@ groups:
This is an example
- of note
- - with list
+ - with list
examples: ['example.com']
constraints:
- any_of:
diff --git a/semantic-conventions/src/tests/data/markdown/metrics_tables/expected.md b/semantic-conventions/src/tests/data/markdown/metrics_tables/expected.md
index 253863ba..8074bd93 100644
--- a/semantic-conventions/src/tests/data/markdown/metrics_tables/expected.md
+++ b/semantic-conventions/src/tests/data/markdown/metrics_tables/expected.md
@@ -21,7 +21,7 @@
| Name | Instrument Type | Unit (UCUM) | Description |
| -------- | --------------- | ----------- | -------------- |
-| `foo.active_eggs` | UpDownCounter | `{cartons}` | Measures how many eggs are currently active. |
+| `foo.active_eggs` | UpDownCounter | `{cartons}` | **Deprecated: Removed.**
Measures how many eggs are currently active. |
**Attributes for `foo.active_eggs`**
diff --git a/semantic-conventions/src/tests/data/markdown/missing_end_tag/general.yaml b/semantic-conventions/src/tests/data/markdown/missing_end_tag/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/missing_end_tag/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/missing_end_tag/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/missing_end_tag/http.yaml b/semantic-conventions/src/tests/data/markdown/missing_end_tag/http.yaml
index c9e672bd..de43aad4 100644
--- a/semantic-conventions/src/tests/data/markdown/missing_end_tag/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/missing_end_tag/http.yaml
@@ -8,42 +8,50 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
When the header is empty or not present, this attribute should be the same.
examples: ['www.example.org']
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: "if and only if one was received/sent"
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -67,6 +75,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
diff --git a/semantic-conventions/src/tests/data/markdown/multiple/general.yaml b/semantic-conventions/src/tests/data/markdown/multiple/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/multiple/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/multiple/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/multiple/http.yaml b/semantic-conventions/src/tests/data/markdown/multiple/http.yaml
index c9e672bd..de43aad4 100644
--- a/semantic-conventions/src/tests/data/markdown/multiple/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/multiple/http.yaml
@@ -8,42 +8,50 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
When the header is empty or not present, this attribute should be the same.
examples: ['www.example.org']
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: "if and only if one was received/sent"
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -67,6 +75,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
diff --git a/semantic-conventions/src/tests/data/markdown/multiple_enum/general.yaml b/semantic-conventions/src/tests/data/markdown/multiple_enum/general.yaml
index ea444b9e..650de793 100644
--- a/semantic-conventions/src/tests/data/markdown/multiple_enum/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/multiple_enum/general.yaml
@@ -6,6 +6,7 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: transport
+ stability: experimental
type:
allow_custom_values: false
members:
@@ -36,6 +37,7 @@ groups:
Transport protocol used. See note below.
examples: 'IP.TCP'
- id: host.connection.type
+ stability: experimental
type:
allow_custom_values: true
members:
@@ -51,6 +53,7 @@ groups:
brief: 'unavailable'
examples: 'wifi'
- id: host.connection.subtype
+ stability: experimental
type:
allow_custom_values: true
members:
@@ -65,44 +68,54 @@ groups:
brief: 'This describes more details regarding the connection.type. It may be the type of cell connection, but it could be used for describing details about a wifi connection.'
examples: '2G'
- id: host.carrier.name
+ stability: experimental
type: string
brief: "host.carrier.name"
examples: "sprint"
- id: host.carrier.mcc
+ stability: experimental
type: string
brief: "host.carrier.mcc"
examples: "310"
- id: host.carrier.mnc
+ stability: experimental
type: string
brief: "host.carrier.mnc"
examples: "001"
- id: host.carrier.icc
+ stability: experimental
type: string
brief: "host.carrier.icc"
examples: "DE"
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -113,16 +126,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/omit_requirement_level/http.yaml b/semantic-conventions/src/tests/data/markdown/omit_requirement_level/http.yaml
index 0186d65e..7db0d45c 100644
--- a/semantic-conventions/src/tests/data/markdown/omit_requirement_level/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/omit_requirement_level/http.yaml
@@ -8,18 +8,21 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_empty/faas.yaml b/semantic-conventions/src/tests/data/markdown/parameter_empty/faas.yaml
index 8c3288cc..648eb26e 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_empty/faas.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_empty/faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_empty/general.yaml b/semantic-conventions/src/tests/data/markdown/parameter_empty/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_empty/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_empty/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_empty/http.yaml b/semantic-conventions/src/tests/data/markdown/parameter_empty/http.yaml
index 211caf66..c7281bd6 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_empty/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_empty/http.yaml
@@ -8,42 +8,50 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
When the header is empty or not present, this attribute should be the same.
examples: ['www.example.org']
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -67,6 +75,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -81,11 +90,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_full/faas.yaml b/semantic-conventions/src/tests/data/markdown/parameter_full/faas.yaml
index 1fd67a8d..0fb1cad4 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_full/faas.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_full/faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_full/general.yaml b/semantic-conventions/src/tests/data/markdown/parameter_full/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_full/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_full/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_full/http.yaml b/semantic-conventions/src/tests/data/markdown/parameter_full/http.yaml
index 1b732061..f3fbdb4b 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_full/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_full/http.yaml
@@ -8,22 +8,26 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
@@ -32,20 +36,24 @@ groups:
requirement_level:
conditionally_required:
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -69,6 +77,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -83,11 +92,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_remove_constraint/database.yaml b/semantic-conventions/src/tests/data/markdown/parameter_remove_constraint/database.yaml
index 673ccd69..ebad25df 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_remove_constraint/database.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_remove_constraint/database.yaml
@@ -9,6 +9,7 @@ groups:
span_kind: client
attributes:
- id: type
+ stability: experimental
tag: connection-level
type:
allow_custom_values: true
@@ -39,6 +40,7 @@ groups:
Database type. For any SQL database, "sql".
For others, the lower-case database category.
- id: dbms
+ stability: experimental
type:
allow_custom_values: true
members:
@@ -146,6 +148,7 @@ groups:
brief: >
An identifier for the DBMS (database management system) product
- id: connection_string
+ stability: experimental
tag: connection-level
type: string
note: 'It is recommended to remove embedded credentials.'
@@ -153,12 +156,14 @@ groups:
The connection string used to connect to the database.
examples: 'Server=(localdb)\v11.0;Integrated Security=true;'
- id: user
+ stability: experimental
tag: connection-level
type: string
brief: >
Username for accessing the database.
examples: ['readonly_user', 'reporting_user']
- id: mssql.instance_name
+ stability: experimental
type: string
note: >
If setting a `db.mssql.instance_name`, `net.peer.port` is no longer
@@ -168,11 +173,13 @@ groups:
connecting to. This name is used to determine the port of a named instance.
examples: 'MSSQLSERVER'
- id: jdbc.driver_classname
+ stability: experimental
type: string
brief: >
The fully-qualified class name of the JDBC driver used to connect.
examples: ['org.postgresql.Driver', 'com.microsoft.sqlserver.jdbc.SQLServerDriver']
- id: name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -186,6 +193,7 @@ groups:
Redis does not have a database name to used here.
examples: [ 'customers', 'master' ]
- id: statement
+ stability: experimental
type: string
requirement_level:
conditionally_required: if applicable.
@@ -194,6 +202,7 @@ groups:
A database statement for the given database type.
examples: ['SELECT * FROM wuser_table', 'SET mykey "WuValue"']
- id: operation
+ stability: experimental
type: string
requirement_level:
conditionally_required: if `db.statement` is not applicable.
@@ -222,6 +231,7 @@ groups:
Call-level attributes for Cassandra
attributes:
- id: keyspace
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -235,6 +245,7 @@ groups:
Call-level attributes for Apache HBase
attributes:
- id: namespace
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -249,8 +260,9 @@ groups:
Call-level attributes for MongoDB
attributes:
- id: collection
+ stability: experimental
type: string
requirement_level: required
brief: >
The collection being accessed within the database stated in `db.name`.
- examples: [ 'customers', 'products' ]
+ examples: [ 'customers', 'products' ]
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_remove_constraint/general.yaml b/semantic-conventions/src/tests/data/markdown/parameter_remove_constraint/general.yaml
index 1340605b..56bbfd48 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_remove_constraint/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_remove_constraint/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_tag/database.yaml b/semantic-conventions/src/tests/data/markdown/parameter_tag/database.yaml
index 54011f6f..36240552 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_tag/database.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_tag/database.yaml
@@ -9,6 +9,7 @@ groups:
span_kind: client
attributes:
- id: type
+ stability: experimental
tag: connection-level
type:
allow_custom_values: true
@@ -39,6 +40,7 @@ groups:
Database type. For any SQL database, "sql".
For others, the lower-case database category.
- id: dbms
+ stability: experimental
type:
allow_custom_values: true
members:
@@ -146,6 +148,7 @@ groups:
brief: >
An identifier for the DBMS (database management system) product
- id: connection_string
+ stability: experimental
tag: connection-level
type: string
note: 'It is recommended to remove embedded credentials.'
@@ -153,12 +156,14 @@ groups:
The connection string used to connect to the database.
examples: 'Server=(localdb)\v11.0;Integrated Security=true;'
- id: user
+ stability: experimental
tag: connection-level
type: string
brief: >
Username for accessing the database.
examples: ['readonly_user', 'reporting_user']
- id: mssql.instance_name
+ stability: experimental
type: string
note: >
If setting a `db.mssql.instance_name`, `net.peer.port` is no longer
@@ -168,11 +173,13 @@ groups:
connecting to. This name is used to determine the port of a named instance.
examples: 'MSSQLSERVER'
- id: jdbc.driver_classname
+ stability: experimental
type: string
brief: >
The fully-qualified class name of the JDBC driver used to connect.
examples: ['org.postgresql.Driver', 'com.microsoft.sqlserver.jdbc.SQLServerDriver']
- id: name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -186,6 +193,7 @@ groups:
Redis does not have a database name to used here.
examples: [ 'customers', 'master' ]
- id: statement
+ stability: experimental
type: string
requirement_level:
conditionally_required: if applicable.
@@ -194,6 +202,7 @@ groups:
A database statement for the given database type.
examples: ['SELECT * FROM wuser_table', 'SET mykey "WuValue"']
- id: operation
+ stability: experimental
type: string
requirement_level:
conditionally_required: if `db.statement` is not applicable.
@@ -222,6 +231,7 @@ groups:
Call-level attributes for Cassandra
attributes:
- id: keyspace
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -235,6 +245,7 @@ groups:
Call-level attributes for Apache HBase
attributes:
- id: namespace
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -249,8 +260,9 @@ groups:
Call-level attributes for MongoDB
attributes:
- id: collection
+ stability: experimental
type: string
requirement_level: required
brief: >
The collection being accessed within the database stated in `db.name`.
- examples: [ 'customers', 'products' ]
+ examples: [ 'customers', 'products' ]
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_tag/general.yaml b/semantic-conventions/src/tests/data/markdown/parameter_tag/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_tag/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_tag/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_tag_empty/database.yaml b/semantic-conventions/src/tests/data/markdown/parameter_tag_empty/database.yaml
index 00d3136f..7bb4e580 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_tag_empty/database.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_tag_empty/database.yaml
@@ -9,6 +9,7 @@ groups:
span_kind: client
attributes:
- id: type
+ stability: experimental
tag: connection-level
type:
allow_custom_values: true
@@ -39,6 +40,7 @@ groups:
Database type. For any SQL database, "sql".
For others, the lower-case database category.
- id: dbms
+ stability: experimental
type:
allow_custom_values: true
members:
@@ -146,6 +148,7 @@ groups:
brief: >
An identifier for the DBMS (database management system) product
- id: connection_string
+ stability: experimental
tag: connection-level
type: string
note: 'It is recommended to remove embedded credentials.'
@@ -153,12 +156,14 @@ groups:
The connection string used to connect to the database.
examples: 'Server=(localdb)\v11.0;Integrated Security=true;'
- id: user
+ stability: experimental
tag: connection-level
type: string
brief: >
Username for accessing the database.
examples: ['readonly_user', 'reporting_user']
- id: mssql.instance_name
+ stability: experimental
type: string
note: >
If setting a `db.mssql.instance_name`, `net.peer.port` is no longer
@@ -168,11 +173,13 @@ groups:
connecting to. This name is used to determine the port of a named instance.
examples: 'MSSQLSERVER'
- id: jdbc.driver_classname
+ stability: experimental
type: string
brief: >
The fully-qualified class name of the JDBC driver used to connect.
examples: ['org.postgresql.Driver', 'com.microsoft.sqlserver.jdbc.SQLServerDriver']
- id: name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -186,6 +193,7 @@ groups:
Redis does not have a database name to used here.
examples: [ 'customers', 'master' ]
- id: statement
+ stability: experimental
type: string
requirement_level:
conditionally_required: if applicable.
@@ -194,6 +202,7 @@ groups:
A database statement for the given database type.
examples: ['SELECT * FROM wuser_table', 'SET mykey "WuValue"']
- id: operation
+ stability: experimental
type: string
requirement_level:
conditionally_required: if `db.statement` is not applicable.
@@ -221,6 +230,7 @@ groups:
Call-level attributes for Cassandra
attributes:
- id: keyspace
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -234,6 +244,7 @@ groups:
Call-level attributes for Apache HBase
attributes:
- id: namespace
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -248,8 +259,9 @@ groups:
Call-level attributes for MongoDB
attributes:
- id: collection
+ stability: experimental
type: string
requirement_level: required
brief: >
The collection being accessed within the database stated in `db.name`.
- examples: [ 'customers', 'products' ]
+ examples: [ 'customers', 'products' ]
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_tag_empty/general.yaml b/semantic-conventions/src/tests/data/markdown/parameter_tag_empty/general.yaml
index c4ecd8bc..8ff48838 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_tag_empty/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_tag_empty/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_tag_no_attr/database.yaml b/semantic-conventions/src/tests/data/markdown/parameter_tag_no_attr/database.yaml
index 8caf272d..05e2239f 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_tag_no_attr/database.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_tag_no_attr/database.yaml
@@ -6,6 +6,7 @@ groups:
span_kind: client
attributes:
- id: type
+ stability: experimental
tag: connection-level
type: boolean
requirement_level: required
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong/faas.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong/faas.yaml
index 8c3288cc..648eb26e 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong/faas.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong/faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong/general.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong/http.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong/http.yaml
index 1b732061..f3fbdb4b 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong/http.yaml
@@ -8,22 +8,26 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
@@ -32,20 +36,24 @@ groups:
requirement_level:
conditionally_required:
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -69,6 +77,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -83,11 +92,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/faas.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/faas.yaml
index 1fd67a8d..0fb1cad4 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/faas.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/general.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/http.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/http.yaml
index 1b732061..f3fbdb4b 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong_duplicate/http.yaml
@@ -8,22 +8,26 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
@@ -32,20 +36,24 @@ groups:
requirement_level:
conditionally_required:
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -69,6 +77,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -83,11 +92,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/faas.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/faas.yaml
index 1fd67a8d..0fb1cad4 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/faas.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/general.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/http.yaml b/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/http.yaml
index 1b732061..f3fbdb4b 100644
--- a/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/parameter_wrong_syntax/http.yaml
@@ -8,22 +8,26 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
@@ -32,20 +36,24 @@ groups:
requirement_level:
conditionally_required:
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -69,6 +77,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -83,11 +92,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/ref/general.yaml b/semantic-conventions/src/tests/data/markdown/ref/general.yaml
index 4472178f..a1ebb62a 100644
--- a/semantic-conventions/src/tests/data/markdown/ref/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/ref/general.yaml
@@ -6,43 +6,52 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
- id: sock.peer.name
+ stability: experimental
type: string
brief: Remote socket peer name.
requirement_level:
recommended: If available and different than `net.peer.name` and if `net.sock.peer.addr` is set.
examples: proxy.example.com
- id: sock.peer.addr
+ stability: experimental
type: string
brief: >
Remote socket peer address.
examples: ['127.0.0.1', '/tmp/mysql.sock' ]
- id: sock.peer.port
+ stability: experimental
type: int
brief: Remote socket peer port.
requirement_level:
@@ -55,16 +64,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/ref/http.yaml b/semantic-conventions/src/tests/data/markdown/ref/http.yaml
index 1b732061..f3fbdb4b 100644
--- a/semantic-conventions/src/tests/data/markdown/ref/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/ref/http.yaml
@@ -8,22 +8,26 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
@@ -32,20 +36,24 @@ groups:
requirement_level:
conditionally_required:
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -69,6 +77,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -83,11 +92,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/ref/rpc.yaml b/semantic-conventions/src/tests/data/markdown/ref/rpc.yaml
index 58e932b2..a41dc390 100644
--- a/semantic-conventions/src/tests/data/markdown/ref/rpc.yaml
+++ b/semantic-conventions/src/tests/data/markdown/ref/rpc.yaml
@@ -5,6 +5,7 @@ groups:
brief: 'This document defines semantic conventions for remote procedure calls.'
attributes:
- id: service
+ stability: experimental
type: string
requirement_level: required
brief: 'The service name, must be equal to the $service part in the span name.'
diff --git a/semantic-conventions/src/tests/data/markdown/ref_extends/http.yaml b/semantic-conventions/src/tests/data/markdown/ref_extends/http.yaml
index 89cd5a5e..347a75f1 100644
--- a/semantic-conventions/src/tests/data/markdown/ref_extends/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/ref_extends/http.yaml
@@ -19,6 +19,7 @@ groups:
- id: http.client.request.duration.metric
type: metric
+ stability: experimental
metric_name: http.client.request.duration
brief: "Measures request duration."
instrument: histogram
diff --git a/semantic-conventions/src/tests/data/markdown/ref_extends/server.yaml b/semantic-conventions/src/tests/data/markdown/ref_extends/server.yaml
index 0b25c86f..a6e144b4 100644
--- a/semantic-conventions/src/tests/data/markdown/ref_extends/server.yaml
+++ b/semantic-conventions/src/tests/data/markdown/ref_extends/server.yaml
@@ -5,6 +5,7 @@ groups:
brief: 'This document defines semantic conventions for common server attributes.'
attributes:
- id: address
+ stability: experimental
type: string
brief: 'Domain name. (original brief)'
examples: 'foo'
diff --git a/semantic-conventions/src/tests/data/markdown/sampling_relevant/general.yaml b/semantic-conventions/src/tests/data/markdown/sampling_relevant/general.yaml
index 016be000..a256ef13 100644
--- a/semantic-conventions/src/tests/data/markdown/sampling_relevant/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/sampling_relevant/general.yaml
@@ -6,14 +6,17 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: .
examples: '.'
- id: peer.port
+ stability: experimental
type: int
brief: .
examples: []
- id: peer.name
+ stability: experimental
type: string
brief: .
examples: '.'
diff --git a/semantic-conventions/src/tests/data/markdown/sampling_relevant/http.yaml b/semantic-conventions/src/tests/data/markdown/sampling_relevant/http.yaml
index 4fb47954..808799dd 100644
--- a/semantic-conventions/src/tests/data/markdown/sampling_relevant/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/sampling_relevant/http.yaml
@@ -4,12 +4,14 @@ groups:
brief: 'This document defines semantic conventions for HTTP client and server Spans.'
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
brief: .
sampling_relevant: true
examples: ["GET"]
- id: url
+ stability: experimental
type: string
brief: .
note: >
@@ -18,27 +20,32 @@ groups:
sampling_relevant: true
examples: ['.']
- id: target
+ stability: experimental
type: string
brief: .
sampling_relevant: true
examples: ['.']
- id: host
+ stability: experimental
type: string
brief: .
sampling_relevant: true
examples: ['.']
- id: scheme
+ stability: experimental
type: string
brief: .
sampling_relevant: true
examples: ["http"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required:
brief: .
examples: []
- id: user_agent
+ stability: experimental
type: string
brief: .
examples: ['.']
diff --git a/semantic-conventions/src/tests/data/markdown/scope/scope.yaml b/semantic-conventions/src/tests/data/markdown/scope/scope.yaml
index 12036dbf..ab0c8ce0 100644
--- a/semantic-conventions/src/tests/data/markdown/scope/scope.yaml
+++ b/semantic-conventions/src/tests/data/markdown/scope/scope.yaml
@@ -6,6 +6,7 @@ groups:
Instrumentation Scope attributes
attributes:
- id: short_name
+ stability: experimental
type: string
requirement_level: recommended
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/single/general.yaml b/semantic-conventions/src/tests/data/markdown/single/general.yaml
index fba8c3bf..bebaef5d 100644
--- a/semantic-conventions/src/tests/data/markdown/single/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/single/general.yaml
@@ -6,27 +6,33 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -37,16 +43,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/single/http.yaml b/semantic-conventions/src/tests/data/markdown/single/http.yaml
index 1b732061..f3fbdb4b 100644
--- a/semantic-conventions/src/tests/data/markdown/single/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/single/http.yaml
@@ -8,22 +8,26 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
@@ -32,20 +36,24 @@ groups:
requirement_level:
conditionally_required:
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -69,6 +77,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -83,11 +92,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/markdown/sorting/input.yaml b/semantic-conventions/src/tests/data/markdown/sorting/input.yaml
index 50260364..a33ec950 100644
--- a/semantic-conventions/src/tests/data/markdown/sorting/input.yaml
+++ b/semantic-conventions/src/tests/data/markdown/sorting/input.yaml
@@ -5,10 +5,12 @@ groups:
brief: 'Attributes that appear last.'
attributes:
- id: yyy
+ stability: experimental
type: string
brief: 'the 6th attribute'
examples: 'yyy'
- id: xxx
+ stability: experimental
type: string
brief: 'the 5th attribute'
examples: 'xxx'
@@ -19,6 +21,7 @@ groups:
brief: 'Attributes that appear first.'
attributes:
- id: aaa
+ stability: experimental
type: string
brief: 'the 1st attribute'
examples: 'aaa'
@@ -29,6 +32,7 @@ groups:
brief: 'Attributes that appear after `mmm`.'
attributes:
- id: nnn
+ stability: experimental
type: string
brief: 'the 4th attribute'
examples: 'nnn'
@@ -40,10 +44,12 @@ groups:
extends: nnn
attributes:
- id: ccc
+ stability: experimental
type: template[string]
brief: the 3rd attribute
examples: '`mmm.ccc="ccc"`'
- id: bbb
+ stability: experimental
type: string
brief: the 2nd attribute
examples: 'bbb'
diff --git a/semantic-conventions/src/tests/data/markdown/stability/all_badges_expected.md b/semantic-conventions/src/tests/data/markdown/stability/all_badges_expected.md
new file mode 100644
index 00000000..856f8a0c
--- /dev/null
+++ b/semantic-conventions/src/tests/data/markdown/stability/all_badges_expected.md
@@ -0,0 +1,44 @@
+
+| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | ![Experimental](https://img.shields.io/badge/-experimental-blue)
| | `Required` |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | `Required` |
+
+
+
+| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | ![Experimental](https://img.shields.io/badge/-experimental-blue)
| | `Required` |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | `Required` |
+
+
+
+| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | ![Experimental](https://img.shields.io/badge/-experimental-blue)
| | `Required` |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | `Required` |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `stable_metric` | Histogram | `s` | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
stable_metric |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `experimental_metric` | Counter | `{e}` | ![Experimental](https://img.shields.io/badge/-experimental-blue)
experimental_metric |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `deprecated_metric` | UpDownCounter | `{d}` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
deprecated_metric |
+
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/markdown/stability/badges_expected.md b/semantic-conventions/src/tests/data/markdown/stability/badges_expected.md
deleted file mode 100644
index 8c53eba4..00000000
--- a/semantic-conventions/src/tests/data/markdown/stability/badges_expected.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Common Attributes
-
-
-| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) |
-|---|---|---|---|---|
-| [`test.def_stability`](labels_expected.md) | boolean | | | `Required` |
-| [`test.deprecated_attr`](labels_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
-| [`test.exp_attr`](labels_expected.md) | boolean | | | `Required` |
-| [`test.stable_attr`](labels_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | `Required` |
-
diff --git a/semantic-conventions/src/tests/data/markdown/stability/input.md b/semantic-conventions/src/tests/data/markdown/stability/input.md
index 0109ba90..f699ebb8 100644
--- a/semantic-conventions/src/tests/data/markdown/stability/input.md
+++ b/semantic-conventions/src/tests/data/markdown/stability/input.md
@@ -1,5 +1,17 @@
-# Common Attributes
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/markdown/stability/labels_expected.md b/semantic-conventions/src/tests/data/markdown/stability/labels_expected.md
deleted file mode 100644
index d6edf766..00000000
--- a/semantic-conventions/src/tests/data/markdown/stability/labels_expected.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Common Attributes
-
-
-| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) |
-|---|---|---|---|---|
-| [`test.def_stability`](labels_expected.md) | boolean | | | `Required` |
-| [`test.deprecated_attr`](labels_expected.md) | boolean | **Deprecated: Removed.**
| | `Required` |
-| [`test.exp_attr`](labels_expected.md) | boolean | | | `Required` |
-| [`test.stable_attr`](labels_expected.md) | boolean | | | `Required` |
-
diff --git a/semantic-conventions/src/tests/data/markdown/stability/stability.yaml b/semantic-conventions/src/tests/data/markdown/stability/stability.yaml
index 14ed4783..6ad528db 100644
--- a/semantic-conventions/src/tests/data/markdown/stability/stability.yaml
+++ b/semantic-conventions/src/tests/data/markdown/stability/stability.yaml
@@ -14,13 +14,53 @@ groups:
requirement_level: required
stability: stable
brief: ""
- - id: deprecated_attr
+ - id: deprecated_stable_attr
type: boolean
requirement_level: required
stability: stable
deprecated: "Removed."
brief: ""
- - id: def_stability
+ - id: deprecated_experimental_attr
type: boolean
requirement_level: required
+ stability: experimental
+ deprecated: "Removed."
brief: ""
+ - id: ref_test
+ brief: 'ref_test'
+ attributes:
+ - ref: test.exp_attr
+ - ref: test.stable_attr
+ - ref: test.deprecated_stable_attr
+ - ref: test.deprecated_experimental_attr
+ - id: extends_test
+ brief: 'extends_test'
+ extends: test
+ - id: stable_metric
+ type: metric
+ brief: 'stable_metric'
+ stability: stable
+ metric_name: stable_metric
+ instrument: histogram
+ unit: "s"
+ attributes:
+ - ref: test.stable_attr
+ - id: experimental_metric
+ type: metric
+ brief: 'experimental_metric'
+ stability: experimental
+ metric_name: experimental_metric
+ instrument: counter
+ unit: "{e}"
+ attributes:
+ - ref: test.exp_attr
+ - id: deprecated_metric
+ type: metric
+ brief: 'deprecated_metric'
+ stability: stable
+ deprecated: "Removed."
+ metric_name: deprecated_metric
+ instrument: updowncounter
+ unit: "{d}"
+ attributes:
+ - ref: test.deprecated_experimental_attr
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/markdown/stability/stable_badges_expected.md b/semantic-conventions/src/tests/data/markdown/stability/stable_badges_expected.md
new file mode 100644
index 00000000..b1e779ad
--- /dev/null
+++ b/semantic-conventions/src/tests/data/markdown/stability/stable_badges_expected.md
@@ -0,0 +1,44 @@
+
+| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | | | `Required` |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | `Required` |
+
+
+
+| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | | | `Required` |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | `Required` |
+
+
+
+| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) |
+|---|---|---|---|---|
+| [`test.deprecated_experimental_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.deprecated_stable_attr`](stable_badges_expected.md) | boolean | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
| | `Required` |
+| [`test.exp_attr`](stable_badges_expected.md) | boolean | | | `Required` |
+| [`test.stable_attr`](stable_badges_expected.md) | boolean | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
| | `Required` |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `stable_metric` | Histogram | `s` | ![Stable](https://img.shields.io/badge/-stable-lightgreen)
stable_metric |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `experimental_metric` | Counter | `{e}` | experimental_metric |
+
+
+
+| Name | Instrument Type | Unit (UCUM) | Description |
+| -------- | --------------- | ----------- | -------------- |
+| `deprecated_metric` | UpDownCounter | `{d}` | ![Deprecated](https://img.shields.io/badge/-deprecated-red)
deprecated_metric |
+
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/markdown/wrong_semconv_id/general.yaml b/semantic-conventions/src/tests/data/markdown/wrong_semconv_id/general.yaml
index fed550d4..22af26ac 100644
--- a/semantic-conventions/src/tests/data/markdown/wrong_semconv_id/general.yaml
+++ b/semantic-conventions/src/tests/data/markdown/wrong_semconv_id/general.yaml
@@ -6,28 +6,34 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -38,16 +44,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/markdown/wrong_semconv_id/http.yaml b/semantic-conventions/src/tests/data/markdown/wrong_semconv_id/http.yaml
index aa650b1a..11802496 100644
--- a/semantic-conventions/src/tests/data/markdown/wrong_semconv_id/http.yaml
+++ b/semantic-conventions/src/tests/data/markdown/wrong_semconv_id/http.yaml
@@ -8,22 +8,26 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
@@ -32,20 +36,24 @@ groups:
requirement_level:
conditionally_required: .
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: if and only if one was received/sent.
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -69,6 +77,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
@@ -83,11 +92,13 @@ groups:
It is thus preferred to supply the raw data that is available.
examples: ['example.com']
- id: route
+ stability: experimental
type: string
brief: >
The matched route (path template).
examples: '/users/:userID?'
- id: client_ip
+ stability: experimental
type: string
sampling_relevant: false
brief: >
diff --git a/semantic-conventions/src/tests/data/yaml/attr_templates_code/attribute_templates.yml b/semantic-conventions/src/tests/data/yaml/attr_templates_code/attribute_templates.yml
index d56a0bba..355db758 100644
--- a/semantic-conventions/src/tests/data/yaml/attr_templates_code/attribute_templates.yml
+++ b/semantic-conventions/src/tests/data/yaml/attr_templates_code/attribute_templates.yml
@@ -1,9 +1,10 @@
-groups:
+groups:
- id: test
type: attribute_group
brief: 'brief'
attributes:
- id: attribute_template_one
+ stability: experimental
tag: tag-one
type: template[string]
brief: >
@@ -11,6 +12,7 @@ groups:
the first attribute template
examples: 'This is a good example of the first attribute template'
- id: attribute_template_two
+ stability: experimental
tag: tag-two
type: template[int]
brief: >
@@ -18,6 +20,7 @@ groups:
the second attribute template. It's a number.
examples: [1000, 10, 1]
- id: attribute_three
+ stability: experimental
tag: tag-three
type: boolean
brief: >
diff --git a/semantic-conventions/src/tests/data/yaml/attribute_templates.yml b/semantic-conventions/src/tests/data/yaml/attribute_templates.yml
index d9ec04c8..05fe20e5 100644
--- a/semantic-conventions/src/tests/data/yaml/attribute_templates.yml
+++ b/semantic-conventions/src/tests/data/yaml/attribute_templates.yml
@@ -1,5 +1,6 @@
attributes:
- id: attribute_template_one
+ stability: experimental
tag: tag-one
type: template[string]
brief: >
@@ -7,6 +8,7 @@ attributes:
the first attribute template
examples: 'This is a good example of the first attribute template'
- id: attribute_template_two
+ stability: experimental
tag: tag-two
type: template[int]
brief: >
@@ -14,6 +16,7 @@ attributes:
the second attribute template. It's a number.
examples: [1000, 10, 1]
- id: attribute_three
+ stability: experimental
tag: tag-three
type: boolean
brief: >
diff --git a/semantic-conventions/src/tests/data/yaml/basic_example.yml b/semantic-conventions/src/tests/data/yaml/basic_example.yml
index dc6274bc..e252f90d 100644
--- a/semantic-conventions/src/tests/data/yaml/basic_example.yml
+++ b/semantic-conventions/src/tests/data/yaml/basic_example.yml
@@ -6,6 +6,7 @@ groups:
span_kind: server
attributes:
- id: attr_one
+ stability: experimental
type: boolean
brief: short description
- id: second_group_id
@@ -16,6 +17,7 @@ groups:
extends: first_group_id
attributes:
- id: attr_two
+ stability: experimental
type: string
brief: short description
examples: ['example_one', 'example_two']
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/cloud.yaml b/semantic-conventions/src/tests/data/yaml/cloud.yaml
index 3befe01d..a376ff21 100644
--- a/semantic-conventions/src/tests/data/yaml/cloud.yaml
+++ b/semantic-conventions/src/tests/data/yaml/cloud.yaml
@@ -6,6 +6,7 @@ groups:
Attributes for a cloud infrastructure (e.g. GCP, Azure, AWS).
attributes:
- id: provider
+ stability: experimental
type:
allow_custom_values: true
members:
@@ -18,16 +19,19 @@ groups:
brief: >
Name of the cloud provider.
- id: account.id
+ stability: experimental
type: string
brief: >
The cloud account id used to identify different entities.
examples: ['opentelemetry-user']
- id: region
+ stability: experimental
type: string
brief: >
A specific geographical location where different entities can run.
examples: ['us-central1']
- id: zone
+ stability: experimental
type: string
brief: >
Zones are a sub set of the region connected through low-latency links.
diff --git a/semantic-conventions/src/tests/data/yaml/database.yaml b/semantic-conventions/src/tests/data/yaml/database.yaml
index 8112fd7c..31e7119f 100644
--- a/semantic-conventions/src/tests/data/yaml/database.yaml
+++ b/semantic-conventions/src/tests/data/yaml/database.yaml
@@ -7,6 +7,7 @@ groups:
span_kind: client
attributes:
- id: type
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -14,6 +15,7 @@ groups:
For others, the lower-case database category.
examples: ['cassandra', 'hbase', 'redis']
- id: instance
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -22,6 +24,7 @@ groups:
the instance name is "customers"
examples: ['customers']
- id: statement
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -30,11 +33,13 @@ groups:
sensitive information.
examples: ['SELECT * FROM wuser_table', "SET mykey 'WuValue'"]
- id: url
+ stability: experimental
type: string
requirement_level: required
brief: 'JDBC substring'
examples: ['mysql://db.example.com:3306']
- id: user
+ stability: experimental
type: string
brief: 'Username for accessing database.'
examples: ['readonly_user','reporting_user']
diff --git a/semantic-conventions/src/tests/data/yaml/deprecated/http.yaml b/semantic-conventions/src/tests/data/yaml/deprecated/http.yaml
index 7e68b2e3..e5c9b3e2 100644
--- a/semantic-conventions/src/tests/data/yaml/deprecated/http.yaml
+++ b/semantic-conventions/src/tests/data/yaml/deprecated/http.yaml
@@ -8,44 +8,29 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
- requirement_level: required
- sampling_relevant: false
deprecated: Use attribute `nonDepecrated`.
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
deprecated: Use attribute `nonDepecrated`.
- brief: >
- Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
- Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
+ brief: ""
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- - id: host
- type: string
- brief: >
- The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
- When the header is empty or not present, this attribute should be the same.
- examples: ['www.example.org']
- - id: scheme
- type: string
- brief: 'The URI scheme identifying the used protocol.'
- examples: ["http", "https"]
- - id: status_code
- type: int
- requirement_level:
- conditionally_required: "if and only if one was received/sent"
- brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
- examples: [200]
- - id: status_text
- type: string
- brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
- examples: ['OK']
- - id: user_agent
- type: string
- brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
- examples: ['CERN-LineMode/2.15 libwww/2.17b3']
\ No newline at end of file
+ - id: http.client
+ type: span
+ brief: ""
+ attributes:
+ - ref: http.method
+ - id: http.server
+ type: span
+ brief: ""
+ extends: http
+
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_boolean.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_boolean.yaml
index 7cd09130..ef346145 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_boolean.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_boolean.yaml
@@ -10,3 +10,4 @@ groups:
deprecated: 99
brief: 'test'
examples: [true, false]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_empty_string.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_empty_string.yaml
index 9de2d8a7..9dd7cd7b 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_empty_string.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_empty_string.yaml
@@ -10,3 +10,4 @@ groups:
deprecated: ''
brief: 'test'
examples: [true, false]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_number.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_number.yaml
index 17897012..58bd4e7b 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_number.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/deprecation_number.yaml
@@ -10,3 +10,4 @@ groups:
deprecated: True
brief: 'test'
examples: [true, false]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/extends_overrides_deprecation.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/extends_overrides_deprecation.yaml
new file mode 100644
index 00000000..c74ad8c1
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/extends_overrides_deprecation.yaml
@@ -0,0 +1,20 @@
+groups:
+ - id: test
+ type: span
+ prefix: test
+ brief: ""
+ span_kind: client
+ attributes:
+ - id: convention_version
+ type: boolean
+ brief: 'test'
+ examples: [true, false]
+ stability: experimental
+ deprecated: "parent description"
+ - id: test_child
+ type: span
+ brief: ""
+ extends: test
+ attributes:
+ - ref: test.convention_version
+ deprecated: "Removed"
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/multiple_deprecations.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/multiple_deprecations.yaml
new file mode 100644
index 00000000..b83ffe5b
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/multiple_deprecations.yaml
@@ -0,0 +1,14 @@
+groups:
+ - id: test
+ type: span
+ prefix: test
+ brief: 'This document defines semantic conventions for test.'
+ span_kind: client
+ attributes:
+ - id: convention_version
+ type: boolean
+ deprecated: "first"
+ deprecated: "second"
+ brief: 'test'
+ examples: [true, false]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/deprecated/ref_overrides_deprecation.yaml b/semantic-conventions/src/tests/data/yaml/errors/deprecated/ref_overrides_deprecation.yaml
new file mode 100644
index 00000000..f8adeac5
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/deprecated/ref_overrides_deprecation.yaml
@@ -0,0 +1,18 @@
+groups:
+ - id: test
+ type: span
+ prefix: test
+ brief: ""
+ span_kind: client
+ attributes:
+ - id: convention_version
+ type: boolean
+ brief: 'test'
+ examples: [true, false]
+ stability: experimental
+ - id: test_child
+ type: span
+ brief: ""
+ attributes:
+ - ref: test.convention_version
+ deprecated: "Removed"
diff --git a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_enum.yaml b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_enum.yaml
index 4d6ce117..fea267cd 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_enum.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_enum.yaml
@@ -10,4 +10,5 @@ groups:
allow_custom_values: false
members:
requirement_level: required
- brief: 'test'
\ No newline at end of file
+ brief: 'test'
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_boolean.yaml b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_boolean.yaml
index a85ed435..dcbe52d0 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_boolean.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_boolean.yaml
@@ -6,6 +6,7 @@ groups:
span_kind: client
attributes:
- id: convention_version
+ stability: experimental
type: boolean
requirement_level: required
brief: 'test'
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_boolean_array.yaml b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_boolean_array.yaml
index 38641a9b..d5db6048 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_boolean_array.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_boolean_array.yaml
@@ -8,4 +8,5 @@ groups:
- id: convention_version
type: boolean[]
requirement_level: required
- brief: 'test'
\ No newline at end of file
+ brief: 'test'
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_enum.yaml b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_enum.yaml
index a51f1730..98743a36 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_enum.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_enum.yaml
@@ -6,6 +6,7 @@ groups:
span_kind: client
attributes:
- id: type
+ stability: experimental
type:
allow_custom_values: false
members:
diff --git a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_string.yaml b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_string.yaml
index 02bebc47..1db8c96a 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_string.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/empty/empty_example_string.yaml
@@ -6,6 +6,7 @@ groups:
span_kind: client
attributes:
- id: convention_version
+ stability: experimental
type: string
requirement_level: required
brief: 'test'
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/empty_type.yaml b/semantic-conventions/src/tests/data/yaml/errors/empty_type.yaml
index 6c0127f0..25e91a44 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/empty_type.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/empty_type.yaml
@@ -7,4 +7,5 @@ groups:
attributes:
- id: test
requirement_level: required
- brief: 'test.'
\ No newline at end of file
+ brief: 'test.'
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/enum/enum_member_with_extra_keys.yaml b/semantic-conventions/src/tests/data/yaml/errors/enum/enum_member_with_extra_keys.yaml
index 1576e509..c89b43b8 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/enum/enum_member_with_extra_keys.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/enum/enum_member_with_extra_keys.yaml
@@ -13,4 +13,5 @@ groups:
type: shouldnt
value: yesyes
requirement_level: required
- brief: 'test'
\ No newline at end of file
+ brief: 'test'
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/enum/enum_with_double_values.yaml b/semantic-conventions/src/tests/data/yaml/errors/enum/enum_with_double_values.yaml
index c9a7dc64..02b97e43 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/enum/enum_with_double_values.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/enum/enum_with_double_values.yaml
@@ -14,3 +14,4 @@ groups:
requirement_level: required
brief: "The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request."
examples: [0.0, 1.0]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/enum/enum_with_extra_keys.yaml b/semantic-conventions/src/tests/data/yaml/errors/enum/enum_with_extra_keys.yaml
index b58c12be..c12f662f 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/enum/enum_with_extra_keys.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/enum/enum_with_extra_keys.yaml
@@ -11,4 +11,5 @@ groups:
allow_custom_values: false
members:
requirement_level: required
- brief: 'test'
\ No newline at end of file
+ brief: 'test'
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/events/missing_event.yaml b/semantic-conventions/src/tests/data/yaml/errors/events/missing_event.yaml
index 3a1f1940..baa5688f 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/events/missing_event.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/events/missing_event.yaml
@@ -8,6 +8,7 @@ groups:
brief: example
attributes:
- id: flag
+ stability: experimental
type: boolean
brief: An attribute.
@@ -17,5 +18,6 @@ groups:
brief: example
attributes:
- id: flag
+ stability: experimental
type: boolean
brief: An attribute.
diff --git a/semantic-conventions/src/tests/data/yaml/errors/events/nameless_event.yaml b/semantic-conventions/src/tests/data/yaml/errors/events/nameless_event.yaml
index 60830869..241ab1e4 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/events/nameless_event.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/events/nameless_event.yaml
@@ -4,5 +4,6 @@ groups:
brief: eventbrief
attributes:
- id: eventattr
+ stability: experimental
type: boolean
brief: eventattrbrief
diff --git a/semantic-conventions/src/tests/data/yaml/errors/events/no_event_type.yaml b/semantic-conventions/src/tests/data/yaml/errors/events/no_event_type.yaml
index 4b3b6fd9..4c12f680 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/events/no_event_type.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/events/no_event_type.yaml
@@ -7,6 +7,7 @@ groups:
brief: example
attributes:
- id: flag
+ stability: experimental
type: boolean
brief: An attribute.
@@ -16,5 +17,6 @@ groups:
brief: example
attributes:
- id: flag
+ stability: experimental
type: boolean
brief: An attribute.
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example.types.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example.types.yaml
index 96a9fe3e..31e0e0f1 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example.types.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example.types.yaml
@@ -10,16 +10,19 @@ groups:
requirement_level: required
brief: 'test'
examples: [1,asd]
+ stability: experimental
- id: convention_version
type: int[]
requirement_level: required
brief: 'test'
examples: [1,3]
+ stability: experimental
- id: url
type: string
requirement_level: required
brief: 'test'
examples: ['http://1.2.3.4:5678/']
+ stability: experimental
- id: value
type:
allow_custom_values: false
@@ -29,8 +32,10 @@ groups:
note: 'val'
requirement_level: required
brief: 'test.'
+ stability: experimental
- id: flag
requirement_level: conditionally_required
type: boolean
brief: 'test'
examples: [true]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example_bool.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example_bool.yaml
index 3bda4789..20d74d4c 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example_bool.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example_bool.yaml
@@ -10,3 +10,4 @@ groups:
requirement_level: required
brief: 'test'
examples: [true, false, yes]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example_bool_array.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example_bool_array.yaml
index 75353d99..ceb99ebc 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example_bool_array.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example_bool_array.yaml
@@ -10,3 +10,4 @@ groups:
requirement_level: required
brief: 'test'
examples: [[true,false], [true, 1]]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example_number_array.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example_number_array.yaml
index ad9a95dd..5f42780a 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example_number_array.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example_number_array.yaml
@@ -9,4 +9,5 @@ groups:
type: int[]
requirement_level: required
brief: 'test'
- examples: [1, asd]
\ No newline at end of file
+ examples: [1, asd]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example_number_array_single.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example_number_array_single.yaml
index 6a7a08f5..36c6c9cd 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example_number_array_single.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example_number_array_single.yaml
@@ -9,4 +9,5 @@ groups:
type: int[]
requirement_level: required
brief: 'test'
- examples: 1
\ No newline at end of file
+ examples: 1
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example_single_string.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example_single_string.yaml
index a8b6b7c1..31c7f6e2 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example_single_string.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example_single_string.yaml
@@ -10,3 +10,4 @@ groups:
requirement_level: required
brief: 'test'
examples: "asd"
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example_string.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example_string.yaml
index a9ca4b2a..6cf91562 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example_string.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example_string.yaml
@@ -10,3 +10,4 @@ groups:
requirement_level: required
brief: 'test'
examples: ["asd", 'dsa', 123]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example_string_array.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example_string_array.yaml
index b427aa9c..0de6efc0 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example_string_array.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example_string_array.yaml
@@ -10,3 +10,4 @@ groups:
requirement_level: required
brief: 'test'
examples: [["",'',"'",'"'],["asd", 'dsa', 123]]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/examples/example_wrong_type.yaml b/semantic-conventions/src/tests/data/yaml/errors/examples/example_wrong_type.yaml
index 8e0a8610..2ebc0794 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/examples/example_wrong_type.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/examples/example_wrong_type.yaml
@@ -10,3 +10,4 @@ groups:
requirement_level: required
brief: 'test'
examples: [1,asd]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/id_clash/http.yaml b/semantic-conventions/src/tests/data/yaml/errors/id_clash/http.yaml
index fff4dfa0..9e7ffcc4 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/id_clash/http.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/id_clash/http.yaml
@@ -9,15 +9,19 @@ groups:
type: int
brief: t
examples: 3495
+ stability: experimental
- id: request_content_length_uncompressed
type: int
brief: t
examples: 3495
+ stability: experimental
- id: request_content_length
type: int
brief: t
examples: 3495
+ stability: experimental
- id: response_content_length_uncompressed
type: int
brief: t
- examples: 3495
\ No newline at end of file
+ examples: 3495
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/id_clash/httpInherited.yaml b/semantic-conventions/src/tests/data/yaml/errors/id_clash/httpInherited.yaml
index 31976666..be4cbd56 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/id_clash/httpInherited.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/id_clash/httpInherited.yaml
@@ -6,6 +6,7 @@ groups:
note: t
attributes:
- id: request_content_length
+ stability: experimental
type: int
brief: t
examples: 3495
@@ -17,12 +18,14 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
sampling_relevant: false
brief: t
note: t
examples: ['example.com']
- id: request_content_length
+ stability: experimental
type: int
brief: t
examples: 3495
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/id_clash/resource2_faas.yaml b/semantic-conventions/src/tests/data/yaml/errors/id_clash/resource2_faas.yaml
index b51e724e..5a3322fe 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/id_clash/resource2_faas.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/id_clash/resource2_faas.yaml
@@ -6,23 +6,27 @@ groups:
Attributes for a serverless instance.
attributes:
- id: name
+ stability: experimental
type: string
requirement_level: required
brief: >
The name of the function being executed.
examples: ['my-function']
- id: id
+ stability: experimental
type: string
requirement_level: required
brief: >
The unique name of the function being executed.
examples: ['arn:aws:lambda:us-west-2:123456789012:function:my-function']
- id: version
+ stability: experimental
type: string
brief: >
The version
examples: ['semver:2.0.0']
- id: instance
+ stability: experimental
type: string
brief: >
The execution environment ID as a string.
diff --git a/semantic-conventions/src/tests/data/yaml/errors/id_clash/resource_faas.yaml b/semantic-conventions/src/tests/data/yaml/errors/id_clash/resource_faas.yaml
index d84b00af..1ed3fe6c 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/id_clash/resource_faas.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/id_clash/resource_faas.yaml
@@ -6,12 +6,14 @@ groups:
Attributes for a serverless instance.
attributes:
- id: name
+ stability: experimental
type: string
requirement_level: required
brief: >
The name of the function being executed.
examples: ['my-function']
- id: id
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -24,12 +26,14 @@ groups:
field.
examples: ['arn:aws:lambda:us-west-2:123456789012:function:my-function']
- id: version
+ stability: experimental
type: string
brief: >
The version string of the function being executed as defined in
[Version Attributes](https://github.com/open-telemetry/opentelemetry-specification/tree/master/specification/resource/semantic_conventions#version-attributes).
examples: ['semver:2.0.0']
- id: instance
+ stability: experimental
type: string
brief: >
The execution environment ID as a string.
diff --git a/semantic-conventions/src/tests/data/yaml/errors/id_clash/span_faas.yaml b/semantic-conventions/src/tests/data/yaml/errors/id_clash/span_faas.yaml
index 91ac2be1..4496d5d1 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/id_clash/span_faas.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/id_clash/span_faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
@@ -39,6 +41,7 @@ groups:
Semantic Convention for FaaS scheduled to be executed regularly.
attributes:
- id: time
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -47,6 +50,7 @@ groups:
format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).
examples: "2020-01-23T13:47:06Z"
- id: cron
+ stability: experimental
type: string
brief: >
A string containing the schedule period as
diff --git a/semantic-conventions/src/tests/data/yaml/errors/invalid_type.yaml b/semantic-conventions/src/tests/data/yaml/errors/invalid_type.yaml
index 169345ff..1e7a8f94 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/invalid_type.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/invalid_type.yaml
@@ -5,6 +5,7 @@ groups:
brief: 'This document defines semantic conventions for remote procedure calls.'
attributes:
- id: service
+ stability: experimental
type: string
requirement_level: required
brief: 'The service name, must be equal to the $service part in the span name.'
diff --git a/semantic-conventions/src/tests/data/yaml/errors/missing_attr_type.yaml b/semantic-conventions/src/tests/data/yaml/errors/missing_attr_type.yaml
index 48cfaf6f..88b90434 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/missing_attr_type.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/missing_attr_type.yaml
@@ -5,5 +5,6 @@ groups:
span_kind: client
attributes:
- id: test
+ stability: experimental
requirement_level: required
brief: 'test.'
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/missing_semconv_id.yaml b/semantic-conventions/src/tests/data/yaml/errors/missing_semconv_id.yaml
index 637db591..bf10dbb7 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/missing_semconv_id.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/missing_semconv_id.yaml
@@ -5,6 +5,7 @@ groups:
span_kind: client
attributes:
- id: test
+ stability: experimental
type:
allow_custom_values: false
members:
diff --git a/semantic-conventions/src/tests/data/yaml/errors/resource_spankind.yaml b/semantic-conventions/src/tests/data/yaml/errors/resource_spankind.yaml
index 335f22c3..dd46b48a 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/resource_spankind.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/resource_spankind.yaml
@@ -6,6 +6,7 @@ groups:
brief: 'This document defines semantic conventions for remote procedure calls.'
attributes:
- id: service
+ stability: experimental
type: string
requirement_level: required
brief: 'The service name, must be equal to the $service part in the span name.'
diff --git a/semantic-conventions/src/tests/data/yaml/errors/stability/extends_override_stability.yaml b/semantic-conventions/src/tests/data/yaml/errors/stability/extends_override_stability.yaml
new file mode 100644
index 00000000..38c61f21
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/stability/extends_override_stability.yaml
@@ -0,0 +1,16 @@
+groups:
+ - id: test
+ type: attribute_group
+ brief: 'test'
+ attributes:
+ - id: test_attr
+ type: boolean
+ brief: ""
+ stability: experimental
+ - id: test_child_1
+ type: attribute_group
+ brief: 'test child'
+ extends: test
+ attributes:
+ - ref: test_attr
+ stability: stable
diff --git a/semantic-conventions/src/tests/data/yaml/errors/stability/missing_stability_value.yaml b/semantic-conventions/src/tests/data/yaml/errors/stability/missing_stability_value.yaml
new file mode 100644
index 00000000..267e337d
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/stability/missing_stability_value.yaml
@@ -0,0 +1,8 @@
+groups:
+ - id: test
+ type: attribute_group
+ brief: 'test'
+ attributes:
+ - id: test_attr
+ type: boolean
+ brief: ""
diff --git a/semantic-conventions/src/tests/data/yaml/errors/stability/multiple_stability_values.yaml b/semantic-conventions/src/tests/data/yaml/errors/stability/multiple_stability_values.yaml
new file mode 100644
index 00000000..3cd56d87
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/stability/multiple_stability_values.yaml
@@ -0,0 +1,10 @@
+groups:
+ - id: test
+ type: attribute_group
+ brief: 'test'
+ attributes:
+ - id: test_attr
+ type: boolean
+ stability: stable
+ stability: experimental
+ brief: ""
diff --git a/semantic-conventions/src/tests/data/yaml/errors/stability/ref_override_stability.yaml b/semantic-conventions/src/tests/data/yaml/errors/stability/ref_override_stability.yaml
new file mode 100644
index 00000000..d2fe1603
--- /dev/null
+++ b/semantic-conventions/src/tests/data/yaml/errors/stability/ref_override_stability.yaml
@@ -0,0 +1,15 @@
+groups:
+ - id: test
+ type: attribute_group
+ brief: 'test'
+ attributes:
+ - id: test_attr
+ type: boolean
+ brief: ""
+ stability: experimental
+ - id: test_child_1
+ type: attribute_group
+ brief: 'test child'
+ attributes:
+ - ref: test_attr
+ stability: stable
diff --git a/semantic-conventions/src/tests/data/yaml/errors/validate_anyof.yaml b/semantic-conventions/src/tests/data/yaml/errors/validate_anyof.yaml
index 7996a33a..0ba2fb52 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/validate_anyof.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/validate_anyof.yaml
@@ -9,6 +9,7 @@ groups:
type: string
brief: The version of the Node.js runtime.
examples: [ '10.19.0' ]
+ stability: experimental
constraints:
- any_of:
- 'messaging.node_version'
diff --git a/semantic-conventions/src/tests/data/yaml/errors/wrong_conditionally_required_no_condition.yaml b/semantic-conventions/src/tests/data/yaml/errors/wrong_conditionally_required_no_condition.yaml
index 5dd667c3..4791ea2a 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/wrong_conditionally_required_no_condition.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/wrong_conditionally_required_no_condition.yaml
@@ -10,3 +10,4 @@ groups:
brief: 'test'
requirement_level: conditionally_required
examples: [true, false]
+ stability: experimental
diff --git a/semantic-conventions/src/tests/data/yaml/errors/wrong_double_type.yaml b/semantic-conventions/src/tests/data/yaml/errors/wrong_double_type.yaml
index 2cd74fbf..f298330d 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/wrong_double_type.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/wrong_double_type.yaml
@@ -6,6 +6,7 @@ groups:
note: 'test'
attributes:
- id: one
+ stability: experimental
type: double
brief: it contains a float number.
examples: [12, 1f, 1.0]
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/wrong_multiple_requirement_level_values.yaml b/semantic-conventions/src/tests/data/yaml/errors/wrong_multiple_requirement_level_values.yaml
index 185e2f48..1596b947 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/wrong_multiple_requirement_level_values.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/wrong_multiple_requirement_level_values.yaml
@@ -6,9 +6,10 @@ groups:
span_kind: client
attributes:
- id: convention_version
+ stability: experimental
type: boolean
brief: 'test'
- requirement_level:
+ requirement_level:
recommended: recommended
conditionally_required: condition
examples: [true, false]
diff --git a/semantic-conventions/src/tests/data/yaml/errors/wrong_multiple_requirement_levels.yaml b/semantic-conventions/src/tests/data/yaml/errors/wrong_multiple_requirement_levels.yaml
index b47863e6..ebbb779e 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/wrong_multiple_requirement_levels.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/wrong_multiple_requirement_levels.yaml
@@ -11,3 +11,4 @@ groups:
requirement_level: required
requirement_level: opt_in
examples: [true, false]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/wrong_requirement.yaml b/semantic-conventions/src/tests/data/yaml/errors/wrong_requirement.yaml
index 78c4eb62..cfd873d4 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/wrong_requirement.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/wrong_requirement.yaml
@@ -10,3 +10,4 @@ groups:
requirement_level: maybe
brief: 'test'
examples: [true, false]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/errors/wrong_sampling.yaml b/semantic-conventions/src/tests/data/yaml/errors/wrong_sampling.yaml
index 88764fcf..39c037da 100644
--- a/semantic-conventions/src/tests/data/yaml/errors/wrong_sampling.yaml
+++ b/semantic-conventions/src/tests/data/yaml/errors/wrong_sampling.yaml
@@ -10,3 +10,4 @@ groups:
brief: 'test'
sampling_relevant: maybe
examples: [true, false]
+ stability: experimental
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/data/yaml/event.yaml b/semantic-conventions/src/tests/data/yaml/event.yaml
index d0c69d06..38be388f 100644
--- a/semantic-conventions/src/tests/data/yaml/event.yaml
+++ b/semantic-conventions/src/tests/data/yaml/event.yaml
@@ -7,15 +7,18 @@ groups:
report a single exception associated with a span.
attributes:
- id: type
+ stability: experimental
type: string
brief: >
The type of the exception.
examples: ["java.net.ConnectException","OSError"]
- id: message
+ stability: experimental
type: string
brief: The exception message.
examples: ["Division by zero","Can't convert 'int' object to str implicitly"]
- id: stacktrace
+ stability: experimental
type: string
brief: >
A stacktrace.
@@ -24,6 +27,7 @@ groups:
at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\n
at com.example.GenerateTrace.main(GenerateTrace.java:5)'
- id: escaped
+ stability: experimental
type: boolean
brief: >
SHOULD be set to true if the exception event is recorded at a point where
@@ -33,4 +37,27 @@ groups:
constraints:
- any_of:
- "exception.type"
- - "exception.message"
\ No newline at end of file
+ - "exception.message"
+ - id: experimental_event
+ type: event
+ prefix: experimental_event
+ brief: ""
+ stability: experimental
+ attributes:
+ - id: foo
+ stability: experimental
+ type: string
+ brief: ""
+ examples: "foo"
+ - id: stable_event
+ type: event
+ prefix: stable_event
+ brief: ""
+ stability: stable
+ - id: deprecated_event
+ type: event
+ prefix: deprecated_event
+ brief: ""
+ stability: stable
+ deprecated: "Removed."
+
diff --git a/semantic-conventions/src/tests/data/yaml/extends/http.yaml b/semantic-conventions/src/tests/data/yaml/extends/http.yaml
index ee4f7e50..9599946a 100644
--- a/semantic-conventions/src/tests/data/yaml/extends/http.yaml
+++ b/semantic-conventions/src/tests/data/yaml/extends/http.yaml
@@ -8,6 +8,7 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
diff --git a/semantic-conventions/src/tests/data/yaml/faas.yaml b/semantic-conventions/src/tests/data/yaml/faas.yaml
index b56be7f4..2376f728 100644
--- a/semantic-conventions/src/tests/data/yaml/faas.yaml
+++ b/semantic-conventions/src/tests/data/yaml/faas.yaml
@@ -8,6 +8,7 @@ groups:
serverless) with spans.
attributes:
- id: trigger
+ stability: experimental
requirement_level: required
brief: 'Type of the trigger on which the function is executed.'
type:
@@ -28,6 +29,7 @@ groups:
- id: other
value: 'other'
- id: execution
+ stability: experimental
type: string
brief: "The execution id of the current function execution."
examples: 'af9d5aa4-a685-4c5f-a22b-444f80b3cc28'
@@ -40,6 +42,7 @@ groups:
source operation such as a database or filesystem read/write.
attributes:
- id: collection
+ stability: experimental
type: string
requirement_level: required
brief: 'The name of the source on which the triggering operation was performed.'
@@ -48,6 +51,7 @@ groups:
and in Cosmos DB to the database name.
examples: ['myBucketName', 'myDbName']
- id: operation
+ stability: experimental
requirement_level: required
type:
allow_custom_values: true
@@ -60,6 +64,7 @@ groups:
value: 'delete'
brief: 'Describes the type of the operation that was performed on the data.'
- id: time
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -68,6 +73,7 @@ groups:
format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).
examples: "2020-01-23T13:47:06Z"
- id: name
+ stability: experimental
type: string
brief: 'The document name/table subjected to the operation.'
note: >
@@ -96,6 +102,7 @@ groups:
Semantic Convention for FaaS scheduled to be executed regularly.
attributes:
- id: time
+ stability: experimental
type: string
requirement_level: required
brief: >
@@ -104,6 +111,7 @@ groups:
format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).
examples: "2020-01-23T13:47:06Z"
- id: cron
+ stability: experimental
type: string
brief: >
A string containing the schedule period as
diff --git a/semantic-conventions/src/tests/data/yaml/general.yaml b/semantic-conventions/src/tests/data/yaml/general.yaml
index 5e91e7e6..75526142 100644
--- a/semantic-conventions/src/tests/data/yaml/general.yaml
+++ b/semantic-conventions/src/tests/data/yaml/general.yaml
@@ -6,6 +6,7 @@ groups:
These attributes may be used for any network related operation.
attributes:
- id: transport
+ stability: experimental
type:
allow_custom_values: false
members:
@@ -36,28 +37,34 @@ groups:
Transport protocol used. See note below.
examples: 'ip.tcp'
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote address of the peer (dotted decimal for IPv4 or
[RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6)
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
- id: host.ip
+ stability: experimental
type: string
brief: 'Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.'
examples: '192.168.0.1'
- id: host.port
+ stability: experimental
type: int
brief: 'Like `net.peer.port` but for the host port.'
examples: 35555
- id: host.name
+ stability: experimental
type: string
brief: 'Local hostname or similar, see note below.'
examples: 'localhost'
@@ -68,16 +75,19 @@ groups:
These attributes may be used for any operation with an authenticated and/or authorized enduser.
attributes:
- id: id
+ stability: experimental
type: string
brief: >
Username or client_id extracted from the access token or Authorization header
in the inbound request from outside the system.
examples: 'username'
- id: role
+ stability: experimental
type: string
brief: 'Actual/assumed role the client is making the request under extracted from token or application security context.'
examples: 'admin'
- id: scope
+ stability: experimental
type: string
brief: >
Scopes or granted authorities the client currently possesses extracted from token
diff --git a/semantic-conventions/src/tests/data/yaml/http.yaml b/semantic-conventions/src/tests/data/yaml/http.yaml
index 9eaf4e25..7b9c5746 100644
--- a/semantic-conventions/src/tests/data/yaml/http.yaml
+++ b/semantic-conventions/src/tests/data/yaml/http.yaml
@@ -8,42 +8,50 @@ groups:
and various HTTP versions like 1.1, 2 and SPDY.
attributes:
- id: method
+ stability: experimental
type: string
requirement_level: required
sampling_relevant: false
brief: 'HTTP request method.'
examples: ["GET", "POST", "HEAD"]
- id: url
+ stability: experimental
type: string
brief: >
Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`.
Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
examples: ['https://www.foo.bar/search?q=OpenTelemetry#SemConv']
- id: target
+ stability: experimental
type: string
brief: 'The full request target as passed in a HTTP request line or equivalent.'
examples: ['/path/12314/?q=ddds#123']
- id: host
+ stability: experimental
type: string
brief: >
The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4).
When the header is empty or not present, this attribute should be the same.
examples: ['www.example.org']
- id: scheme
+ stability: experimental
type: string
brief: 'The URI scheme identifying the used protocol.'
examples: ["http", "https"]
- id: status_code
+ stability: experimental
type: int
requirement_level:
conditionally_required: "if and only if one was received/sent"
brief: '[HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).'
examples: [200]
- id: status_text
+ stability: experimental
type: string
brief: '[HTTP reason phrase](https://tools.ietf.org/html/rfc7230#section-3.1.2).'
examples: ['OK']
- id: flavor
+ stability: experimental
type:
# Default value: `true`. If false, it helps the code gen tool to
# encode checks that only accept the listed values.
@@ -70,6 +78,7 @@ groups:
is `QUIC`, in which case `IP.UDP` is assumed.
examples: ['1.0']
- id: user_agent
+ stability: experimental
type: string
brief: 'Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.'
examples: ['CERN-LineMode/2.15 libwww/2.17b3']
@@ -93,6 +102,7 @@ groups:
brief: 'Semantic Convention for HTTP Server'
attributes:
- id: server_name
+ stability: experimental
type: string
requirement_level:
conditionally_required: >
diff --git a/semantic-conventions/src/tests/data/yaml/imported-inherited.yaml b/semantic-conventions/src/tests/data/yaml/imported-inherited.yaml
index b0fa7b43..92e4cc09 100644
--- a/semantic-conventions/src/tests/data/yaml/imported-inherited.yaml
+++ b/semantic-conventions/src/tests/data/yaml/imported-inherited.yaml
@@ -6,6 +6,7 @@ groups:
brief: 'Base'
attributes:
- id: service
+ stability: experimental
type: string
requirement_level: required
brief: 'The service name, must be equal to the $service part in the span name.'
@@ -22,16 +23,19 @@ groups:
brief: 'imported'
attributes:
- id: peer.ip
+ stability: experimental
type: string
brief: >
Remote
examples: '127.0.0.1'
- id: peer.port
+ stability: experimental
type: int
brief: 'Remote port number.'
note: 'not override'
examples: [80, 8080, 443]
- id: peer.name
+ stability: experimental
type: string
brief: 'Remote hostname or similar, see note below.'
examples: 'example.com'
@@ -47,6 +51,7 @@ groups:
requirement_level: required
brief: 'override'
- id: name
+ stability: experimental
type: string
requirement_level: required
brief: 'Name'
@@ -60,6 +65,7 @@ groups:
brief: 'Imported'
attributes:
- id: method
+ stability: experimental
type: string
brief: 'HTTP Method'
examples: 'example.com'
@@ -72,6 +78,7 @@ groups:
brief: 'Imported extends'
attributes:
- id: hostname
+ stability: experimental
type: string
brief: 'hostname'
examples: 'example.com'
@@ -84,6 +91,7 @@ groups:
brief: 'Extends extends.'
attributes:
- id: zz.attr
+ stability: experimental
type: string
requirement_level: required
brief: 'zz attr'
diff --git a/semantic-conventions/src/tests/data/yaml/links.yaml b/semantic-conventions/src/tests/data/yaml/links.yaml
index 2fc449e9..20ab67a2 100644
--- a/semantic-conventions/src/tests/data/yaml/links.yaml
+++ b/semantic-conventions/src/tests/data/yaml/links.yaml
@@ -6,17 +6,22 @@ groups:
note: test
attributes:
- id: none
+ stability: experimental
type: boolean
brief: 'simple text'
- id: single
+ stability: experimental
type: boolean
brief: 'text [eg](https://opentelemetry.io/)'
- id: double
+ stability: experimental
type: boolean
brief: 'text1 [eg](https://opentelemetry.io/) text2 [eg](https://opentelemetry.io/) end'
- id: start
+ stability: experimental
type: boolean
brief: '[eg](https://opentelemetry.io/) text'
- id: multiple_end
+ stability: experimental
type: boolean
brief: 'text1 [eg](https://opentelemetry.io/) text2 [eg](https://opentelemetry.io/)'
diff --git a/semantic-conventions/src/tests/data/yaml/metrics.yaml b/semantic-conventions/src/tests/data/yaml/metrics.yaml
index 5d13f992..9ff2e70f 100644
--- a/semantic-conventions/src/tests/data/yaml/metrics.yaml
+++ b/semantic-conventions/src/tests/data/yaml/metrics.yaml
@@ -2,11 +2,13 @@ groups:
- id: metric.foo
prefix: bar
type: metric_group
+ stability: experimental
brief: "This document defines foo."
note: >
Details about foo.
- attributes:
+ attributes:
- id: egg.type
+ stability: experimental
type: string
brief: 'Type of egg.'
examples: ["chicken", "emu", "dragon"]
@@ -16,6 +18,7 @@ groups:
- id: metric.foo.size
prefix: foo
type: metric
+ stability: stable
metric_name: foo.size
brief: "Measures the size of foo."
instrument: histogram
@@ -32,13 +35,15 @@ groups:
- id: metric.foo.active_eggs
prefix: foo
type: metric
+ stability: experimental
+ deprecated: "Removed."
metric_name: foo.active_eggs
brief: "Measures how many eggs are currently active."
instrument: updowncounter
unit: "{cartons}"
- attributes:
+ attributes:
- ref: http.method
requirement_level: opt_in
- ref: bar.egg.type
- requirement_level:
+ requirement_level:
conditionally_required: "if available to instrumentation."
diff --git a/semantic-conventions/src/tests/data/yaml/numeric_attributes.yml b/semantic-conventions/src/tests/data/yaml/numeric_attributes.yml
index 5752370d..c54e2041 100644
--- a/semantic-conventions/src/tests/data/yaml/numeric_attributes.yml
+++ b/semantic-conventions/src/tests/data/yaml/numeric_attributes.yml
@@ -6,6 +6,7 @@ groups:
note: 'test'
attributes:
- id: one
+ stability: experimental
tag: tag-one
type: int
brief: >
@@ -13,6 +14,7 @@ groups:
the first attribute
examples: 10
- id: two
+ stability: experimental
tag: tag-two
type: double
brief: >
diff --git a/semantic-conventions/src/tests/data/yaml/rpc.yaml b/semantic-conventions/src/tests/data/yaml/rpc.yaml
index 7236bf2c..cc457595 100644
--- a/semantic-conventions/src/tests/data/yaml/rpc.yaml
+++ b/semantic-conventions/src/tests/data/yaml/rpc.yaml
@@ -5,6 +5,7 @@ groups:
brief: 'This document defines semantic conventions for remote procedure calls.'
attributes:
- id: service
+ stability: experimental
type: string
requirement_level: required
brief: 'The service name, must be equal to the $service part in the span name.'
diff --git a/semantic-conventions/src/tests/data/yaml/scope.yaml b/semantic-conventions/src/tests/data/yaml/scope.yaml
index ac691c9f..a9bc8c36 100644
--- a/semantic-conventions/src/tests/data/yaml/scope.yaml
+++ b/semantic-conventions/src/tests/data/yaml/scope.yaml
@@ -6,6 +6,7 @@ groups:
Instrumentation Scope attributes
attributes:
- id: short_name
+ stability: experimental
type: string
requirement_level: recommended
brief: >
diff --git a/semantic-conventions/src/tests/data/yaml/semantic_attributes.yml b/semantic-conventions/src/tests/data/yaml/semantic_attributes.yml
index b31f1ea7..55c0aea8 100644
--- a/semantic-conventions/src/tests/data/yaml/semantic_attributes.yml
+++ b/semantic-conventions/src/tests/data/yaml/semantic_attributes.yml
@@ -1,5 +1,6 @@
attributes:
- id: attribute_one
+ stability: experimental
tag: tag-one
type: string
brief: >
@@ -7,6 +8,7 @@ attributes:
the first attribute
examples: 'This is a good example of the first attribute'
- id: attribute_two
+ stability: experimental
tag: tag-two
type: int
brief: >
@@ -14,6 +16,7 @@ attributes:
the second attribute. It's a number.
examples: [1000, 10, 1]
- id: attribute_three
+ stability: experimental
tag: tag-three
type: boolean
brief: >
diff --git a/semantic-conventions/src/tests/data/yaml/semantic_attributes_deprecated.yml b/semantic-conventions/src/tests/data/yaml/semantic_attributes_deprecated.yml
index 962f42cc..c65f2ff1 100644
--- a/semantic-conventions/src/tests/data/yaml/semantic_attributes_deprecated.yml
+++ b/semantic-conventions/src/tests/data/yaml/semantic_attributes_deprecated.yml
@@ -1,5 +1,6 @@
attributes:
- id: deprecated_attribute
+ stability: experimental
tag: tag-one
deprecated: don't use this one anymore
type: boolean
diff --git a/semantic-conventions/src/tests/data/yaml/span_event.yaml b/semantic-conventions/src/tests/data/yaml/span_event.yaml
index 3a1f1940..baa5688f 100644
--- a/semantic-conventions/src/tests/data/yaml/span_event.yaml
+++ b/semantic-conventions/src/tests/data/yaml/span_event.yaml
@@ -8,6 +8,7 @@ groups:
brief: example
attributes:
- id: flag
+ stability: experimental
type: boolean
brief: An attribute.
@@ -17,5 +18,6 @@ groups:
brief: example
attributes:
- id: flag
+ stability: experimental
type: boolean
brief: An attribute.
diff --git a/semantic-conventions/src/tests/data/yaml/stability.yaml b/semantic-conventions/src/tests/data/yaml/stability.yaml
index 48631cc7..726efada 100644
--- a/semantic-conventions/src/tests/data/yaml/stability.yaml
+++ b/semantic-conventions/src/tests/data/yaml/stability.yaml
@@ -1,8 +1,8 @@
groups:
- - id: test
+ - id: test_1
type: span
brief: 'test'
- prefix: http_1
+ prefix: test_1
attributes:
- id: exp_attr
type: boolean
@@ -14,36 +14,28 @@ groups:
requirement_level: required
stability: stable
brief: ""
- - id: def_stability
- type: boolean
- requirement_level: required
- brief: ""
- - id: parent_default
- type: span
- brief: 'test'
- prefix: http_2
- stability: experimental
+ - id: ref_test_1
+ type: attribute_group
+ brief: 'ref_test'
attributes:
- - id: test_attr
- type: boolean
- requirement_level: required
- brief: ""
- - id: dep
- type: boolean
- requirement_level: required
- deprecated: should not fail.
- brief: ""
+ - ref: test_1.exp_attr
+ - ref: test_1.stable_attr
+
+ - id: extends_test_1
+ type: attribute_group
+ brief: 'extends_test'
+ extends: test_1
- id: not_fail
type: span
brief: 'test'
- prefix: http_3
- stability: experimental
+ prefix: test_2
attributes:
- id: test_attr
type: boolean
requirement_level: required
+ stability: experimental
deprecated: should not fail.
brief: ""
- id: stable_deprecated_attr
@@ -56,7 +48,7 @@ groups:
- id: resource_test
type: resource
brief: 'test'
- prefix: http_4
+ prefix: test_3
attributes:
- id: exp_attr
type: boolean
@@ -68,34 +60,15 @@ groups:
requirement_level: required
stability: stable
brief: ""
- - id: def_stability
- type: boolean
- requirement_level: required
- brief: ""
-
- - id: resource_parent_default
- type: resource
- brief: 'test'
- prefix: http_5
- stability: experimental
- attributes:
- - id: test_attr
- type: boolean
- requirement_level: required
- brief: ""
- - id: dep
- type: boolean
- requirement_level: required
- deprecated: should not fail.
- brief: ""
- id: resource_not_fail
type: resource
brief: 'test'
- prefix: http_6
+ prefix: test_4
attributes:
- id: test_attr
type: boolean
requirement_level: required
+ stability: experimental
deprecated: should not fail.
brief: ""
\ No newline at end of file
diff --git a/semantic-conventions/src/tests/semconv/model/test_correct_parse.py b/semantic-conventions/src/tests/semconv/model/test_correct_parse.py
index e1d0f0f4..44604676 100644
--- a/semantic-conventions/src/tests/semconv/model/test_correct_parse.py
+++ b/semantic-conventions/src/tests/semconv/model/test_correct_parse.py
@@ -203,7 +203,7 @@ def test_metrics(self):
semconv.parse(self.load_file("yaml/http.yaml"))
metric_semconvs = cast(
- List[MetricSemanticConvention], list(semconv.models.values())[:2]
+ List[MetricSemanticConvention], list(semconv.models.values())
)
expected = {
@@ -211,6 +211,7 @@ def test_metrics(self):
"prefix": "bar",
"extends": "",
"n_constraints": 0,
+ "stability": StabilityLevel.EXPERIMENTAL,
"attributes": ["bar.egg.type"],
}
self.semantic_convention_check(metric_semconvs[0], expected)
@@ -220,6 +221,7 @@ def test_metrics(self):
"prefix": "foo",
"extends": "",
"n_constraints": 0,
+ "stability": StabilityLevel.STABLE,
"metric_name": "foo.size",
"unit": "{bars}",
"instrument": "histogram",
@@ -233,6 +235,26 @@ def test_metrics(self):
self.assertEqual(metric_semconvs[1].instrument, expected["instrument"])
self.assertEqual(metric_semconvs[1].metric_name, expected["metric_name"])
+ expected = {
+ "id": "metric.foo.active_eggs",
+ "prefix": "foo",
+ "extends": "",
+ "n_constraints": 0,
+ "stability": StabilityLevel.EXPERIMENTAL,
+ "metric_name": "foo.active_eggs",
+ "unit": "{cartons}",
+ "deprecated": "Removed.",
+ "instrument": "updowncounter",
+ "attributes": [
+ "bar.egg.type",
+ "http.method",
+ ],
+ }
+ self.semantic_convention_check(metric_semconvs[2], expected)
+ self.assertEqual(metric_semconvs[2].unit, expected["unit"])
+ self.assertEqual(metric_semconvs[2].instrument, expected["instrument"])
+ self.assertEqual(metric_semconvs[2].metric_name, expected["metric_name"])
+
def test_resource(self):
semconv = SemanticConventionSet(debug=False)
semconv.parse(self.load_file("yaml/cloud.yaml"))
@@ -256,7 +278,7 @@ def test_event(self):
semconv = SemanticConventionSet(debug=False)
semconv.parse(self.load_file("yaml/event.yaml"))
semconv.finish()
- self.assertEqual(len(semconv.models), 1)
+ self.assertEqual(len(semconv.models), 4)
event = list(semconv.models.values())[0]
expected = {
"id": "exception",
@@ -281,22 +303,61 @@ def test_event(self):
constraint.choice_list_attributes[choice_index][attr_index],
)
+ experimental_event = list(semconv.models.values())[1]
+ expected = {
+ "id": "experimental_event",
+ "prefix": "experimental_event",
+ "extends": "",
+ "n_constraints": 0,
+ "stability": StabilityLevel.EXPERIMENTAL,
+ "attributes": [
+ "experimental_event.foo",
+ ],
+ }
+ self.semantic_convention_check(experimental_event, expected)
+
+ stable_event = list(semconv.models.values())[2]
+ expected = {
+ "id": "stable_event",
+ "prefix": "stable_event",
+ "extends": "",
+ "n_constraints": 0,
+ "stability": StabilityLevel.STABLE,
+ "attributes": [],
+ }
+ self.semantic_convention_check(stable_event, expected)
+
+ deprecated_event = list(semconv.models.values())[3]
+ expected = {
+ "id": "deprecated_event",
+ "prefix": "deprecated_event",
+ "extends": "",
+ "n_constraints": 0,
+ "stability": StabilityLevel.STABLE,
+ "deprecated": "Removed.",
+ "attributes": [],
+ }
+ self.semantic_convention_check(deprecated_event, expected)
+
def test_span_with_event(self):
semconv = SemanticConventionSet(debug=False)
semconv.parse(self.load_file("yaml/event.yaml"))
semconv.parse(self.load_file("yaml/span_event.yaml"))
semconv.finish()
- self.assertEqual(len(semconv.models), 3)
+ self.assertEqual(len(semconv.models), 6)
semconvs = list(semconv.models.values())
self.assertTrue(isinstance(semconvs[0], EventSemanticConvention))
- self.assertTrue(isinstance(semconvs[1], SpanSemanticConvention))
+ self.assertTrue(isinstance(semconvs[1], EventSemanticConvention))
self.assertTrue(isinstance(semconvs[2], EventSemanticConvention))
- event_semconv = semconvs[1]
- self.assertEqual(2, len(event_semconv.events))
- self.assertTrue(isinstance(event_semconv.events[0], EventSemanticConvention))
- self.assertTrue(isinstance(event_semconv.events[1], EventSemanticConvention))
- self.assertEqual("exception", event_semconv.events[0].semconv_id)
- self.assertEqual("random.event", event_semconv.events[1].semconv_id)
+ self.assertTrue(isinstance(semconvs[3], EventSemanticConvention))
+ self.assertTrue(isinstance(semconvs[4], SpanSemanticConvention))
+ self.assertTrue(isinstance(semconvs[5], EventSemanticConvention))
+ span_semconv = semconvs[4]
+ self.assertEqual(2, len(span_semconv.events))
+ self.assertTrue(isinstance(span_semconv.events[0], EventSemanticConvention))
+ self.assertTrue(isinstance(span_semconv.events[1], EventSemanticConvention))
+ self.assertEqual("exception", span_semconv.events[0].semconv_id)
+ self.assertEqual("random.event", span_semconv.events[1].semconv_id)
def test_rpc(self):
semconv = SemanticConventionSet(debug=False)
@@ -457,14 +518,27 @@ def test_deprecation(self):
semconv = SemanticConventionSet(debug=False)
semconv.parse(self.load_file("yaml/deprecated/http.yaml"))
semconv.finish()
- self.assertEqual(len(semconv.models), 1)
+ self.assertEqual(len(semconv.models), 3)
- method_attr = list(semconv.models.values())[0].attrs_by_name["http.method"]
- self.assertIsNotNone(method_attr.deprecated)
+ method_attr_original = list(semconv.models.values())[0].attrs_by_name[
+ "http.method"
+ ]
+ self.assertIsNotNone(method_attr_original.deprecated)
self.assertEqual(
- method_attr.deprecated,
+ method_attr_original.deprecated,
"Use attribute `nonDepecrated`.",
)
+
+ method_attr_client = list(semconv.models.values())[1].attrs_by_name[
+ "http.method"
+ ]
+ self.assertEqual(method_attr_client.deprecated, method_attr_original.deprecated)
+
+ method_attr_server = list(semconv.models.values())[2].attrs_by_name[
+ "http.method"
+ ]
+ self.assertEqual(method_attr_server.deprecated, method_attr_original.deprecated)
+
self.assertIsNone(
list(semconv.models.values())[0].attrs_by_name["http.target"].deprecated
)
@@ -476,37 +550,39 @@ def test_stability(self):
self.assertEqual(len(semconv.models), 6)
model = list(semconv.models.values())[0]
- self.assertEqual(len(model.attributes_and_templates), 3)
- self.assertEqual(model.stability, StabilityLevel.EXPERIMENTAL)
+ self.assertEqual(len(model.attributes_and_templates), 2)
+ self.assertIsNone(model.stability)
attr = model.attributes_and_templates[0]
- self.assertEqual(attr.attr_id, "def_stability")
- self.assertEqual(attr.stability, StabilityLevel.EXPERIMENTAL)
-
- attr = model.attributes_and_templates[1]
self.assertEqual(attr.attr_id, "exp_attr")
self.assertEqual(attr.stability, StabilityLevel.EXPERIMENTAL)
- attr = model.attributes_and_templates[2]
+ attr = model.attributes_and_templates[1]
self.assertEqual(attr.attr_id, "stable_attr")
self.assertEqual(attr.stability, StabilityLevel.STABLE)
model = list(semconv.models.values())[1]
self.assertEqual(len(model.attributes_and_templates), 2)
- self.assertEqual(model.stability, StabilityLevel.EXPERIMENTAL)
+ self.assertIsNone(model.stability)
attr = model.attributes_and_templates[0]
- self.assertEqual(attr.attr_id, "dep")
+ self.assertEqual(attr.attr_id, "exp_attr")
self.assertEqual(attr.stability, StabilityLevel.EXPERIMENTAL)
attr = model.attributes_and_templates[1]
- self.assertEqual(attr.attr_id, "test_attr")
- self.assertEqual(attr.stability, StabilityLevel.EXPERIMENTAL)
+ self.assertEqual(attr.attr_id, "stable_attr")
+ self.assertEqual(attr.stability, StabilityLevel.STABLE)
model = list(semconv.models.values())[2]
- self.assertEqual(len(model.attributes_and_templates), 2)
- self.assertEqual(model.stability, StabilityLevel.EXPERIMENTAL)
+ attr = model.attributes_and_templates[0]
+ self.assertEqual(attr.attr_id, "exp_attr")
+ self.assertEqual(attr.stability, StabilityLevel.EXPERIMENTAL)
+
+ attr = model.attributes_and_templates[1]
+ self.assertEqual(attr.attr_id, "stable_attr")
+ self.assertEqual(attr.stability, StabilityLevel.STABLE)
+ model = list(semconv.models.values())[3]
attr = model.attributes_and_templates[0]
self.assertEqual(attr.attr_id, "stable_deprecated_attr")
self.assertEqual(attr.stability, StabilityLevel.STABLE)
@@ -708,6 +784,8 @@ def test_inherited_imported(self):
def semantic_convention_check(self, s, expected):
self.assertEqual(expected["prefix"], s.prefix)
+ self.assertEqual(expected.get("stability"), s.stability)
+ self.assertEqual(expected.get("deprecated"), s.deprecated)
self.assertEqual(expected["extends"], s.extends)
self.assertEqual(expected["id"], s.semconv_id)
self.assertEqual(len(expected["attributes"]), len(s.attributes))
diff --git a/semantic-conventions/src/tests/semconv/model/test_error_detection.py b/semantic-conventions/src/tests/semconv/model/test_error_detection.py
index af1c9132..a37881e2 100644
--- a/semantic-conventions/src/tests/semconv/model/test_error_detection.py
+++ b/semantic-conventions/src/tests/semconv/model/test_error_detection.py
@@ -141,6 +141,28 @@ def test_invalid_stability(self):
self.assertIn("is not allowed as a stability marker", msg)
self.assertEqual(e.line, 10)
+ def test_multiple_stability_values(self):
+ with self.assertRaises(DuplicateKeyError):
+ self.open_yaml("yaml/errors/stability/multiple_stability_values.yaml")
+
+ def test_missing_stability_value(self):
+ with self.assertRaises(ValidationError) as ex:
+ self.open_yaml("yaml/errors/stability/missing_stability_value.yaml")
+ self.fail()
+ e = ex.exception
+ msg = e.message.lower()
+ self.assertIn("missing keys: ['stability']", msg)
+ self.assertEqual(e.line, 6)
+
+ def test_ref_override_stability(self):
+ with self.assertRaises(ValidationError) as ex:
+ self.open_yaml("yaml/errors/stability/ref_override_stability.yaml")
+ self.fail()
+ e = ex.exception
+ msg = e.message.lower()
+ self.assertIn("ref attribute 'test_attr' must not override stability", msg)
+ self.assertEqual(e.line, 14)
+
def test_invalid_semconv_stability_with_deprecated(self):
with self.assertRaises(ValidationError) as ex:
self.open_yaml("yaml/errors/stability/semconv_stability_deprecated.yaml")
@@ -162,6 +184,34 @@ def test_invalid_deprecated_empty_string(self):
)
self.assertEqual(e.line, 10)
+ def test_multiple_deprecations(self):
+ with self.assertRaises(DuplicateKeyError):
+ self.open_yaml("yaml/errors/deprecated/multiple_deprecations.yaml")
+
+ def test_extends_overrides_deprecation(self):
+ with self.assertRaises(ValidationError) as ex:
+ self.open_yaml("yaml/errors/deprecated/extends_overrides_deprecation.yaml")
+ self.fail()
+ e = ex.exception
+ msg = e.message.lower()
+ self.assertIn(
+ "ref attribute 'test.convention_version' must not override deprecation status",
+ msg,
+ )
+ self.assertEqual(e.line, 19)
+
+ def test_ref_overrides_deprecation(self):
+ with self.assertRaises(ValidationError) as ex:
+ self.open_yaml("yaml/errors/deprecated/ref_overrides_deprecation.yaml")
+ self.fail()
+ e = ex.exception
+ msg = e.message.lower()
+ self.assertIn(
+ "ref attribute 'test.convention_version' must not override deprecation status",
+ msg,
+ )
+ self.assertEqual(e.line, 17)
+
def test_invalid_deprecated_boolean(self):
with self.assertRaises(ValidationError) as ex:
self.open_yaml("yaml/errors/deprecated/deprecation_boolean.yaml")
@@ -295,7 +345,7 @@ def test_example_wrong_double_type(self):
self.assertIn("example with wrong type", msg)
self.assertIn("expected double", msg)
self.assertIn("is was ", msg)
- self.assertEqual(e.line, 11)
+ self.assertEqual(e.line, 12)
def test_examples_bool(self):
with self.assertRaises(ValidationError) as ex:
@@ -378,7 +428,7 @@ def test_attribute_id_clash(self):
e = ex.exception
msg = e.message.lower()
self.assertIn("is already present at line 8", msg)
- self.assertEqual(e.line, 16)
+ self.assertEqual(e.line, 18)
def test_attribute_id_clash_inherited(self):
semconv = SemanticConventionSet(debug=False)
@@ -409,7 +459,7 @@ def test_validate_anyof_attributes(self):
msg = e.message.lower()
self.assertIn("any_of attribute", msg)
self.assertIn("does not exists", msg)
- self.assertEqual(e.line, 15)
+ self.assertEqual(e.line, 16)
def test_missing_event(self):
with self.assertRaises(ValidationError) as ex:
@@ -459,7 +509,7 @@ def test_multiple_requirement_level_values(self):
e = ex.exception
msg = e.message.lower()
self.assertIn("multiple requirement_level values are not allowed!", msg)
- self.assertEqual(e.line, 11)
+ self.assertEqual(e.line, 12)
def open_yaml(self, path):
with open(self.load_file(path), encoding="utf-8") as file:
diff --git a/semantic-conventions/src/tests/semconv/templating/test_markdown.py b/semantic-conventions/src/tests/semconv/templating/test_markdown.py
index ed6adba4..abeac7fd 100644
--- a/semantic-conventions/src/tests/semconv/templating/test_markdown.py
+++ b/semantic-conventions/src/tests/semconv/templating/test_markdown.py
@@ -36,12 +36,23 @@ def testInclude(self):
def testDeprecated(self):
self.check("markdown/deprecated/")
- def testStability(self):
- self.check("markdown/stability/", expected_name="labels_expected.md")
+ def testStableBadges(self):
self.check(
"markdown/stability/",
MarkdownOptions(enable_stable=True, use_badge=True),
- expected_name="badges_expected.md",
+ expected_name="stable_badges_expected.md",
+ )
+
+ def testExperimentalAndStableBadges(self):
+ self.check(
+ "markdown/stability/",
+ MarkdownOptions(
+ enable_stable=True,
+ enable_experimental=True,
+ enable_deprecated=True,
+ use_badge=True,
+ ),
+ expected_name="all_badges_expected.md",
)
def testSingle(self):
diff --git a/semantic-conventions/syntax.md b/semantic-conventions/syntax.md
index a422b309..3b1ba202 100644
--- a/semantic-conventions/syntax.md
+++ b/semantic-conventions/syntax.md
@@ -100,7 +100,6 @@ requirement_level ::= "required"
| "recommended" [condition] # Default if not specified
| "opt_in"
-# EXPERIMENTAL: Using this is NOT ALLOWED in the specification currently.
sampling_relevant ::= boolean
examples ::= {}
@@ -160,7 +159,6 @@ The field `semconv` represents a semantic convention and it is made by:
It defaults to an empty string.
- `extends`, optional string, reference another semantic convention `id`.
It inherits the prefix, constraints, and all attributes defined in the specified semantic convention.
-- `stability`, optional enum, specifies the stability of the semantic convention. Defaults to `experimental`.
- `deprecated`, optional, when present marks the semantic convention as deprecated.
The string provided as `` MUST specify why it's deprecated and/or what to use instead.
- `attributes`, list of attributes that belong to the semantic convention.
@@ -212,8 +210,8 @@ Attribute groups don't have any specific fields and follow the general `semconv`
An attribute is defined by:
-- `id`, string that uniquely identifies the attribute.
-- `type`, either a string literal denoting the type as a primitive or an array type, a template type or an enum definition (See later).
+- `id`, string that uniquely identifies the attribute. Required.
+- `type`, either a string literal denoting the type as a primitive or an array type, a template type or an enum definition (See later). Required.
The accepted string literals are:
* _primitive and array types as string literals:_
* `"string"`: String attributes.
@@ -225,8 +223,8 @@ An attribute is defined by:
* `"double[]"`: Array of double attributes.
* `"boolean[]"`: Array of booleans attributes.
* _template type as string literal:_ `"template[]"` (See [below](#template-type))
-
See the [specification of Attributes](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/README.md#attribute) for the definition of the value types.
+- `stability`, enum - either `stable` or `experimental`, specifies the stability of the attribute. Required.
- `ref`, optional string, reference an existing attribute, see [below](#ref).
- `tag`, optional string, associates a tag ("sub-group") to the attribute.
It carries no particular semantic meaning but can be used e.g. for filtering
@@ -235,10 +233,10 @@ An attribute is defined by:
Can be "required", "conditionally_required", "recommended" or "opt_in". When omitted, the attribute is "recommended".
When set to "conditionally_required", the string provided as `` MUST specify
the conditions under which the attribute is required.
-- `sampling_relevant`, optional EXPERIMENTAL boolean,
+- `sampling_relevant`, optional boolean,
specifies if the attribute is (especially) relevant for sampling and
thus should be set at span start. It defaults to `false`.
-- `brief`, `note`, `stability`, `deprecated`, same meaning as for the whole
+- `brief`, `note`, `deprecated`, same meaning as for the whole
[semantic convention](#semantic-convention), but per attribute.
- `examples`, sequence of example values for the attribute or single example value.
They are required only for string and string array attributes.
@@ -326,7 +324,7 @@ examples:
#### Ref
-`ref` MUST have an id of an existing attribute. When it is set, `id` and `type` MUST NOT be present.
+`ref` MUST have an id of an existing attribute. When it is set, `id`, `type`, `stability`, and `deprecation` MUST NOT be present.
`ref` is useful for specifying that an existing attribute of another semantic convention is part of
the current semantic convention and inherit its `brief`, `note`, and `example` values. However, if these
fields are present in the current attribute definition, they override the inherited values.
@@ -354,6 +352,7 @@ groups:
attributes:
- id: http.request.header
type: template[string[]]
+ stability: stable
brief: >
HTTP request headers, the key being the normalized HTTP header name (lowercase, with `-` characters replaced by `_`), the value being the header values.
examples: ['http.request.header.content_type=["application/json"]', 'http.request.header.x_forwarded_for=["1.2.3.4", "1.2.3.5"]']