Skip to content

Commit e1f57f8

Browse files
committed
SubscribeTopics API
1 parent 7c06766 commit e1f57f8

File tree

1 file changed

+39
-30
lines changed

1 file changed

+39
-30
lines changed

proto/xmtpv4/message_api/message_api.proto

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -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
2860
message SubscribeEnvelopesResponse {
2961
repeated xmtp.xmtpv4.envelopes.OriginatorEnvelope envelopes = 1;
@@ -86,39 +118,16 @@ message GetNewestEnvelopeResponse {
86118
}
87119

88120
service 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

Comments
 (0)