// Copyright 2019, 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.

syntax = "proto3";

package opentelemetry.proto.resource.v1;

import "opentelemetry/proto/common/v1/common.proto";

option csharp_namespace = "OpenTelemetry.Proto.Resource.V1";
option java_multiple_files = true;
option java_package = "io.opentelemetry.proto.resource.v1";
option java_outer_classname = "ResourceProto";
option go_package = "go.opentelemetry.io/proto/otlp/resource/v1";

// Resource information.
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.
  repeated opentelemetry.proto.common.v1.KeyValue attributes = 1;

  // dropped_attributes_count is the number of dropped attributes. If the value is 0, then
  // no attributes were dropped.
  uint32 dropped_attributes_count = 2;

  // Set of entities that participate in this Resource.
  //
  // Note: keys in the references MUST exist in attributes of this message.
  //
  // Status: [Development]
  repeated opentelemetry.proto.common.v1.EntityRef entity_refs = 3;
}
