@@ -24,6 +24,38 @@ message SubscribeEnvelopesRequest {
2424 EnvelopesQuery query = 1 ;
2525}
2626
27+ // Request to subscribe to a series of topics, with a separate cursor for each topic
28+ message SubscribeTopicsRequest {
29+ message TopicFilter {
30+ bytes topic = 1 ;
31+ xmtp.xmtpv4.envelopes.Cursor last_seen = 2 ;
32+ }
33+
34+ repeated TopicFilter filters = 1 ;
35+ }
36+
37+ // Response to SubscribeTopics
38+ message SubscribeTopicsResponse {
39+ enum SubscriptionStatus {
40+ SUBSCRIPTION_STATUS_UNSPECIFIED = 0 ;
41+ SUBSCRIPTION_STATUS_STARTED = 1 ;
42+ SUBSCRIPTION_STATUS_CATCH_UP_COMPLETE = 2 ;
43+ }
44+
45+ message StatusUpdate {
46+ SubscriptionStatus status = 1 ;
47+ }
48+
49+ message Envelopes {
50+ repeated xmtp.xmtpv4.envelopes.OriginatorEnvelope envelopes = 1 ;
51+ }
52+
53+ oneof response {
54+ Envelopes envelopes = 1 ;
55+ StatusUpdate status_update = 2 ;
56+ }
57+ }
58+
2759// Streamed response for batch subscribe - can be multiple envelopes at once
2860message SubscribeEnvelopesResponse {
2961 repeated xmtp.xmtpv4.envelopes.OriginatorEnvelope envelopes = 1 ;
@@ -86,39 +118,16 @@ message GetNewestEnvelopeResponse {
86118}
87119
88120service ReplicationApi {
89- rpc SubscribeEnvelopes (SubscribeEnvelopesRequest ) returns (stream SubscribeEnvelopesResponse ) {
90- option (google.api.http ) = {
91- post : "/mls/v2/subscribe-envelopes"
92- body : "*"
93- };
94- }
121+ rpc SubscribeEnvelopes (SubscribeEnvelopesRequest ) returns (stream SubscribeEnvelopesResponse ) {}
95122
96- rpc QueryEnvelopes (QueryEnvelopesRequest ) returns (QueryEnvelopesResponse ) {
97- option (google.api.http ) = {
98- post : "/mls/v2/query-envelopes"
99- body : "*"
100- };
101- }
123+ rpc SubscribeTopicEnvelopes (SubscribeTopicsRequest ) returns (stream SubscribeTopicsResponse ) {}
102124
103- rpc PublishPayerEnvelopes (PublishPayerEnvelopesRequest ) returns (PublishPayerEnvelopesResponse ) {
104- option (google.api.http ) = {
105- post : "/mls/v2/publish-payer-envelopes"
106- body : "*"
107- };
108- }
125+ rpc QueryEnvelopes (QueryEnvelopesRequest ) returns (QueryEnvelopesResponse ) {}
109126
110- rpc GetInboxIds (GetInboxIdsRequest ) returns (GetInboxIdsResponse ) {
111- option (google.api.http ) = {
112- post : "/mls/v2/get-inbox-ids"
113- body : "*"
114- };
115- }
127+ rpc PublishPayerEnvelopes (PublishPayerEnvelopesRequest ) returns (PublishPayerEnvelopesResponse ) {}
128+
129+ rpc GetInboxIds (GetInboxIdsRequest ) returns (GetInboxIdsResponse ) {}
116130
117131 // Get the newest envelope for each topic
118- rpc GetNewestEnvelope (GetNewestEnvelopeRequest ) returns (GetNewestEnvelopeResponse ) {
119- option (google.api.http ) = {
120- post : "/mls/v2/get-newest-envelope"
121- body : "*"
122- };
123- }
132+ rpc GetNewestEnvelope (GetNewestEnvelopeRequest ) returns (GetNewestEnvelopeResponse ) {}
124133}
0 commit comments