// This protocol buffer definition is directly pulled from Prometheus' remote write
// specification. This specification allows us to read any "prom-like" metric offloading
// systems, spiritually similar to how we support telegraf.
//
// Spec and details (there are nuances) can be found https://prometheus.io/docs/specs/remote_write_spec/

syntax = "proto3";

// This source path keeps Python protoc output under nominal.protos while
// preserving the existing proto package.
// buf:lint:ignore PACKAGE_VERSION_SUFFIX
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
package io.nominal.scout.api.proto;

option java_multiple_files = true;
option java_package = "io.nominal.scout.api.proto";

message WriteRequest {
  repeated TimeSeries timeseries = 1;

  // Cortex uses this field to determine the source of the write request.
  // We reserve it to avoid any compatibility issues.
  reserved 2;

  // Prometheus uses this field to send metadata, but this is
  // omitted from v1 of the spec as it is experimental.
  reserved 3;
}

message TimeSeries {
  repeated Label labels = 1;
  repeated Sample samples = 2;
}

message Label {
  string name = 1;
  string value = 2;
}

message Sample {
  double value = 1;
  int64 timestamp = 2;
}
