diff --git a/CHANGELOG.md b/CHANGELOG.md index 651f261c12a..ecc426f24c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,8 @@ release. ### OpenTelemetry Protocol +- Clarify that lowerCamelCase field names MUST be used for OTLP/JSON + ([#2829](https://github.com/open-telemetry/opentelemetry-specification/pull/2829)) - Add user agent to OTLP exporter specification ([#2684](https://github.com/open-telemetry/opentelemetry-specification/pull/2684)) - Prohibit usage of enum value name strings in OTLP/JSON diff --git a/specification/protocol/otlp.md b/specification/protocol/otlp.md index 75f6fd6f754..158e54c26fe 100644 --- a/specification/protocol/otlp.md +++ b/specification/protocol/otlp.md @@ -424,6 +424,13 @@ for mapping between Protobuf and JSON, with the following deviations from that m This aligns with the behavior of the Binary Protobuf unmarshaler and ensures that adding new fields to OTLP messages does not break existing receivers. +- The keys of JSON objects are field names converted to lowerCamelCase. Original + field names are not valid to use a keys of JSON objects. + For example this is a valid JSON representation of a Resource: + `{ "attributes": {...}, "droppedAttributesCount": 123 }`, and this is NOT a valid + representation: + `{ "attributes": {...}, "dropped_attributes_count": 123 }`. + Note that according to [Protobuf specs]( https://developers.google.com/protocol-buffers/docs/proto3#json) 64-bit integer numbers in JSON-encoded payloads are encoded as decimal strings, and either