syntax = "proto3";

// source: https://raw.githubusercontent.com/grafana/loki/main/pkg/push/push.proto
// Licensed under the Apache License, Version 2.0 (the "License");
// https://github.com/grafana/loki/blob/main/pkg/push/LICENSE

package logproto;

import "gogoproto/gogo.proto";
import "google/protobuf/timestamp.proto";

option go_package = "github.com/VictoriaMetrics/VictoriaMetrics/app/vlinsert/loki";

message PushRequest {
  repeated StreamAdapter streams = 1 [
    (gogoproto.jsontag) = "streams",
    (gogoproto.customtype) = "Stream"
  ];
}

message StreamAdapter {
  string labels = 1 [(gogoproto.jsontag) = "labels"];
  repeated EntryAdapter entries = 2 [
    (gogoproto.nullable) = false,
    (gogoproto.jsontag) = "entries"
  ];
  // hash contains the original hash of the stream.
  uint64 hash = 3 [(gogoproto.jsontag) = "-"];
}

message EntryAdapter {
  google.protobuf.Timestamp timestamp = 1 [
    (gogoproto.stdtime) = true,
    (gogoproto.nullable) = false,
    (gogoproto.jsontag) = "ts"
  ];
  string line = 2 [(gogoproto.jsontag) = "line"];
}