// <copyright file="TraceSemanticConventions.cs" company="OpenTelemetry Authors">
// 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.
// </copyright>

// <auto-generated> This file has been auto generated from buildscripts/semantic-conventions/templates/SemanticConventions.cs.j2</auto-generated>

using System;

namespace OpenTelemetry.Trace
{
    /// <summary>
    /// Constants for semantic attribute names outlined by the OpenTelemetry specifications.
    /// <see href="https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/README.md"/>.
    /// </summary>
    /// <remarks>
    /// Schema and specification version: https://opentelemetry.io/schemas/v1.13.0.
    /// </remarks>
    public static class TraceSemanticConventions
    {
        /// <summary>
        /// Attribute for db.instance.
        /// </summary>
        public const string AttributeDbInstance = "db.instance";

        /// <summary>
        /// The full invoked ARN as provided on the <c>Context</c> passed to the function (<c>Lambda-Runtime-Invoked-Function-Arn</c> header on the <c>/runtime/invocation/next</c> applicable).
        /// </summary>
        /// <remarks>
        /// This may be different from <c>faas.id</c> if an alias is involved.
        /// </remarks>
        public const string AttributeAwsLambdaInvokedArn = "aws.lambda.invoked_arn";

        /// <summary>
        /// The <a href="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#id">event_id</a> uniquely identifies the event.
        /// </summary>
        public const string AttributeCloudeventsEventId = "cloudevents.event_id";

        /// <summary>
        /// The <a href="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#source-1">source</a> identifies the context in which an event happened.
        /// </summary>
        public const string AttributeCloudeventsEventSource = "cloudevents.event_source";

        /// <summary>
        /// The <a href="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#specversion">version of the CloudEvents specification</a> which the event uses.
        /// </summary>
        public const string AttributeCloudeventsEventSpecVersion = "cloudevents.event_spec_version";

        /// <summary>
        /// The <a href="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#type">event_type</a> contains a value describing the type of event related to the originating occurrence.
        /// </summary>
        public const string AttributeCloudeventsEventType = "cloudevents.event_type";

        /// <summary>
        /// The <a href="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#subject">subject</a> of the event in the context of the event producer (identified by source).
        /// </summary>
        public const string AttributeCloudeventsEventSubject = "cloudevents.event_subject";

        /// <summary>
        /// Parent-child Reference type.
        /// </summary>
        /// <remarks>
        /// The causal relationship between a child Span and a parent Span.
        /// </remarks>
        public const string AttributeOpentracingRefType = "opentracing.ref_type";

        /// <summary>
        /// An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.
        /// </summary>
        public const string AttributeDbSystem = "db.system";

        /// <summary>
        /// The connection string used to connect to the database. It is recommended to remove embedded credentials.
        /// </summary>
        public const string AttributeDbConnectionString = "db.connection_string";

        /// <summary>
        /// Username for accessing the database.
        /// </summary>
        public const string AttributeDbUser = "db.user";

        /// <summary>
        /// The fully-qualified class name of the <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/">Java Database Connectivity (JDBC)</a> driver used to connect.
        /// </summary>
        public const string AttributeDbJdbcDriverClassname = "db.jdbc.driver_classname";

        /// <summary>
        /// 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).
        /// </summary>
        /// <remarks>
        /// In some SQL databases, the database name to be used is called &amp;#34;schema name&amp;#34;. 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).
        /// </remarks>
        public const string AttributeDbName = "db.name";

        /// <summary>
        /// The database statement being executed.
        /// </summary>
        /// <remarks>
        /// The value may be sanitized to exclude sensitive information.
        /// </remarks>
        public const string AttributeDbStatement = "db.statement";

        /// <summary>
        /// The name of the operation being executed, e.g. the <a href="https://docs.mongodb.com/manual/reference/command/#database-operations">MongoDB command name</a> such as <c>findAndModify</c>, or the SQL keyword.
        /// </summary>
        /// <remarks>
        /// When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of <c>db.statement</c> 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.
        /// </remarks>
        public const string AttributeDbOperation = "db.operation";

        /// <summary>
        /// The Microsoft SQL Server <a href="https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15">instance name</a> connecting to. This name is used to determine the port of a named instance.
        /// </summary>
        /// <remarks>
        /// If setting a <c>db.mssql.instance_name</c>, <c>net.peer.port</c> is no longer required (but still recommended if non-standard).
        /// </remarks>
        public const string AttributeDbMssqlInstanceName = "db.mssql.instance_name";

        /// <summary>
        /// The fetch size used for paging, i.e. how many rows will be returned at once.
        /// </summary>
        public const string AttributeDbCassandraPageSize = "db.cassandra.page_size";

        /// <summary>
        /// The consistency level of the query. Based on consistency values from <a href="https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html">CQL</a>.
        /// </summary>
        public const string AttributeDbCassandraConsistencyLevel = "db.cassandra.consistency_level";

        /// <summary>
        /// The name of the primary table that the operation is acting upon, including the keyspace name (if applicable).
        /// </summary>
        /// <remarks>
        /// This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of <c>db.statement</c> 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.
        /// </remarks>
        public const string AttributeDbCassandraTable = "db.cassandra.table";

        /// <summary>
        /// Whether or not the query is idempotent.
        /// </summary>
        public const string AttributeDbCassandraIdempotence = "db.cassandra.idempotence";

        /// <summary>
        /// The number of times a query was speculatively executed. Not set or <c>0</c> if the query was not executed speculatively.
        /// </summary>
        public const string AttributeDbCassandraSpeculativeExecutionCount = "db.cassandra.speculative_execution_count";

        /// <summary>
        /// The ID of the coordinating node for a query.
        /// </summary>
        public const string AttributeDbCassandraCoordinatorId = "db.cassandra.coordinator.id";

        /// <summary>
        /// The data center of the coordinating node for a query.
        /// </summary>
        public const string AttributeDbCassandraCoordinatorDc = "db.cassandra.coordinator.dc";

        /// <summary>
        /// The index of the database being accessed as used in the <a href="https://redis.io/commands/select"><c>SELECT</c> command</a>, provided as an integer. To be used instead of the generic <c>db.name</c> attribute.
        /// </summary>
        public const string AttributeDbRedisDatabaseIndex = "db.redis.database_index";

        /// <summary>
        /// The collection being accessed within the database stated in <c>db.name</c>.
        /// </summary>
        public const string AttributeDbMongodbCollection = "db.mongodb.collection";

        /// <summary>
        /// The name of the primary table that the operation is acting upon, including the database name (if applicable).
        /// </summary>
        /// <remarks>
        /// It is not recommended to attempt any client-side parsing of <c>db.statement</c> 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.
        /// </remarks>
        public const string AttributeDbSqlTable = "db.sql.table";

        /// <summary>
        /// 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.
        /// </summary>
        public const string AttributeExceptionType = "exception.type";

        /// <summary>
        /// The exception message.
        /// </summary>
        public const string AttributeExceptionMessage = "exception.message";

        /// <summary>
        /// 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.
        /// </summary>
        public const string AttributeExceptionStacktrace = "exception.stacktrace";

        /// <summary>
        /// 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.
        /// </summary>
        /// <remarks>
        /// 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 &amp;#34;in flight&amp;#34;.
        /// This may be actually &amp;#34;in flight&amp;#34; in some languages (e.g. if the exception
        /// is passed to a Context manager&amp;#39;s <c>__exit__</c> 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 <a href="#recording-an-exception">example above</a>.It follows that an exception may still escape the scope of the span
        /// even if the <c>exception.escaped</c> 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.
        /// </remarks>
        public const string AttributeExceptionEscaped = "exception.escaped";

        /// <summary>
        /// Type of the trigger which caused this function execution.
        /// </summary>
        /// <remarks>
        /// For the server/consumer span on the incoming side,
        /// <c>faas.trigger</c> MUST be set.Clients invoking FaaS instances usually cannot set <c>faas.trigger</c>,
        /// since they would typically need to look in the payload to determine
        /// the event type. If clients set it, it should be the same as the
        /// trigger that corresponding incoming would have (i.e., this has
        /// nothing to do with the underlying transport used to make the API
        /// call to invoke the lambda, which is often HTTP).
        /// </remarks>
        public const string AttributeFaasTrigger = "faas.trigger";

        /// <summary>
        /// The execution ID of the current function execution.
        /// </summary>
        public const string AttributeFaasExecution = "faas.execution";

        /// <summary>
        /// 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.
        /// </summary>
        public const string AttributeFaasDocumentCollection = "faas.document.collection";

        /// <summary>
        /// Describes the type of the operation that was performed on the data.
        /// </summary>
        public const string AttributeFaasDocumentOperation = "faas.document.operation";

        /// <summary>
        /// A string containing the time when the data was accessed in the <a href="https://www.iso.org/iso-8601-date-and-time-format.html">ISO 8601</a> format expressed in <a href="https://www.w3.org/TR/NOTE-datetime">UTC</a>.
        /// </summary>
        public const string AttributeFaasDocumentTime = "faas.document.time";

        /// <summary>
        /// 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.
        /// </summary>
        public const string AttributeFaasDocumentName = "faas.document.name";

        /// <summary>
        /// A string containing the function invocation time in the <a href="https://www.iso.org/iso-8601-date-and-time-format.html">ISO 8601</a> format expressed in <a href="https://www.w3.org/TR/NOTE-datetime">UTC</a>.
        /// </summary>
        public const string AttributeFaasTime = "faas.time";

        /// <summary>
        /// A string containing the schedule period as <a href="https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm">Cron Expression</a>.
        /// </summary>
        public const string AttributeFaasCron = "faas.cron";

        /// <summary>
        /// A boolean that is true if the serverless function is executed for the first time (aka cold-start).
        /// </summary>
        public const string AttributeFaasColdstart = "faas.coldstart";

        /// <summary>
        /// The name of the invoked function.
        /// </summary>
        /// <remarks>
        /// SHOULD be equal to the <c>faas.name</c> resource attribute of the invoked function.
        /// </remarks>
        public const string AttributeFaasInvokedName = "faas.invoked_name";

        /// <summary>
        /// The cloud provider of the invoked function.
        /// </summary>
        /// <remarks>
        /// SHOULD be equal to the <c>cloud.provider</c> resource attribute of the invoked function.
        /// </remarks>
        public const string AttributeFaasInvokedProvider = "faas.invoked_provider";

        /// <summary>
        /// The cloud region of the invoked function.
        /// </summary>
        /// <remarks>
        /// SHOULD be equal to the <c>cloud.region</c> resource attribute of the invoked function.
        /// </remarks>
        public const string AttributeFaasInvokedRegion = "faas.invoked_region";

        /// <summary>
        /// Transport protocol used. See note below.
        /// </summary>
        public const string AttributeNetTransport = "net.transport";

        /// <summary>
        /// Application layer protocol used. The value SHOULD be normalized to lowercase.
        /// </summary>
        public const string AttributeNetAppProtocolName = "net.app.protocol.name";

        /// <summary>
        /// Version of the application layer protocol used. See note below.
        /// </summary>
        /// <remarks>
        /// <c>net.app.protocol.version</c> refers to the version of the protocol used and might be different from the protocol client&amp;#39;s version. If the HTTP client used has a version of <c>0.27.2</c>, but sends HTTP version <c>1.1</c>, this attribute should be set to <c>1.1</c>.
        /// </remarks>
        public const string AttributeNetAppProtocolVersion = "net.app.protocol.version";

        /// <summary>
        /// Remote socket peer name.
        /// </summary>
        public const string AttributeNetSockPeerName = "net.sock.peer.name";

        /// <summary>
        /// Remote socket peer address: IPv4 or IPv6 for internet protocols, path for local communication, <a href="https://man7.org/linux/man-pages/man7/address_families.7.html">etc</a>.
        /// </summary>
        public const string AttributeNetSockPeerAddr = "net.sock.peer.addr";

        /// <summary>
        /// Remote socket peer port.
        /// </summary>
        public const string AttributeNetSockPeerPort = "net.sock.peer.port";

        /// <summary>
        /// Protocol <a href="https://man7.org/linux/man-pages/man7/address_families.7.html">address family</a> which is used for communication.
        /// </summary>
        public const string AttributeNetSockFamily = "net.sock.family";

        /// <summary>
        /// Logical remote hostname, see note below.
        /// </summary>
        /// <remarks>
        /// <c>net.peer.name</c> SHOULD NOT be set if capturing it would require an extra DNS lookup.
        /// </remarks>
        public const string AttributeNetPeerName = "net.peer.name";

        /// <summary>
        /// Logical remote port number.
        /// </summary>
        public const string AttributeNetPeerPort = "net.peer.port";

        /// <summary>
        /// Logical local hostname or similar, see note below.
        /// </summary>
        public const string AttributeNetHostName = "net.host.name";

        /// <summary>
        /// Logical local port number, preferably the one that the peer used to connect.
        /// </summary>
        public const string AttributeNetHostPort = "net.host.port";

        /// <summary>
        /// Local socket address. Useful in case of a multi-IP host.
        /// </summary>
        public const string AttributeNetSockHostAddr = "net.sock.host.addr";

        /// <summary>
        /// Local socket port number.
        /// </summary>
        public const string AttributeNetSockHostPort = "net.sock.host.port";

        /// <summary>
        /// The internet connection type currently being used by the host.
        /// </summary>
        public const string AttributeNetHostConnectionType = "net.host.connection.type";

        /// <summary>
        /// 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.
        /// </summary>
        public const string AttributeNetHostConnectionSubtype = "net.host.connection.subtype";

        /// <summary>
        /// The name of the mobile carrier.
        /// </summary>
        public const string AttributeNetHostCarrierName = "net.host.carrier.name";

        /// <summary>
        /// The mobile carrier country code.
        /// </summary>
        public const string AttributeNetHostCarrierMcc = "net.host.carrier.mcc";

        /// <summary>
        /// The mobile carrier network code.
        /// </summary>
        public const string AttributeNetHostCarrierMnc = "net.host.carrier.mnc";

        /// <summary>
        /// The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.
        /// </summary>
        public const string AttributeNetHostCarrierIcc = "net.host.carrier.icc";

        /// <summary>
        /// The <a href="../../resource/semantic_conventions/README.md#service"><c>service.name</c></a> of the remote service. SHOULD be equal to the actual <c>service.name</c> resource attribute of the remote service if any.
        /// </summary>
        public const string AttributePeerService = "peer.service";

        /// <summary>
        /// Username or client_id extracted from the access token or <a href="https://tools.ietf.org/html/rfc7235#section-4.2">Authorization</a> header in the inbound request from outside the system.
        /// </summary>
        public const string AttributeEnduserId = "enduser.id";

        /// <summary>
        /// Actual/assumed role the client is making the request under extracted from token or application security context.
        /// </summary>
        public const string AttributeEnduserRole = "enduser.role";

        /// <summary>
        /// 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 <a href="https://tools.ietf.org/html/rfc6749#section-3.3">OAuth 2.0 Access Token</a> or an attribute value in a <a href="http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html">SAML 2.0 Assertion</a>.
        /// </summary>
        public const string AttributeEnduserScope = "enduser.scope";

        /// <summary>
        /// Current &quot;managed&quot; thread ID (as opposed to OS thread ID).
        /// </summary>
        public const string AttributeThreadId = "thread.id";

        /// <summary>
        /// Current thread name.
        /// </summary>
        public const string AttributeThreadName = "thread.name";

        /// <summary>
        /// The method or function name, or equivalent (usually rightmost part of the code unit's name).
        /// </summary>
        public const string AttributeCodeFunction = "code.function";

        /// <summary>
        /// The &quot;namespace&quot; within which <c>code.function</c> is defined. Usually the qualified class or module name, such that <c>code.namespace</c> + some separator + <c>code.function</c> form a unique identifier for the code unit.
        /// </summary>
        public const string AttributeCodeNamespace = "code.namespace";

        /// <summary>
        /// The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).
        /// </summary>
        public const string AttributeCodeFilepath = "code.filepath";

        /// <summary>
        /// The line number in <c>code.filepath</c> best representing the operation. It SHOULD point within the code unit named in <c>code.function</c>.
        /// </summary>
        public const string AttributeCodeLineno = "code.lineno";

        /// <summary>
        /// HTTP request method.
        /// </summary>
        public const string AttributeHttpMethod = "http.method";

        /// <summary>
        /// <a href="https://tools.ietf.org/html/rfc7231#section-6">HTTP response status code</a>.
        /// </summary>
        public const string AttributeHttpStatusCode = "http.status_code";

        /// <summary>
        /// Kind of HTTP protocol used.
        /// </summary>
        /// <remarks>
        /// If <c>net.transport</c> is not specified, it can be assumed to be <c>IP.TCP</c> except if <c>http.flavor</c> is <c>QUIC</c>, in which case <c>IP.UDP</c> is assumed.
        /// </remarks>
        public const string AttributeHttpFlavor = "http.flavor";

        /// <summary>
        /// Value of the <a href="https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent">HTTP User-Agent</a> header sent by the client.
        /// </summary>
        public const string AttributeHttpUserAgent = "http.user_agent";

        /// <summary>
        /// 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 <a href="https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length">Content-Length</a> header. For requests using transport encoding, this should be the compressed size.
        /// </summary>
        public const string AttributeHttpRequestContentLength = "http.request_content_length";

        /// <summary>
        /// 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 <a href="https://www.rfc-editor.org/rfc/rfc9110.html#field.content-length">Content-Length</a> header. For requests using transport encoding, this should be the compressed size.
        /// </summary>
        public const string AttributeHttpResponseContentLength = "http.response_content_length";

        /// <summary>
        /// Full HTTP request URL in the form <c>scheme://host[:port]/path?query[#fragment]</c>. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.
        /// </summary>
        /// <remarks>
        /// <c>http.url</c> MUST NOT contain credentials passed via URL in form of <c>https://username:password@www.example.com/</c>. In such case the attribute&amp;#39;s value should be <c>https://www.example.com/</c>.
        /// </remarks>
        public const string AttributeHttpUrl = "http.url";

        /// <summary>
        /// The ordinal number of request re-sending attempt.
        /// </summary>
        public const string AttributeHttpRetryCount = "http.retry_count";

        /// <summary>
        /// The URI scheme identifying the used protocol.
        /// </summary>
        public const string AttributeHttpScheme = "http.scheme";

        /// <summary>
        /// The full request target as passed in a HTTP request line or equivalent.
        /// </summary>
        public const string AttributeHttpTarget = "http.target";

        /// <summary>
        /// The matched route (path template in the format used by the respective server framework). See note below.
        /// </summary>
        /// <remarks>
        /// &amp;#39;http.route&amp;#39; 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.
        /// </remarks>
        public const string AttributeHttpRoute = "http.route";

        /// <summary>
        /// The IP address of the original client behind all proxies, if known (e.g. from <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For">X-Forwarded-For</a>).
        /// </summary>
        /// <remarks>
        /// This is not necessarily the same as <c>net.sock.peer.addr</c>, which would
        /// identify the network-level peer, which may be a proxy.This attribute should be set when a source of information different
        /// from the one used for <c>net.sock.peer.addr</c>, is available even if that other
        /// source just confirms the same value as <c>net.sock.peer.addr</c>.
        /// Rationale: For <c>net.sock.peer.addr</c>, one typically does not know if it
        /// comes from a proxy, reverse proxy, or the actual client. Setting
        /// <c>http.client_ip</c> when it&amp;#39;s the same as <c>net.sock.peer.addr</c> means that
        /// one is at least somewhat confident that the address is not that of
        /// the closest proxy.
        /// </remarks>
        public const string AttributeHttpClientIp = "http.client_ip";

        /// <summary>
        /// The keys in the <c>RequestItems</c> object field.
        /// </summary>
        public const string AttributeAwsDynamodbTableNames = "aws.dynamodb.table_names";

        /// <summary>
        /// The JSON-serialized value of each item in the <c>ConsumedCapacity</c> response field.
        /// </summary>
        public const string AttributeAwsDynamodbConsumedCapacity = "aws.dynamodb.consumed_capacity";

        /// <summary>
        /// The JSON-serialized value of the <c>ItemCollectionMetrics</c> response field.
        /// </summary>
        public const string AttributeAwsDynamodbItemCollectionMetrics = "aws.dynamodb.item_collection_metrics";

        /// <summary>
        /// The value of the <c>ProvisionedThroughput.ReadCapacityUnits</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbProvisionedReadCapacity = "aws.dynamodb.provisioned_read_capacity";

        /// <summary>
        /// The value of the <c>ProvisionedThroughput.WriteCapacityUnits</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbProvisionedWriteCapacity = "aws.dynamodb.provisioned_write_capacity";

        /// <summary>
        /// The value of the <c>ConsistentRead</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbConsistentRead = "aws.dynamodb.consistent_read";

        /// <summary>
        /// The value of the <c>ProjectionExpression</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbProjection = "aws.dynamodb.projection";

        /// <summary>
        /// The value of the <c>Limit</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbLimit = "aws.dynamodb.limit";

        /// <summary>
        /// The value of the <c>AttributesToGet</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbAttributesToGet = "aws.dynamodb.attributes_to_get";

        /// <summary>
        /// The value of the <c>IndexName</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbIndexName = "aws.dynamodb.index_name";

        /// <summary>
        /// The value of the <c>Select</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbSelect = "aws.dynamodb.select";

        /// <summary>
        /// The JSON-serialized value of each item of the <c>GlobalSecondaryIndexes</c> request field.
        /// </summary>
        public const string AttributeAwsDynamodbGlobalSecondaryIndexes = "aws.dynamodb.global_secondary_indexes";

        /// <summary>
        /// The JSON-serialized value of each item of the <c>LocalSecondaryIndexes</c> request field.
        /// </summary>
        public const string AttributeAwsDynamodbLocalSecondaryIndexes = "aws.dynamodb.local_secondary_indexes";

        /// <summary>
        /// The value of the <c>ExclusiveStartTableName</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbExclusiveStartTable = "aws.dynamodb.exclusive_start_table";

        /// <summary>
        /// The the number of items in the <c>TableNames</c> response parameter.
        /// </summary>
        public const string AttributeAwsDynamodbTableCount = "aws.dynamodb.table_count";

        /// <summary>
        /// The value of the <c>ScanIndexForward</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbScanForward = "aws.dynamodb.scan_forward";

        /// <summary>
        /// The value of the <c>Segment</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbSegment = "aws.dynamodb.segment";

        /// <summary>
        /// The value of the <c>TotalSegments</c> request parameter.
        /// </summary>
        public const string AttributeAwsDynamodbTotalSegments = "aws.dynamodb.total_segments";

        /// <summary>
        /// The value of the <c>Count</c> response parameter.
        /// </summary>
        public const string AttributeAwsDynamodbCount = "aws.dynamodb.count";

        /// <summary>
        /// The value of the <c>ScannedCount</c> response parameter.
        /// </summary>
        public const string AttributeAwsDynamodbScannedCount = "aws.dynamodb.scanned_count";

        /// <summary>
        /// The JSON-serialized value of each item in the <c>AttributeDefinitions</c> request field.
        /// </summary>
        public const string AttributeAwsDynamodbAttributeDefinitions = "aws.dynamodb.attribute_definitions";

        /// <summary>
        /// The JSON-serialized value of each item in the the <c>GlobalSecondaryIndexUpdates</c> request field.
        /// </summary>
        public const string AttributeAwsDynamodbGlobalSecondaryIndexUpdates = "aws.dynamodb.global_secondary_index_updates";

        /// <summary>
        /// The name of the operation being executed.
        /// </summary>
        public const string AttributeGraphqlOperationName = "graphql.operation.name";

        /// <summary>
        /// The type of the operation being executed.
        /// </summary>
        public const string AttributeGraphqlOperationType = "graphql.operation.type";

        /// <summary>
        /// The GraphQL document being executed.
        /// </summary>
        /// <remarks>
        /// The value may be sanitized to exclude sensitive information.
        /// </remarks>
        public const string AttributeGraphqlDocument = "graphql.document";

        /// <summary>
        /// A string identifying the messaging system.
        /// </summary>
        public const string AttributeMessagingSystem = "messaging.system";

        /// <summary>
        /// The message destination name. This might be equal to the span name but is required nevertheless.
        /// </summary>
        public const string AttributeMessagingDestination = "messaging.destination";

        /// <summary>
        /// The kind of message destination.
        /// </summary>
        public const string AttributeMessagingDestinationKind = "messaging.destination_kind";

        /// <summary>
        /// A boolean that is true if the message destination is temporary.
        /// </summary>
        public const string AttributeMessagingTempDestination = "messaging.temp_destination";

        /// <summary>
        /// The name of the transport protocol.
        /// </summary>
        public const string AttributeMessagingProtocol = "messaging.protocol";

        /// <summary>
        /// The version of the transport protocol.
        /// </summary>
        public const string AttributeMessagingProtocolVersion = "messaging.protocol_version";

        /// <summary>
        /// Connection string.
        /// </summary>
        public const string AttributeMessagingUrl = "messaging.url";

        /// <summary>
        /// A value used by the messaging system as an identifier for the message, represented as a string.
        /// </summary>
        public const string AttributeMessagingMessageId = "messaging.message_id";

        /// <summary>
        /// The <a href="#conversations">conversation ID</a> identifying the conversation to which the message belongs, represented as a string. Sometimes called &quot;Correlation ID&quot;.
        /// </summary>
        public const string AttributeMessagingConversationId = "messaging.conversation_id";

        /// <summary>
        /// The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.
        /// </summary>
        public const string AttributeMessagingMessagePayloadSizeBytes = "messaging.message_payload_size_bytes";

        /// <summary>
        /// The compressed size of the message payload in bytes.
        /// </summary>
        public const string AttributeMessagingMessagePayloadCompressedSizeBytes = "messaging.message_payload_compressed_size_bytes";

        /// <summary>
        /// A string identifying the kind of message consumption as defined in the <a href="#operation-names">Operation names</a> section above. If the operation is &quot;send&quot;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.
        /// </summary>
        public const string AttributeMessagingOperation = "messaging.operation";

        /// <summary>
        /// The identifier for the consumer receiving a message. For Kafka, set it to <c>{messaging.kafka.consumer_group} - {messaging.kafka.client_id}</c>, if both are present, or only <c>messaging.kafka.consumer_group</c>. For brokers, such as RabbitMQ and Artemis, set it to the <c>client_id</c> of the client consuming the message.
        /// </summary>
        public const string AttributeMessagingConsumerId = "messaging.consumer_id";

        /// <summary>
        /// RabbitMQ message routing key.
        /// </summary>
        public const string AttributeMessagingRabbitmqRoutingKey = "messaging.rabbitmq.routing_key";

        /// <summary>
        /// Message keys in Kafka are used for grouping alike messages to ensure they're processed on the same partition. They differ from <c>messaging.message_id</c> in that they're not unique. If the key is <c>null</c>, the attribute MUST NOT be set.
        /// </summary>
        /// <remarks>
        /// If the key type is not string, it&amp;#39;s string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don&amp;#39;t include its value.
        /// </remarks>
        public const string AttributeMessagingKafkaMessageKey = "messaging.kafka.message_key";

        /// <summary>
        /// Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.
        /// </summary>
        public const string AttributeMessagingKafkaConsumerGroup = "messaging.kafka.consumer_group";

        /// <summary>
        /// Client Id for the Consumer or Producer that is handling the message.
        /// </summary>
        public const string AttributeMessagingKafkaClientId = "messaging.kafka.client_id";

        /// <summary>
        /// Partition the message is sent to.
        /// </summary>
        public const string AttributeMessagingKafkaPartition = "messaging.kafka.partition";

        /// <summary>
        /// A boolean that is true if the message is a tombstone.
        /// </summary>
        public const string AttributeMessagingKafkaTombstone = "messaging.kafka.tombstone";

        /// <summary>
        /// Namespace of RocketMQ resources, resources in different namespaces are individual.
        /// </summary>
        public const string AttributeMessagingRocketmqNamespace = "messaging.rocketmq.namespace";

        /// <summary>
        /// Name of the RocketMQ producer/consumer group that is handling the message. The client type is identified by the SpanKind.
        /// </summary>
        public const string AttributeMessagingRocketmqClientGroup = "messaging.rocketmq.client_group";

        /// <summary>
        /// The unique identifier for each client.
        /// </summary>
        public const string AttributeMessagingRocketmqClientId = "messaging.rocketmq.client_id";

        /// <summary>
        /// Type of message.
        /// </summary>
        public const string AttributeMessagingRocketmqMessageType = "messaging.rocketmq.message_type";

        /// <summary>
        /// The secondary classifier of message besides topic.
        /// </summary>
        public const string AttributeMessagingRocketmqMessageTag = "messaging.rocketmq.message_tag";

        /// <summary>
        /// Key(s) of message, another way to mark message besides message id.
        /// </summary>
        public const string AttributeMessagingRocketmqMessageKeys = "messaging.rocketmq.message_keys";

        /// <summary>
        /// Model of message consumption. This only applies to consumer spans.
        /// </summary>
        public const string AttributeMessagingRocketmqConsumptionModel = "messaging.rocketmq.consumption_model";

        /// <summary>
        /// A string identifying the remoting system. See below for a list of well-known identifiers.
        /// </summary>
        public const string AttributeRpcSystem = "rpc.system";

        /// <summary>
        /// The full (logical) name of the service being called, including its package name, if applicable.
        /// </summary>
        /// <remarks>
        /// 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 <c>code.namespace</c> 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).
        /// </remarks>
        public const string AttributeRpcService = "rpc.service";

        /// <summary>
        /// The name of the (logical) method being called, must be equal to the $method part in the span name.
        /// </summary>
        /// <remarks>
        /// 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 <c>code.function</c> 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).
        /// </remarks>
        public const string AttributeRpcMethod = "rpc.method";

        /// <summary>
        /// The <a href="https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md">numeric status code</a> of the gRPC request.
        /// </summary>
        public const string AttributeRpcGrpcStatusCode = "rpc.grpc.status_code";

        /// <summary>
        /// Protocol version as in <c>jsonrpc</c> property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.
        /// </summary>
        public const string AttributeRpcJsonrpcVersion = "rpc.jsonrpc.version";

        /// <summary>
        /// <c>id</c> property of request or response. Since protocol allows id to be int, string, <c>null</c> or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of <c>null</c> value. Omit entirely if this is a notification.
        /// </summary>
        public const string AttributeRpcJsonrpcRequestId = "rpc.jsonrpc.request_id";

        /// <summary>
        /// <c>error.code</c> property of response if it is an error response.
        /// </summary>
        public const string AttributeRpcJsonrpcErrorCode = "rpc.jsonrpc.error_code";

        /// <summary>
        /// <c>error.message</c> property of response if it is an error response.
        /// </summary>
        public const string AttributeRpcJsonrpcErrorMessage = "rpc.jsonrpc.error_message";

        /// <summary>
        /// Whether this is a received or sent message.
        /// </summary>
        public const string AttributeMessageType = "message.type";

        /// <summary>
        /// MUST be calculated as two different counters starting from <c>1</c> one for sent messages and one for received message.
        /// </summary>
        /// <remarks>
        /// This way we guarantee that the values will be consistent between different implementations.
        /// </remarks>
        public const string AttributeMessageId = "message.id";

        /// <summary>
        /// Compressed size of the message in bytes.
        /// </summary>
        public const string AttributeMessageCompressedSize = "message.compressed_size";

        /// <summary>
        /// Uncompressed size of the message in bytes.
        /// </summary>
        public const string AttributeMessageUncompressedSize = "message.uncompressed_size";

        /// <summary>
        /// Prefix for 'aws.lambda'.
        /// </summary>
        public static readonly string PrefixAwsLambda = "aws.lambda";

        /// <summary>
        /// Prefix for 'cloudevents'.
        /// </summary>
        public static readonly string PrefixCloudevents = "cloudevents";

        /// <summary>
        /// Prefix for 'opentracing'.
        /// </summary>
        public static readonly string PrefixOpentracing = "opentracing";

        /// <summary>
        /// Prefix for 'db'.
        /// </summary>
        public static readonly string PrefixDb = "db";

        /// <summary>
        /// Prefix for 'db.mssql'.
        /// </summary>
        public static readonly string PrefixDbMssql = "db.mssql";

        /// <summary>
        /// Prefix for 'db.cassandra'.
        /// </summary>
        public static readonly string PrefixDbCassandra = "db.cassandra";

        /// <summary>
        /// Prefix for 'db.redis'.
        /// </summary>
        public static readonly string PrefixDbRedis = "db.redis";

        /// <summary>
        /// Prefix for 'db.mongodb'.
        /// </summary>
        public static readonly string PrefixDbMongodb = "db.mongodb";

        /// <summary>
        /// Prefix for 'db.sql'.
        /// </summary>
        public static readonly string PrefixDbSql = "db.sql";

        /// <summary>
        /// Prefix for 'exception'.
        /// </summary>
        public static readonly string PrefixException = "exception";

        /// <summary>
        /// Prefix for 'faas_span'.
        /// </summary>
        public static readonly string PrefixFaasSpan = "faas";

        /// <summary>
        /// Prefix for 'faas_span.datasource'.
        /// </summary>
        public static readonly string PrefixFaasSpanDatasource = "faas.document";

        /// <summary>
        /// Prefix for 'network'.
        /// </summary>
        public static readonly string PrefixNetwork = "net";

        /// <summary>
        /// Prefix for 'peer'.
        /// </summary>
        public static readonly string PrefixPeer = "peer";

        /// <summary>
        /// Prefix for 'identity'.
        /// </summary>
        public static readonly string PrefixIdentity = "enduser";

        /// <summary>
        /// Prefix for 'thread'.
        /// </summary>
        public static readonly string PrefixThread = "thread";

        /// <summary>
        /// Prefix for 'code'.
        /// </summary>
        public static readonly string PrefixCode = "code";

        /// <summary>
        /// Prefix for 'http'.
        /// </summary>
        public static readonly string PrefixHttp = "http";

        /// <summary>
        /// Prefix for 'aws'.
        /// </summary>
        public static readonly string PrefixAws = "aws";

        /// <summary>
        /// Prefix for 'dynamodb.shared'.
        /// </summary>
        public static readonly string PrefixDynamodbShared = "aws.dynamodb";

        /// <summary>
        /// Prefix for 'graphql'.
        /// </summary>
        public static readonly string PrefixGraphql = "graphql";

        /// <summary>
        /// Prefix for 'messaging'.
        /// </summary>
        public static readonly string PrefixMessaging = "messaging";

        /// <summary>
        /// Prefix for 'messaging.rabbitmq'.
        /// </summary>
        public static readonly string PrefixMessagingRabbitmq = "messaging.rabbitmq";

        /// <summary>
        /// Prefix for 'messaging.kafka'.
        /// </summary>
        public static readonly string PrefixMessagingKafka = "messaging.kafka";

        /// <summary>
        /// Prefix for 'messaging.rocketmq'.
        /// </summary>
        public static readonly string PrefixMessagingRocketmq = "messaging.rocketmq";

        /// <summary>
        /// Prefix for 'rpc'.
        /// </summary>
        public static readonly string PrefixRpc = "rpc";

        /// <summary>
        /// Prefix for 'rpc.grpc'.
        /// </summary>
        public static readonly string PrefixRpcGrpc = "rpc.grpc";

        /// <summary>
        /// Prefix for 'rpc.jsonrpc'.
        /// </summary>
        public static readonly string PrefixRpcJsonrpc = "rpc.jsonrpc";

        /// <summary>
        /// Prefix for 'rpc.message'.
        /// </summary>
        public static readonly string PrefixRpcMessage = "message";

        /// <summary>
        /// Event name for 'exception'.
        /// </summary>
        public static readonly string EventException = "exception";

        /// <summary>
        /// Event name for 'rpc.message'.
        /// </summary>
        public static readonly string EventRpcMessage = "message";

        /// <summary>
        /// Parent-child Reference type.
        /// </summary>
        public static class OpentracingRefTypeValues
        {
            /// <summary>
            /// The parent Span depends on the child Span in some capacity.
            /// </summary>
            public const string ChildOf = "child_of";

            /// <summary>
            /// The parent Span does not depend in any way on the result of the child Span.
            /// </summary>
            public const string FollowsFrom = "follows_from";
        }

        /// <summary>
        /// An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.
        /// </summary>
        public static class DbSystemValues
        {
            /// <summary>
            /// Some other SQL database. Fallback only. See notes.
            /// </summary>
            public const string OtherSql = "other_sql";

            /// <summary>
            /// Microsoft SQL Server.
            /// </summary>
            public const string Mssql = "mssql";

            /// <summary>
            /// MySQL.
            /// </summary>
            public const string Mysql = "mysql";

            /// <summary>
            /// Oracle Database.
            /// </summary>
            public const string Oracle = "oracle";

            /// <summary>
            /// IBM Db2.
            /// </summary>
            public const string Db2 = "db2";

            /// <summary>
            /// PostgreSQL.
            /// </summary>
            public const string Postgresql = "postgresql";

            /// <summary>
            /// Amazon Redshift.
            /// </summary>
            public const string Redshift = "redshift";

            /// <summary>
            /// Apache Hive.
            /// </summary>
            public const string Hive = "hive";

            /// <summary>
            /// Cloudscape.
            /// </summary>
            public const string Cloudscape = "cloudscape";

            /// <summary>
            /// HyperSQL DataBase.
            /// </summary>
            public const string Hsqldb = "hsqldb";

            /// <summary>
            /// Progress Database.
            /// </summary>
            public const string Progress = "progress";

            /// <summary>
            /// SAP MaxDB.
            /// </summary>
            public const string Maxdb = "maxdb";

            /// <summary>
            /// SAP HANA.
            /// </summary>
            public const string Hanadb = "hanadb";

            /// <summary>
            /// Ingres.
            /// </summary>
            public const string Ingres = "ingres";

            /// <summary>
            /// FirstSQL.
            /// </summary>
            public const string Firstsql = "firstsql";

            /// <summary>
            /// EnterpriseDB.
            /// </summary>
            public const string Edb = "edb";

            /// <summary>
            /// InterSystems Cach&#233;.
            /// </summary>
            public const string Cache = "cache";

            /// <summary>
            /// Adabas (Adaptable Database System).
            /// </summary>
            public const string Adabas = "adabas";

            /// <summary>
            /// Firebird.
            /// </summary>
            public const string Firebird = "firebird";

            /// <summary>
            /// Apache Derby.
            /// </summary>
            public const string Derby = "derby";

            /// <summary>
            /// FileMaker.
            /// </summary>
            public const string Filemaker = "filemaker";

            /// <summary>
            /// Informix.
            /// </summary>
            public const string Informix = "informix";

            /// <summary>
            /// InstantDB.
            /// </summary>
            public const string Instantdb = "instantdb";

            /// <summary>
            /// InterBase.
            /// </summary>
            public const string Interbase = "interbase";

            /// <summary>
            /// MariaDB.
            /// </summary>
            public const string Mariadb = "mariadb";

            /// <summary>
            /// Netezza.
            /// </summary>
            public const string Netezza = "netezza";

            /// <summary>
            /// Pervasive PSQL.
            /// </summary>
            public const string Pervasive = "pervasive";

            /// <summary>
            /// PointBase.
            /// </summary>
            public const string Pointbase = "pointbase";

            /// <summary>
            /// SQLite.
            /// </summary>
            public const string Sqlite = "sqlite";

            /// <summary>
            /// Sybase.
            /// </summary>
            public const string Sybase = "sybase";

            /// <summary>
            /// Teradata.
            /// </summary>
            public const string Teradata = "teradata";

            /// <summary>
            /// Vertica.
            /// </summary>
            public const string Vertica = "vertica";

            /// <summary>
            /// H2.
            /// </summary>
            public const string H2 = "h2";

            /// <summary>
            /// ColdFusion IMQ.
            /// </summary>
            public const string Coldfusion = "coldfusion";

            /// <summary>
            /// Apache Cassandra.
            /// </summary>
            public const string Cassandra = "cassandra";

            /// <summary>
            /// Apache HBase.
            /// </summary>
            public const string Hbase = "hbase";

            /// <summary>
            /// MongoDB.
            /// </summary>
            public const string Mongodb = "mongodb";

            /// <summary>
            /// Redis.
            /// </summary>
            public const string Redis = "redis";

            /// <summary>
            /// Couchbase.
            /// </summary>
            public const string Couchbase = "couchbase";

            /// <summary>
            /// CouchDB.
            /// </summary>
            public const string Couchdb = "couchdb";

            /// <summary>
            /// Microsoft Azure Cosmos DB.
            /// </summary>
            public const string Cosmosdb = "cosmosdb";

            /// <summary>
            /// Amazon DynamoDB.
            /// </summary>
            public const string Dynamodb = "dynamodb";

            /// <summary>
            /// Neo4j.
            /// </summary>
            public const string Neo4j = "neo4j";

            /// <summary>
            /// Apache Geode.
            /// </summary>
            public const string Geode = "geode";

            /// <summary>
            /// Elasticsearch.
            /// </summary>
            public const string Elasticsearch = "elasticsearch";

            /// <summary>
            /// Memcached.
            /// </summary>
            public const string Memcached = "memcached";

            /// <summary>
            /// CockroachDB.
            /// </summary>
            public const string Cockroachdb = "cockroachdb";

            /// <summary>
            /// OpenSearch.
            /// </summary>
            public const string Opensearch = "opensearch";
        }

        /// <summary>
        /// The consistency level of the query. Based on consistency values from <a href="https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html">CQL</a>.
        /// </summary>
        public static class DbCassandraConsistencyLevelValues
        {
            /// <summary>
            /// all.
            /// </summary>
            public const string All = "all";

            /// <summary>
            /// each_quorum.
            /// </summary>
            public const string EachQuorum = "each_quorum";

            /// <summary>
            /// quorum.
            /// </summary>
            public const string Quorum = "quorum";

            /// <summary>
            /// local_quorum.
            /// </summary>
            public const string LocalQuorum = "local_quorum";

            /// <summary>
            /// one.
            /// </summary>
            public const string One = "one";

            /// <summary>
            /// two.
            /// </summary>
            public const string Two = "two";

            /// <summary>
            /// three.
            /// </summary>
            public const string Three = "three";

            /// <summary>
            /// local_one.
            /// </summary>
            public const string LocalOne = "local_one";

            /// <summary>
            /// any.
            /// </summary>
            public const string Any = "any";

            /// <summary>
            /// serial.
            /// </summary>
            public const string Serial = "serial";

            /// <summary>
            /// local_serial.
            /// </summary>
            public const string LocalSerial = "local_serial";
        }

        /// <summary>
        /// Type of the trigger which caused this function execution.
        /// </summary>
        public static class FaasTriggerValues
        {
            /// <summary>
            /// A response to some data source operation such as a database or filesystem read/write.
            /// </summary>
            public const string Datasource = "datasource";

            /// <summary>
            /// To provide an answer to an inbound HTTP request.
            /// </summary>
            public const string Http = "http";

            /// <summary>
            /// A function is set to be executed when messages are sent to a messaging system.
            /// </summary>
            public const string Pubsub = "pubsub";

            /// <summary>
            /// A function is scheduled to be executed regularly.
            /// </summary>
            public const string Timer = "timer";

            /// <summary>
            /// If none of the others apply.
            /// </summary>
            public const string Other = "other";
        }

        /// <summary>
        /// Describes the type of the operation that was performed on the data.
        /// </summary>
        public static class FaasDocumentOperationValues
        {
            /// <summary>
            /// When a new object is created.
            /// </summary>
            public const string Insert = "insert";

            /// <summary>
            /// When an object is modified.
            /// </summary>
            public const string Edit = "edit";

            /// <summary>
            /// When an object is deleted.
            /// </summary>
            public const string Delete = "delete";
        }

        /// <summary>
        /// The cloud provider of the invoked function.
        /// </summary>
        public static class FaasInvokedProviderValues
        {
            /// <summary>
            /// Alibaba Cloud.
            /// </summary>
            public const string AlibabaCloud = "alibaba_cloud";

            /// <summary>
            /// Amazon Web Services.
            /// </summary>
            public const string Aws = "aws";

            /// <summary>
            /// Microsoft Azure.
            /// </summary>
            public const string Azure = "azure";

            /// <summary>
            /// Google Cloud Platform.
            /// </summary>
            public const string Gcp = "gcp";

            /// <summary>
            /// Tencent Cloud.
            /// </summary>
            public const string TencentCloud = "tencent_cloud";
        }

        /// <summary>
        /// Transport protocol used. See note below.
        /// </summary>
        public static class NetTransportValues
        {
            /// <summary>
            /// ip_tcp.
            /// </summary>
            public const string IpTcp = "ip_tcp";

            /// <summary>
            /// ip_udp.
            /// </summary>
            public const string IpUdp = "ip_udp";

            /// <summary>
            /// Named or anonymous pipe. See note below.
            /// </summary>
            public const string Pipe = "pipe";

            /// <summary>
            /// In-process communication.
            /// </summary>
            public const string Inproc = "inproc";

            /// <summary>
            /// Something else (non IP-based).
            /// </summary>
            public const string Other = "other";
        }

        /// <summary>
        /// Protocol <a href="https://man7.org/linux/man-pages/man7/address_families.7.html">address family</a> which is used for communication.
        /// </summary>
        public static class NetSockFamilyValues
        {
            /// <summary>
            /// IPv4 address.
            /// </summary>
            public const string Inet = "inet";

            /// <summary>
            /// IPv6 address.
            /// </summary>
            public const string Inet6 = "inet6";

            /// <summary>
            /// Unix domain socket path.
            /// </summary>
            public const string Unix = "unix";
        }

        /// <summary>
        /// The internet connection type currently being used by the host.
        /// </summary>
        public static class NetHostConnectionTypeValues
        {
            /// <summary>
            /// wifi.
            /// </summary>
            public const string Wifi = "wifi";

            /// <summary>
            /// wired.
            /// </summary>
            public const string Wired = "wired";

            /// <summary>
            /// cell.
            /// </summary>
            public const string Cell = "cell";

            /// <summary>
            /// unavailable.
            /// </summary>
            public const string Unavailable = "unavailable";

            /// <summary>
            /// unknown.
            /// </summary>
            public const string Unknown = "unknown";
        }

        /// <summary>
        /// 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.
        /// </summary>
        public static class NetHostConnectionSubtypeValues
        {
            /// <summary>
            /// GPRS.
            /// </summary>
            public const string Gprs = "gprs";

            /// <summary>
            /// EDGE.
            /// </summary>
            public const string Edge = "edge";

            /// <summary>
            /// UMTS.
            /// </summary>
            public const string Umts = "umts";

            /// <summary>
            /// CDMA.
            /// </summary>
            public const string Cdma = "cdma";

            /// <summary>
            /// EVDO Rel. 0.
            /// </summary>
            public const string Evdo0 = "evdo_0";

            /// <summary>
            /// EVDO Rev. A.
            /// </summary>
            public const string EvdoA = "evdo_a";

            /// <summary>
            /// CDMA2000 1XRTT.
            /// </summary>
            public const string Cdma20001xrtt = "cdma2000_1xrtt";

            /// <summary>
            /// HSDPA.
            /// </summary>
            public const string Hsdpa = "hsdpa";

            /// <summary>
            /// HSUPA.
            /// </summary>
            public const string Hsupa = "hsupa";

            /// <summary>
            /// HSPA.
            /// </summary>
            public const string Hspa = "hspa";

            /// <summary>
            /// IDEN.
            /// </summary>
            public const string Iden = "iden";

            /// <summary>
            /// EVDO Rev. B.
            /// </summary>
            public const string EvdoB = "evdo_b";

            /// <summary>
            /// LTE.
            /// </summary>
            public const string Lte = "lte";

            /// <summary>
            /// EHRPD.
            /// </summary>
            public const string Ehrpd = "ehrpd";

            /// <summary>
            /// HSPAP.
            /// </summary>
            public const string Hspap = "hspap";

            /// <summary>
            /// GSM.
            /// </summary>
            public const string Gsm = "gsm";

            /// <summary>
            /// TD-SCDMA.
            /// </summary>
            public const string TdScdma = "td_scdma";

            /// <summary>
            /// IWLAN.
            /// </summary>
            public const string Iwlan = "iwlan";

            /// <summary>
            /// 5G NR (New Radio).
            /// </summary>
            public const string Nr = "nr";

            /// <summary>
            /// 5G NRNSA (New Radio Non-Standalone).
            /// </summary>
            public const string Nrnsa = "nrnsa";

            /// <summary>
            /// LTE CA.
            /// </summary>
            public const string LteCa = "lte_ca";
        }

        /// <summary>
        /// Kind of HTTP protocol used.
        /// </summary>
        public static class HttpFlavorValues
        {
            /// <summary>
            /// HTTP/1.0.
            /// </summary>
            public const string Http10 = "1.0";

            /// <summary>
            /// HTTP/1.1.
            /// </summary>
            public const string Http11 = "1.1";

            /// <summary>
            /// HTTP/2.
            /// </summary>
            public const string Http20 = "2.0";

            /// <summary>
            /// HTTP/3.
            /// </summary>
            public const string Http30 = "3.0";

            /// <summary>
            /// SPDY protocol.
            /// </summary>
            public const string Spdy = "SPDY";

            /// <summary>
            /// QUIC protocol.
            /// </summary>
            public const string Quic = "QUIC";
        }

        /// <summary>
        /// The type of the operation being executed.
        /// </summary>
        public static class GraphqlOperationTypeValues
        {
            /// <summary>
            /// GraphQL query.
            /// </summary>
            public const string Query = "query";

            /// <summary>
            /// GraphQL mutation.
            /// </summary>
            public const string Mutation = "mutation";

            /// <summary>
            /// GraphQL subscription.
            /// </summary>
            public const string Subscription = "subscription";
        }

        /// <summary>
        /// The kind of message destination.
        /// </summary>
        public static class MessagingDestinationKindValues
        {
            /// <summary>
            /// A message sent to a queue.
            /// </summary>
            public const string Queue = "queue";

            /// <summary>
            /// A message sent to a topic.
            /// </summary>
            public const string Topic = "topic";
        }

        /// <summary>
        /// A string identifying the kind of message consumption as defined in the <a href="#operation-names">Operation names</a> section above. If the operation is &quot;send&quot;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.
        /// </summary>
        public static class MessagingOperationValues
        {
            /// <summary>
            /// receive.
            /// </summary>
            public const string Receive = "receive";

            /// <summary>
            /// process.
            /// </summary>
            public const string Process = "process";
        }

        /// <summary>
        /// Type of message.
        /// </summary>
        public static class MessagingRocketmqMessageTypeValues
        {
            /// <summary>
            /// Normal message.
            /// </summary>
            public const string Normal = "normal";

            /// <summary>
            /// FIFO message.
            /// </summary>
            public const string Fifo = "fifo";

            /// <summary>
            /// Delay message.
            /// </summary>
            public const string Delay = "delay";

            /// <summary>
            /// Transaction message.
            /// </summary>
            public const string Transaction = "transaction";
        }

        /// <summary>
        /// Model of message consumption. This only applies to consumer spans.
        /// </summary>
        public static class MessagingRocketmqConsumptionModelValues
        {
            /// <summary>
            /// Clustering consumption model.
            /// </summary>
            public const string Clustering = "clustering";

            /// <summary>
            /// Broadcasting consumption model.
            /// </summary>
            public const string Broadcasting = "broadcasting";
        }

        /// <summary>
        /// A string identifying the remoting system. See below for a list of well-known identifiers.
        /// </summary>
        public static class RpcSystemValues
        {
            /// <summary>
            /// gRPC.
            /// </summary>
            public const string Grpc = "grpc";

            /// <summary>
            /// Java RMI.
            /// </summary>
            public const string JavaRmi = "java_rmi";

            /// <summary>
            /// .NET WCF.
            /// </summary>
            public const string DotnetWcf = "dotnet_wcf";

            /// <summary>
            /// Apache Dubbo.
            /// </summary>
            public const string ApacheDubbo = "apache_dubbo";
        }

        /// <summary>
        /// The <a href="https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md">numeric status code</a> of the gRPC request.
        /// </summary>
        public static class RpcGrpcStatusCodeValues
        {
            /// <summary>
            /// OK.
            /// </summary>
            public const int Ok = 0;

            /// <summary>
            /// CANCELLED.
            /// </summary>
            public const int Cancelled = 1;

            /// <summary>
            /// UNKNOWN.
            /// </summary>
            public const int Unknown = 2;

            /// <summary>
            /// INVALID_ARGUMENT.
            /// </summary>
            public const int InvalidArgument = 3;

            /// <summary>
            /// DEADLINE_EXCEEDED.
            /// </summary>
            public const int DeadlineExceeded = 4;

            /// <summary>
            /// NOT_FOUND.
            /// </summary>
            public const int NotFound = 5;

            /// <summary>
            /// ALREADY_EXISTS.
            /// </summary>
            public const int AlreadyExists = 6;

            /// <summary>
            /// PERMISSION_DENIED.
            /// </summary>
            public const int PermissionDenied = 7;

            /// <summary>
            /// RESOURCE_EXHAUSTED.
            /// </summary>
            public const int ResourceExhausted = 8;

            /// <summary>
            /// FAILED_PRECONDITION.
            /// </summary>
            public const int FailedPrecondition = 9;

            /// <summary>
            /// ABORTED.
            /// </summary>
            public const int Aborted = 10;

            /// <summary>
            /// OUT_OF_RANGE.
            /// </summary>
            public const int OutOfRange = 11;

            /// <summary>
            /// UNIMPLEMENTED.
            /// </summary>
            public const int Unimplemented = 12;

            /// <summary>
            /// INTERNAL.
            /// </summary>
            public const int Internal = 13;

            /// <summary>
            /// UNAVAILABLE.
            /// </summary>
            public const int Unavailable = 14;

            /// <summary>
            /// DATA_LOSS.
            /// </summary>
            public const int DataLoss = 15;

            /// <summary>
            /// UNAUTHENTICATED.
            /// </summary>
            public const int Unauthenticated = 16;
        }

        /// <summary>
        /// Whether this is a received or sent message.
        /// </summary>
        public static class MessageTypeValues
        {
            /// <summary>
            /// sent.
            /// </summary>
            public const string Sent = "SENT";

            /// <summary>
            /// received.
            /// </summary>
            public const string Received = "RECEIVED";
        }
    }
}
