syntax = "proto3";
package eventbus.v1;
option java_package = "com.salesforce.eventbus.protobuf";
service PubSub {
rpc GetTopic(TopicRequest) returns (TopicInfo);
rpc GetSchema(SchemaRequest) returns (SchemaInfo);
rpc Subscribe(stream FetchRequest) returns (stream FetchResponse);
rpc Publish(PublishRequest) returns (PublishResponse);
rpc PublishStream(stream PublishRequest) returns (stream PublishResponse);
}
message TopicRequest {
string topic_name = 1;
}
message TopicInfo {
string topic_name = 1;
string topic_uri = 2;
bool can_publish = 3;
bool can_subscribe = 4;
string schema_id = 5;
}
message SchemaRequest {
string schema_id = 1;
}
message SchemaInfo {
string schema_json = 1;
string schema_id = 2;
}
enum ReplayPreset {
LATEST = 0;
EARLIEST = 1;
CUSTOM = 2;
}
message FetchRequest {
string topic_name = 1;
ReplayPreset replay_preset = 2;
bytes replay_id = 3;
int32 num_requested = 4;
optional string auth_refresh = 5;
}
message FetchResponse {
string topic_name = 1;
bytes latest_replay_id = 2;
repeated ConsumerEvent events = 3;
int32 pending_num_requested = 4;
optional string rpc_id = 5;
}
message ConsumerEvent {
EventHeader event = 1;
bytes payload = 2;
}
message EventHeader {
bytes replay_id = 1;
string producer_partition_key = 2;
map<string, AttributeValue> headers = 3;
string schema_id = 4;
}
message AttributeValue {
oneof value {
string string_value = 1;
bytes bytes_value = 2;
}
}
message ProducerEvent {
string schema_id = 1;
bytes payload = 2;
}
message PublishRequest {
string topic_name = 1;
repeated ProducerEvent events = 2;
}
message PublishResult {
bytes replay_id = 1;
PubSubError error = 2;
}
message PublishResponse {
string topic_name = 1;
repeated PublishResult results = 2;
optional string rpc_id = 3;
}
message PubSubError {
int32 code = 1;
string msg = 2;
optional string key = 3;
}