// encoding: utf-8 // This file is distributed under New Relic's license terms. // See github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.

syntax = “proto3”;

package com.newrelic.trace.v1;

service IngestService {

// Accepts a stream of Span messages, and returns an irregular stream of
// RecordStatus messages.
rpc RecordSpan(stream Span) returns (stream RecordStatus) {}

// Accepts a stream of SpanBatch messages, and returns an irregular
// stream of RecordStatus messages. This endpoint can be used to improve
// throughput when Span messages are small
rpc RecordSpanBatch(stream SpanBatch) returns (stream RecordStatus) {}

}

message SpanBatch {

repeated Span spans = 1;

}

message Span {

string trace_id = 1;
map<string, AttributeValue> intrinsics = 2;
map<string, AttributeValue> user_attributes = 3;
map<string, AttributeValue> agent_attributes = 4;

}

message AttributeValue {

oneof value {
  string string_value = 1;
  bool bool_value = 2;
  int64 int_value = 3;
  double double_value = 4;
}

}

message RecordStatus {

uint64 messages_seen = 1;

}