diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/ClientAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/ClientAttributes.cs
new file mode 100644
index 00000000000..9fefceab333
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/ClientAttributes.cs
@@ -0,0 +1,44 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions
+{
+ ///
+ /// Describes semantic conventions for attributes in the client namespace.
+ ///
+ public static class ClientAttributes
+ {
+ ///
+ /// Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+ ///
+ ///
+ /// When observed from the server side, and when communicating through an intermediary, client.address SHOULD represent the client address behind any intermediaries, for example proxies, if it's available.
+ ///
+ public const string ClientAddress = "client.address";
+
+ ///
+ /// Client port number.
+ ///
+ ///
+ /// When observed from the server side, and when communicating through an intermediary, client.port SHOULD represent the client port behind any intermediaries, for example proxies, if it's available.
+ ///
+ public const string ClientPort = "client.port";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/ErrorAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/ErrorAttributes.cs
new file mode 100644
index 00000000000..2937878fde4
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/ErrorAttributes.cs
@@ -0,0 +1,55 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions
+{
+ ///
+ /// Describes semantic conventions for attributes in the error namespace.
+ ///
+ public static class ErrorAttributes
+ {
+ ///
+ /// Describes a class of error the operation ended with.
+ ///
+ ///
+ /// The error.type SHOULD be predictable and SHOULD have low cardinality.
+ /// Instrumentations SHOULD document the list of errors they report.The cardinality of error.type within one instrumentation library SHOULD be low.
+ /// Telemetry consumers that aggregate data from multiple instrumentation libraries and applications
+ /// should be prepared for error.type to have high cardinality at query time when no
+ /// additional filters are applied.If the operation has completed successfully, instrumentations SHOULD NOT set error.type.If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),
+ /// it's RECOMMENDED to:
+ /// - Use a domain-specific attribute
+ /// - Set error.type to capture all errors, regardless of whether they are defined within the domain-specific set or not
+ ///
.
+ ///
+ public const string ErrorType = "error.type";
+
+ ///
+ /// Describes a class of error the operation ended with.
+ ///
+ public static class ErrorTypeValues
+ {
+ ///
+ /// A fallback error value to be used when the instrumentation doesn't define a custom value.
+ ///
+ public const string Other = "_OTHER";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/HttpAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/HttpAttributes.cs
new file mode 100644
index 00000000000..5dcd0c3d7b4
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/HttpAttributes.cs
@@ -0,0 +1,137 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions
+{
+ ///
+ /// Describes semantic conventions for attributes in the http namespace.
+ ///
+ public static class HttpAttributes
+ {
+ ///
+ /// HTTP request headers, being the normalized HTTP Header name (lowercase), the value being the header values.
+ ///
+ ///
+ /// Instrumentations SHOULD require an explicit configuration of which headers are to be captured. Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.
+ /// The User-Agent header is already captured in the user_agent.original attribute. Users MAY explicitly configure instrumentations to capture them even though it is not recommended.
+ /// The attribute value MUST consist of either multiple header values as an array of strings or a single-item array containing a possibly comma-concatenated string, depending on the way the HTTP library provides access to headers.
+ ///
+ public const string HttpRequestHeaderTemplate = "http.request.header";
+
+ ///
+ /// HTTP request method.
+ ///
+ ///
+ /// HTTP request method value SHOULD be "known" to the instrumentation.
+ /// By default, this convention defines "known" methods as the ones listed in RFC9110
+ /// and the PATCH method defined in RFC5789.If the HTTP request method is not known to instrumentation, it MUST set the http.request.method attribute to _OTHER.If the HTTP instrumentation could end up converting valid HTTP request methods to _OTHER, then it MUST provide a way to override
+ /// the list of known HTTP methods. If this override is done via environment variable, then the environment variable MUST be named
+ /// OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods
+ /// (this list MUST be a full override of the default known method, it is not a list of known methods in addition to the defaults).HTTP method names are case-sensitive and http.request.method attribute value MUST match a known HTTP method name exactly.
+ /// Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, SHOULD populate a canonical equivalent.
+ /// Tracing instrumentations that do so, MUST also set http.request.method_original to the original value.
+ ///
+ public const string HttpRequestMethod = "http.request.method";
+
+ ///
+ /// Original HTTP method sent by the client in the request line.
+ ///
+ public const string HttpRequestMethodOriginal = "http.request.method_original";
+
+ ///
+ /// The ordinal number of request resending attempt (for any reason, including redirects).
+ ///
+ ///
+ /// The resend count SHOULD be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).
+ ///
+ public const string HttpRequestResendCount = "http.request.resend_count";
+
+ ///
+ /// HTTP response headers, being the normalized HTTP Header name (lowercase), the value being the header values.
+ ///
+ ///
+ /// Instrumentations SHOULD require an explicit configuration of which headers are to be captured. Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.
+ /// Users MAY explicitly configure instrumentations to capture them even though it is not recommended.
+ /// The attribute value MUST consist of either multiple header values as an array of strings or a single-item array containing a possibly comma-concatenated string, depending on the way the HTTP library provides access to headers.
+ ///
+ public const string HttpResponseHeaderTemplate = "http.response.header";
+
+ ///
+ /// HTTP response status code.
+ ///
+ public const string HttpResponseStatusCode = "http.response.status_code";
+
+ ///
+ /// The matched route, that is, the path template in the format used by the respective server framework.
+ ///
+ ///
+ /// MUST NOT be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.
+ /// SHOULD include the application root if there is one.
+ ///
+ public const string HttpRoute = "http.route";
+
+ ///
+ /// HTTP request method.
+ ///
+ public static class HttpRequestMethodValues
+ {
+ ///
+ /// CONNECT method.
+ ///
+ public const string Connect = "CONNECT";
+ ///
+ /// DELETE method.
+ ///
+ public const string Delete = "DELETE";
+ ///
+ /// GET method.
+ ///
+ public const string Get = "GET";
+ ///
+ /// HEAD method.
+ ///
+ public const string Head = "HEAD";
+ ///
+ /// OPTIONS method.
+ ///
+ public const string Options = "OPTIONS";
+ ///
+ /// PATCH method.
+ ///
+ public const string Patch = "PATCH";
+ ///
+ /// POST method.
+ ///
+ public const string Post = "POST";
+ ///
+ /// PUT method.
+ ///
+ public const string Put = "PUT";
+ ///
+ /// TRACE method.
+ ///
+ public const string Trace = "TRACE";
+ ///
+ /// Any HTTP method that the instrumentation has no prior knowledge of.
+ ///
+ public const string Other = "_OTHER";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/NetworkAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/NetworkAttributes.cs
new file mode 100644
index 00000000000..a7341bfc1df
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/NetworkAttributes.cs
@@ -0,0 +1,120 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions
+{
+ ///
+ /// Describes semantic conventions for attributes in the network namespace.
+ ///
+ public static class NetworkAttributes
+ {
+ ///
+ /// Local address of the network connection - IP address or Unix domain socket name.
+ ///
+ public const string NetworkLocalAddress = "network.local.address";
+
+ ///
+ /// Local port number of the network connection.
+ ///
+ public const string NetworkLocalPort = "network.local.port";
+
+ ///
+ /// Peer address of the network connection - IP address or Unix domain socket name.
+ ///
+ public const string NetworkPeerAddress = "network.peer.address";
+
+ ///
+ /// Peer port number of the network connection.
+ ///
+ public const string NetworkPeerPort = "network.peer.port";
+
+ ///
+ /// OSI application layer or non-OSI equivalent.
+ ///
+ ///
+ /// The value SHOULD be normalized to lowercase.
+ ///
+ public const string NetworkProtocolName = "network.protocol.name";
+
+ ///
+ /// Version of the protocol specified in network.protocol.name.
+ ///
+ ///
+ /// network.protocol.version refers to the version of the protocol used and might be different from the protocol client's version. If the HTTP client has a version of 0.27.2, but sends HTTP version 1.1, this attribute should be set to 1.1.
+ ///
+ public const string NetworkProtocolVersion = "network.protocol.version";
+
+ ///
+ /// OSI transport layer or inter-process communication method.
+ ///
+ ///
+ /// The value SHOULD be normalized to lowercase.Consider always setting the transport when setting a port number, since
+ /// a port number is ambiguous without knowing the transport. For example
+ /// different processes could be listening on TCP port 12345 and UDP port 12345.
+ ///
+ public const string NetworkTransport = "network.transport";
+
+ ///
+ /// OSI network layer or non-OSI equivalent.
+ ///
+ ///
+ /// The value SHOULD be normalized to lowercase.
+ ///
+ public const string NetworkType = "network.type";
+
+ ///
+ /// OSI transport layer or inter-process communication method.
+ ///
+ public static class NetworkTransportValues
+ {
+ ///
+ /// TCP.
+ ///
+ public const string Tcp = "tcp";
+ ///
+ /// UDP.
+ ///
+ public const string Udp = "udp";
+ ///
+ /// Named or anonymous pipe.
+ ///
+ public const string Pipe = "pipe";
+ ///
+ /// Unix domain socket.
+ ///
+ public const string Unix = "unix";
+ }
+
+ ///
+ /// OSI network layer or non-OSI equivalent.
+ ///
+ public static class NetworkTypeValues
+ {
+ ///
+ /// IPv4.
+ ///
+ public const string Ipv4 = "ipv4";
+ ///
+ /// IPv6.
+ ///
+ public const string Ipv6 = "ipv6";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/ServerAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/ServerAttributes.cs
new file mode 100644
index 00000000000..28ee32e72ef
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/ServerAttributes.cs
@@ -0,0 +1,44 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions
+{
+ ///
+ /// Describes semantic conventions for attributes in the server namespace.
+ ///
+ public static class ServerAttributes
+ {
+ ///
+ /// Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+ ///
+ ///
+ /// When observed from the client side, and when communicating through an intermediary, server.address SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
+ ///
+ public const string ServerAddress = "server.address";
+
+ ///
+ /// Server port number.
+ ///
+ ///
+ /// When observed from the client side, and when communicating through an intermediary, server.port SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
+ ///
+ public const string ServerPort = "server.port";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/UrlAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/UrlAttributes.cs
new file mode 100644
index 00000000000..7be0bb0b8d6
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/UrlAttributes.cs
@@ -0,0 +1,61 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions
+{
+ ///
+ /// Describes semantic conventions for attributes in the url namespace.
+ ///
+ public static class UrlAttributes
+ {
+ ///
+ /// The URI fragment component.
+ ///
+ public const string UrlFragment = "url.fragment";
+
+ ///
+ /// Absolute URL describing a network resource according to RFC3986.
+ ///
+ ///
+ /// For network calls, URL usually has scheme://host[:port][path][?query][#fragment] format, where the fragment is not transmitted over HTTP, but if it is known, it SHOULD be included nevertheless.
+ /// url.full MUST NOT contain credentials passed via URL in form of https://username:password@www.example.com/. In such case username and password SHOULD be redacted and attribute's value SHOULD be https://REDACTED:REDACTED@www.example.com/.
+ /// url.full SHOULD capture the absolute URL when it is available (or can be reconstructed) and SHOULD NOT be validated or modified except for sanitizing purposes.
+ ///
+ public const string UrlFull = "url.full";
+
+ ///
+ /// The URI path component.
+ ///
+ public const string UrlPath = "url.path";
+
+ ///
+ /// The URI query component.
+ ///
+ ///
+ /// Sensitive content provided in query string SHOULD be scrubbed when instrumentations can identify it.
+ ///
+ public const string UrlQuery = "url.query";
+
+ ///
+ /// The URI scheme component identifying the used protocol.
+ ///
+ public const string UrlScheme = "url.scheme";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/UserAgentAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/UserAgentAttributes.cs
new file mode 100644
index 00000000000..ea393e98608
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/UserAgentAttributes.cs
@@ -0,0 +1,33 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions
+{
+ ///
+ /// Describes semantic conventions for attributes in the user_agent namespace.
+ ///
+ public static class UserAgentAttributes
+ {
+ ///
+ /// Value of the HTTP User-Agent header sent by the client.
+ ///
+ public const string UserAgentOriginal = "user_agent.original";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/AndroidAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/AndroidAttributes.cs
new file mode 100644
index 00000000000..dff88c93a86
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/AndroidAttributes.cs
@@ -0,0 +1,60 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the android namespace.
+ ///
+ public static class AndroidAttributes
+ {
+ ///
+ /// Uniquely identifies the framework API revision offered by a version (os.version) of the android operating system. More information can be found here.
+ ///
+ public const string AndroidOsApiLevel = "android.os.api_level";
+
+ ///
+ /// This attribute represents the state the application has transitioned into at the occurrence of the event.
+ ///
+ ///
+ /// The Android lifecycle states are defined in Activity lifecycle callbacks, and from which the OS identifiers are derived.
+ ///
+ public const string AndroidState = "android.state";
+
+ ///
+ /// This attribute represents the state the application has transitioned into at the occurrence of the event.
+ ///
+ public static class AndroidStateValues
+ {
+ ///
+ /// Any time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.
+ ///
+ public const string Created = "created";
+ ///
+ /// Any time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state.
+ ///
+ public const string Background = "background";
+ ///
+ /// Any time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states.
+ ///
+ public const string Foreground = "foreground";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/AwsAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/AwsAttributes.cs
new file mode 100644
index 00000000000..3cb18c08804
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/AwsAttributes.cs
@@ -0,0 +1,312 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the aws namespace.
+ ///
+ public static class AwsAttributes
+ {
+ ///
+ /// The JSON-serialized value of each item in the AttributeDefinitions request field.
+ ///
+ public const string AwsDynamodbAttributeDefinitions = "aws.dynamodb.attribute_definitions";
+
+ ///
+ /// The value of the AttributesToGet request parameter.
+ ///
+ public const string AwsDynamodbAttributesToGet = "aws.dynamodb.attributes_to_get";
+
+ ///
+ /// The value of the ConsistentRead request parameter.
+ ///
+ public const string AwsDynamodbConsistentRead = "aws.dynamodb.consistent_read";
+
+ ///
+ /// The JSON-serialized value of each item in the ConsumedCapacity response field.
+ ///
+ public const string AwsDynamodbConsumedCapacity = "aws.dynamodb.consumed_capacity";
+
+ ///
+ /// The value of the Count response parameter.
+ ///
+ public const string AwsDynamodbCount = "aws.dynamodb.count";
+
+ ///
+ /// The value of the ExclusiveStartTableName request parameter.
+ ///
+ public const string AwsDynamodbExclusiveStartTable = "aws.dynamodb.exclusive_start_table";
+
+ ///
+ /// The JSON-serialized value of each item in the the GlobalSecondaryIndexUpdates request field.
+ ///
+ public const string AwsDynamodbGlobalSecondaryIndexUpdates = "aws.dynamodb.global_secondary_index_updates";
+
+ ///
+ /// The JSON-serialized value of each item of the GlobalSecondaryIndexes request field.
+ ///
+ public const string AwsDynamodbGlobalSecondaryIndexes = "aws.dynamodb.global_secondary_indexes";
+
+ ///
+ /// The value of the IndexName request parameter.
+ ///
+ public const string AwsDynamodbIndexName = "aws.dynamodb.index_name";
+
+ ///
+ /// The JSON-serialized value of the ItemCollectionMetrics response field.
+ ///
+ public const string AwsDynamodbItemCollectionMetrics = "aws.dynamodb.item_collection_metrics";
+
+ ///
+ /// The value of the Limit request parameter.
+ ///
+ public const string AwsDynamodbLimit = "aws.dynamodb.limit";
+
+ ///
+ /// The JSON-serialized value of each item of the LocalSecondaryIndexes request field.
+ ///
+ public const string AwsDynamodbLocalSecondaryIndexes = "aws.dynamodb.local_secondary_indexes";
+
+ ///
+ /// The value of the ProjectionExpression request parameter.
+ ///
+ public const string AwsDynamodbProjection = "aws.dynamodb.projection";
+
+ ///
+ /// The value of the ProvisionedThroughput.ReadCapacityUnits request parameter.
+ ///
+ public const string AwsDynamodbProvisionedReadCapacity = "aws.dynamodb.provisioned_read_capacity";
+
+ ///
+ /// The value of the ProvisionedThroughput.WriteCapacityUnits request parameter.
+ ///
+ public const string AwsDynamodbProvisionedWriteCapacity = "aws.dynamodb.provisioned_write_capacity";
+
+ ///
+ /// The value of the ScanIndexForward request parameter.
+ ///
+ public const string AwsDynamodbScanForward = "aws.dynamodb.scan_forward";
+
+ ///
+ /// The value of the ScannedCount response parameter.
+ ///
+ public const string AwsDynamodbScannedCount = "aws.dynamodb.scanned_count";
+
+ ///
+ /// The value of the Segment request parameter.
+ ///
+ public const string AwsDynamodbSegment = "aws.dynamodb.segment";
+
+ ///
+ /// The value of the Select request parameter.
+ ///
+ public const string AwsDynamodbSelect = "aws.dynamodb.select";
+
+ ///
+ /// The the number of items in the TableNames response parameter.
+ ///
+ public const string AwsDynamodbTableCount = "aws.dynamodb.table_count";
+
+ ///
+ /// The keys in the RequestItems object field.
+ ///
+ public const string AwsDynamodbTableNames = "aws.dynamodb.table_names";
+
+ ///
+ /// The value of the TotalSegments request parameter.
+ ///
+ public const string AwsDynamodbTotalSegments = "aws.dynamodb.total_segments";
+
+ ///
+ /// The ARN of an ECS cluster.
+ ///
+ public const string AwsEcsClusterArn = "aws.ecs.cluster.arn";
+
+ ///
+ /// The Amazon Resource Name (ARN) of an ECS container instance.
+ ///
+ public const string AwsEcsContainerArn = "aws.ecs.container.arn";
+
+ ///
+ /// The launch type for an ECS task.
+ ///
+ public const string AwsEcsLaunchtype = "aws.ecs.launchtype";
+
+ ///
+ /// The ARN of an ECS task definition.
+ ///
+ public const string AwsEcsTaskArn = "aws.ecs.task.arn";
+
+ ///
+ /// The task definition family this task definition is a member of.
+ ///
+ public const string AwsEcsTaskFamily = "aws.ecs.task.family";
+
+ ///
+ /// The revision for this task definition.
+ ///
+ public const string AwsEcsTaskRevision = "aws.ecs.task.revision";
+
+ ///
+ /// The ARN of an EKS cluster.
+ ///
+ public const string AwsEksClusterArn = "aws.eks.cluster.arn";
+
+ ///
+ /// The full invoked ARN as provided on the Context passed to the function (Lambda-Runtime-Invoked-Function-Arn header on the /runtime/invocation/next applicable).
+ ///
+ ///
+ /// This may be different from cloud.resource_id if an alias is involved.
+ ///
+ public const string AwsLambdaInvokedArn = "aws.lambda.invoked_arn";
+
+ ///
+ /// The Amazon Resource Name(s) (ARN) of the AWS log group(s).
+ ///
+ ///
+ /// See the log group ARN format documentation.
+ ///
+ public const string AwsLogGroupArns = "aws.log.group.arns";
+
+ ///
+ /// The name(s) of the AWS log group(s) an application is writing to.
+ ///
+ ///
+ /// Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.
+ ///
+ public const string AwsLogGroupNames = "aws.log.group.names";
+
+ ///
+ /// The ARN(s) of the AWS log stream(s).
+ ///
+ ///
+ /// See the log stream ARN format documentation. One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.
+ ///
+ public const string AwsLogStreamArns = "aws.log.stream.arns";
+
+ ///
+ /// The name(s) of the AWS log stream(s) an application is writing to.
+ ///
+ public const string AwsLogStreamNames = "aws.log.stream.names";
+
+ ///
+ /// The AWS request ID as returned in the response headers x-amz-request-id or x-amz-requestid.
+ ///
+ public const string AwsRequestId = "aws.request_id";
+
+ ///
+ /// The S3 bucket name the request refers to. Corresponds to the --bucket parameter of the S3 API operations.
+ ///
+ ///
+ /// The bucket attribute is applicable to all S3 operations that reference a bucket, i.e. that require the bucket name as a mandatory parameter.
+ /// This applies to almost all S3 operations except list-buckets.
+ ///
+ public const string AwsS3Bucket = "aws.s3.bucket";
+
+ ///
+ /// The source object (in the form bucket/key) for the copy operation.
+ ///
+ ///
+ /// The copy_source attribute applies to S3 copy operations and corresponds to the --copy-source parameter
+ /// of the copy-object operation within the S3 API.
+ /// This applies in particular to the following operations:.
+ ///
+ public const string AwsS3CopySource = "aws.s3.copy_source";
+
+ ///
+ /// The delete request container that specifies the objects to be deleted.
+ ///
+ ///
+ /// The delete attribute is only applicable to the delete-object operation.
+ /// The delete attribute corresponds to the --delete parameter of the
+ /// delete-objects operation within the S3 API.
+ ///
+ public const string AwsS3Delete = "aws.s3.delete";
+
+ ///
+ /// The S3 object key the request refers to. Corresponds to the --key parameter of the S3 API operations.
+ ///
+ ///
+ /// The key attribute is applicable to all object-related S3 operations, i.e. that require the object key as a mandatory parameter.
+ /// This applies in particular to the following operations:.
+ ///
+ public const string AwsS3Key = "aws.s3.key";
+
+ ///
+ /// The part number of the part being uploaded in a multipart-upload operation. This is a positive integer between 1 and 10,000.
+ ///
+ ///
+ /// The part_number attribute is only applicable to the upload-part
+ /// and upload-part-copy operations.
+ /// The part_number attribute corresponds to the --part-number parameter of the
+ /// upload-part operation within the S3 API.
+ ///
+ public const string AwsS3PartNumber = "aws.s3.part_number";
+
+ ///
+ /// Upload ID that identifies the multipart upload.
+ ///
+ ///
+ /// The upload_id attribute applies to S3 multipart-upload operations and corresponds to the --upload-id parameter
+ /// of the S3 API multipart operations.
+ /// This applies in particular to the following operations:.
+ ///
+ public const string AwsS3UploadId = "aws.s3.upload_id";
+
+ ///
+ /// The launch type for an ECS task.
+ ///
+ public static class AwsEcsLaunchtypeValues
+ {
+ ///
+ /// ec2.
+ ///
+ public const string Ec2 = "ec2";
+ ///
+ /// fargate.
+ ///
+ public const string Fargate = "fargate";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/BrowserAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/BrowserAttributes.cs
new file mode 100644
index 00000000000..928a01069c8
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/BrowserAttributes.cs
@@ -0,0 +1,61 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the browser namespace.
+ ///
+ public static class BrowserAttributes
+ {
+ ///
+ /// Array of brand name and version separated by a space.
+ ///
+ ///
+ /// This value is intended to be taken from the UA client hints API (navigator.userAgentData.brands).
+ ///
+ public const string BrowserBrands = "browser.brands";
+
+ ///
+ /// Preferred language of the user using the browser.
+ ///
+ ///
+ /// This value is intended to be taken from the Navigator API navigator.language.
+ ///
+ public const string BrowserLanguage = "browser.language";
+
+ ///
+ /// A boolean that is true if the browser is running on a mobile device.
+ ///
+ ///
+ /// This value is intended to be taken from the UA client hints API (navigator.userAgentData.mobile). If unavailable, this attribute SHOULD be left unset.
+ ///
+ public const string BrowserMobile = "browser.mobile";
+
+ ///
+ /// The platform on which the browser is running.
+ ///
+ ///
+ /// This value is intended to be taken from the UA client hints API (navigator.userAgentData.platform). If unavailable, the legacy navigator.platform API SHOULD NOT be used instead and this attribute SHOULD be left unset in order for the values to be consistent.
+ /// The list of possible values is defined in the W3C User-Agent Client Hints specification. Note that some (but not all) of these values can overlap with values in the os.type and os.name attributes. However, for consistency, the values in the browser.platform attribute should capture the exact value that the user agent provides.
+ ///
+ public const string BrowserPlatform = "browser.platform";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CloudAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CloudAttributes.cs
new file mode 100644
index 00000000000..ef761852dbb
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CloudAttributes.cs
@@ -0,0 +1,234 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the cloud namespace.
+ ///
+ public static class CloudAttributes
+ {
+ ///
+ /// The cloud account ID the resource is assigned to.
+ ///
+ public const string CloudAccountId = "cloud.account.id";
+
+ ///
+ /// Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.
+ ///
+ ///
+ /// Availability zones are called "zones" on Alibaba Cloud and Google Cloud.
+ ///
+ public const string CloudAvailabilityZone = "cloud.availability_zone";
+
+ ///
+ /// The cloud platform in use.
+ ///
+ ///
+ /// The prefix of the service SHOULD match the one specified in cloud.provider.
+ ///
+ public const string CloudPlatform = "cloud.platform";
+
+ ///
+ /// Name of the cloud provider.
+ ///
+ public const string CloudProvider = "cloud.provider";
+
+ ///
+ /// The geographical region the resource is running.
+ ///
+ ///
+ /// Refer to your provider's docs to see the available regions, for example Alibaba Cloud regions, AWS regions, Azure regions, Google Cloud regions, or Tencent Cloud regions.
+ ///
+ public const string CloudRegion = "cloud.region";
+
+ ///
+ /// Cloud provider-specific native identifier of the monitored cloud resource (e.g. an ARN on AWS, a fully qualified resource ID on Azure, a full resource name on GCP).
+ ///
+ ///
+ /// On some cloud providers, it may not be possible to determine the full ID at startup,
+ /// so it may be necessary to set cloud.resource_id as a span attribute instead.The exact value to use for cloud.resource_id depends on the cloud provider.
+ /// The following well-known definitions MUST be used if you set this attribute and they apply:
+ /// - AWS Lambda: The function ARN.
+ /// Take care not to use the "invoked ARN" directly but replace any
+ /// alias suffix
+ /// with the resolved function version, as the same runtime instance may be invokable with
+ /// multiple different aliases.
+ /// - GCP: The URI of the resource
+ /// - Azure: The Fully Qualified Resource ID of the invoked function,
+ /// not the function app, having the form
+ /// /subscriptions/<SUBSCIPTION_GUID>/resourceGroups/<RG>/providers/Microsoft.Web/sites/<FUNCAPP>/functions/<FUNC>.
+ /// This means that a span attribute MUST be used, as an Azure function app can host multiple functions that would usually share
+ /// a TracerProvider
+ ///
.
+ ///
+ public const string CloudResourceId = "cloud.resource_id";
+
+ ///
+ /// The cloud platform in use.
+ ///
+ public static class CloudPlatformValues
+ {
+ ///
+ /// Alibaba Cloud Elastic Compute Service.
+ ///
+ public const string AlibabaCloudEcs = "alibaba_cloud_ecs";
+ ///
+ /// Alibaba Cloud Function Compute.
+ ///
+ public const string AlibabaCloudFc = "alibaba_cloud_fc";
+ ///
+ /// Red Hat OpenShift on Alibaba Cloud.
+ ///
+ public const string AlibabaCloudOpenshift = "alibaba_cloud_openshift";
+ ///
+ /// AWS Elastic Compute Cloud.
+ ///
+ public const string AwsEc2 = "aws_ec2";
+ ///
+ /// AWS Elastic Container Service.
+ ///
+ public const string AwsEcs = "aws_ecs";
+ ///
+ /// AWS Elastic Kubernetes Service.
+ ///
+ public const string AwsEks = "aws_eks";
+ ///
+ /// AWS Lambda.
+ ///
+ public const string AwsLambda = "aws_lambda";
+ ///
+ /// AWS Elastic Beanstalk.
+ ///
+ public const string AwsElasticBeanstalk = "aws_elastic_beanstalk";
+ ///
+ /// AWS App Runner.
+ ///
+ public const string AwsAppRunner = "aws_app_runner";
+ ///
+ /// Red Hat OpenShift on AWS (ROSA).
+ ///
+ public const string AwsOpenshift = "aws_openshift";
+ ///
+ /// Azure Virtual Machines.
+ ///
+ public const string AzureVm = "azure_vm";
+ ///
+ /// Azure Container Instances.
+ ///
+ public const string AzureContainerInstances = "azure_container_instances";
+ ///
+ /// Azure Kubernetes Service.
+ ///
+ public const string AzureAks = "azure_aks";
+ ///
+ /// Azure Functions.
+ ///
+ public const string AzureFunctions = "azure_functions";
+ ///
+ /// Azure App Service.
+ ///
+ public const string AzureAppService = "azure_app_service";
+ ///
+ /// Azure Red Hat OpenShift.
+ ///
+ public const string AzureOpenshift = "azure_openshift";
+ ///
+ /// Google Bare Metal Solution (BMS).
+ ///
+ public const string GcpBareMetalSolution = "gcp_bare_metal_solution";
+ ///
+ /// Google Cloud Compute Engine (GCE).
+ ///
+ public const string GcpComputeEngine = "gcp_compute_engine";
+ ///
+ /// Google Cloud Run.
+ ///
+ public const string GcpCloudRun = "gcp_cloud_run";
+ ///
+ /// Google Cloud Kubernetes Engine (GKE).
+ ///
+ public const string GcpKubernetesEngine = "gcp_kubernetes_engine";
+ ///
+ /// Google Cloud Functions (GCF).
+ ///
+ public const string GcpCloudFunctions = "gcp_cloud_functions";
+ ///
+ /// Google Cloud App Engine (GAE).
+ ///
+ public const string GcpAppEngine = "gcp_app_engine";
+ ///
+ /// Red Hat OpenShift on Google Cloud.
+ ///
+ public const string GcpOpenshift = "gcp_openshift";
+ ///
+ /// Red Hat OpenShift on IBM Cloud.
+ ///
+ public const string IbmCloudOpenshift = "ibm_cloud_openshift";
+ ///
+ /// Tencent Cloud Cloud Virtual Machine (CVM).
+ ///
+ public const string TencentCloudCvm = "tencent_cloud_cvm";
+ ///
+ /// Tencent Cloud Elastic Kubernetes Service (EKS).
+ ///
+ public const string TencentCloudEks = "tencent_cloud_eks";
+ ///
+ /// Tencent Cloud Serverless Cloud Function (SCF).
+ ///
+ public const string TencentCloudScf = "tencent_cloud_scf";
+ }
+
+ ///
+ /// Name of the cloud provider.
+ ///
+ public static class CloudProviderValues
+ {
+ ///
+ /// Alibaba Cloud.
+ ///
+ public const string AlibabaCloud = "alibaba_cloud";
+ ///
+ /// Amazon Web Services.
+ ///
+ public const string Aws = "aws";
+ ///
+ /// Microsoft Azure.
+ ///
+ public const string Azure = "azure";
+ ///
+ /// Google Cloud Platform.
+ ///
+ public const string Gcp = "gcp";
+ ///
+ /// Heroku Platform as a Service.
+ ///
+ public const string Heroku = "heroku";
+ ///
+ /// IBM Cloud.
+ ///
+ public const string IbmCloud = "ibm_cloud";
+ ///
+ /// Tencent Cloud.
+ ///
+ public const string TencentCloud = "tencent_cloud";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CloudeventsAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CloudeventsAttributes.cs
new file mode 100644
index 00000000000..7b6261edb04
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CloudeventsAttributes.cs
@@ -0,0 +1,53 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the cloudevents namespace.
+ ///
+ public static class CloudeventsAttributes
+ {
+ ///
+ /// The event_id uniquely identifies the event.
+ ///
+ public const string CloudeventsEventId = "cloudevents.event_id";
+
+ ///
+ /// The source identifies the context in which an event happened.
+ ///
+ public const string CloudeventsEventSource = "cloudevents.event_source";
+
+ ///
+ /// The version of the CloudEvents specification which the event uses.
+ ///
+ public const string CloudeventsEventSpecVersion = "cloudevents.event_spec_version";
+
+ ///
+ /// The subject of the event in the context of the event producer (identified by source).
+ ///
+ public const string CloudeventsEventSubject = "cloudevents.event_subject";
+
+ ///
+ /// The event_type contains a value describing the type of event related to the originating occurrence.
+ ///
+ public const string CloudeventsEventType = "cloudevents.event_type";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CodeAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CodeAttributes.cs
new file mode 100644
index 00000000000..4adbd3fd413
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/CodeAttributes.cs
@@ -0,0 +1,53 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the code namespace.
+ ///
+ public static class CodeAttributes
+ {
+ ///
+ /// The column number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function.
+ ///
+ public const string CodeColumn = "code.column";
+
+ ///
+ /// The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).
+ ///
+ public const string CodeFilepath = "code.filepath";
+
+ ///
+ /// The method or function name, or equivalent (usually rightmost part of the code unit's name).
+ ///
+ public const string CodeFunction = "code.function";
+
+ ///
+ /// The line number in code.filepath best representing the operation. It SHOULD point within the code unit named in code.function.
+ ///
+ public const string CodeLineno = "code.lineno";
+
+ ///
+ /// The "namespace" within which code.function is defined. Usually the qualified class or module name, such that code.namespace + some separator + code.function form a unique identifier for the code unit.
+ ///
+ public const string CodeNamespace = "code.namespace";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ContainerAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ContainerAttributes.cs
new file mode 100644
index 00000000000..39c0203f951
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ContainerAttributes.cs
@@ -0,0 +1,94 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the container namespace.
+ ///
+ public static class ContainerAttributes
+ {
+ ///
+ /// The command used to run the container (i.e. the command name).
+ ///
+ ///
+ /// If using embedded credentials or sensitive data, it is recommended to remove them to prevent potential leakage.
+ ///
+ public const string ContainerCommand = "container.command";
+
+ ///
+ /// All the command arguments (including the command/executable itself) run by the container. [2].
+ ///
+ public const string ContainerCommandArgs = "container.command_args";
+
+ ///
+ /// The full command run by the container as a single string representing the full command. [2].
+ ///
+ public const string ContainerCommandLine = "container.command_line";
+
+ ///
+ /// Container ID. Usually a UUID, as for example used to identify Docker containers. The UUID might be abbreviated.
+ ///
+ public const string ContainerId = "container.id";
+
+ ///
+ /// Runtime specific image identifier. Usually a hash algorithm followed by a UUID.
+ ///
+ ///
+ /// Docker defines a sha256 of the image id; container.image.id corresponds to the Image field from the Docker container inspect API endpoint.
+ /// K8s defines a link to the container registry repository with digest "imageID": "registry.azurecr.io /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625".
+ /// The ID is assinged by the container runtime and can vary in different environments. Consider using oci.manifest.digest if it is important to identify the same image in different environments/runtimes.
+ ///
+ public const string ContainerImageId = "container.image.id";
+
+ ///
+ /// Name of the image the container was built on.
+ ///
+ public const string ContainerImageName = "container.image.name";
+
+ ///
+ /// Repo digests of the container image as provided by the container runtime.
+ ///
+ ///
+ /// Docker and CRI report those under the RepoDigests field.
+ ///
+ public const string ContainerImageRepoDigests = "container.image.repo_digests";
+
+ ///
+ /// Container image tags. An example can be found in Docker Image Inspect. Should be only the section of the full name for example from registry.example.com/my-org/my-image:.
+ ///
+ public const string ContainerImageTags = "container.image.tags";
+
+ ///
+ /// Container labels, being the label name, the value being the label value.
+ ///
+ public const string ContainerLabelsTemplate = "container.labels";
+
+ ///
+ /// Container name used by container runtime.
+ ///
+ public const string ContainerName = "container.name";
+
+ ///
+ /// The container runtime managing this container.
+ ///
+ public const string ContainerRuntime = "container.runtime";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DbAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DbAttributes.cs
new file mode 100644
index 00000000000..0e80e08ff59
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DbAttributes.cs
@@ -0,0 +1,539 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the db namespace.
+ ///
+ public static class DbAttributes
+ {
+ ///
+ /// The consistency level of the query. Based on consistency values from CQL.
+ ///
+ public const string DbCassandraConsistencyLevel = "db.cassandra.consistency_level";
+
+ ///
+ /// The data center of the coordinating node for a query.
+ ///
+ public const string DbCassandraCoordinatorDc = "db.cassandra.coordinator.dc";
+
+ ///
+ /// The ID of the coordinating node for a query.
+ ///
+ public const string DbCassandraCoordinatorId = "db.cassandra.coordinator.id";
+
+ ///
+ /// Whether or not the query is idempotent.
+ ///
+ public const string DbCassandraIdempotence = "db.cassandra.idempotence";
+
+ ///
+ /// The fetch size used for paging, i.e. how many rows will be returned at once.
+ ///
+ public const string DbCassandraPageSize = "db.cassandra.page_size";
+
+ ///
+ /// The number of times a query was speculatively executed. Not set or 0 if the query was not executed speculatively.
+ ///
+ public const string DbCassandraSpeculativeExecutionCount = "db.cassandra.speculative_execution_count";
+
+ ///
+ /// The name of the primary table that the operation is acting upon, including the keyspace name (if applicable).
+ ///
+ ///
+ /// This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of db.statement just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.
+ ///
+ public const string DbCassandraTable = "db.cassandra.table";
+
+ ///
+ /// The connection string used to connect to the database. It is recommended to remove embedded credentials.
+ ///
+ public const string DbConnectionString = "db.connection_string";
+
+ ///
+ /// Unique Cosmos client instance id.
+ ///
+ public const string DbCosmosdbClientId = "db.cosmosdb.client_id";
+
+ ///
+ /// Cosmos client connection mode.
+ ///
+ public const string DbCosmosdbConnectionMode = "db.cosmosdb.connection_mode";
+
+ ///
+ /// Cosmos DB container name.
+ ///
+ public const string DbCosmosdbContainer = "db.cosmosdb.container";
+
+ ///
+ /// CosmosDB Operation Type.
+ ///
+ public const string DbCosmosdbOperationType = "db.cosmosdb.operation_type";
+
+ ///
+ /// RU consumed for that operation.
+ ///
+ public const string DbCosmosdbRequestCharge = "db.cosmosdb.request_charge";
+
+ ///
+ /// Request payload size in bytes.
+ ///
+ public const string DbCosmosdbRequestContentLength = "db.cosmosdb.request_content_length";
+
+ ///
+ /// Cosmos DB status code.
+ ///
+ public const string DbCosmosdbStatusCode = "db.cosmosdb.status_code";
+
+ ///
+ /// Cosmos DB sub status code.
+ ///
+ public const string DbCosmosdbSubStatusCode = "db.cosmosdb.sub_status_code";
+
+ ///
+ /// Represents the identifier of an Elasticsearch cluster.
+ ///
+ public const string DbElasticsearchClusterName = "db.elasticsearch.cluster.name";
+
+ ///
+ /// Represents the human-readable identifier of the node/instance to which a request was routed.
+ ///
+ public const string DbElasticsearchNodeName = "db.elasticsearch.node.name";
+
+ ///
+ /// A dynamic value in the url path.
+ ///
+ ///
+ /// Many Elasticsearch url paths allow dynamic values. These SHOULD be recorded in span attributes in the format db.elasticsearch.path_parts.<key>, where <key> is the url path part name. The implementation SHOULD reference the elasticsearch schema in order to map the path part values to their names.
+ ///
+ public const string DbElasticsearchPathPartsTemplate = "db.elasticsearch.path_parts";
+
+ ///
+ /// The fully-qualified class name of the Java Database Connectivity (JDBC) driver used to connect.
+ ///
+ public const string DbJdbcDriverClassname = "db.jdbc.driver_classname";
+
+ ///
+ /// The collection being accessed within the database stated in db.name.
+ ///
+ public const string DbMongodbCollection = "db.mongodb.collection";
+
+ ///
+ /// The Microsoft SQL Server instance name connecting to. This name is used to determine the port of a named instance.
+ ///
+ ///
+ /// If setting a db.mssql.instance_name, server.port is no longer required (but still recommended if non-standard).
+ ///
+ public const string DbMssqlInstanceName = "db.mssql.instance_name";
+
+ ///
+ /// This attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).
+ ///
+ ///
+ /// In some SQL databases, the database name to be used is called "schema name". In case there are multiple layers that could be considered for database name (e.g. Oracle instance name and schema name), the database name to be used is the more specific layer (e.g. Oracle schema name).
+ ///
+ public const string DbName = "db.name";
+
+ ///
+ /// The name of the operation being executed, e.g. the MongoDB command name such as findAndModify, or the SQL keyword.
+ ///
+ ///
+ /// When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of db.statement just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.
+ ///
+ public const string DbOperation = "db.operation";
+
+ ///
+ /// The index of the database being accessed as used in the SELECT command, provided as an integer. To be used instead of the generic db.name attribute.
+ ///
+ public const string DbRedisDatabaseIndex = "db.redis.database_index";
+
+ ///
+ /// The name of the primary table that the operation is acting upon, including the database name (if applicable).
+ ///
+ ///
+ /// It is not recommended to attempt any client-side parsing of db.statement just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.
+ ///
+ public const string DbSqlTable = "db.sql.table";
+
+ ///
+ /// The database statement being executed.
+ ///
+ public const string DbStatement = "db.statement";
+
+ ///
+ /// An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.
+ ///
+ public const string DbSystem = "db.system";
+
+ ///
+ /// Username for accessing the database.
+ ///
+ public const string DbUser = "db.user";
+
+ ///
+ /// The consistency level of the query. Based on consistency values from CQL.
+ ///
+ public static class DbCassandraConsistencyLevelValues
+ {
+ ///
+ /// all.
+ ///
+ public const string All = "all";
+ ///
+ /// each_quorum.
+ ///
+ public const string EachQuorum = "each_quorum";
+ ///
+ /// quorum.
+ ///
+ public const string Quorum = "quorum";
+ ///
+ /// local_quorum.
+ ///
+ public const string LocalQuorum = "local_quorum";
+ ///
+ /// one.
+ ///
+ public const string One = "one";
+ ///
+ /// two.
+ ///
+ public const string Two = "two";
+ ///
+ /// three.
+ ///
+ public const string Three = "three";
+ ///
+ /// local_one.
+ ///
+ public const string LocalOne = "local_one";
+ ///
+ /// any.
+ ///
+ public const string Any = "any";
+ ///
+ /// serial.
+ ///
+ public const string Serial = "serial";
+ ///
+ /// local_serial.
+ ///
+ public const string LocalSerial = "local_serial";
+ }
+
+ ///
+ /// Cosmos client connection mode.
+ ///
+ public static class DbCosmosdbConnectionModeValues
+ {
+ ///
+ /// Gateway (HTTP) connections mode.
+ ///
+ public const string Gateway = "gateway";
+ ///
+ /// Direct connection.
+ ///
+ public const string Direct = "direct";
+ }
+
+ ///
+ /// CosmosDB Operation Type.
+ ///
+ public static class DbCosmosdbOperationTypeValues
+ {
+ ///
+ /// invalid.
+ ///
+ public const string Invalid = "Invalid";
+ ///
+ /// create.
+ ///
+ public const string Create = "Create";
+ ///
+ /// patch.
+ ///
+ public const string Patch = "Patch";
+ ///
+ /// read.
+ ///
+ public const string Read = "Read";
+ ///
+ /// read_feed.
+ ///
+ public const string ReadFeed = "ReadFeed";
+ ///
+ /// delete.
+ ///
+ public const string Delete = "Delete";
+ ///
+ /// replace.
+ ///
+ public const string Replace = "Replace";
+ ///
+ /// execute.
+ ///
+ public const string Execute = "Execute";
+ ///
+ /// query.
+ ///
+ public const string Query = "Query";
+ ///
+ /// head.
+ ///
+ public const string Head = "Head";
+ ///
+ /// head_feed.
+ ///
+ public const string HeadFeed = "HeadFeed";
+ ///
+ /// upsert.
+ ///
+ public const string Upsert = "Upsert";
+ ///
+ /// batch.
+ ///
+ public const string Batch = "Batch";
+ ///
+ /// query_plan.
+ ///
+ public const string QueryPlan = "QueryPlan";
+ ///
+ /// execute_javascript.
+ ///
+ public const string ExecuteJavascript = "ExecuteJavaScript";
+ }
+
+ ///
+ /// An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.
+ ///
+ public static class DbSystemValues
+ {
+ ///
+ /// Some other SQL database. Fallback only. See notes.
+ ///
+ public const string OtherSql = "other_sql";
+ ///
+ /// Microsoft SQL Server.
+ ///
+ public const string Mssql = "mssql";
+ ///
+ /// Microsoft SQL Server Compact.
+ ///
+ public const string Mssqlcompact = "mssqlcompact";
+ ///
+ /// MySQL.
+ ///
+ public const string Mysql = "mysql";
+ ///
+ /// Oracle Database.
+ ///
+ public const string Oracle = "oracle";
+ ///
+ /// IBM Db2.
+ ///
+ public const string Db2 = "db2";
+ ///
+ /// PostgreSQL.
+ ///
+ public const string Postgresql = "postgresql";
+ ///
+ /// Amazon Redshift.
+ ///
+ public const string Redshift = "redshift";
+ ///
+ /// Apache Hive.
+ ///
+ public const string Hive = "hive";
+ ///
+ /// Cloudscape.
+ ///
+ public const string Cloudscape = "cloudscape";
+ ///
+ /// HyperSQL DataBase.
+ ///
+ public const string Hsqldb = "hsqldb";
+ ///
+ /// Progress Database.
+ ///
+ public const string Progress = "progress";
+ ///
+ /// SAP MaxDB.
+ ///
+ public const string Maxdb = "maxdb";
+ ///
+ /// SAP HANA.
+ ///
+ public const string Hanadb = "hanadb";
+ ///
+ /// Ingres.
+ ///
+ public const string Ingres = "ingres";
+ ///
+ /// FirstSQL.
+ ///
+ public const string Firstsql = "firstsql";
+ ///
+ /// EnterpriseDB.
+ ///
+ public const string Edb = "edb";
+ ///
+ /// InterSystems Caché.
+ ///
+ public const string Cache = "cache";
+ ///
+ /// Adabas (Adaptable Database System).
+ ///
+ public const string Adabas = "adabas";
+ ///
+ /// Firebird.
+ ///
+ public const string Firebird = "firebird";
+ ///
+ /// Apache Derby.
+ ///
+ public const string Derby = "derby";
+ ///
+ /// FileMaker.
+ ///
+ public const string Filemaker = "filemaker";
+ ///
+ /// Informix.
+ ///
+ public const string Informix = "informix";
+ ///
+ /// InstantDB.
+ ///
+ public const string Instantdb = "instantdb";
+ ///
+ /// InterBase.
+ ///
+ public const string Interbase = "interbase";
+ ///
+ /// MariaDB.
+ ///
+ public const string Mariadb = "mariadb";
+ ///
+ /// Netezza.
+ ///
+ public const string Netezza = "netezza";
+ ///
+ /// Pervasive PSQL.
+ ///
+ public const string Pervasive = "pervasive";
+ ///
+ /// PointBase.
+ ///
+ public const string Pointbase = "pointbase";
+ ///
+ /// SQLite.
+ ///
+ public const string Sqlite = "sqlite";
+ ///
+ /// Sybase.
+ ///
+ public const string Sybase = "sybase";
+ ///
+ /// Teradata.
+ ///
+ public const string Teradata = "teradata";
+ ///
+ /// Vertica.
+ ///
+ public const string Vertica = "vertica";
+ ///
+ /// H2.
+ ///
+ public const string H2 = "h2";
+ ///
+ /// ColdFusion IMQ.
+ ///
+ public const string Coldfusion = "coldfusion";
+ ///
+ /// Apache Cassandra.
+ ///
+ public const string Cassandra = "cassandra";
+ ///
+ /// Apache HBase.
+ ///
+ public const string Hbase = "hbase";
+ ///
+ /// MongoDB.
+ ///
+ public const string Mongodb = "mongodb";
+ ///
+ /// Redis.
+ ///
+ public const string Redis = "redis";
+ ///
+ /// Couchbase.
+ ///
+ public const string Couchbase = "couchbase";
+ ///
+ /// CouchDB.
+ ///
+ public const string Couchdb = "couchdb";
+ ///
+ /// Microsoft Azure Cosmos DB.
+ ///
+ public const string Cosmosdb = "cosmosdb";
+ ///
+ /// Amazon DynamoDB.
+ ///
+ public const string Dynamodb = "dynamodb";
+ ///
+ /// Neo4j.
+ ///
+ public const string Neo4j = "neo4j";
+ ///
+ /// Apache Geode.
+ ///
+ public const string Geode = "geode";
+ ///
+ /// Elasticsearch.
+ ///
+ public const string Elasticsearch = "elasticsearch";
+ ///
+ /// Memcached.
+ ///
+ public const string Memcached = "memcached";
+ ///
+ /// CockroachDB.
+ ///
+ public const string Cockroachdb = "cockroachdb";
+ ///
+ /// OpenSearch.
+ ///
+ public const string Opensearch = "opensearch";
+ ///
+ /// ClickHouse.
+ ///
+ public const string Clickhouse = "clickhouse";
+ ///
+ /// Cloud Spanner.
+ ///
+ public const string Spanner = "spanner";
+ ///
+ /// Trino.
+ ///
+ public const string Trino = "trino";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DbMetrics.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DbMetrics.cs
new file mode 100644
index 00000000000..d3fb84344d2
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DbMetrics.cs
@@ -0,0 +1,108 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Metrics.cs.j2
+
+using System.Diagnostics.Metrics;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for metrics in the db namespace.
+ ///
+ public static class DbMetrics {
+ ///
+ /// Creates db.client.connections.create_time instrument.
+ /// The time it took to create a new connection.
+ ///
+ public static Histogram CreateDbClientConnectionsCreateTime(Meter meter)
+ {
+ return meter.CreateHistogram("db.client.connections.create_time", "ms", "The time it took to create a new connection");
+ }
+
+ ///
+ /// Creates db.client.connections.idle.max instrument.
+ /// The maximum number of idle open connections allowed.
+ ///
+ public static UpDownCounter CreateDbClientConnectionsIdleMax(Meter meter)
+ {
+ return meter.CreateUpDownCounter("db.client.connections.idle.max", "{connection}", "The maximum number of idle open connections allowed");
+ }
+
+ ///
+ /// Creates db.client.connections.idle.min instrument.
+ /// The minimum number of idle open connections allowed.
+ ///
+ public static UpDownCounter CreateDbClientConnectionsIdleMin(Meter meter)
+ {
+ return meter.CreateUpDownCounter("db.client.connections.idle.min", "{connection}", "The minimum number of idle open connections allowed");
+ }
+
+ ///
+ /// Creates db.client.connections.max instrument.
+ /// The maximum number of open connections allowed.
+ ///
+ public static UpDownCounter CreateDbClientConnectionsMax(Meter meter)
+ {
+ return meter.CreateUpDownCounter("db.client.connections.max", "{connection}", "The maximum number of open connections allowed");
+ }
+
+ ///
+ /// Creates db.client.connections.pending_requests instrument.
+ /// The number of pending requests for an open connection, cumulative for the entire pool.
+ ///
+ public static UpDownCounter CreateDbClientConnectionsPendingRequests(Meter meter)
+ {
+ return meter.CreateUpDownCounter("db.client.connections.pending_requests", "{request}", "The number of pending requests for an open connection, cumulative for the entire pool");
+ }
+
+ ///
+ /// Creates db.client.connections.timeouts instrument.
+ /// The number of connection timeouts that have occurred trying to obtain a connection from the pool.
+ ///
+ public static Counter CreateDbClientConnectionsTimeouts(Meter meter)
+ {
+ return meter.CreateCounter("db.client.connections.timeouts", "{timeout}", "The number of connection timeouts that have occurred trying to obtain a connection from the pool");
+ }
+
+ ///
+ /// Creates db.client.connections.usage instrument.
+ /// The number of connections that are currently in state described by the state attribute.
+ ///
+ public static UpDownCounter CreateDbClientConnectionsUsage(Meter meter)
+ {
+ return meter.CreateUpDownCounter("db.client.connections.usage", "{connection}", "The number of connections that are currently in state described by the `state` attribute");
+ }
+
+ ///
+ /// Creates db.client.connections.use_time instrument.
+ /// The time between borrowing a connection and returning it to the pool.
+ ///
+ public static Histogram CreateDbClientConnectionsUseTime(Meter meter)
+ {
+ return meter.CreateHistogram("db.client.connections.use_time", "ms", "The time between borrowing a connection and returning it to the pool");
+ }
+
+ ///
+ /// Creates db.client.connections.wait_time instrument.
+ /// The time it took to obtain an open connection from the pool.
+ ///
+ public static Histogram CreateDbClientConnectionsWaitTime(Meter meter)
+ {
+ return meter.CreateHistogram("db.client.connections.wait_time", "ms", "The time it took to obtain an open connection from the pool");
+ }
+ }
+}
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DeploymentAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DeploymentAttributes.cs
new file mode 100644
index 00000000000..0542f572fd3
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DeploymentAttributes.cs
@@ -0,0 +1,33 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the deployment namespace.
+ ///
+ public static class DeploymentAttributes
+ {
+ ///
+ /// Name of the deployment environment (aka deployment tier).
+ ///
+ public const string DeploymentEnvironment = "deployment.environment";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DestinationAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DestinationAttributes.cs
new file mode 100644
index 00000000000..089039441fb
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DestinationAttributes.cs
@@ -0,0 +1,41 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the destination namespace.
+ ///
+ public static class DestinationAttributes
+ {
+ ///
+ /// Destination address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+ ///
+ ///
+ /// When observed from the source side, and when communicating through an intermediary, destination.address SHOULD represent the destination address behind any intermediaries, for example proxies, if it's available.
+ ///
+ public const string DestinationAddress = "destination.address";
+
+ ///
+ /// Destination port number.
+ ///
+ public const string DestinationPort = "destination.port";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DeviceAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DeviceAttributes.cs
new file mode 100644
index 00000000000..455a9297089
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/DeviceAttributes.cs
@@ -0,0 +1,60 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the device namespace.
+ ///
+ public static class DeviceAttributes
+ {
+ ///
+ /// A unique identifier representing the device.
+ ///
+ ///
+ /// The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the vendor identifier. On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found here on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.
+ ///
+ public const string DeviceId = "device.id";
+
+ ///
+ /// The name of the device manufacturer.
+ ///
+ ///
+ /// The Android OS provides this field via Build. iOS apps SHOULD hardcode the value Apple.
+ ///
+ public const string DeviceManufacturer = "device.manufacturer";
+
+ ///
+ /// The model identifier for the device.
+ ///
+ ///
+ /// It's recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.
+ ///
+ public const string DeviceModelIdentifier = "device.model.identifier";
+
+ ///
+ /// The marketing name for the device model.
+ ///
+ ///
+ /// It's recommended this value represents a human readable version of the device model rather than a machine readable alternative.
+ ///
+ public const string DeviceModelName = "device.model.name";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/EnduserAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/EnduserAttributes.cs
new file mode 100644
index 00000000000..b2e7fb45b94
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/EnduserAttributes.cs
@@ -0,0 +1,43 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the enduser namespace.
+ ///
+ public static class EnduserAttributes
+ {
+ ///
+ /// Username or client_id extracted from the access token or Authorization header in the inbound request from outside the system.
+ ///
+ public const string EnduserId = "enduser.id";
+
+ ///
+ /// Actual/assumed role the client is making the request under extracted from token or application security context.
+ ///
+ public const string EnduserRole = "enduser.role";
+
+ ///
+ /// Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an OAuth 2.0 Access Token or an attribute value in a SAML 2.0 Assertion.
+ ///
+ public const string EnduserScope = "enduser.scope";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/EventAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/EventAttributes.cs
new file mode 100644
index 00000000000..0d04bc58d6b
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/EventAttributes.cs
@@ -0,0 +1,60 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the event namespace.
+ ///
+ public static class EventAttributes
+ {
+ ///
+ /// The domain identifies the business context for the events.
+ ///
+ ///
+ /// Events across different domains may have same event.name, yet be unrelated events.
+ ///
+ public const string EventDomain = "event.domain";
+
+ ///
+ /// The name identifies the event.
+ ///
+ public const string EventName = "event.name";
+
+ ///
+ /// The domain identifies the business context for the events.
+ ///
+ public static class EventDomainValues
+ {
+ ///
+ /// Events from browser apps.
+ ///
+ public const string Browser = "browser";
+ ///
+ /// Events from mobile apps.
+ ///
+ public const string Device = "device";
+ ///
+ /// Events from Kubernetes.
+ ///
+ public const string K8s = "k8s";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ExceptionAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ExceptionAttributes.cs
new file mode 100644
index 00000000000..8b878830ca7
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ExceptionAttributes.cs
@@ -0,0 +1,62 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the exception namespace.
+ ///
+ public static class ExceptionAttributes
+ {
+ ///
+ /// SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.
+ ///
+ ///
+ /// An exception is considered to have escaped (or left) the scope of a span,
+ /// if that span is ended while the exception is still logically "in flight".
+ /// This may be actually "in flight" in some languages (e.g. if the exception
+ /// is passed to a Context manager's __exit__ method in Python) but will
+ /// usually be caught at the point of recording the exception in most languages.It is usually not possible to determine at the point where an exception is thrown
+ /// whether it will escape the scope of a span.
+ /// However, it is trivial to know that an exception
+ /// will escape, if one checks for an active exception just before ending the span,
+ /// as done in the example above.It follows that an exception may still escape the scope of the span
+ /// even if the exception.escaped attribute was not set or set to false,
+ /// since the event might have been recorded at a time where it was not
+ /// clear whether the exception will escape.
+ ///
+ public const string ExceptionEscaped = "exception.escaped";
+
+ ///
+ /// The exception message.
+ ///
+ public const string ExceptionMessage = "exception.message";
+
+ ///
+ /// A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.
+ ///
+ public const string ExceptionStacktrace = "exception.stacktrace";
+
+ ///
+ /// The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.
+ ///
+ public const string ExceptionType = "exception.type";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FaasAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FaasAttributes.cs
new file mode 100644
index 00000000000..cd1322285a0
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FaasAttributes.cs
@@ -0,0 +1,225 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the faas namespace.
+ ///
+ public static class FaasAttributes
+ {
+ ///
+ /// A boolean that is true if the serverless function is executed for the first time (aka cold-start).
+ ///
+ public const string FaasColdstart = "faas.coldstart";
+
+ ///
+ /// A string containing the schedule period as Cron Expression.
+ ///
+ public const string FaasCron = "faas.cron";
+
+ ///
+ /// The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.
+ ///
+ public const string FaasDocumentCollection = "faas.document.collection";
+
+ ///
+ /// The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.
+ ///
+ public const string FaasDocumentName = "faas.document.name";
+
+ ///
+ /// Describes the type of the operation that was performed on the data.
+ ///
+ public const string FaasDocumentOperation = "faas.document.operation";
+
+ ///
+ /// A string containing the time when the data was accessed in the ISO 8601 format expressed in UTC.
+ ///
+ public const string FaasDocumentTime = "faas.document.time";
+
+ ///
+ /// The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.
+ ///
+ ///
+ ///
+ /// - AWS Lambda: Use the (full) log stream name
+ ///
.
+ ///
+ public const string FaasInstance = "faas.instance";
+
+ ///
+ /// The invocation ID of the current function invocation.
+ ///
+ public const string FaasInvocationId = "faas.invocation_id";
+
+ ///
+ /// The name of the invoked function.
+ ///
+ ///
+ /// SHOULD be equal to the faas.name resource attribute of the invoked function.
+ ///
+ public const string FaasInvokedName = "faas.invoked_name";
+
+ ///
+ /// The cloud provider of the invoked function.
+ ///
+ ///
+ /// SHOULD be equal to the cloud.provider resource attribute of the invoked function.
+ ///
+ public const string FaasInvokedProvider = "faas.invoked_provider";
+
+ ///
+ /// The cloud region of the invoked function.
+ ///
+ ///
+ /// SHOULD be equal to the cloud.region resource attribute of the invoked function.
+ ///
+ public const string FaasInvokedRegion = "faas.invoked_region";
+
+ ///
+ /// The amount of memory available to the serverless function converted to Bytes.
+ ///
+ ///
+ /// It's recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable AWS_LAMBDA_FUNCTION_MEMORY_SIZE provides this information (which must be multiplied by 1,048,576).
+ ///
+ public const string FaasMaxMemory = "faas.max_memory";
+
+ ///
+ /// The name of the single function that this runtime instance executes.
+ ///
+ ///
+ /// This is the name of the function as configured/deployed on the FaaS
+ /// platform and is usually different from the name of the callback
+ /// function (which may be stored in the
+ /// code.namespace/code.function
+ /// span attributes).For some cloud providers, the above definition is ambiguous. The following
+ /// definition of function name MUST be used for this attribute
+ /// (and consequently the span name) for the listed cloud providers/products:
+ /// - Azure: The full name <FUNCAPP>/<FUNC>, i.e., function app name
+ /// followed by a forward slash followed by the function name (this form
+ /// can also be seen in the resource JSON for the function).
+ /// This means that a span attribute MUST be used, as an Azure function
+ /// app can host multiple functions that would usually share
+ /// a TracerProvider (see also the cloud.resource_id attribute)
+ ///
.
+ ///
+ public const string FaasName = "faas.name";
+
+ ///
+ /// A string containing the function invocation time in the ISO 8601 format expressed in UTC.
+ ///
+ public const string FaasTime = "faas.time";
+
+ ///
+ /// Type of the trigger which caused this function invocation.
+ ///
+ public const string FaasTrigger = "faas.trigger";
+
+ ///
+ /// The immutable version of the function being executed.
+ ///
+ ///
+ /// Depending on the cloud provider and platform, use:
+ /// - AWS Lambda: The function version
+ /// (an integer represented as a decimal string).
+ /// - Google Cloud Run (Services): The revision
+ /// (i.e., the function name plus the revision suffix).
+ /// - Google Cloud Functions: The value of the
+ /// K_REVISION environment variable.
+ /// - Azure Functions: Not applicable. Do not set this attribute
+ ///
.
+ ///
+ public const string FaasVersion = "faas.version";
+
+ ///
+ /// Describes the type of the operation that was performed on the data.
+ ///
+ public static class FaasDocumentOperationValues
+ {
+ ///
+ /// When a new object is created.
+ ///
+ public const string Insert = "insert";
+ ///
+ /// When an object is modified.
+ ///
+ public const string Edit = "edit";
+ ///
+ /// When an object is deleted.
+ ///
+ public const string Delete = "delete";
+ }
+
+ ///
+ /// The cloud provider of the invoked function.
+ ///
+ public static class FaasInvokedProviderValues
+ {
+ ///
+ /// Alibaba Cloud.
+ ///
+ public const string AlibabaCloud = "alibaba_cloud";
+ ///
+ /// Amazon Web Services.
+ ///
+ public const string Aws = "aws";
+ ///
+ /// Microsoft Azure.
+ ///
+ public const string Azure = "azure";
+ ///
+ /// Google Cloud Platform.
+ ///
+ public const string Gcp = "gcp";
+ ///
+ /// Tencent Cloud.
+ ///
+ public const string TencentCloud = "tencent_cloud";
+ }
+
+ ///
+ /// Type of the trigger which caused this function invocation.
+ ///
+ public static class FaasTriggerValues
+ {
+ ///
+ /// A response to some data source operation such as a database or filesystem read/write.
+ ///
+ public const string Datasource = "datasource";
+ ///
+ /// To provide an answer to an inbound HTTP request.
+ ///
+ public const string Http = "http";
+ ///
+ /// A function is set to be executed when messages are sent to a messaging system.
+ ///
+ public const string Pubsub = "pubsub";
+ ///
+ /// A function is scheduled to be executed regularly.
+ ///
+ public const string Timer = "timer";
+ ///
+ /// If none of the others apply.
+ ///
+ public const string Other = "other";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FaasMetrics.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FaasMetrics.cs
new file mode 100644
index 00000000000..ddd79114fdd
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FaasMetrics.cs
@@ -0,0 +1,108 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Metrics.cs.j2
+
+using System.Diagnostics.Metrics;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for metrics in the faas namespace.
+ ///
+ public static class FaasMetrics {
+ ///
+ /// Creates faas.coldstarts instrument.
+ /// Number of invocation cold starts.
+ ///
+ public static Counter CreateFaasColdstarts(Meter meter)
+ {
+ return meter.CreateCounter("faas.coldstarts", "{coldstart}", "Number of invocation cold starts");
+ }
+
+ ///
+ /// Creates faas.cpu_usage instrument.
+ /// Distribution of CPU usage per invocation.
+ ///
+ public static Histogram CreateFaasCpuUsage(Meter meter)
+ {
+ return meter.CreateHistogram("faas.cpu_usage", "s", "Distribution of CPU usage per invocation");
+ }
+
+ ///
+ /// Creates faas.errors instrument.
+ /// Number of invocation errors.
+ ///
+ public static Counter CreateFaasErrors(Meter meter)
+ {
+ return meter.CreateCounter("faas.errors", "{error}", "Number of invocation errors");
+ }
+
+ ///
+ /// Creates faas.init_duration instrument.
+ /// Measures the duration of the function's initialization, such as a cold start.
+ ///
+ public static Histogram CreateFaasInitDuration(Meter meter)
+ {
+ return meter.CreateHistogram("faas.init_duration", "s", "Measures the duration of the function's initialization, such as a cold start");
+ }
+
+ ///
+ /// Creates faas.invocations instrument.
+ /// Number of successful invocations.
+ ///
+ public static Counter CreateFaasInvocations(Meter meter)
+ {
+ return meter.CreateCounter("faas.invocations", "{invocation}", "Number of successful invocations");
+ }
+
+ ///
+ /// Creates faas.invoke_duration instrument.
+ /// Measures the duration of the function's logic execution.
+ ///
+ public static Histogram CreateFaasInvokeDuration(Meter meter)
+ {
+ return meter.CreateHistogram("faas.invoke_duration", "s", "Measures the duration of the function's logic execution");
+ }
+
+ ///
+ /// Creates faas.mem_usage instrument.
+ /// Distribution of max memory usage per invocation.
+ ///
+ public static Histogram CreateFaasMemUsage(Meter meter)
+ {
+ return meter.CreateHistogram("faas.mem_usage", "By", "Distribution of max memory usage per invocation");
+ }
+
+ ///
+ /// Creates faas.net_io instrument.
+ /// Distribution of net I/O usage per invocation.
+ ///
+ public static Histogram CreateFaasNetIo(Meter meter)
+ {
+ return meter.CreateHistogram("faas.net_io", "By", "Distribution of net I/O usage per invocation");
+ }
+
+ ///
+ /// Creates faas.timeouts instrument.
+ /// Number of invocation timeouts.
+ ///
+ public static Counter CreateFaasTimeouts(Meter meter)
+ {
+ return meter.CreateCounter("faas.timeouts", "{timeout}", "Number of invocation timeouts");
+ }
+ }
+}
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FeatureFlagAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FeatureFlagAttributes.cs
new file mode 100644
index 00000000000..590a5b93b4d
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/FeatureFlagAttributes.cs
@@ -0,0 +1,51 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the feature_flag namespace.
+ ///
+ public static class FeatureFlagAttributes
+ {
+ ///
+ /// The unique identifier of the feature flag.
+ ///
+ public const string FeatureFlagKey = "feature_flag.key";
+
+ ///
+ /// The name of the service provider that performs the flag evaluation.
+ ///
+ public const string FeatureFlagProviderName = "feature_flag.provider_name";
+
+ ///
+ /// SHOULD be a semantic identifier for a value. If one is unavailable, a stringified version of the value can be used.
+ ///
+ ///
+ /// A semantic identifier, commonly referred to as a variant, provides a means
+ /// for referring to a value without including the value itself. This can
+ /// provide additional context for understanding the meaning behind a value.
+ /// For example, the variant red maybe be used for the value #c05543.A stringified version of the value can be used in situations where a
+ /// semantic identifier is unavailable. String representation of the value
+ /// should be determined by the implementer.
+ ///
+ public const string FeatureFlagVariant = "feature_flag.variant";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/GcpAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/GcpAttributes.cs
new file mode 100644
index 00000000000..ece15ebc221
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/GcpAttributes.cs
@@ -0,0 +1,48 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the gcp namespace.
+ ///
+ public static class GcpAttributes
+ {
+ ///
+ /// The name of the Cloud Run execution being run for the Job, as set by the CLOUD_RUN_EXECUTION environment variable.
+ ///
+ public const string GcpCloudRunJobExecution = "gcp.cloud_run.job.execution";
+
+ ///
+ /// The index for a task within an execution as provided by the CLOUD_RUN_TASK_INDEX environment variable.
+ ///
+ public const string GcpCloudRunJobTaskIndex = "gcp.cloud_run.job.task_index";
+
+ ///
+ /// The hostname of a GCE instance. This is the full value of the default or custom hostname.
+ ///
+ public const string GcpGceInstanceHostname = "gcp.gce.instance.hostname";
+
+ ///
+ /// The instance name of a GCE instance. This is the value provided by host.name, the visible name of the instance in the Cloud Console UI, and the prefix for the default hostname of the instance as defined by the default internal DNS name.
+ ///
+ public const string GcpGceInstanceName = "gcp.gce.instance.name";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/GraphqlAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/GraphqlAttributes.cs
new file mode 100644
index 00000000000..d9a9e17f82c
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/GraphqlAttributes.cs
@@ -0,0 +1,65 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the graphql namespace.
+ ///
+ public static class GraphqlAttributes
+ {
+ ///
+ /// The GraphQL document being executed.
+ ///
+ ///
+ /// The value may be sanitized to exclude sensitive information.
+ ///
+ public const string GraphqlDocument = "graphql.document";
+
+ ///
+ /// The name of the operation being executed.
+ ///
+ public const string GraphqlOperationName = "graphql.operation.name";
+
+ ///
+ /// The type of the operation being executed.
+ ///
+ public const string GraphqlOperationType = "graphql.operation.type";
+
+ ///
+ /// The type of the operation being executed.
+ ///
+ public static class GraphqlOperationTypeValues
+ {
+ ///
+ /// GraphQL query.
+ ///
+ public const string Query = "query";
+ ///
+ /// GraphQL mutation.
+ ///
+ public const string Mutation = "mutation";
+ ///
+ /// GraphQL subscription.
+ ///
+ public const string Subscription = "subscription";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HerokuAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HerokuAttributes.cs
new file mode 100644
index 00000000000..00a47338475
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HerokuAttributes.cs
@@ -0,0 +1,43 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the heroku namespace.
+ ///
+ public static class HerokuAttributes
+ {
+ ///
+ /// Unique identifier for the application.
+ ///
+ public const string HerokuAppId = "heroku.app.id";
+
+ ///
+ /// Commit hash for the current release.
+ ///
+ public const string HerokuReleaseCommit = "heroku.release.commit";
+
+ ///
+ /// Time and date the release was created.
+ ///
+ public const string HerokuReleaseCreationTimestamp = "heroku.release.creation_timestamp";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HostAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HostAttributes.cs
new file mode 100644
index 00000000000..08e9ea53b03
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HostAttributes.cs
@@ -0,0 +1,151 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the host namespace.
+ ///
+ public static class HostAttributes
+ {
+ ///
+ /// The CPU architecture the host system is running on.
+ ///
+ public const string HostArch = "host.arch";
+
+ ///
+ /// The amount of level 2 memory cache available to the processor (in Bytes).
+ ///
+ public const string HostCpuCacheL2Size = "host.cpu.cache.l2.size";
+
+ ///
+ /// Numeric value specifying the family or generation of the CPU.
+ ///
+ public const string HostCpuFamily = "host.cpu.family";
+
+ ///
+ /// Model identifier. It provides more granular information about the CPU, distinguishing it from other CPUs within the same family.
+ ///
+ public const string HostCpuModelId = "host.cpu.model.id";
+
+ ///
+ /// Model designation of the processor.
+ ///
+ public const string HostCpuModelName = "host.cpu.model.name";
+
+ ///
+ /// Stepping or core revisions.
+ ///
+ public const string HostCpuStepping = "host.cpu.stepping";
+
+ ///
+ /// Processor manufacturer identifier. A maximum 12-character string.
+ ///
+ ///
+ /// CPUID command returns the vendor ID string in EBX, EDX and ECX registers. Writing these to memory in this order results in a 12-character string.
+ ///
+ public const string HostCpuVendorId = "host.cpu.vendor.id";
+
+ ///
+ /// Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider. For non-containerized systems, this should be the machine-id. See the table below for the sources to use to determine the machine-id based on operating system.
+ ///
+ public const string HostId = "host.id";
+
+ ///
+ /// VM image ID or host OS image ID. For Cloud, this value is from the provider.
+ ///
+ public const string HostImageId = "host.image.id";
+
+ ///
+ /// Name of the VM image or OS install the host was instantiated from.
+ ///
+ public const string HostImageName = "host.image.name";
+
+ ///
+ /// The version string of the VM image or host OS as defined in Version Attributes.
+ ///
+ public const string HostImageVersion = "host.image.version";
+
+ ///
+ /// Available IP addresses of the host, excluding loopback interfaces.
+ ///
+ ///
+ /// IPv4 Addresses MUST be specified in dotted-quad notation. IPv6 addresses MUST be specified in the RFC 5952 format.
+ ///
+ public const string HostIp = "host.ip";
+
+ ///
+ /// Available MAC addresses of the host, excluding loopback interfaces.
+ ///
+ ///
+ /// MAC Addresses MUST be represented in IEEE RA hexadecimal form: as hyphen-separated octets in uppercase hexadecimal form from most to least significant.
+ ///
+ public const string HostMac = "host.mac";
+
+ ///
+ /// Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.
+ ///
+ public const string HostName = "host.name";
+
+ ///
+ /// Type of host. For Cloud, this must be the machine type.
+ ///
+ public const string HostType = "host.type";
+
+ ///
+ /// The CPU architecture the host system is running on.
+ ///
+ public static class HostArchValues
+ {
+ ///
+ /// AMD64.
+ ///
+ public const string Amd64 = "amd64";
+ ///
+ /// ARM32.
+ ///
+ public const string Arm32 = "arm32";
+ ///
+ /// ARM64.
+ ///
+ public const string Arm64 = "arm64";
+ ///
+ /// Itanium.
+ ///
+ public const string Ia64 = "ia64";
+ ///
+ /// 32-bit PowerPC.
+ ///
+ public const string Ppc32 = "ppc32";
+ ///
+ /// 64-bit PowerPC.
+ ///
+ public const string Ppc64 = "ppc64";
+ ///
+ /// IBM z/Architecture.
+ ///
+ public const string S390x = "s390x";
+ ///
+ /// 32-bit x86.
+ ///
+ public const string X86 = "x86";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HttpAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HttpAttributes.cs
new file mode 100644
index 00000000000..2aa93fee794
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HttpAttributes.cs
@@ -0,0 +1,38 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the http namespace.
+ ///
+ public static class HttpAttributes
+ {
+ ///
+ /// The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size.
+ ///
+ public const string HttpRequestBodySize = "http.request.body.size";
+
+ ///
+ /// The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size.
+ ///
+ public const string HttpResponseBodySize = "http.response.body.size";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HttpMetrics.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HttpMetrics.cs
new file mode 100644
index 00000000000..c144c47e444
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/HttpMetrics.cs
@@ -0,0 +1,102 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Metrics.cs.j2
+
+using System.Diagnostics.Metrics;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for metrics in the http namespace.
+ ///
+ public static class HttpMetrics {
+ ///
+ /// Creates http.client.request.body.size instrument.
+ /// Size of HTTP client request bodies.
+ ///
+ ///
+ /// The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size.
+ ///
+ public static Histogram CreateHttpClientRequestBodySize(Meter meter)
+ {
+ return meter.CreateHistogram("http.client.request.body.size", "By", "Size of HTTP client request bodies.");
+ }
+
+ ///
+ /// Creates http.client.request.duration instrument.
+ /// Duration of HTTP client requests.
+ ///
+ public static Histogram CreateHttpClientRequestDuration(Meter meter)
+ {
+ return meter.CreateHistogram("http.client.request.duration", "s", "Duration of HTTP client requests.");
+ }
+
+ ///
+ /// Creates http.client.response.body.size instrument.
+ /// Size of HTTP client response bodies.
+ ///
+ ///
+ /// The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size.
+ ///
+ public static Histogram CreateHttpClientResponseBodySize(Meter meter)
+ {
+ return meter.CreateHistogram("http.client.response.body.size", "By", "Size of HTTP client response bodies.");
+ }
+
+ ///
+ /// Creates http.server.active_requests instrument.
+ /// Number of active HTTP server requests.
+ ///
+ public static UpDownCounter CreateHttpServerActiveRequests(Meter meter)
+ {
+ return meter.CreateUpDownCounter("http.server.active_requests", "{request}", "Number of active HTTP server requests.");
+ }
+
+ ///
+ /// Creates http.server.request.body.size instrument.
+ /// Size of HTTP server request bodies.
+ ///
+ ///
+ /// The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size.
+ ///
+ public static Histogram CreateHttpServerRequestBodySize(Meter meter)
+ {
+ return meter.CreateHistogram("http.server.request.body.size", "By", "Size of HTTP server request bodies.");
+ }
+
+ ///
+ /// Creates http.server.request.duration instrument.
+ /// Duration of HTTP server requests.
+ ///
+ public static Histogram CreateHttpServerRequestDuration(Meter meter)
+ {
+ return meter.CreateHistogram("http.server.request.duration", "s", "Duration of HTTP server requests.");
+ }
+
+ ///
+ /// Creates http.server.response.body.size instrument.
+ /// Size of HTTP server response bodies.
+ ///
+ ///
+ /// The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the Content-Length header. For requests using transport encoding, this should be the compressed size.
+ ///
+ public static Histogram CreateHttpServerResponseBodySize(Meter meter)
+ {
+ return meter.CreateHistogram("http.server.response.body.size", "By", "Size of HTTP server response bodies.");
+ }
+ }
+}
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/IosAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/IosAttributes.cs
new file mode 100644
index 00000000000..084371bd4c1
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/IosAttributes.cs
@@ -0,0 +1,63 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the ios namespace.
+ ///
+ public static class IosAttributes
+ {
+ ///
+ /// This attribute represents the state the application has transitioned into at the occurrence of the event.
+ ///
+ ///
+ /// The iOS lifecycle states are defined in the UIApplicationDelegate documentation, and from which the OS terminology column values are derived.
+ ///
+ public const string IosState = "ios.state";
+
+ ///
+ /// This attribute represents the state the application has transitioned into at the occurrence of the event.
+ ///
+ public static class IosStateValues
+ {
+ ///
+ /// The app has become active. Associated with UIKit notification applicationDidBecomeActive.
+ ///
+ public const string Active = "active";
+ ///
+ /// The app is now inactive. Associated with UIKit notification applicationWillResignActive.
+ ///
+ public const string Inactive = "inactive";
+ ///
+ /// The app is now in the background. This value is associated with UIKit notification applicationDidEnterBackground.
+ ///
+ public const string Background = "background";
+ ///
+ /// The app is now in the foreground. This value is associated with UIKit notification applicationWillEnterForeground.
+ ///
+ public const string Foreground = "foreground";
+ ///
+ /// The app is about to terminate. Associated with UIKit notification applicationWillTerminate.
+ ///
+ public const string Terminate = "terminate";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/JvmAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/JvmAttributes.cs
new file mode 100644
index 00000000000..fad88501a47
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/JvmAttributes.cs
@@ -0,0 +1,121 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the jvm namespace.
+ ///
+ public static class JvmAttributes
+ {
+ ///
+ /// Name of the buffer pool.
+ ///
+ ///
+ /// Pool names are generally obtained via BufferPoolMXBean#getName().
+ ///
+ public const string JvmBufferPoolName = "jvm.buffer.pool.name";
+
+ ///
+ /// Name of the garbage collector action.
+ ///
+ ///
+ /// Garbage collector action is generally obtained via GarbageCollectionNotificationInfo#getGcAction().
+ ///
+ public const string JvmGcAction = "jvm.gc.action";
+
+ ///
+ /// Name of the garbage collector.
+ ///
+ ///
+ /// Garbage collector name is generally obtained via GarbageCollectionNotificationInfo#getGcName().
+ ///
+ public const string JvmGcName = "jvm.gc.name";
+
+ ///
+ /// Name of the memory pool.
+ ///
+ ///
+ /// Pool names are generally obtained via MemoryPoolMXBean#getName().
+ ///
+ public const string JvmMemoryPoolName = "jvm.memory.pool.name";
+
+ ///
+ /// The type of memory.
+ ///
+ public const string JvmMemoryType = "jvm.memory.type";
+
+ ///
+ /// Whether the thread is daemon or not.
+ ///
+ public const string JvmThreadDaemon = "jvm.thread.daemon";
+
+ ///
+ /// State of the thread.
+ ///
+ public const string JvmThreadState = "jvm.thread.state";
+
+ ///
+ /// The type of memory.
+ ///
+ public static class JvmMemoryTypeValues
+ {
+ ///
+ /// Heap memory.
+ ///
+ public const string Heap = "heap";
+ ///
+ /// Non-heap memory.
+ ///
+ public const string NonHeap = "non_heap";
+ }
+
+ ///
+ /// State of the thread.
+ ///
+ public static class JvmThreadStateValues
+ {
+ ///
+ /// A thread that has not yet started is in this state.
+ ///
+ public const string New = "new";
+ ///
+ /// A thread executing in the Java virtual machine is in this state.
+ ///
+ public const string Runnable = "runnable";
+ ///
+ /// A thread that is blocked waiting for a monitor lock is in this state.
+ ///
+ public const string Blocked = "blocked";
+ ///
+ /// A thread that is waiting indefinitely for another thread to perform a particular action is in this state.
+ ///
+ public const string Waiting = "waiting";
+ ///
+ /// A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.
+ ///
+ public const string TimedWaiting = "timed_waiting";
+ ///
+ /// A thread that has exited is in this state.
+ ///
+ public const string Terminated = "terminated";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/JvmMetrics.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/JvmMetrics.cs
new file mode 100644
index 00000000000..0ae741cc562
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/JvmMetrics.cs
@@ -0,0 +1,198 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Metrics.cs.j2
+
+using System.Diagnostics.Metrics;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for metrics in the jvm namespace.
+ ///
+ public static class JvmMetrics {
+ ///
+ /// Creates jvm.buffer.count instrument.
+ /// Number of buffers in the pool.
+ ///
+ public static UpDownCounter CreateJvmBufferCount(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.buffer.count", "{buffer}", "Number of buffers in the pool.");
+ }
+
+ ///
+ /// Creates jvm.buffer.memory.limit instrument.
+ /// Measure of total memory capacity of buffers.
+ ///
+ public static UpDownCounter CreateJvmBufferMemoryLimit(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.buffer.memory.limit", "By", "Measure of total memory capacity of buffers.");
+ }
+
+ ///
+ /// Creates jvm.buffer.memory.usage instrument.
+ /// Measure of memory used by buffers.
+ ///
+ public static UpDownCounter CreateJvmBufferMemoryUsage(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.buffer.memory.usage", "By", "Measure of memory used by buffers.");
+ }
+
+ ///
+ /// Creates jvm.class.count instrument.
+ /// Number of classes currently loaded.
+ ///
+ public static UpDownCounter CreateJvmClassCount(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.class.count", "{class}", "Number of classes currently loaded.");
+ }
+
+ ///
+ /// Creates jvm.class.loaded instrument.
+ /// Number of classes loaded since JVM start.
+ ///
+ public static Counter CreateJvmClassLoaded(Meter meter)
+ {
+ return meter.CreateCounter("jvm.class.loaded", "{class}", "Number of classes loaded since JVM start.");
+ }
+
+ ///
+ /// Creates jvm.class.unloaded instrument.
+ /// Number of classes unloaded since JVM start.
+ ///
+ public static Counter CreateJvmClassUnloaded(Meter meter)
+ {
+ return meter.CreateCounter("jvm.class.unloaded", "{class}", "Number of classes unloaded since JVM start.");
+ }
+
+ ///
+ /// Creates jvm.cpu.count instrument.
+ /// Number of processors available to the Java virtual machine.
+ ///
+ public static UpDownCounter CreateJvmCpuCount(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.cpu.count", "{cpu}", "Number of processors available to the Java virtual machine.");
+ }
+
+ ///
+ /// Creates jvm.cpu.recent_utilization instrument.
+ /// Recent CPU utilization for the process as reported by the JVM.
+ ///
+ ///
+ /// The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike system.cpu.utilization). Reference.
+ ///
+ public static ObservableGauge CreateJvmCpuRecentUtilization(Meter meter, Func> observe)
+ {
+ return meter.CreateObservableGauge("jvm.cpu.recent_utilization", observe, "1", "Recent CPU utilization for the process as reported by the JVM.");
+ }
+
+ ///
+ /// Creates jvm.cpu.time instrument.
+ /// CPU time used by the process as reported by the JVM.
+ ///
+ public static Counter CreateJvmCpuTime(Meter meter)
+ {
+ return meter.CreateCounter("jvm.cpu.time", "s", "CPU time used by the process as reported by the JVM.");
+ }
+
+ ///
+ /// Creates jvm.gc.duration instrument.
+ /// Duration of JVM garbage collection actions.
+ ///
+ public static Histogram CreateJvmGcDuration(Meter meter)
+ {
+ return meter.CreateHistogram("jvm.gc.duration", "s", "Duration of JVM garbage collection actions.");
+ }
+
+ ///
+ /// Creates jvm.memory.committed instrument.
+ /// Measure of memory committed.
+ ///
+ public static UpDownCounter CreateJvmMemoryCommitted(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.memory.committed", "By", "Measure of memory committed.");
+ }
+
+ ///
+ /// Creates jvm.memory.init instrument.
+ /// Measure of initial memory requested.
+ ///
+ public static UpDownCounter CreateJvmMemoryInit(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.memory.init", "By", "Measure of initial memory requested.");
+ }
+
+ ///
+ /// Creates jvm.memory.limit instrument.
+ /// Measure of max obtainable memory.
+ ///
+ public static UpDownCounter CreateJvmMemoryLimit(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.memory.limit", "By", "Measure of max obtainable memory.");
+ }
+
+ ///
+ /// Creates jvm.memory.usage instrument.
+ /// Measure of memory used.
+ ///
+ public static UpDownCounter CreateJvmMemoryUsage(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.memory.usage", "By", "Measure of memory used.");
+ }
+
+ ///
+ /// Creates jvm.memory.usage_after_last_gc instrument.
+ /// Measure of memory used, as measured after the most recent garbage collection event on this pool.
+ ///
+ public static UpDownCounter CreateJvmMemoryUsageAfterLastGc(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.memory.usage_after_last_gc", "By", "Measure of memory used, as measured after the most recent garbage collection event on this pool.");
+ }
+
+ ///
+ /// Creates jvm.system.cpu.load_1m instrument.
+ /// Average CPU load of the whole system for the last minute as reported by the JVM.
+ ///
+ ///
+ /// The value range is [0,n], where n is the number of CPU cores - or a negative number if the value is not available. This utilization is not defined as being for the specific interval since last measurement (unlike system.cpu.utilization). Reference.
+ ///
+ public static ObservableGauge CreateJvmSystemCpuLoad1m(Meter meter, Func> observe)
+ {
+ return meter.CreateObservableGauge("jvm.system.cpu.load_1m", observe, "{run_queue_item}", "Average CPU load of the whole system for the last minute as reported by the JVM.");
+ }
+
+ ///
+ /// Creates jvm.system.cpu.utilization instrument.
+ /// Recent CPU utilization for the whole system as reported by the JVM.
+ ///
+ ///
+ /// The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike system.cpu.utilization). Reference.
+ ///
+ public static ObservableGauge CreateJvmSystemCpuUtilization(Meter meter, Func> observe)
+ {
+ return meter.CreateObservableGauge("jvm.system.cpu.utilization", observe, "1", "Recent CPU utilization for the whole system as reported by the JVM.");
+ }
+
+ ///
+ /// Creates jvm.thread.count instrument.
+ /// Number of executing platform threads.
+ ///
+ public static UpDownCounter CreateJvmThreadCount(Meter meter)
+ {
+ return meter.CreateUpDownCounter("jvm.thread.count", "{thread}", "Number of executing platform threads.");
+ }
+ }
+}
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/K8sAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/K8sAttributes.cs
new file mode 100644
index 00000000000..16760d57415
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/K8sAttributes.cs
@@ -0,0 +1,151 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the k8s namespace.
+ ///
+ public static class K8sAttributes
+ {
+ ///
+ /// The name of the cluster.
+ ///
+ public const string K8sClusterName = "k8s.cluster.name";
+
+ ///
+ /// A pseudo-ID for the cluster, set to the UID of the kube-system namespace.
+ ///
+ ///
+ /// K8s doesn't have support for obtaining a cluster ID. If this is ever
+ /// added, we will recommend collecting the k8s.cluster.uid through the
+ /// official APIs. In the meantime, we are able to use the uid of the
+ /// kube-system namespace as a proxy for cluster ID. Read on for the
+ /// rationale.Every object created in a K8s cluster is assigned a distinct UID. The
+ /// kube-system namespace is used by Kubernetes itself and will exist
+ /// for the lifetime of the cluster. Using the uid of the kube-system
+ /// namespace is a reasonable proxy for the K8s ClusterID as it will only
+ /// change if the cluster is rebuilt. Furthermore, Kubernetes UIDs are
+ /// UUIDs as standardized by
+ /// ISO/IEC 9834-8 and ITU-T X.667.
+ /// Which states:> If generated according to one of the mechanisms defined in Rec.
+ /// ITU-T X.667 | ISO/IEC 9834-8, a UUID is either guaranteed to be
+ /// different from all other UUIDs generated before 3603 A.D., or is
+ /// extremely likely to be different (depending on the mechanism chosen).Therefore, UIDs between clusters should be extremely unlikely to
+ /// conflict.
+ ///
+ public const string K8sClusterUid = "k8s.cluster.uid";
+
+ ///
+ /// The name of the Container from Pod specification, must be unique within a Pod. Container runtime usually uses different globally unique name (container.name).
+ ///
+ public const string K8sContainerName = "k8s.container.name";
+
+ ///
+ /// Number of times the container was restarted. This attribute can be used to identify a particular container (running or stopped) within a container spec.
+ ///
+ public const string K8sContainerRestartCount = "k8s.container.restart_count";
+
+ ///
+ /// The name of the CronJob.
+ ///
+ public const string K8sCronjobName = "k8s.cronjob.name";
+
+ ///
+ /// The UID of the CronJob.
+ ///
+ public const string K8sCronjobUid = "k8s.cronjob.uid";
+
+ ///
+ /// The name of the DaemonSet.
+ ///
+ public const string K8sDaemonsetName = "k8s.daemonset.name";
+
+ ///
+ /// The UID of the DaemonSet.
+ ///
+ public const string K8sDaemonsetUid = "k8s.daemonset.uid";
+
+ ///
+ /// The name of the Deployment.
+ ///
+ public const string K8sDeploymentName = "k8s.deployment.name";
+
+ ///
+ /// The UID of the Deployment.
+ ///
+ public const string K8sDeploymentUid = "k8s.deployment.uid";
+
+ ///
+ /// The name of the Job.
+ ///
+ public const string K8sJobName = "k8s.job.name";
+
+ ///
+ /// The UID of the Job.
+ ///
+ public const string K8sJobUid = "k8s.job.uid";
+
+ ///
+ /// The name of the namespace that the pod is running in.
+ ///
+ public const string K8sNamespaceName = "k8s.namespace.name";
+
+ ///
+ /// The name of the Node.
+ ///
+ public const string K8sNodeName = "k8s.node.name";
+
+ ///
+ /// The UID of the Node.
+ ///
+ public const string K8sNodeUid = "k8s.node.uid";
+
+ ///
+ /// The name of the Pod.
+ ///
+ public const string K8sPodName = "k8s.pod.name";
+
+ ///
+ /// The UID of the Pod.
+ ///
+ public const string K8sPodUid = "k8s.pod.uid";
+
+ ///
+ /// The name of the ReplicaSet.
+ ///
+ public const string K8sReplicasetName = "k8s.replicaset.name";
+
+ ///
+ /// The UID of the ReplicaSet.
+ ///
+ public const string K8sReplicasetUid = "k8s.replicaset.uid";
+
+ ///
+ /// The name of the StatefulSet.
+ ///
+ public const string K8sStatefulsetName = "k8s.statefulset.name";
+
+ ///
+ /// The UID of the StatefulSet.
+ ///
+ public const string K8sStatefulsetUid = "k8s.statefulset.uid";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/LogAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/LogAttributes.cs
new file mode 100644
index 00000000000..e7c0e3735cb
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/LogAttributes.cs
@@ -0,0 +1,77 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the log namespace.
+ ///
+ public static class LogAttributes
+ {
+ ///
+ /// The basename of the file.
+ ///
+ public const string LogFileName = "log.file.name";
+
+ ///
+ /// The basename of the file, with symlinks resolved.
+ ///
+ public const string LogFileNameResolved = "log.file.name_resolved";
+
+ ///
+ /// The full path to the file.
+ ///
+ public const string LogFilePath = "log.file.path";
+
+ ///
+ /// The full path to the file, with symlinks resolved.
+ ///
+ public const string LogFilePathResolved = "log.file.path_resolved";
+
+ ///
+ /// The stream associated with the log. See below for a list of well-known values.
+ ///
+ public const string LogIostream = "log.iostream";
+
+ ///
+ /// A unique identifier for the Log Record.
+ ///
+ ///
+ /// If an id is provided, other log records with the same id will be considered duplicates and can be removed safely. This means, that two distinguishable log records MUST have different values.
+ /// The id MAY be an Universally Unique Lexicographically Sortable Identifier (ULID), but other identifiers (e.g. UUID) may be used as needed.
+ ///
+ public const string LogRecordUid = "log.record.uid";
+
+ ///
+ /// The stream associated with the log. See below for a list of well-known values.
+ ///
+ public static class LogIostreamValues
+ {
+ ///
+ /// Logs from stdout stream.
+ ///
+ public const string Stdout = "stdout";
+ ///
+ /// Events from stderr stream.
+ ///
+ public const string Stderr = "stderr";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/MessageAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/MessageAttributes.cs
new file mode 100644
index 00000000000..642996a83c9
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/MessageAttributes.cs
@@ -0,0 +1,66 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the message namespace.
+ ///
+ public static class MessageAttributes
+ {
+ ///
+ /// Compressed size of the message in bytes.
+ ///
+ public const string MessageCompressedSize = "message.compressed_size";
+
+ ///
+ /// MUST be calculated as two different counters starting from 1 one for sent messages and one for received message.
+ ///
+ ///
+ /// This way we guarantee that the values will be consistent between different implementations.
+ ///
+ public const string MessageId = "message.id";
+
+ ///
+ /// Whether this is a received or sent message.
+ ///
+ public const string MessageType = "message.type";
+
+ ///
+ /// Uncompressed size of the message in bytes.
+ ///
+ public const string MessageUncompressedSize = "message.uncompressed_size";
+
+ ///
+ /// Whether this is a received or sent message.
+ ///
+ public static class MessageTypeValues
+ {
+ ///
+ /// sent.
+ ///
+ public const string Sent = "SENT";
+ ///
+ /// received.
+ ///
+ public const string Received = "RECEIVED";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/MessagingAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/MessagingAttributes.cs
new file mode 100644
index 00000000000..6de8fbdc761
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/MessagingAttributes.cs
@@ -0,0 +1,262 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the messaging namespace.
+ ///
+ public static class MessagingAttributes
+ {
+ ///
+ /// The number of messages sent, received, or processed in the scope of the batching operation.
+ ///
+ ///
+ /// Instrumentations SHOULD NOT set messaging.batch.message_count on spans that operate with a single message. When a messaging client library supports both batch and single-message API for the same operation, instrumentations SHOULD use messaging.batch.message_count for batching APIs and SHOULD NOT use it for single-message APIs.
+ ///
+ public const string MessagingBatchMessageCount = "messaging.batch.message_count";
+
+ ///
+ /// A unique identifier for the client that consumes or produces a message.
+ ///
+ public const string MessagingClientId = "messaging.client_id";
+
+ ///
+ /// A boolean that is true if the message destination is anonymous (could be unnamed or have auto-generated name).
+ ///
+ public const string MessagingDestinationAnonymous = "messaging.destination.anonymous";
+
+ ///
+ /// The message destination name.
+ ///
+ ///
+ /// Destination name SHOULD uniquely identify a specific queue, topic or other entity within the broker. If
+ /// the broker doesn't have such notion, the destination name SHOULD uniquely identify the broker.
+ ///
+ public const string MessagingDestinationName = "messaging.destination.name";
+
+ ///
+ /// Low cardinality representation of the messaging destination name.
+ ///
+ ///
+ /// Destination names could be constructed from templates. An example would be a destination name involving a user name or product id. Although the destination name in this case is of high cardinality, the underlying template is of low cardinality and can be effectively used for grouping and aggregation.
+ ///
+ public const string MessagingDestinationTemplate = "messaging.destination.template";
+
+ ///
+ /// A boolean that is true if the message destination is temporary and might not exist anymore after messages are processed.
+ ///
+ public const string MessagingDestinationTemporary = "messaging.destination.temporary";
+
+ ///
+ /// A boolean that is true if the publish message destination is anonymous (could be unnamed or have auto-generated name).
+ ///
+ public const string MessagingDestinationPublishAnonymous = "messaging.destination_publish.anonymous";
+
+ ///
+ /// The name of the original destination the message was published to.
+ ///
+ ///
+ /// The name SHOULD uniquely identify a specific queue, topic, or other entity within the broker. If
+ /// the broker doesn't have such notion, the original destination name SHOULD uniquely identify the broker.
+ ///
+ public const string MessagingDestinationPublishName = "messaging.destination_publish.name";
+
+ ///
+ /// Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.
+ ///
+ public const string MessagingKafkaConsumerGroup = "messaging.kafka.consumer.group";
+
+ ///
+ /// Partition the message is sent to.
+ ///
+ public const string MessagingKafkaDestinationPartition = "messaging.kafka.destination.partition";
+
+ ///
+ /// Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from messaging.message.id in that they're not unique. If the key is null, the attribute MUST NOT be set.
+ ///
+ ///
+ /// If the key type is not string, it's string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don't include its value.
+ ///
+ public const string MessagingKafkaMessageKey = "messaging.kafka.message.key";
+
+ ///
+ /// The offset of a record in the corresponding Kafka partition.
+ ///
+ public const string MessagingKafkaMessageOffset = "messaging.kafka.message.offset";
+
+ ///
+ /// A boolean that is true if the message is a tombstone.
+ ///
+ public const string MessagingKafkaMessageTombstone = "messaging.kafka.message.tombstone";
+
+ ///
+ /// The size of the message body in bytes.
+ ///
+ ///
+ /// This can refer to both the compressed or uncompressed body size. If both sizes are known, the uncompressed
+ /// body size should be used.
+ ///
+ public const string MessagingMessageBodySize = "messaging.message.body.size";
+
+ ///
+ /// The conversation ID identifying the conversation to which the message belongs, represented as a string. Sometimes called "Correlation ID".
+ ///
+ public const string MessagingMessageConversationId = "messaging.message.conversation_id";
+
+ ///
+ /// The size of the message body and metadata in bytes.
+ ///
+ ///
+ /// This can refer to both the compressed or uncompressed size. If both sizes are known, the uncompressed
+ /// size should be used.
+ ///
+ public const string MessagingMessageEnvelopeSize = "messaging.message.envelope.size";
+
+ ///
+ /// A value used by the messaging system as an identifier for the message, represented as a string.
+ ///
+ public const string MessagingMessageId = "messaging.message.id";
+
+ ///
+ /// A string identifying the kind of messaging operation.
+ ///
+ ///
+ /// If a custom value is used, it MUST be of low cardinality.
+ ///
+ public const string MessagingOperation = "messaging.operation";
+
+ ///
+ /// RabbitMQ message routing key.
+ ///
+ public const string MessagingRabbitmqDestinationRoutingKey = "messaging.rabbitmq.destination.routing_key";
+
+ ///
+ /// Name of the RocketMQ producer/consumer group that is handling the message. The client type is identified by the SpanKind.
+ ///
+ public const string MessagingRocketmqClientGroup = "messaging.rocketmq.client_group";
+
+ ///
+ /// Model of message consumption. This only applies to consumer spans.
+ ///
+ public const string MessagingRocketmqConsumptionModel = "messaging.rocketmq.consumption_model";
+
+ ///
+ /// The delay time level for delay message, which determines the message delay time.
+ ///
+ public const string MessagingRocketmqMessageDelayTimeLevel = "messaging.rocketmq.message.delay_time_level";
+
+ ///
+ /// The timestamp in milliseconds that the delay message is expected to be delivered to consumer.
+ ///
+ public const string MessagingRocketmqMessageDeliveryTimestamp = "messaging.rocketmq.message.delivery_timestamp";
+
+ ///
+ /// It is essential for FIFO message. Messages that belong to the same message group are always processed one by one within the same consumer group.
+ ///
+ public const string MessagingRocketmqMessageGroup = "messaging.rocketmq.message.group";
+
+ ///
+ /// Key(s) of message, another way to mark message besides message id.
+ ///
+ public const string MessagingRocketmqMessageKeys = "messaging.rocketmq.message.keys";
+
+ ///
+ /// The secondary classifier of message besides topic.
+ ///
+ public const string MessagingRocketmqMessageTag = "messaging.rocketmq.message.tag";
+
+ ///
+ /// Type of message.
+ ///
+ public const string MessagingRocketmqMessageType = "messaging.rocketmq.message.type";
+
+ ///
+ /// Namespace of RocketMQ resources, resources in different namespaces are individual.
+ ///
+ public const string MessagingRocketmqNamespace = "messaging.rocketmq.namespace";
+
+ ///
+ /// A string identifying the messaging system.
+ ///
+ public const string MessagingSystem = "messaging.system";
+
+ ///
+ /// A string identifying the kind of messaging operation.
+ ///
+ public static class MessagingOperationValues
+ {
+ ///
+ /// One or more messages are provided for publishing to an intermediary. If a single message is published, the context of the "Publish" span can be used as the creation context and no "Create" span needs to be created.
+ ///
+ public const string Publish = "publish";
+ ///
+ /// A message is created. "Create" spans always refer to a single message and are used to provide a unique creation context for messages in batch publishing scenarios.
+ ///
+ public const string Create = "create";
+ ///
+ /// One or more messages are requested by a consumer. This operation refers to pull-based scenarios, where consumers explicitly call methods of messaging SDKs to receive messages.
+ ///
+ public const string Receive = "receive";
+ ///
+ /// One or more messages are passed to a consumer. This operation refers to push-based scenarios, where consumer register callbacks which get called by messaging SDKs.
+ ///
+ public const string Deliver = "deliver";
+ }
+
+ ///
+ /// Model of message consumption. This only applies to consumer spans.
+ ///
+ public static class MessagingRocketmqConsumptionModelValues
+ {
+ ///
+ /// Clustering consumption model.
+ ///
+ public const string Clustering = "clustering";
+ ///
+ /// Broadcasting consumption model.
+ ///
+ public const string Broadcasting = "broadcasting";
+ }
+
+ ///
+ /// Type of message.
+ ///
+ public static class MessagingRocketmqMessageTypeValues
+ {
+ ///
+ /// Normal message.
+ ///
+ public const string Normal = "normal";
+ ///
+ /// FIFO message.
+ ///
+ public const string Fifo = "fifo";
+ ///
+ /// Delay message.
+ ///
+ public const string Delay = "delay";
+ ///
+ /// Transaction message.
+ ///
+ public const string Transaction = "transaction";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/NetworkAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/NetworkAttributes.cs
new file mode 100644
index 00000000000..1df4c422c2c
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/NetworkAttributes.cs
@@ -0,0 +1,176 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the network namespace.
+ ///
+ public static class NetworkAttributes
+ {
+ ///
+ /// The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.
+ ///
+ public const string NetworkCarrierIcc = "network.carrier.icc";
+
+ ///
+ /// The mobile carrier country code.
+ ///
+ public const string NetworkCarrierMcc = "network.carrier.mcc";
+
+ ///
+ /// The mobile carrier network code.
+ ///
+ public const string NetworkCarrierMnc = "network.carrier.mnc";
+
+ ///
+ /// The name of the mobile carrier.
+ ///
+ public const string NetworkCarrierName = "network.carrier.name";
+
+ ///
+ /// This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.
+ ///
+ public const string NetworkConnectionSubtype = "network.connection.subtype";
+
+ ///
+ /// The internet connection type.
+ ///
+ public const string NetworkConnectionType = "network.connection.type";
+
+ ///
+ /// This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.
+ ///
+ public static class NetworkConnectionSubtypeValues
+ {
+ ///
+ /// GPRS.
+ ///
+ public const string Gprs = "gprs";
+ ///
+ /// EDGE.
+ ///
+ public const string Edge = "edge";
+ ///
+ /// UMTS.
+ ///
+ public const string Umts = "umts";
+ ///
+ /// CDMA.
+ ///
+ public const string Cdma = "cdma";
+ ///
+ /// EVDO Rel. 0.
+ ///
+ public const string Evdo0 = "evdo_0";
+ ///
+ /// EVDO Rev. A.
+ ///
+ public const string EvdoA = "evdo_a";
+ ///
+ /// CDMA2000 1XRTT.
+ ///
+ public const string Cdma20001xrtt = "cdma2000_1xrtt";
+ ///
+ /// HSDPA.
+ ///
+ public const string Hsdpa = "hsdpa";
+ ///
+ /// HSUPA.
+ ///
+ public const string Hsupa = "hsupa";
+ ///
+ /// HSPA.
+ ///
+ public const string Hspa = "hspa";
+ ///
+ /// IDEN.
+ ///
+ public const string Iden = "iden";
+ ///
+ /// EVDO Rev. B.
+ ///
+ public const string EvdoB = "evdo_b";
+ ///
+ /// LTE.
+ ///
+ public const string Lte = "lte";
+ ///
+ /// EHRPD.
+ ///
+ public const string Ehrpd = "ehrpd";
+ ///
+ /// HSPAP.
+ ///
+ public const string Hspap = "hspap";
+ ///
+ /// GSM.
+ ///
+ public const string Gsm = "gsm";
+ ///
+ /// TD-SCDMA.
+ ///
+ public const string TdScdma = "td_scdma";
+ ///
+ /// IWLAN.
+ ///
+ public const string Iwlan = "iwlan";
+ ///
+ /// 5G NR (New Radio).
+ ///
+ public const string Nr = "nr";
+ ///
+ /// 5G NRNSA (New Radio Non-Standalone).
+ ///
+ public const string Nrnsa = "nrnsa";
+ ///
+ /// LTE CA.
+ ///
+ public const string LteCa = "lte_ca";
+ }
+
+ ///
+ /// The internet connection type.
+ ///
+ public static class NetworkConnectionTypeValues
+ {
+ ///
+ /// wifi.
+ ///
+ public const string Wifi = "wifi";
+ ///
+ /// wired.
+ ///
+ public const string Wired = "wired";
+ ///
+ /// cell.
+ ///
+ public const string Cell = "cell";
+ ///
+ /// unavailable.
+ ///
+ public const string Unavailable = "unavailable";
+ ///
+ /// unknown.
+ ///
+ public const string Unknown = "unknown";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OciAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OciAttributes.cs
new file mode 100644
index 00000000000..70599c90405
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OciAttributes.cs
@@ -0,0 +1,37 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the oci namespace.
+ ///
+ public static class OciAttributes
+ {
+ ///
+ /// The digest of the OCI image manifest. For container images specifically is the digest by which the container image is known.
+ ///
+ ///
+ /// Follows OCI Image Manifest Specification, and specifically the Digest property.
+ /// An example can be found in Example Image Manifest.
+ ///
+ public const string OciManifestDigest = "oci.manifest.digest";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OpentracingAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OpentracingAttributes.cs
new file mode 100644
index 00000000000..4f65c3b2218
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OpentracingAttributes.cs
@@ -0,0 +1,51 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the opentracing namespace.
+ ///
+ public static class OpentracingAttributes
+ {
+ ///
+ /// Parent-child Reference type.
+ ///
+ ///
+ /// The causal relationship between a child Span and a parent Span.
+ ///
+ public const string OpentracingRefType = "opentracing.ref_type";
+
+ ///
+ /// Parent-child Reference type.
+ ///
+ public static class OpentracingRefTypeValues
+ {
+ ///
+ /// The parent Span depends on the child Span in some capacity.
+ ///
+ public const string ChildOf = "child_of";
+ ///
+ /// The parent Span doesn't depend in any way on the result of the child Span.
+ ///
+ public const string FollowsFrom = "follows_from";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OsAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OsAttributes.cs
new file mode 100644
index 00000000000..5bdb42639f6
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OsAttributes.cs
@@ -0,0 +1,104 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the os namespace.
+ ///
+ public static class OsAttributes
+ {
+ ///
+ /// Unique identifier for a particular build or compilation of the operating system.
+ ///
+ public const string OsBuildId = "os.build_id";
+
+ ///
+ /// Human readable (not intended to be parsed) OS version information, like e.g. reported by ver or lsb_release -a commands.
+ ///
+ public const string OsDescription = "os.description";
+
+ ///
+ /// Human readable operating system name.
+ ///
+ public const string OsName = "os.name";
+
+ ///
+ /// The operating system type.
+ ///
+ public const string OsType = "os.type";
+
+ ///
+ /// The version string of the operating system as defined in Version Attributes.
+ ///
+ public const string OsVersion = "os.version";
+
+ ///
+ /// The operating system type.
+ ///
+ public static class OsTypeValues
+ {
+ ///
+ /// Microsoft Windows.
+ ///
+ public const string Windows = "windows";
+ ///
+ /// Linux.
+ ///
+ public const string Linux = "linux";
+ ///
+ /// Apple Darwin.
+ ///
+ public const string Darwin = "darwin";
+ ///
+ /// FreeBSD.
+ ///
+ public const string Freebsd = "freebsd";
+ ///
+ /// NetBSD.
+ ///
+ public const string Netbsd = "netbsd";
+ ///
+ /// OpenBSD.
+ ///
+ public const string Openbsd = "openbsd";
+ ///
+ /// DragonFly BSD.
+ ///
+ public const string Dragonflybsd = "dragonflybsd";
+ ///
+ /// HP-UX (Hewlett Packard Unix).
+ ///
+ public const string Hpux = "hpux";
+ ///
+ /// AIX (Advanced Interactive eXecutive).
+ ///
+ public const string Aix = "aix";
+ ///
+ /// SunOS, Oracle Solaris.
+ ///
+ public const string Solaris = "solaris";
+ ///
+ /// IBM z/OS.
+ ///
+ public const string ZOs = "z_os";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OtelAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OtelAttributes.cs
new file mode 100644
index 00000000000..72dcdd6bbdf
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OtelAttributes.cs
@@ -0,0 +1,63 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the otel namespace.
+ ///
+ public static class OtelAttributes
+ {
+ ///
+ /// The name of the instrumentation scope - (InstrumentationScope.Name in OTLP).
+ ///
+ public const string OtelScopeName = "otel.scope.name";
+
+ ///
+ /// The version of the instrumentation scope - (InstrumentationScope.Version in OTLP).
+ ///
+ public const string OtelScopeVersion = "otel.scope.version";
+
+ ///
+ /// Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code is UNSET.
+ ///
+ public const string OtelStatusCode = "otel.status_code";
+
+ ///
+ /// Description of the Status if it has a value, otherwise not set.
+ ///
+ public const string OtelStatusDescription = "otel.status_description";
+
+ ///
+ /// Name of the code, either "OK" or "ERROR". MUST NOT be set if the status code is UNSET.
+ ///
+ public static class OtelStatusCodeValues
+ {
+ ///
+ /// The operation has been validated by an Application developer or Operator to have completed successfully.
+ ///
+ public const string Ok = "OK";
+ ///
+ /// The operation contains an error.
+ ///
+ public const string Error = "ERROR";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OtherAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OtherAttributes.cs
new file mode 100644
index 00000000000..7746ffd3a32
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/OtherAttributes.cs
@@ -0,0 +1,48 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the other namespace.
+ ///
+ public static class OtherAttributes
+ {
+ ///
+ /// The state of a connection in the pool.
+ ///
+ public const string State = "state";
+
+ ///
+ /// The state of a connection in the pool.
+ ///
+ public static class StateValues
+ {
+ ///
+ /// idle.
+ ///
+ public const string Idle = "idle";
+ ///
+ /// used.
+ ///
+ public const string Used = "used";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/PeerAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/PeerAttributes.cs
new file mode 100644
index 00000000000..df6d22e19f1
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/PeerAttributes.cs
@@ -0,0 +1,33 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the peer namespace.
+ ///
+ public static class PeerAttributes
+ {
+ ///
+ /// The service.name of the remote service. SHOULD be equal to the actual service.name resource attribute of the remote service if any.
+ ///
+ public const string PeerService = "peer.service";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/PoolAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/PoolAttributes.cs
new file mode 100644
index 00000000000..ff1c0b16937
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/PoolAttributes.cs
@@ -0,0 +1,33 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the pool namespace.
+ ///
+ public static class PoolAttributes
+ {
+ ///
+ /// The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, then the db.connection_string should be used.
+ ///
+ public const string PoolName = "pool.name";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ProcessAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ProcessAttributes.cs
new file mode 100644
index 00000000000..5b5e4d0c889
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ProcessAttributes.cs
@@ -0,0 +1,83 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the process namespace.
+ ///
+ public static class ProcessAttributes
+ {
+ ///
+ /// The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in proc/[pid]/cmdline. On Windows, can be set to the first parameter extracted from GetCommandLineW.
+ ///
+ public const string ProcessCommand = "process.command";
+
+ ///
+ /// All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from proc/[pid]/cmdline. For libc-based executables, this would be the full argv vector passed to main.
+ ///
+ public const string ProcessCommandArgs = "process.command_args";
+
+ ///
+ /// The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of GetCommandLineW. Do not set this if you have to assemble it just for monitoring; use process.command_args instead.
+ ///
+ public const string ProcessCommandLine = "process.command_line";
+
+ ///
+ /// The name of the process executable. On Linux based systems, can be set to the Name in proc/[pid]/status. On Windows, can be set to the base name of GetProcessImageFileNameW.
+ ///
+ public const string ProcessExecutableName = "process.executable.name";
+
+ ///
+ /// The full path to the process executable. On Linux based systems, can be set to the target of proc/[pid]/exe. On Windows, can be set to the result of GetProcessImageFileNameW.
+ ///
+ public const string ProcessExecutablePath = "process.executable.path";
+
+ ///
+ /// The username of the user that owns the process.
+ ///
+ public const string ProcessOwner = "process.owner";
+
+ ///
+ /// Parent Process identifier (PID).
+ ///
+ public const string ProcessParentPid = "process.parent_pid";
+
+ ///
+ /// Process identifier (PID).
+ ///
+ public const string ProcessPid = "process.pid";
+
+ ///
+ /// An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.
+ ///
+ public const string ProcessRuntimeDescription = "process.runtime.description";
+
+ ///
+ /// The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.
+ ///
+ public const string ProcessRuntimeName = "process.runtime.name";
+
+ ///
+ /// The version of the runtime of this process, as returned by the runtime without modification.
+ ///
+ public const string ProcessRuntimeVersion = "process.runtime.version";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/RpcAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/RpcAttributes.cs
new file mode 100644
index 00000000000..c9c787461f3
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/RpcAttributes.cs
@@ -0,0 +1,284 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the rpc namespace.
+ ///
+ public static class RpcAttributes
+ {
+ ///
+ /// The error codes of the Connect request. Error codes are always string values.
+ ///
+ public const string RpcConnectRpcErrorCode = "rpc.connect_rpc.error_code";
+
+ ///
+ /// Connect request metadata, being the normalized Connect Metadata key (lowercase), the value being the metadata values.
+ ///
+ ///
+ /// Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
+ ///
+ public const string RpcConnectRpcRequestMetadataTemplate = "rpc.connect_rpc.request.metadata";
+
+ ///
+ /// Connect response metadata, being the normalized Connect Metadata key (lowercase), the value being the metadata values.
+ ///
+ ///
+ /// Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
+ ///
+ public const string RpcConnectRpcResponseMetadataTemplate = "rpc.connect_rpc.response.metadata";
+
+ ///
+ /// gRPC request metadata, being the normalized gRPC Metadata key (lowercase), the value being the metadata values.
+ ///
+ ///
+ /// Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. Including all request metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
+ ///
+ public const string RpcGrpcRequestMetadataTemplate = "rpc.grpc.request.metadata";
+
+ ///
+ /// gRPC response metadata, being the normalized gRPC Metadata key (lowercase), the value being the metadata values.
+ ///
+ ///
+ /// Instrumentations SHOULD require an explicit configuration of which metadata values are to be captured. Including all response metadata values can be a security risk - explicit configuration helps avoid leaking sensitive information.
+ ///
+ public const string RpcGrpcResponseMetadataTemplate = "rpc.grpc.response.metadata";
+
+ ///
+ /// The numeric status code of the gRPC request.
+ ///
+ public const string RpcGrpcStatusCode = "rpc.grpc.status_code";
+
+ ///
+ /// error.code property of response if it is an error response.
+ ///
+ public const string RpcJsonrpcErrorCode = "rpc.jsonrpc.error_code";
+
+ ///
+ /// error.message property of response if it is an error response.
+ ///
+ public const string RpcJsonrpcErrorMessage = "rpc.jsonrpc.error_message";
+
+ ///
+ /// id property of request or response. Since protocol allows id to be int, string, null or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of null value. Omit entirely if this is a notification.
+ ///
+ public const string RpcJsonrpcRequestId = "rpc.jsonrpc.request_id";
+
+ ///
+ /// Protocol version as in jsonrpc property of request/response. Since JSON-RPC 1.0 doesn't specify this, the value can be omitted.
+ ///
+ public const string RpcJsonrpcVersion = "rpc.jsonrpc.version";
+
+ ///
+ /// The name of the (logical) method being called, must be equal to the $method part in the span name.
+ ///
+ ///
+ /// This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The code.function attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).
+ ///
+ public const string RpcMethod = "rpc.method";
+
+ ///
+ /// The full (logical) name of the service being called, including its package name, if applicable.
+ ///
+ ///
+ /// This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The code.namespace attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).
+ ///
+ public const string RpcService = "rpc.service";
+
+ ///
+ /// A string identifying the remoting system. See below for a list of well-known identifiers.
+ ///
+ public const string RpcSystem = "rpc.system";
+
+ ///
+ /// The error codes of the Connect request. Error codes are always string values.
+ ///
+ public static class RpcConnectRpcErrorCodeValues
+ {
+ ///
+ /// cancelled.
+ ///
+ public const string Cancelled = "cancelled";
+ ///
+ /// unknown.
+ ///
+ public const string Unknown = "unknown";
+ ///
+ /// invalid_argument.
+ ///
+ public const string InvalidArgument = "invalid_argument";
+ ///
+ /// deadline_exceeded.
+ ///
+ public const string DeadlineExceeded = "deadline_exceeded";
+ ///
+ /// not_found.
+ ///
+ public const string NotFound = "not_found";
+ ///
+ /// already_exists.
+ ///
+ public const string AlreadyExists = "already_exists";
+ ///
+ /// permission_denied.
+ ///
+ public const string PermissionDenied = "permission_denied";
+ ///
+ /// resource_exhausted.
+ ///
+ public const string ResourceExhausted = "resource_exhausted";
+ ///
+ /// failed_precondition.
+ ///
+ public const string FailedPrecondition = "failed_precondition";
+ ///
+ /// aborted.
+ ///
+ public const string Aborted = "aborted";
+ ///
+ /// out_of_range.
+ ///
+ public const string OutOfRange = "out_of_range";
+ ///
+ /// unimplemented.
+ ///
+ public const string Unimplemented = "unimplemented";
+ ///
+ /// internal.
+ ///
+ public const string Internal = "internal";
+ ///
+ /// unavailable.
+ ///
+ public const string Unavailable = "unavailable";
+ ///
+ /// data_loss.
+ ///
+ public const string DataLoss = "data_loss";
+ ///
+ /// unauthenticated.
+ ///
+ public const string Unauthenticated = "unauthenticated";
+ }
+
+ ///
+ /// The numeric status code of the gRPC request.
+ ///
+ public static class RpcGrpcStatusCodeValues
+ {
+ ///
+ /// OK.
+ ///
+ public const int Ok = 0;
+ ///
+ /// CANCELLED.
+ ///
+ public const int Cancelled = 1;
+ ///
+ /// UNKNOWN.
+ ///
+ public const int Unknown = 2;
+ ///
+ /// INVALID_ARGUMENT.
+ ///
+ public const int InvalidArgument = 3;
+ ///
+ /// DEADLINE_EXCEEDED.
+ ///
+ public const int DeadlineExceeded = 4;
+ ///
+ /// NOT_FOUND.
+ ///
+ public const int NotFound = 5;
+ ///
+ /// ALREADY_EXISTS.
+ ///
+ public const int AlreadyExists = 6;
+ ///
+ /// PERMISSION_DENIED.
+ ///
+ public const int PermissionDenied = 7;
+ ///
+ /// RESOURCE_EXHAUSTED.
+ ///
+ public const int ResourceExhausted = 8;
+ ///
+ /// FAILED_PRECONDITION.
+ ///
+ public const int FailedPrecondition = 9;
+ ///
+ /// ABORTED.
+ ///
+ public const int Aborted = 10;
+ ///
+ /// OUT_OF_RANGE.
+ ///
+ public const int OutOfRange = 11;
+ ///
+ /// UNIMPLEMENTED.
+ ///
+ public const int Unimplemented = 12;
+ ///
+ /// INTERNAL.
+ ///
+ public const int Internal = 13;
+ ///
+ /// UNAVAILABLE.
+ ///
+ public const int Unavailable = 14;
+ ///
+ /// DATA_LOSS.
+ ///
+ public const int DataLoss = 15;
+ ///
+ /// UNAUTHENTICATED.
+ ///
+ public const int Unauthenticated = 16;
+ }
+
+ ///
+ /// A string identifying the remoting system. See below for a list of well-known identifiers.
+ ///
+ public static class RpcSystemValues
+ {
+ ///
+ /// gRPC.
+ ///
+ public const string Grpc = "grpc";
+ ///
+ /// Java RMI.
+ ///
+ public const string JavaRmi = "java_rmi";
+ ///
+ /// .NET WCF.
+ ///
+ public const string DotnetWcf = "dotnet_wcf";
+ ///
+ /// Apache Dubbo.
+ ///
+ public const string ApacheDubbo = "apache_dubbo";
+ ///
+ /// Connect RPC.
+ ///
+ public const string ConnectRpc = "connect_rpc";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/RpcMetrics.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/RpcMetrics.cs
new file mode 100644
index 00000000000..d67384f402e
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/RpcMetrics.cs
@@ -0,0 +1,149 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Metrics.cs.j2
+
+using System.Diagnostics.Metrics;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for metrics in the rpc namespace.
+ ///
+ public static class RpcMetrics {
+ ///
+ /// Creates rpc.client.duration instrument.
+ /// Measures the duration of outbound RPC.
+ ///
+ ///
+ /// While streaming RPCs may record this metric as start-of-batch
+ /// to end-of-batch, it's hard to interpret in practice.Streaming: N/A.
+ ///
+ public static Histogram CreateRpcClientDuration(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.client.duration", "ms", "Measures the duration of outbound RPC.");
+ }
+
+ ///
+ /// Creates rpc.client.request.size instrument.
+ /// Measures the size of RPC request messages (uncompressed).
+ ///
+ ///
+ /// Streaming: Recorded per message in a streaming batch.
+ ///
+ public static Histogram CreateRpcClientRequestSize(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.client.request.size", "By", "Measures the size of RPC request messages (uncompressed).");
+ }
+
+ ///
+ /// Creates rpc.client.requests_per_rpc instrument.
+ /// Measures the number of messages received per RPC.
+ ///
+ ///
+ /// Should be 1 for all non-streaming RPCs.Streaming: This metric is required for server and client streaming RPCs.
+ ///
+ public static Histogram CreateRpcClientRequestsPerRpc(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.client.requests_per_rpc", "{count}", "Measures the number of messages received per RPC.");
+ }
+
+ ///
+ /// Creates rpc.client.response.size instrument.
+ /// Measures the size of RPC response messages (uncompressed).
+ ///
+ ///
+ /// Streaming: Recorded per response in a streaming batch.
+ ///
+ public static Histogram CreateRpcClientResponseSize(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.client.response.size", "By", "Measures the size of RPC response messages (uncompressed).");
+ }
+
+ ///
+ /// Creates rpc.client.responses_per_rpc instrument.
+ /// Measures the number of messages sent per RPC.
+ ///
+ ///
+ /// Should be 1 for all non-streaming RPCs.Streaming: This metric is required for server and client streaming RPCs.
+ ///
+ public static Histogram CreateRpcClientResponsesPerRpc(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.client.responses_per_rpc", "{count}", "Measures the number of messages sent per RPC.");
+ }
+
+ ///
+ /// Creates rpc.server.duration instrument.
+ /// Measures the duration of inbound RPC.
+ ///
+ ///
+ /// While streaming RPCs may record this metric as start-of-batch
+ /// to end-of-batch, it's hard to interpret in practice.Streaming: N/A.
+ ///
+ public static Histogram CreateRpcServerDuration(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.server.duration", "ms", "Measures the duration of inbound RPC.");
+ }
+
+ ///
+ /// Creates rpc.server.request.size instrument.
+ /// Measures the size of RPC request messages (uncompressed).
+ ///
+ ///
+ /// Streaming: Recorded per message in a streaming batch.
+ ///
+ public static Histogram CreateRpcServerRequestSize(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.server.request.size", "By", "Measures the size of RPC request messages (uncompressed).");
+ }
+
+ ///
+ /// Creates rpc.server.requests_per_rpc instrument.
+ /// Measures the number of messages received per RPC.
+ ///
+ ///
+ /// Should be 1 for all non-streaming RPCs.Streaming : This metric is required for server and client streaming RPCs.
+ ///
+ public static Histogram CreateRpcServerRequestsPerRpc(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.server.requests_per_rpc", "{count}", "Measures the number of messages received per RPC.");
+ }
+
+ ///
+ /// Creates rpc.server.response.size instrument.
+ /// Measures the size of RPC response messages (uncompressed).
+ ///
+ ///
+ /// Streaming: Recorded per response in a streaming batch.
+ ///
+ public static Histogram CreateRpcServerResponseSize(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.server.response.size", "By", "Measures the size of RPC response messages (uncompressed).");
+ }
+
+ ///
+ /// Creates rpc.server.responses_per_rpc instrument.
+ /// Measures the number of messages sent per RPC.
+ ///
+ ///
+ /// Should be 1 for all non-streaming RPCs.Streaming: This metric is required for server and client streaming RPCs.
+ ///
+ public static Histogram CreateRpcServerResponsesPerRpc(Meter meter)
+ {
+ return meter.CreateHistogram("rpc.server.responses_per_rpc", "{count}", "Measures the number of messages sent per RPC.");
+ }
+ }
+}
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ServiceAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ServiceAttributes.cs
new file mode 100644
index 00000000000..2a4685eb77a
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ServiceAttributes.cs
@@ -0,0 +1,57 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the service namespace.
+ ///
+ public static class ServiceAttributes
+ {
+ ///
+ /// The string ID of the service instance.
+ ///
+ ///
+ /// MUST be unique for each instance of the same service.namespace,service.name pair (in other words service.namespace,service.name,service.instance.id triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).
+ ///
+ public const string ServiceInstanceId = "service.instance.id";
+
+ ///
+ /// Logical name of the service.
+ ///
+ ///
+ /// MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to unknown_service: concatenated with process.executable.name, e.g. unknown_service:bash. If process.executable.name is not available, the value MUST be set to unknown_service.
+ ///
+ public const string ServiceName = "service.name";
+
+ ///
+ /// A namespace for service.name.
+ ///
+ ///
+ /// A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. service.name is expected to be unique within the same namespace. If service.namespace is not specified in the Resource then service.name is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.
+ ///
+ public const string ServiceNamespace = "service.namespace";
+
+ ///
+ /// The version string of the service API or implementation. The format is not defined by these conventions.
+ ///
+ public const string ServiceVersion = "service.version";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SessionAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SessionAttributes.cs
new file mode 100644
index 00000000000..59bda4173a9
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SessionAttributes.cs
@@ -0,0 +1,38 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the session namespace.
+ ///
+ public static class SessionAttributes
+ {
+ ///
+ /// A unique id to identify a session.
+ ///
+ public const string SessionId = "session.id";
+
+ ///
+ /// The previous session.id for this user, when known.
+ ///
+ public const string SessionPreviousId = "session.previous_id";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SourceAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SourceAttributes.cs
new file mode 100644
index 00000000000..0a5ae3c37a3
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SourceAttributes.cs
@@ -0,0 +1,41 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the source namespace.
+ ///
+ public static class SourceAttributes
+ {
+ ///
+ /// Source address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.
+ ///
+ ///
+ /// When observed from the destination side, and when communicating through an intermediary, source.address SHOULD represent the source address behind any intermediaries, for example proxies, if it's available.
+ ///
+ public const string SourceAddress = "source.address";
+
+ ///
+ /// Source port number.
+ ///
+ public const string SourcePort = "source.port";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SystemAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SystemAttributes.cs
new file mode 100644
index 00000000000..4d71f00a664
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SystemAttributes.cs
@@ -0,0 +1,368 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the system namespace.
+ ///
+ public static class SystemAttributes
+ {
+ ///
+ /// The logical CPU number [0..n-1].
+ ///
+ public const string SystemCpuLogicalNumber = "system.cpu.logical_number";
+
+ ///
+ /// The state of the CPU.
+ ///
+ public const string SystemCpuState = "system.cpu.state";
+
+ ///
+ /// The device identifier.
+ ///
+ public const string SystemDevice = "system.device";
+
+ ///
+ /// The disk operation direction.
+ ///
+ public const string SystemDiskDirection = "system.disk.direction";
+
+ ///
+ /// The filesystem mode.
+ ///
+ public const string SystemFilesystemMode = "system.filesystem.mode";
+
+ ///
+ /// The filesystem mount path.
+ ///
+ public const string SystemFilesystemMountpoint = "system.filesystem.mountpoint";
+
+ ///
+ /// The filesystem state.
+ ///
+ public const string SystemFilesystemState = "system.filesystem.state";
+
+ ///
+ /// The filesystem type.
+ ///
+ public const string SystemFilesystemType = "system.filesystem.type";
+
+ ///
+ /// The memory state.
+ ///
+ public const string SystemMemoryState = "system.memory.state";
+
+ ///
+ /// .
+ ///
+ public const string SystemNetworkDirection = "system.network.direction";
+
+ ///
+ /// A stateless protocol MUST NOT set this attribute.
+ ///
+ public const string SystemNetworkState = "system.network.state";
+
+ ///
+ /// The paging access direction.
+ ///
+ public const string SystemPagingDirection = "system.paging.direction";
+
+ ///
+ /// The memory paging state.
+ ///
+ public const string SystemPagingState = "system.paging.state";
+
+ ///
+ /// The memory paging type.
+ ///
+ public const string SystemPagingType = "system.paging.type";
+
+ ///
+ /// The process state, e.g., Linux Process State Codes.
+ ///
+ public const string SystemProcessesStatus = "system.processes.status";
+
+ ///
+ /// The state of the CPU.
+ ///
+ public static class SystemCpuStateValues
+ {
+ ///
+ /// user.
+ ///
+ public const string User = "user";
+ ///
+ /// system.
+ ///
+ public const string System = "system";
+ ///
+ /// nice.
+ ///
+ public const string Nice = "nice";
+ ///
+ /// idle.
+ ///
+ public const string Idle = "idle";
+ ///
+ /// iowait.
+ ///
+ public const string Iowait = "iowait";
+ ///
+ /// interrupt.
+ ///
+ public const string Interrupt = "interrupt";
+ ///
+ /// steal.
+ ///
+ public const string Steal = "steal";
+ }
+
+ ///
+ /// The disk operation direction.
+ ///
+ public static class SystemDiskDirectionValues
+ {
+ ///
+ /// read.
+ ///
+ public const string Read = "read";
+ ///
+ /// write.
+ ///
+ public const string Write = "write";
+ }
+
+ ///
+ /// The filesystem state.
+ ///
+ public static class SystemFilesystemStateValues
+ {
+ ///
+ /// used.
+ ///
+ public const string Used = "used";
+ ///
+ /// free.
+ ///
+ public const string Free = "free";
+ ///
+ /// reserved.
+ ///
+ public const string Reserved = "reserved";
+ }
+
+ ///
+ /// The filesystem type.
+ ///
+ public static class SystemFilesystemTypeValues
+ {
+ ///
+ /// fat32.
+ ///
+ public const string Fat32 = "fat32";
+ ///
+ /// exfat.
+ ///
+ public const string Exfat = "exfat";
+ ///
+ /// ntfs.
+ ///
+ public const string Ntfs = "ntfs";
+ ///
+ /// refs.
+ ///
+ public const string Refs = "refs";
+ ///
+ /// hfsplus.
+ ///
+ public const string Hfsplus = "hfsplus";
+ ///
+ /// ext4.
+ ///
+ public const string Ext4 = "ext4";
+ }
+
+ ///
+ /// The memory state.
+ ///
+ public static class SystemMemoryStateValues
+ {
+ ///
+ /// used.
+ ///
+ public const string Used = "used";
+ ///
+ /// free.
+ ///
+ public const string Free = "free";
+ ///
+ /// shared.
+ ///
+ public const string Shared = "shared";
+ ///
+ /// buffers.
+ ///
+ public const string Buffers = "buffers";
+ ///
+ /// cached.
+ ///
+ public const string Cached = "cached";
+ }
+
+ ///
+ /// .
+ ///
+ public static class SystemNetworkDirectionValues
+ {
+ ///
+ /// transmit.
+ ///
+ public const string Transmit = "transmit";
+ ///
+ /// receive.
+ ///
+ public const string Receive = "receive";
+ }
+
+ ///
+ /// A stateless protocol MUST NOT set this attribute.
+ ///
+ public static class SystemNetworkStateValues
+ {
+ ///
+ /// close.
+ ///
+ public const string Close = "close";
+ ///
+ /// close_wait.
+ ///
+ public const string CloseWait = "close_wait";
+ ///
+ /// closing.
+ ///
+ public const string Closing = "closing";
+ ///
+ /// delete.
+ ///
+ public const string Delete = "delete";
+ ///
+ /// established.
+ ///
+ public const string Established = "established";
+ ///
+ /// fin_wait_1.
+ ///
+ public const string FinWait1 = "fin_wait_1";
+ ///
+ /// fin_wait_2.
+ ///
+ public const string FinWait2 = "fin_wait_2";
+ ///
+ /// last_ack.
+ ///
+ public const string LastAck = "last_ack";
+ ///
+ /// listen.
+ ///
+ public const string Listen = "listen";
+ ///
+ /// syn_recv.
+ ///
+ public const string SynRecv = "syn_recv";
+ ///
+ /// syn_sent.
+ ///
+ public const string SynSent = "syn_sent";
+ ///
+ /// time_wait.
+ ///
+ public const string TimeWait = "time_wait";
+ }
+
+ ///
+ /// The paging access direction.
+ ///
+ public static class SystemPagingDirectionValues
+ {
+ ///
+ /// in.
+ ///
+ public const string In = "in";
+ ///
+ /// out.
+ ///
+ public const string Out = "out";
+ }
+
+ ///
+ /// The memory paging state.
+ ///
+ public static class SystemPagingStateValues
+ {
+ ///
+ /// used.
+ ///
+ public const string Used = "used";
+ ///
+ /// free.
+ ///
+ public const string Free = "free";
+ }
+
+ ///
+ /// The memory paging type.
+ ///
+ public static class SystemPagingTypeValues
+ {
+ ///
+ /// major.
+ ///
+ public const string Major = "major";
+ ///
+ /// minor.
+ ///
+ public const string Minor = "minor";
+ }
+
+ ///
+ /// The process state, e.g., Linux Process State Codes.
+ ///
+ public static class SystemProcessesStatusValues
+ {
+ ///
+ /// running.
+ ///
+ public const string Running = "running";
+ ///
+ /// sleeping.
+ ///
+ public const string Sleeping = "sleeping";
+ ///
+ /// stopped.
+ ///
+ public const string Stopped = "stopped";
+ ///
+ /// defunct.
+ ///
+ public const string Defunct = "defunct";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SystemMetrics.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SystemMetrics.cs
new file mode 100644
index 00000000000..952c07d6ffd
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/SystemMetrics.cs
@@ -0,0 +1,312 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Metrics.cs.j2
+
+using System.Diagnostics.Metrics;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for metrics in the system namespace.
+ ///
+ public static class SystemMetrics {
+ ///
+ /// Creates system.cpu.frequency instrument.
+ /// Reports the current frequency of the CPU in Hz.
+ ///
+ public static ObservableGauge CreateSystemCpuFrequency(Meter meter, Func> observe)
+ {
+ return meter.CreateObservableGauge("system.cpu.frequency", observe, "{Hz}", "Reports the current frequency of the CPU in Hz");
+ }
+
+ ///
+ /// Creates system.cpu.logical.count instrument.
+ /// Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking.
+ ///
+ public static UpDownCounter CreateSystemCpuLogicalCount(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.cpu.logical.count", "{cpu}", "Reports the number of logical (virtual) processor cores created by the operating system to manage multitasking");
+ }
+
+ ///
+ /// Creates system.cpu.physical.count instrument.
+ /// Reports the number of actual physical processor cores on the hardware.
+ ///
+ public static UpDownCounter CreateSystemCpuPhysicalCount(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.cpu.physical.count", "{cpu}", "Reports the number of actual physical processor cores on the hardware");
+ }
+
+ ///
+ /// Creates system.cpu.time instrument.
+ /// Seconds each logical CPU spent on each mode.
+ ///
+ public static Counter CreateSystemCpuTime(Meter meter)
+ {
+ return meter.CreateCounter("system.cpu.time", "s", "Seconds each logical CPU spent on each mode");
+ }
+
+ ///
+ /// Creates system.cpu.utilization instrument.
+ /// Difference in system.cpu.time since the last measurement, divided by the elapsed time and number of logical CPUs.
+ ///
+ public static ObservableGauge CreateSystemCpuUtilization(Meter meter, Func> observe)
+ {
+ return meter.CreateObservableGauge("system.cpu.utilization", observe, "1", "Difference in system.cpu.time since the last measurement, divided by the elapsed time and number of logical CPUs");
+ }
+
+ ///
+ /// Creates system.disk.io instrument.
+ /// .
+ ///
+ public static Counter CreateSystemDiskIo(Meter meter)
+ {
+ return meter.CreateCounter("system.disk.io", "By", "");
+ }
+
+ ///
+ /// Creates system.disk.io_time instrument.
+ /// Time disk spent activated.
+ ///
+ ///
+ /// The real elapsed time ("wall clock") used in the I/O path (time from operations running in parallel are not counted). Measured as:.
+ ///
+ public static Counter CreateSystemDiskIoTime(Meter meter)
+ {
+ return meter.CreateCounter("system.disk.io_time", "s", "Time disk spent activated");
+ }
+
+ ///
+ /// Creates system.disk.merged instrument.
+ /// .
+ ///
+ public static Counter CreateSystemDiskMerged(Meter meter)
+ {
+ return meter.CreateCounter("system.disk.merged", "{operation}", "");
+ }
+
+ ///
+ /// Creates system.disk.operation_time instrument.
+ /// Sum of the time each operation took to complete.
+ ///
+ ///
+ /// Because it is the sum of time each request took, parallel-issued requests each contribute to make the count grow. Measured as:
+ /// - Linux: Fields 7 & 11 from procfs-diskstats
+ /// - Windows: "Avg. Disk sec/Read" perf counter multiplied by "Disk Reads/sec" perf counter (similar for Writes)
+ ///
.
+ ///
+ public static Counter CreateSystemDiskOperationTime(Meter meter)
+ {
+ return meter.CreateCounter("system.disk.operation_time", "s", "Sum of the time each operation took to complete");
+ }
+
+ ///
+ /// Creates system.disk.operations instrument.
+ /// .
+ ///
+ public static Counter CreateSystemDiskOperations(Meter meter)
+ {
+ return meter.CreateCounter("system.disk.operations", "{operation}", "");
+ }
+
+ ///
+ /// Creates system.filesystem.usage instrument.
+ /// .
+ ///
+ public static UpDownCounter CreateSystemFilesystemUsage(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.filesystem.usage", "By", "");
+ }
+
+ ///
+ /// Creates system.filesystem.utilization instrument.
+ /// .
+ ///
+ public static ObservableGauge CreateSystemFilesystemUtilization(Meter meter, Func> observe)
+ {
+ return meter.CreateObservableGauge("system.filesystem.utilization", observe, "1", "");
+ }
+
+ ///
+ /// Creates system.linux.memory.available instrument.
+ /// An estimate of how much memory is available for starting new applications, without causing swapping.
+ ///
+ ///
+ /// This is an alternative to system.memory.usage metric with state=free.
+ /// Linux starting from 3.14 exports "available" memory. It takes "free" memory as a baseline, and then factors in kernel-specific values.
+ /// This is supposed to be more accurate than just "free" memory.
+ /// For reference, see the calculations here.
+ /// See also MemAvailable in /proc/meminfo.
+ ///
+ public static UpDownCounter CreateSystemLinuxMemoryAvailable(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.linux.memory.available", "By", "An estimate of how much memory is available for starting new applications, without causing swapping");
+ }
+
+ ///
+ /// Creates system.memory.limit instrument.
+ /// Total memory available in the system.
+ ///
+ ///
+ /// Its value SHOULD equal the sum of system.memory.state over all states.
+ ///
+ public static UpDownCounter CreateSystemMemoryLimit(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.memory.limit", "By", "Total memory available in the system.");
+ }
+
+ ///
+ /// Creates system.memory.usage instrument.
+ /// Reports memory in use by state.
+ ///
+ ///
+ /// The sum over all system.memory.state values SHOULD equal the total memory
+ /// available on the system, that is system.memory.limit.
+ ///
+ public static UpDownCounter CreateSystemMemoryUsage(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.memory.usage", "By", "Reports memory in use by state.");
+ }
+
+ ///
+ /// Creates system.memory.utilization instrument.
+ /// .
+ ///
+ public static ObservableGauge CreateSystemMemoryUtilization(Meter meter, Func> observe)
+ {
+ return meter.CreateObservableGauge("system.memory.utilization", observe, "1", "");
+ }
+
+ ///
+ /// Creates system.network.connections instrument.
+ /// .
+ ///
+ public static UpDownCounter CreateSystemNetworkConnections(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.network.connections", "{connection}", "");
+ }
+
+ ///
+ /// Creates system.network.dropped instrument.
+ /// Count of packets that are dropped or discarded even though there was no error.
+ ///
+ ///
+ /// Measured as:.
+ ///
+ public static Counter CreateSystemNetworkDropped(Meter meter)
+ {
+ return meter.CreateCounter("system.network.dropped", "{packet}", "Count of packets that are dropped or discarded even though there was no error");
+ }
+
+ ///
+ /// Creates system.network.errors instrument.
+ /// Count of network errors detected.
+ ///
+ ///
+ /// Measured as:.
+ ///
+ public static Counter CreateSystemNetworkErrors(Meter meter)
+ {
+ return meter.CreateCounter("system.network.errors", "{error}", "Count of network errors detected");
+ }
+
+ ///
+ /// Creates system.network.io instrument.
+ /// .
+ ///
+ public static Counter CreateSystemNetworkIo(Meter meter)
+ {
+ return meter.CreateCounter("system.network.io", "By", "");
+ }
+
+ ///
+ /// Creates system.network.packets instrument.
+ /// .
+ ///
+ public static Counter CreateSystemNetworkPackets(Meter meter)
+ {
+ return meter.CreateCounter("system.network.packets", "{packet}", "");
+ }
+
+ ///
+ /// Creates system.paging.faults instrument.
+ /// .
+ ///
+ public static Counter CreateSystemPagingFaults(Meter meter)
+ {
+ return meter.CreateCounter("system.paging.faults", "{fault}", "");
+ }
+
+ ///
+ /// Creates system.paging.operations instrument.
+ /// .
+ ///
+ public static Counter CreateSystemPagingOperations(Meter meter)
+ {
+ return meter.CreateCounter("system.paging.operations", "{operation}", "");
+ }
+
+ ///
+ /// Creates system.paging.usage instrument.
+ /// Unix swap or windows pagefile usage.
+ ///
+ public static UpDownCounter CreateSystemPagingUsage(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.paging.usage", "By", "Unix swap or windows pagefile usage");
+ }
+
+ ///
+ /// Creates system.paging.utilization instrument.
+ /// .
+ ///
+ public static ObservableGauge CreateSystemPagingUtilization(Meter meter, Func> observe)
+ {
+ return meter.CreateObservableGauge("system.paging.utilization", observe, "1", "");
+ }
+
+ ///
+ /// Creates system.processes.count instrument.
+ /// Total number of processes in each state.
+ ///
+ public static UpDownCounter CreateSystemProcessesCount(Meter meter)
+ {
+ return meter.CreateUpDownCounter("system.processes.count", "{process}", "Total number of processes in each state");
+ }
+
+ ///
+ /// Creates system.processes.created instrument.
+ /// Total number of processes created over uptime of the host.
+ ///
+ public static Counter CreateSystemProcessesCreated(Meter meter)
+ {
+ return meter.CreateCounter("system.processes.created", "{process}", "Total number of processes created over uptime of the host");
+ }
+ }
+}
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/TelemetryAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/TelemetryAttributes.cs
new file mode 100644
index 00000000000..90bbf448a8f
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/TelemetryAttributes.cs
@@ -0,0 +1,120 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the telemetry namespace.
+ ///
+ public static class TelemetryAttributes
+ {
+ ///
+ /// The name of the auto instrumentation agent or distribution, if used.
+ ///
+ ///
+ /// Official auto instrumentation agents and distributions SHOULD set the telemetry.distro.name attribute to
+ /// a string starting with opentelemetry-, e.g. opentelemetry-java-instrumentation.
+ ///
+ public const string TelemetryDistroName = "telemetry.distro.name";
+
+ ///
+ /// The version string of the auto instrumentation agent or distribution, if used.
+ ///
+ public const string TelemetryDistroVersion = "telemetry.distro.version";
+
+ ///
+ /// The language of the telemetry SDK.
+ ///
+ public const string TelemetrySdkLanguage = "telemetry.sdk.language";
+
+ ///
+ /// The name of the telemetry SDK as defined above.
+ ///
+ ///
+ /// The OpenTelemetry SDK MUST set the telemetry.sdk.name attribute to opentelemetry.
+ /// If another SDK, like a fork or a vendor-provided implementation, is used, this SDK MUST set the
+ /// telemetry.sdk.name attribute to the fully-qualified class or module name of this SDK's main entry point
+ /// or another suitable identifier depending on the language.
+ /// The identifier opentelemetry is reserved and MUST NOT be used in this case.
+ /// All custom identifiers SHOULD be stable across different versions of an implementation.
+ ///
+ public const string TelemetrySdkName = "telemetry.sdk.name";
+
+ ///
+ /// The version string of the telemetry SDK.
+ ///
+ public const string TelemetrySdkVersion = "telemetry.sdk.version";
+
+ ///
+ /// The language of the telemetry SDK.
+ ///
+ public static class TelemetrySdkLanguageValues
+ {
+ ///
+ /// cpp.
+ ///
+ public const string Cpp = "cpp";
+ ///
+ /// dotnet.
+ ///
+ public const string Dotnet = "dotnet";
+ ///
+ /// erlang.
+ ///
+ public const string Erlang = "erlang";
+ ///
+ /// go.
+ ///
+ public const string Go = "go";
+ ///
+ /// java.
+ ///
+ public const string Java = "java";
+ ///
+ /// nodejs.
+ ///
+ public const string Nodejs = "nodejs";
+ ///
+ /// php.
+ ///
+ public const string Php = "php";
+ ///
+ /// python.
+ ///
+ public const string Python = "python";
+ ///
+ /// ruby.
+ ///
+ public const string Ruby = "ruby";
+ ///
+ /// rust.
+ ///
+ public const string Rust = "rust";
+ ///
+ /// swift.
+ ///
+ public const string Swift = "swift";
+ ///
+ /// webjs.
+ ///
+ public const string Webjs = "webjs";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ThreadAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ThreadAttributes.cs
new file mode 100644
index 00000000000..f45cf5c0faa
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/ThreadAttributes.cs
@@ -0,0 +1,38 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the thread namespace.
+ ///
+ public static class ThreadAttributes
+ {
+ ///
+ /// Current "managed" thread ID (as opposed to OS thread ID).
+ ///
+ public const string ThreadId = "thread.id";
+
+ ///
+ /// Current thread name.
+ ///
+ public const string ThreadName = "thread.name";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/WebengineAttributes.cs b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/WebengineAttributes.cs
new file mode 100644
index 00000000000..a3a4090b59b
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/SemanticConventions/v1_23_1_Experimental/WebengineAttributes.cs
@@ -0,0 +1,43 @@
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions/templates/Attributes.cs.j2
+
+using System;
+
+namespace OpenTelemetry.SemanticConventions.v1_23_1_Experimental
+{
+ ///
+ /// Describes semantic conventions for attributes in the webengine namespace.
+ ///
+ public static class WebengineAttributes
+ {
+ ///
+ /// Additional description of the web engine (e.g. detailed version and edition information).
+ ///
+ public const string WebengineDescription = "webengine.description";
+
+ ///
+ /// The name of the web engine.
+ ///
+ public const string WebengineName = "webengine.name";
+
+ ///
+ /// The version of the web engine.
+ ///
+ public const string WebengineVersion = "webengine.version";
+ }
+}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/.gitignore b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/.gitignore
index a93b221beb5..dfd65b80510 100644
--- a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/.gitignore
+++ b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/.gitignore
@@ -1 +1 @@
-opentelemetry-specification/
+semantic-conventions/
diff --git a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/generate.ps1 b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/generate.ps1
index 942f499ee4e..ed37f65bab8 100644
--- a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/generate.ps1
+++ b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/generate.ps1
@@ -3,47 +3,64 @@ $SCRIPT_DIR=$PSScriptRoot
$ROOT_DIR="${SCRIPT_DIR}/../../"
# freeze the spec & generator tools versions to make SemanticAttributes generation reproducible
-$SPEC_VERSION="v1.13.0"
+$SPEC_VERSION="v1.23.1"
+$SPEC_VERSION_ESCAPED="v1_23_1_Experimental"
$SCHEMA_URL="https://opentelemetry.io/schemas/$SPEC_VERSION"
-$GENERATOR_VERSION="0.14.0"
+$GENERATOR_VERSION="foo14"
Set-Location $SCRIPT_DIR
-Remove-Item -r -fo opentelemetry-specification
-mkdir opentelemetry-specification
-Set-Location opentelemetry-specification
+Remove-Item -r -fo semantic-conventions
+mkdir semantic-conventions
+Set-Location semantic-conventions
git init
-git remote add origin https://github.com/open-telemetry/opentelemetry-specification.git
+git remote add origin https://github.com/open-telemetry/semantic-conventions.git
git fetch origin $SPEC_VERSION
git reset --hard FETCH_HEAD
Set-Location ${SCRIPT_DIR}
+# stable attributes
docker run --rm `
- -v ${SCRIPT_DIR}/opentelemetry-specification/semantic_conventions/trace:/source `
+ -v ${SCRIPT_DIR}/semantic-conventions/model:/source `
-v ${SCRIPT_DIR}/templates:/templates `
- -v ${ROOT_DIR}/Trace:/output `
- otel/semconvgen:$GENERATOR_VERSION `
- -f /source code `
- --template /templates/SemanticConventions.cs.j2 `
- --output /output/TraceSemanticConventions.cs `
+ -v ${ROOT_DIR}/SemanticConventions:/output `
+ semconvgen:$GENERATOR_VERSION `
+ --yaml-root /source code `
+ --template /templates/Attributes.cs.j2 `
+ --output /output/Attributes.cs `
--trim-whitespace `
- -D class=TraceSemanticConventions `
- -D schemaUrl=$SCHEMA_URL `
- -D pkg=OpenTelemetry.Trace
+ --file-per-group root_namespace `
+ -D filter=is_stable `
+ -D pkg=OpenTelemetry.SemanticConventions
+#experimental attributes
docker run --rm `
- -v ${SCRIPT_DIR}/opentelemetry-specification/semantic_conventions/resource:/source `
+ -v ${SCRIPT_DIR}/semantic-conventions/model:/source `
-v ${SCRIPT_DIR}/templates:/templates `
- -v ${ROOT_DIR}/Resource:/output `
- otel/semconvgen:$GENERATOR_VERSION `
- -f /source code `
- --template /templates/SemanticConventions.cs.j2 `
- --output /output/ResourceSemanticConventions.cs `
+ -v ${ROOT_DIR}/SemanticConventions/${SPEC_VERSION_ESCAPED}:/output `
+ semconvgen:$GENERATOR_VERSION `
+ --yaml-root /source code `
+ --template /templates/Attributes.cs.j2 `
+ --output /output/Attributes.cs `
--trim-whitespace `
- -D class=ResourceSemanticConventions `
- -D schemaUrl=$SCHEMA_URL `
- -D pkg=OpenTelemetry.Resources
+ --file-per-group root_namespace `
+ -D filter=is_experimental `
+ -D pkg=OpenTelemetry.SemanticConventions.${SPEC_VERSION_ESCAPED}
+
+#experimental metrics
+docker run --rm `
+ -v ${SCRIPT_DIR}/semantic-conventions/model:/source `
+ -v ${SCRIPT_DIR}/templates:/templates `
+ -v ${ROOT_DIR}/SemanticConventions/${SPEC_VERSION_ESCAPED}:/output `
+ semconvgen:$GENERATOR_VERSION `
+ --yaml-root /source code `
+ --template /templates/Metrics.cs.j2 `
+ --output /output/Metrics.cs `
+ --trim-whitespace `
+ --file-per-group root_namespace `
+ -D filter=is_experimental `
+ -D pkg=OpenTelemetry.SemanticConventions.${SPEC_VERSION_ESCAPED}
Set-Location ${ROOT_DIR}
diff --git a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/generate.sh b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/generate.sh
index 76515a80bff..7b7c6fd387a 100644
--- a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/generate.sh
+++ b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/generate.sh
@@ -4,44 +4,61 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
ROOT_DIR="${SCRIPT_DIR}/../../"
# freeze the spec & generator tools versions to make SemanticAttributes generation reproducible
-SPEC_VERSION=v1.13.0
+SPEC_VERSION=v1.23.1
+SPEC_VERSION_ESCAPED=v1_23_1_Experimental
SCHEMA_URL=https://opentelemetry.io/schemas/$SPEC_VERSION
-GENERATOR_VERSION=0.14.0
+GENERATOR_VERSION=0.23.0
cd ${SCRIPT_DIR}
-rm -rf opentelemetry-specification || true
-mkdir opentelemetry-specification
-cd opentelemetry-specification
+rm -rf semantic-conventions || true
+mkdir semantic-conventions
+cd semantic-conventions
git init
-git remote add origin https://github.com/open-telemetry/opentelemetry-specification.git
+git remote add origin https://github.com/open-telemetry/semantic-conventions.git
git fetch origin "$SPEC_VERSION"
git reset --hard FETCH_HEAD
cd ${SCRIPT_DIR}
+# stable attributes
docker run --rm \
- -v ${SCRIPT_DIR}/opentelemetry-specification/semantic_conventions/trace:/source \
+ -v ${SCRIPT_DIR}/semantic_conventions/model:/source \
-v ${SCRIPT_DIR}/templates:/templates \
- -v ${ROOT_DIR}/Trace:/output \
+ -v ${ROOT_DIR}/SemanticConventions:/output \
otel/semconvgen:$GENERATOR_VERSION \
- -f /source code \
- --template /templates/SemanticConventions.cs.j2 \
- --output /output/TraceSemanticConventions.cs \
+ --yaml-root /source code \
+ --template /templates/Attributes.cs.j2 \
+ --output /output/Attributes.cs \
--trim-whitespace \
- -Dclass=TraceSemanticConventions \
- -DschemaUrl=$SCHEMA_URL \
- -Dpkg=OpenTelemetry.Trace
+ --file-per-group root_namespace \
+ -Dfilter=is_stable \
+ -Dpkg=OpenTelemetry.SemanticConventions
+#experimental attributes
docker run --rm \
- -v ${SCRIPT_DIR}/opentelemetry-specification/semantic_conventions/resource:/source \
+ -v ${SCRIPT_DIR}/semantic_conventions/model:/source \
-v ${SCRIPT_DIR}/templates:/templates \
- -v ${ROOT_DIR}/Resource:/output \
+ -v ${ROOT_DIR}/SemanticConventions/${SPEC_VERSION_ESCAPED}:/output \
otel/semconvgen:$GENERATOR_VERSION \
- -f /source code \
- --template /templates/SemanticConventions.cs.j2 \
- --output /output/ResourceSemanticConventions.cs \
+ --yaml-root /source code \
+ --template /templates/Attributes.cs.j2 \
+ --output /output/Attributes.cs \
--trim-whitespace \
- -Dclass=ResourceSemanticConventions \
- -DschemaUrl=$SCHEMA_URL \
- -Dpkg=OpenTelemetry.Resources
+ --file-per-group root_namespace \
+ -Dfilter=is_experimental \
+ -Dpkg=OpenTelemetry.SemanticConventions.${SPEC_VERSION_ESCAPED}
+
+#experimental metrics
+docker run --rm \
+ -v ${SCRIPT_DIR}/semantic-conventions/model:/source \
+ -v ${SCRIPT_DIR}/templates:/templates \
+ -v ${ROOT_DIR}/SemanticConventions/${SPEC_VERSION_ESCAPED}:/output \
+ semconvgen:$GENERATOR_VERSION \
+ --yaml-root /source code \
+ --template /templates/Metrics.cs.j2 \
+ --output /output/Metrics.cs \
+ --trim-whitespace \
+ --file-per-group root_namespace \
+ -D filter=is_experimental \
+ -D pkg=OpenTelemetry.SemanticConventions.${SPEC_VERSION_ESCAPED}
\ No newline at end of file
diff --git a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/semantic-conventions b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/semantic-conventions
new file mode 160000
index 00000000000..73720582560
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/semantic-conventions
@@ -0,0 +1 @@
+Subproject commit 73720582560b5a020df8aee90504fcb411f62713
diff --git a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/SemanticConventions.cs.j2 b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/Attributes.cs.j2
similarity index 57%
rename from src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/SemanticConventions.cs.j2
rename to src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/Attributes.cs.j2
index d64fb46e03d..8eb7d242905 100644
--- a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/SemanticConventions.cs.j2
+++ b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/Attributes.cs.j2
@@ -16,7 +16,10 @@
{%- endif -%}
{%- endmacro -%}
-//
+{%- set filtered_attributes = attributes_and_templates | select(filter) | list %}
+{%- if filtered_attributes | count > 0 %}
+{%- set class_name = root_namespace | to_camelcase(True) ~ "Attributes" %}
+//
// Copyright The OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -39,27 +42,12 @@ using System;
namespace {{pkg | trim}}
{
///
- /// Constants for semantic attribute names outlined by the OpenTelemetry specifications.
- {% if class == "TraceSemanticConventions" %}
- /// .
- {% elif class == "ResourceSemanticConventions" %}
- /// .
- {% endif %}
+ /// Describes semantic conventions for attributes in the {{root_namespace}} namespace.
///
- ///
- /// Schema and specification version: {{schemaUrl}}.
- ///
- public static class {{class}}
+ public static class {{class_name}}
{
-{% if class == "TraceSemanticConventions" %}
- ///
- /// Attribute for db.instance.
- ///
- public const string AttributeDbInstance = "db.instance";
+{%- for attribute in filtered_attributes %}
-{% endif %}
-{% for attribute in attributes if attribute.is_local and not attribute.ref %}
- {% if not loop.first %}{{"\n"}}{% endif %}
///
/// {{format_xml_doc(attribute.brief | render_markdown(code="{0}", paragraph="{0}"))}}
///
@@ -68,30 +56,16 @@ namespace {{pkg | trim}}
/// {{format_remarks(attribute.note | to_doc_brief | escape | render_markdown(code="{0}", paragraph="{0}"))}}.
///
{% endif %}
- {% if attribute.deprecated %}
+ {% if attribute | is_deprecated %}
[Obsolete("{{attribute.deprecated | to_doc_brief}}")]
{% endif %}
- public const string Attribute{{attribute.fqn | replace("-","_") | to_camelcase(True)}} = "{{attribute.fqn}}";
-{% endfor %}
-{% for semconv in semconvs.values() | unique(attribute="prefix") %}
- {% if semconv.prefix %}
-
- ///
- /// Prefix for '{{semconv.semconv_id}}'.
- ///
- public static readonly string Prefix{{semconv.semconv_id | replace("-","_") | to_camelcase(True)}} = "{{semconv.prefix}}";
- {% endif %}
-{% endfor %}
-{% for semconv in semconvs.values() %}
- {% if semconv.GROUP_TYPE_NAME == 'event' %}
-
- ///
- /// Event name for '{{semconv.semconv_id}}'.
- ///
- public static readonly string Event{{semconv.semconv_id | replace("-","_") | to_camelcase(True)}} = "{{semconv.name}}";
+ {% if attribute | is_template %}
+ public const string {{attribute.fqn | to_camelcase(True)}}Template = "{{attribute.fqn}}";
+ {% else %}
+ public const string {{attribute.fqn | to_camelcase(True)}} = "{{attribute.fqn}}";
{% endif %}
{% endfor %}
-{% for attribute in attributes if attribute.is_local and not attribute.ref %}
+{%- for attribute in filtered_attributes %}
{% if attribute.is_enum %}
{% set class_name = attribute.fqn | to_camelcase(True) ~ "Values" %}
{% set type = attribute.attr_type.enum_type %}
@@ -106,11 +80,10 @@ namespace {{pkg | trim}}
/// {{format_xml_doc(member.brief | render_markdown(code="{0}", paragraph="{0}"))}}
///
public const {{ type }} {{ member.member_id | to_camelcase(True) }} = {{ print_value(type, member.value) }};
- {% if not loop.last %}{{"\n"}}{% endif %}
{% endfor %}
}
{% endif %}
{% endfor %}
}
}
-
+{%- endif %}
diff --git a/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/Metrics.cs.j2 b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/Metrics.cs.j2
new file mode 100644
index 00000000000..e456f2ab876
--- /dev/null
+++ b/src/OpenTelemetry.SemanticConventions/scripts/semantic-conventions/templates/Metrics.cs.j2
@@ -0,0 +1,95 @@
+{%- macro format_remarks(text) -%}
+{%- set notes = '\n /// '.join(text.splitlines()).encode('ascii', 'xmlcharrefreplace').decode() -%}
+{{notes}}
+{%- endmacro -%}
+
+{%- macro format_xml_doc(text) -%}
+{%- set escaped = text.encode('ascii', 'xmlcharrefreplace').decode() -%}
+ {%- if not escaped.endswith('.')-%}
+ {{escaped + '.'}}
+ {%- else -%}
+ {{escaped}}
+ {%- endif -%}
+{%- endmacro -%}
+{%- macro to_dotnet_instrument_type(instrument) -%}
+ {# value type is not supported yet - https://github.com/open-telemetry/semantic-conventions/issues/591 #}
+ {# including only to demonstrate what's possible #}
+ {%- if instrument == "counter" -%}
+ Counter
+ {%- elif instrument == "histogram" -%}
+ Histogram
+ {%- elif instrument == "updowncounter" -%}
+ UpDownCounter
+ {%- elif instrument == "gauge" -%}
+ ObservableGauge
+ {%- endif -%}
+{%- endmacro %}
+{%- macro to_dotnet_instrument_factory(instrument) -%}
+ {%- if instrument == "counter" -%}
+ CreateCounter
+ {%- elif instrument == "histogram" -%}
+ CreateHistogram
+ {%- elif instrument == "updowncounter" -%}
+ CreateUpDownCounter
+ {%- elif instrument == "gauge" -%}
+ CreateObservableGauge
+ {%- endif -%}
+{%- endmacro %}
+{%- set filtered_metrics = metrics | select(filter) | list %}
+{%- if filtered_metrics | count > 0 %}
+{%- set class_name = root_namespace | to_camelcase(True) ~ "Metrics" %}
+//
+// Copyright The OpenTelemetry Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// This file has been auto generated from buildscripts/semantic-conventions{{template}}
+
+using System.Diagnostics.Metrics;
+
+namespace {{pkg | trim}}
+{
+ ///
+ /// Describes semantic conventions for metrics in the {{root_namespace}} namespace.
+ ///
+ public static class {{ class_name }} {
+ {%- for metric in filtered_metrics %}
+
+ ///
+ /// Creates {{metric.metric_name}} instrument.
+ /// {{format_xml_doc(metric.brief | render_markdown(code="{0}", paragraph="{0}"))}}
+ ///
+ {% if metric.note %}
+ ///
+ /// {{format_remarks(metric.note | to_doc_brief | escape | render_markdown(code="{0}", paragraph="{0}"))}}.
+ ///
+ {% endif %}
+ {% if metric | is_deprecated %}
+ [Obsolete("{{metric.deprecated | to_doc_brief}}")]
+ {% endif %}
+ {% if metric.instrument == "gauge" %}
+ public static {{ to_dotnet_instrument_type(metric.instrument) }} Create{{metric.metric_name | to_camelcase(True)}}(Meter meter, Func> observe)
+ {
+ return meter.{{to_dotnet_instrument_factory(metric.instrument)}}("{{ metric.metric_name }}", observe, "{{ metric.unit }}", "{{ metric.brief }}");
+ }
+ {% else %}
+ public static {{ to_dotnet_instrument_type(metric.instrument) }} Create{{metric.metric_name | to_camelcase(True)}}(Meter meter)
+ {
+ return meter.{{to_dotnet_instrument_factory(metric.instrument)}}("{{ metric.metric_name }}", "{{ metric.unit }}", "{{ metric.brief }}");
+ }
+ {% endif %}
+ {% endfor %}
+ }
+}
+{%endif%}
\ No newline at end of file