Skip to content
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@ The full list of changes can be found in the compare view for the respective rel

- profiles: rename line -> lines and sample -> samples since they are repeated fields. [#712](https://github.com/open-telemetry/opentelemetry-proto/pull/712)

### Changed

- all: drop attribute values restrictions. [#707](https://github.com/open-telemetry/opentelemetry-proto/pull/707)<br>
⚠️ **IMPORTANT**: OTLP consumers are expected to accept attribute values that were previously considered invalid.
All attributes can now contain:
- empty values,
- bytes values,
- array values different than array of string values, bool values, int values, double values,
- kvlist values.

### Removed

- profiles: remove aggregation temporality enum and field. [#710](https://github.com/open-telemetry/opentelemetry-proto/pull/710)
Expand Down
3 changes: 3 additions & 0 deletions opentelemetry/proto/common/v1/common.proto
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,10 @@ message ArrayValue {
message KeyValueList {
// A collection of key/value pairs of key-value pairs. The list may be empty (may
// contain 0 elements).
//
// The keys MUST be unique (it is not allowed to have more than one
// value with the same key).
// The behavior of software that receives duplicated keys can be unpredictable.
repeated KeyValue values = 1;
}

Expand All @@ -76,6 +78,7 @@ message InstrumentationScope {
// Additional attributes that describe the scope. [Optional].
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
// The behavior of software that receives duplicated keys can be unpredictable.
repeated KeyValue attributes = 3;
uint32 dropped_attributes_count = 4;
}
Expand Down
1 change: 1 addition & 0 deletions opentelemetry/proto/logs/v1/logs.proto
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ message LogRecord {
// Additional attributes that describe the specific event occurrence. [Optional].
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 6;
uint32 dropped_attributes_count = 7;

Expand Down
45 changes: 5 additions & 40 deletions opentelemetry/proto/metrics/v1/metrics.proto
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ message Metric {
// for lossless roundtrip translation to / from another data model.
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue metadata = 12;
}

Expand Down Expand Up @@ -377,16 +378,7 @@ message NumberDataPoint {
// where this point belongs. The list may be empty (may contain 0 elements).
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 7;

// StartTimeUnixNano is optional but strongly encouraged, see the
Expand Down Expand Up @@ -435,16 +427,7 @@ message HistogramDataPoint {
// where this point belongs. The list may be empty (may contain 0 elements).
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 9;

// StartTimeUnixNano is optional but strongly encouraged, see the
Expand Down Expand Up @@ -529,16 +512,7 @@ message ExponentialHistogramDataPoint {
// where this point belongs. The list may be empty (may contain 0 elements).
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 1;

// StartTimeUnixNano is optional but strongly encouraged, see the
Expand Down Expand Up @@ -655,16 +629,7 @@ message SummaryDataPoint {
// where this point belongs. The list may be empty (may contain 0 elements).
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 7;

// StartTimeUnixNano is optional but strongly encouraged, see the
Expand Down
10 changes: 0 additions & 10 deletions opentelemetry/proto/profiles/v1development/profiles.proto
Original file line number Diff line number Diff line change
Expand Up @@ -129,16 +129,6 @@ message ProfilesDictionary {
// "/http/server_latency": 300
// "abc.com/myattribute": true
// "abc.com/score": 10.239
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
repeated KeyValueAndUnit attribute_table = 6;

// Stacks referenced by samples via Sample.stack_index.
Expand Down
11 changes: 1 addition & 10 deletions opentelemetry/proto/resource/v1/resource.proto
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,7 @@ message Resource {
// Set of attributes that describe the resource.
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 1;

// dropped_attributes_count is the number of dropped attributes. If the value is 0, then
Expand Down
34 changes: 4 additions & 30 deletions opentelemetry/proto/trace/v1/trace.proto
Original file line number Diff line number Diff line change
Expand Up @@ -208,16 +208,7 @@ message Span {
//
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 9;

// dropped_attributes_count is the number of attributes that were discarded. Attributes
Expand All @@ -238,16 +229,7 @@ message Span {
// attributes is a collection of attribute key/value pairs on the event.
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 3;

// dropped_attributes_count is the number of dropped attributes. If the value is 0,
Expand Down Expand Up @@ -278,18 +260,10 @@ message Span {
string trace_state = 3;

// attributes is a collection of attribute key/value pairs on the link.
//
// Attribute keys MUST be unique (it is not allowed to have more than one
// attribute with the same key).
//
// The attribute values SHOULD NOT contain empty values.
// The attribute values SHOULD NOT contain bytes values.
// The attribute values SHOULD NOT contain array values different than array of string values, bool values, int values,
// double values.
// The attribute values SHOULD NOT contain kvlist values.
// The behavior of software that receives attributes containing such values can be unpredictable.
// These restrictions can change in a minor release.
// The restrictions take origin from the OpenTelemetry specification:
// https://github.com/open-telemetry/opentelemetry-specification/blob/v1.47.0/specification/common/README.md#attribute.
// The behavior of software that receives duplicated keys can be unpredictable.
repeated opentelemetry.proto.common.v1.KeyValue attributes = 4;

// dropped_attributes_count is the number of dropped attributes. If the value is 0,
Expand Down