syntax = "proto3";

package containerd.services.events.ttrpc.v1;

import weak "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto";
import weak "gogoproto/gogo.proto";
import "google/protobuf/any.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/timestamp.proto";

option go_package = "github.com/containerd/containerd/api/services/ttrpc/events/v1;events";

service Events {
	// Forward sends an event that has already been packaged into an envelope
	// with a timestamp and namespace.
	//
	// This is useful if earlier timestamping is required or when forwarding on
	// behalf of another component, namespace or publisher.
	rpc Forward(ForwardRequest) returns (google.protobuf.Empty);
}

message ForwardRequest {
	Envelope envelope = 1;
}

message Envelope {
	option (containerd.plugin.fieldpath) = true;
	google.protobuf.Timestamp timestamp = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
	string namespace = 2;
	string topic = 3;
	google.protobuf.Any event = 4;
}
