syntax = "proto3"; package event; option go_package = "./proto;event"; import "google/protobuf/struct.proto"; service Event { rpc Publish(PublishRequest) returns (PublishResponse) {} rpc Consume(ConsumeRequest) returns (stream ConsumeResponse) {} rpc Read(ReadRequest) returns (ReadResponse) {} } message Ev { // event id string id = 1; // event timestamp string timestamp = 2; // event message google.protobuf.Struct message = 3; } // Publish a event to the event stream. message PublishRequest { // The topic to publish to string topic = 1; // The json message to publish google.protobuf.Struct message = 4; } message PublishResponse {} // Consume events from a given topic. message ConsumeRequest { // The topic to subscribe to string topic = 1; // Optional group for the subscription string group = 2; // Optional offset to read from e.g "2006-01-02T15:04:05.999Z07:00" string offset = 3; } // A blocking event will be returned in response. message ConsumeResponse { // The topic subscribed to string topic = 1; // Unique message id string id = 2; // Timestamp of publishing string timestamp = 3; // The next json message on the topic google.protobuf.Struct message = 4; } // Read stored events message ReadRequest { // topic to read from string topic = 1; // number of events to read; default 25 int32 limit = 2; // offset for the events; default 0 int32 offset = 3; } message ReadResponse { // the events repeated Ev events = 1; }