syntax = “proto3”; package event_store.client.streams; option java_package = “com.eventstore.dbclient.proto.streams”;
import “shared.proto”;
service Streams {
rpc Read (ReadReq) returns (stream ReadResp); rpc Append (stream AppendReq) returns (AppendResp); rpc Delete (DeleteReq) returns (DeleteResp); rpc Tombstone (TombstoneReq) returns (TombstoneResp);
}
message ReadReq {
Options options = 1; message Options { oneof stream_option { StreamOptions stream = 1; AllOptions all = 2; } ReadDirection read_direction = 3; bool resolve_links = 4; oneof count_option { uint64 count = 5; SubscriptionOptions subscription = 6; } oneof filter_option { FilterOptions filter = 7; event_store.client.shared.Empty no_filter = 8; } UUIDOption uuid_option = 9; enum ReadDirection { Forwards = 0; Backwards = 1; } message StreamOptions { event_store.client.shared.StreamIdentifier stream_identifier = 1; oneof revision_option { uint64 revision = 2; event_store.client.shared.Empty start = 3; event_store.client.shared.Empty end = 4; } } message AllOptions { oneof all_option { Position position = 1; event_store.client.shared.Empty start = 2; event_store.client.shared.Empty end = 3; } } message SubscriptionOptions { } message Position { uint64 commit_position = 1; uint64 prepare_position = 2; } message FilterOptions { oneof filter { Expression stream_identifier = 1; Expression event_type = 2; } oneof window { uint32 max = 3; event_store.client.shared.Empty count = 4; } uint32 checkpointIntervalMultiplier = 5; message Expression { string regex = 1; repeated string prefix = 2; } } message UUIDOption { oneof content { event_store.client.shared.Empty structured = 1; event_store.client.shared.Empty string = 2; } } }
}
message ReadResp {
oneof content { ReadEvent event = 1; SubscriptionConfirmation confirmation = 2; Checkpoint checkpoint = 3; StreamNotFound stream_not_found = 4; } message ReadEvent { RecordedEvent event = 1; RecordedEvent link = 2; oneof position { uint64 commit_position = 3; event_store.client.shared.Empty no_position = 4; } message RecordedEvent { event_store.client.shared.UUID id = 1; event_store.client.shared.StreamIdentifier stream_identifier = 2; uint64 stream_revision = 3; uint64 prepare_position = 4; uint64 commit_position = 5; map<string, string> metadata = 6; bytes custom_metadata = 7; bytes data = 8; } } message SubscriptionConfirmation { string subscription_id = 1; } message Checkpoint { uint64 commit_position = 1; uint64 prepare_position = 2; } message StreamNotFound { event_store.client.shared.StreamIdentifier stream_identifier = 1; }
}
message AppendReq {
oneof content { Options options = 1; ProposedMessage proposed_message = 2; } message Options { event_store.client.shared.StreamIdentifier stream_identifier = 1; oneof expected_stream_revision { uint64 revision = 2; event_store.client.shared.Empty no_stream = 3; event_store.client.shared.Empty any = 4; event_store.client.shared.Empty stream_exists = 5; } } message ProposedMessage { event_store.client.shared.UUID id = 1; map<string, string> metadata = 2; bytes custom_metadata = 3; bytes data = 4; }
}
message AppendResp {
oneof result { Success success = 1; WrongExpectedVersion wrong_expected_version = 2; } message Position { uint64 commit_position = 1; uint64 prepare_position = 2; } message Success { oneof current_revision_option { uint64 current_revision = 1; event_store.client.shared.Empty no_stream = 2; } oneof position_option { Position position = 3; event_store.client.shared.Empty no_position = 4; } } message WrongExpectedVersion { oneof current_revision_option_20_6_0 { uint64 current_revision_20_6_0 = 1; event_store.client.shared.Empty no_stream_20_6_0 = 2; } oneof expected_revision_option_20_6_0 { uint64 expected_revision_20_6_0 = 3; event_store.client.shared.Empty any_20_6_0 = 4; event_store.client.shared.Empty stream_exists_20_6_0 = 5; } oneof current_revision_option { uint64 current_revision = 6; event_store.client.shared.Empty current_no_stream = 7; } oneof expected_revision_option { uint64 expected_revision = 8; event_store.client.shared.Empty expected_any = 9; event_store.client.shared.Empty expected_stream_exists = 10; event_store.client.shared.Empty expected_no_stream = 11; } }
}
message DeleteReq {
Options options = 1; message Options { event_store.client.shared.StreamIdentifier stream_identifier = 1; oneof expected_stream_revision { uint64 revision = 2; event_store.client.shared.Empty no_stream = 3; event_store.client.shared.Empty any = 4; event_store.client.shared.Empty stream_exists = 5; } }
}
message DeleteResp {
oneof position_option { Position position = 1; event_store.client.shared.Empty no_position = 2; } message Position { uint64 commit_position = 1; uint64 prepare_position = 2; }
}
message TombstoneReq {
Options options = 1; message Options { event_store.client.shared.StreamIdentifier stream_identifier = 1; oneof expected_stream_revision { uint64 revision = 2; event_store.client.shared.Empty no_stream = 3; event_store.client.shared.Empty any = 4; event_store.client.shared.Empty stream_exists = 5; } }
}
message TombstoneResp {
oneof position_option { Position position = 1; event_store.client.shared.Empty no_position = 2; } message Position { uint64 commit_position = 1; uint64 prepare_position = 2; }
}