syntax = “proto3”; package event_store.client.persistent_subscriptions; option java_package = “com.eventstore.dbclient.proto.persistentsubscriptions”;
import “shared.proto”;
service PersistentSubscriptions {
rpc Create (CreateReq) returns (CreateResp); rpc Update (UpdateReq) returns (UpdateResp); rpc Delete (DeleteReq) returns (DeleteResp); rpc Read (stream ReadReq) returns (stream ReadResp);
}
message ReadReq {
oneof content { Options options = 1; Ack ack = 2; Nack nack = 3; } message Options { event_store.client.shared.StreamIdentifier stream_identifier = 1; string group_name = 2; int32 buffer_size = 3; UUIDOption uuid_option = 4; message UUIDOption { oneof content { event_store.client.shared.Empty structured = 1; event_store.client.shared.Empty string = 2; } } } message Ack { bytes id = 1; repeated event_store.client.shared.UUID ids = 2; } message Nack { bytes id = 1; repeated event_store.client.shared.UUID ids = 2; Action action = 3; string reason = 4; enum Action { Unknown = 0; Park = 1; Retry = 2; Skip = 3; Stop = 4; } }
}
message ReadResp {
oneof content { ReadEvent event = 1; SubscriptionConfirmation subscription_confirmation = 2; } message ReadEvent { RecordedEvent event = 1; RecordedEvent link = 2; oneof position { uint64 commit_position = 3; event_store.client.shared.Empty no_position = 4; } oneof count { int32 retry_count = 5; event_store.client.shared.Empty no_retry_count = 6; } 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 CreateReq {
Options options = 1; message Options { event_store.client.shared.StreamIdentifier stream_identifier = 1; string group_name = 2; Settings settings = 3; } message Settings { bool resolve_links = 1; uint64 revision = 2; bool extra_statistics = 3; int32 max_retry_count = 5; int32 min_checkpoint_count = 7; int32 max_checkpoint_count = 8; int32 max_subscriber_count = 9; int32 live_buffer_size = 10; int32 read_batch_size = 11; int32 history_buffer_size = 12; ConsumerStrategy named_consumer_strategy = 13; oneof message_timeout { int64 message_timeout_ticks = 4; int32 message_timeout_ms = 14; } oneof checkpoint_after { int64 checkpoint_after_ticks = 6; int32 checkpoint_after_ms = 15; } } enum ConsumerStrategy { DispatchToSingle = 0; RoundRobin = 1; Pinned = 2; }
}
message CreateResp { }
message UpdateReq {
Options options = 1; message Options { event_store.client.shared.StreamIdentifier stream_identifier = 1; string group_name = 2; Settings settings = 3; } message Settings { bool resolve_links = 1; uint64 revision = 2; bool extra_statistics = 3; int32 max_retry_count = 5; int32 min_checkpoint_count = 7; int32 max_checkpoint_count = 8; int32 max_subscriber_count = 9; int32 live_buffer_size = 10; int32 read_batch_size = 11; int32 history_buffer_size = 12; ConsumerStrategy named_consumer_strategy = 13; oneof message_timeout { int64 message_timeout_ticks = 4; int32 message_timeout_ms = 14; } oneof checkpoint_after { int64 checkpoint_after_ticks = 6; int32 checkpoint_after_ms = 15; } } enum ConsumerStrategy { DispatchToSingle = 0; RoundRobin = 1; Pinned = 2; }
}
message UpdateResp { }
message DeleteReq {
Options options = 1; message Options { event_store.client.shared.StreamIdentifier stream_identifier = 1; string group_name = 2; }
}
message DeleteResp { }