rafael a4b528e5f5
Add searchStarterPacks to appview (#2978)
* Add app.bsky.graph.searchStarterPacks lexicon

* Codegen for app.bsky.graph.searchStarterPacks

* Add app.bsky.unspecced.searchStarterPacksSkeleton

* Gen app.bsky.unspecced.searchStarterPacksSkeleton

* Add SearchStarterPacks rpc to bsky.proto

* Implement searchStarterPacks endpoint

* @atproto/api changeset

* Add starter pack search by term to dataplane
2024-11-18 10:36:39 -03:00

1396 lines
32 KiB
Protocol Buffer
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

syntax = "proto3";
package bsky;
option go_package = "./;bsky";
import "google/protobuf/timestamp.proto";
//
// Read Path
//
message Record {
bytes record = 1;
string cid = 2;
google.protobuf.Timestamp indexed_at = 4;
bool taken_down = 5;
google.protobuf.Timestamp created_at = 6;
google.protobuf.Timestamp sorted_at = 7;
string takedown_ref = 8;
}
message GetBlockRecordsRequest {
repeated string uris = 1;
}
message GetBlockRecordsResponse {
repeated Record records = 1;
}
message GetFeedGeneratorRecordsRequest {
repeated string uris = 1;
}
message GetFeedGeneratorRecordsResponse {
repeated Record records = 1;
}
message GetFollowRecordsRequest {
repeated string uris = 1;
}
message GetFollowRecordsResponse {
repeated Record records = 1;
}
message GetLikeRecordsRequest {
repeated string uris = 1;
}
message GetLikeRecordsResponse {
repeated Record records = 1;
}
message GetListBlockRecordsRequest {
repeated string uris = 1;
}
message GetListBlockRecordsResponse {
repeated Record records = 1;
}
message GetListItemRecordsRequest {
repeated string uris = 1;
}
message GetListItemRecordsResponse {
repeated Record records = 1;
}
message GetListRecordsRequest {
repeated string uris = 1;
}
message GetListRecordsResponse {
repeated Record records = 1;
}
message PostRecordMeta {
bool violates_thread_gate = 1;
bool has_media = 2;
bool is_reply = 3;
bool violates_embedding_rules = 4;
bool has_post_gate = 5;
bool has_thread_gate = 6;
}
message GetPostRecordsRequest {
repeated string uris = 1;
}
message GetPostRecordsResponse {
repeated Record records = 1;
repeated PostRecordMeta meta = 2;
}
message GetProfileRecordsRequest {
repeated string uris = 1;
}
message GetProfileRecordsResponse {
repeated Record records = 1;
}
message GetActorChatDeclarationRecordsRequest {
repeated string uris = 1;
}
message GetActorChatDeclarationRecordsResponse {
repeated Record records = 1;
}
message GetRepostRecordsRequest {
repeated string uris = 1;
}
message GetRepostRecordsResponse {
repeated Record records = 1;
}
message GetThreadGateRecordsRequest {
repeated string uris = 1;
}
message GetThreadGateRecordsResponse {
repeated Record records = 1;
}
message GetPostgateRecordsRequest {
repeated string uris = 1;
}
message GetPostgateRecordsResponse {
repeated Record records = 1;
}
message GetLabelerRecordsRequest {
repeated string uris = 1;
}
message GetLabelerRecordsResponse {
repeated Record records = 1;
}
message GetAllLabelersRequest {}
message GetAllLabelersResponse {
repeated string uris = 1;
repeated Record records = 2;
}
message GetStarterPackRecordsRequest {
repeated string uris = 1;
}
message GetStarterPackRecordsResponse {
repeated Record records = 1;
}
//
// Follows
//
// - Return follow uris where user A follows users B, C, D, …
// - E.g. for viewer state on `getProfiles`
message GetActorFollowsActorsRequest {
string actor_did = 1;
repeated string target_dids = 2;
}
message GetActorFollowsActorsResponse {
repeated string uris = 1;
}
// - Return follow uris of users who follows user A
// - For `getFollowers` list
message GetFollowersRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message FollowInfo {
string uri = 1;
string actor_did = 2;
string subject_did = 3;
}
message GetFollowersResponse {
repeated FollowInfo followers = 1;
string cursor = 2;
}
// - Return follow uris of users A follows
// - For `getFollows` list
message GetFollowsRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetFollowsResponse {
repeated FollowInfo follows = 1;
string cursor = 2;
}
//
// Likes
//
// - return like uris where subject uri is subject A
// - `getLikes` list for a post
message GetLikesBySubjectRequest {
RecordRef subject = 1;
int32 limit = 2;
string cursor = 3;
}
message GetLikesBySubjectResponse {
repeated string uris = 1;
string cursor = 2;
}
message GetLikesBySubjectSortedRequest {
RecordRef subject = 1;
int32 limit = 2;
string cursor = 3;
}
message GetLikesBySubjectSortedResponse {
repeated string uris = 1;
string cursor = 2;
}
message GetQuotesBySubjectSortedRequest {
RecordRef subject = 1;
int32 limit = 2;
string cursor = 3;
}
message GetQuotesBySubjectSortedResponse {
repeated string uris = 1;
string cursor = 2;
}
// - return like uris for user A on subject B, C, D...
// - viewer state on posts
message GetLikesByActorAndSubjectsRequest {
string actor_did = 1;
repeated RecordRef refs = 2;
}
message GetLikesByActorAndSubjectsResponse {
repeated string uris = 1;
}
// - return recent like uris for user A
// - `getActorLikes` list for a user
message GetActorLikesRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message LikeInfo {
string uri = 1;
string subject = 2;
}
message GetActorLikesResponse {
repeated LikeInfo likes = 1;
string cursor = 2;
}
//
// Interactions
//
message GetInteractionCountsRequest {
repeated RecordRef refs = 1;
}
message GetInteractionCountsResponse {
repeated int32 likes = 1;
repeated int32 reposts = 2;
repeated int32 replies = 3;
repeated int32 quotes = 4;
}
message GetCountsForUsersRequest {
repeated string dids = 1;
}
message GetCountsForUsersResponse {
repeated int32 posts = 1;
repeated int32 reposts = 2;
repeated int32 following = 3;
repeated int32 followers = 4;
repeated int32 lists = 5;
repeated int32 feeds = 6;
repeated int32 starter_packs = 7;
}
message GetStarterPackCountsRequest {
repeated RecordRef refs = 1;
}
message GetStarterPackCountsResponse {
repeated int32 joined_week = 1;
repeated int32 joined_all_time = 2;
}
message GetListCountsRequest {
repeated RecordRef refs = 1;
}
message GetListCountsResponse {
repeated int32 list_items = 1;
}
message GetNewUserCountForRangeRequest {
google.protobuf.Timestamp start = 1;
google.protobuf.Timestamp end = 2;
}
message GetNewUserCountForRangeResponse {
int32 count = 1;
}
//
// Reposts
//
// - return repost uris where subject uri is subject A
// - `getReposts` list for a post
message GetRepostsBySubjectRequest {
RecordRef subject = 1;
int32 limit = 2;
string cursor = 3;
}
message GetRepostsBySubjectResponse {
repeated string uris = 1;
string cursor = 2;
}
// - return repost uris for user A on subject B, C, D...
// - viewer state on posts
message GetRepostsByActorAndSubjectsRequest {
string actor_did = 1;
repeated RecordRef refs = 2;
}
message RecordRef {
string uri = 1;
string cid = 2;
}
message GetRepostsByActorAndSubjectsResponse {
repeated string uris = 1;
}
// - return recent repost uris for user A
// - `getActorReposts` list for a user
message GetActorRepostsRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetActorRepostsResponse {
repeated string uris = 1;
string cursor = 2;
}
//
// Profile
//
// - return actor information for dids A, B, C…
// - profile hydration
// - should this include handles? apply repo takedown?
message GetActorsRequest {
repeated string dids = 1;
}
message ActorInfo {
bool exists = 1;
string handle = 2;
Record profile = 3;
bool taken_down = 4;
string takedown_ref = 5;
google.protobuf.Timestamp tombstoned_at = 6;
bool labeler = 7;
string allow_incoming_chats_from = 8;
string upstream_status = 9;
google.protobuf.Timestamp created_at = 10;
bool priority_notifications = 11;
}
message GetActorsResponse {
repeated ActorInfo actors = 1;
}
// - return did for handle A
// - `resolveHandle`
// - answering queries where the query param is a handle
message GetDidsByHandlesRequest {
repeated string handles = 1;
}
message GetDidsByHandlesResponse {
repeated string dids = 1;
}
//
// Relationships
//
// - return relationships between user A and users B, C, D...
// - profile hydration
// - block application
message GetRelationshipsRequest {
string actor_did = 1;
repeated string target_dids = 2;
}
message Relationships {
bool muted = 1;
string muted_by_list = 2;
string blocked_by = 3;
string blocking = 4;
string blocked_by_list = 5;
string blocking_by_list = 6;
string following = 7;
string followed_by = 8;
}
message GetRelationshipsResponse {
repeated Relationships relationships = 1;
}
// - return whether a block (bidrectionally and either direct or through a list) exists between two dids
// - enforcing 3rd party block violations
message RelationshipPair {
string a = 1;
string b = 2;
}
message BlockExistence {
string blocked_by = 1;
string blocking = 2;
string blocked_by_list = 3;
string blocking_by_list = 4;
}
message GetBlockExistenceRequest {
repeated RelationshipPair pairs = 1;
}
message GetBlockExistenceResponse {
repeated bool exists = 1;
repeated BlockExistence blocks = 2;
}
//
// Lists
//
message ListItemInfo {
string uri = 1;
string did = 2;
}
// - Return dids of users in list A
// - E.g. to view items in one of your mute lists
message GetListMembersRequest {
string list_uri = 1;
int32 limit = 2;
string cursor = 3;
}
message GetListMembersResponse {
repeated ListItemInfo listitems = 1;
string cursor = 2;
}
// - Return list uris where user A in list B, C, D…
// - Used in thread reply gates
message GetListMembershipRequest {
string actor_did = 1;
repeated string list_uris = 2;
}
message GetListMembershipResponse {
repeated string listitem_uris = 1;
}
// - Return number of items in list A
// - For aggregate
message GetListCountRequest {
string list_uri = 1;
}
message GetListCountResponse {
int32 count = 1;
}
// - return list of uris of lists created by A
// - `getLists`
message GetActorListsRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetActorListsResponse {
repeated string list_uris = 1;
string cursor = 2;
}
//
// Mutes
//
// - return boolean if user A has muted user B
// - hydrating mute state onto profiles
message GetActorMutesActorRequest {
string actor_did = 1;
string target_did = 2;
}
message GetActorMutesActorResponse {
bool muted = 1;
}
// - return list of user dids of users who A mutes
// - `getMutes`
message GetMutesRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetMutesResponse {
repeated string dids = 1;
string cursor = 2;
}
//
// Mutelists
//
// - return list uri of *any* list through which user A has muted user B
// - hydrating mute state onto profiles
// - note: we only need *one* uri even if a user is muted by multiple lists
message GetActorMutesActorViaListRequest {
string actor_did = 1;
string target_did = 2;
}
message GetActorMutesActorViaListResponse {
string list_uri = 1;
}
// - return boolean if actor A has subscribed to mutelist B
// - list view hydration
message GetMutelistSubscriptionRequest {
string actor_did = 1;
string list_uri = 2;
}
message GetMutelistSubscriptionResponse {
bool subscribed = 1;
}
// - return list of list uris of mutelists that A subscribes to
// - `getListMutes`
message GetMutelistSubscriptionsRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetMutelistSubscriptionsResponse {
repeated string list_uris = 1;
string cursor = 2;
}
//
// Thread Mutes
//
message GetThreadMutesOnSubjectsRequest {
string actor_did = 1;
repeated string thread_roots = 2;
}
message GetThreadMutesOnSubjectsResponse {
repeated bool muted = 1;
}
//
// Blocks
//
// - Return block uri if there is a block between users A & B (bidirectional)
// - hydrating (& actioning) block state on profiles
// - handling 3rd party blocks
message GetBidirectionalBlockRequest {
string actor_did = 1;
string target_did = 2;
}
message GetBidirectionalBlockResponse {
string block_uri = 1;
}
// - Return list of block uris and user dids of users who A blocks
// - `getBlocks`
message GetBlocksRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetBlocksResponse {
repeated string block_uris = 1;
string cursor = 2;
}
//
// Blocklists
//
// - Return list uri of ***any*** list through which users A & B have a block (bidirectional)
// - hydrating (& actioning) block state on profiles
// - handling 3rd party blocks
message GetBidirectionalBlockViaListRequest {
string actor_did = 1;
string target_did = 2;
}
message GetBidirectionalBlockViaListResponse {
string list_uri = 1;
}
// - return boolean if user A has subscribed to blocklist B
// - list view hydration
message GetBlocklistSubscriptionRequest {
string actor_did = 1;
string list_uri = 2;
}
message GetBlocklistSubscriptionResponse {
string listblock_uri = 1;
}
// - return list of list uris of Blockslists that A subscribes to
// - `getListBlocks`
message GetBlocklistSubscriptionsRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetBlocklistSubscriptionsResponse {
repeated string list_uris = 1;
string cursor = 2;
}
//
// Notifications
//
// - list recent notifications for a user
// - notifications should include a uri for the record that caused the notif & a “reason” for the notification (reply, like, quotepost, etc)
// - this should include both read & unread notifs
message GetNotificationsRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
bool priority = 4;
}
message Notification {
string recipient_did = 1;
string uri = 2;
string reason = 3;
string reason_subject = 4;
google.protobuf.Timestamp timestamp = 5;
bool priority = 6;
}
message GetNotificationsResponse {
repeated Notification notifications = 1;
string cursor = 2;
}
// - update a users “last seen time”
// - `updateSeen`
message UpdateNotificationSeenRequest {
string actor_did = 1;
google.protobuf.Timestamp timestamp = 2;
bool priority = 3;
}
message UpdateNotificationSeenResponse {}
// - get a users “last seen time”
// - hydrating read state onto notifications
message GetNotificationSeenRequest {
string actor_did = 1;
bool priority = 2;
}
message GetNotificationSeenResponse {
google.protobuf.Timestamp timestamp = 1;
}
// - get a count of all unread notifications (notifications after `updateSeen`)
// - `getUnreadCount`
message GetUnreadNotificationCountRequest {
string actor_did = 1;
bool priority = 2;
}
message GetUnreadNotificationCountResponse {
int32 count = 1;
}
//
// FeedGenerators
//
// - Return uris of feed generator records created by user A
// - `getActorFeeds`
message GetActorFeedsRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetActorFeedsResponse {
repeated string uris = 1;
string cursor = 2;
}
// - Returns a list of suggested feed generator uris for an actor, paginated
// - `getSuggestedFeeds`
// - This is currently just hardcoded in the Appview DB
message GetSuggestedFeedsRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetSuggestedFeedsResponse {
repeated string uris = 1;
string cursor = 2;
}
message SearchFeedGeneratorsRequest {
string query = 1;
int32 limit = 2;
}
message SearchFeedGeneratorsResponse {
repeated string uris = 1;
}
// - Returns feed generator validity and online status with uris A, B, C…
// - Not currently being used, but could be worhthwhile.
message GetFeedGeneratorStatusRequest {
repeated string uris = 1;
}
message GetFeedGeneratorStatusResponse {
repeated string status = 1;
}
//
// Feeds
//
enum FeedType {
FEED_TYPE_UNSPECIFIED = 0;
FEED_TYPE_POSTS_AND_AUTHOR_THREADS = 1;
FEED_TYPE_POSTS_NO_REPLIES = 2;
FEED_TYPE_POSTS_WITH_MEDIA = 3;
}
// - Returns recent posts authored by a given DID, paginated
// - `getAuthorFeed`
// - Optionally: filter by if a post is/isnt a reply and if a post has a media object in it
message GetAuthorFeedRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
FeedType feed_type = 4;
}
message AuthorFeedItem {
string uri = 1;
string cid = 2;
string repost = 3;
string repost_cid = 4;
bool posts_and_author_threads = 5;
bool posts_no_replies = 6;
bool posts_with_media = 7;
bool is_reply = 8;
bool is_repost = 9;
bool is_quote_post = 10;
}
message GetAuthorFeedResponse {
repeated AuthorFeedItem items = 1;
string cursor = 2;
}
// - Returns recent posts authored by users followed by a given DID, paginated
// - `getTimeline`
message GetTimelineRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
bool exclude_replies = 4;
bool exclude_reposts = 5;
bool exclude_quotes = 6;
}
message GetTimelineResponse {
repeated TimelineFeedItem items = 1;
string cursor = 2;
}
message TimelineFeedItem {
string uri = 1;
string cid = 2;
string repost = 3;
string repost_cid = 4;
bool is_reply = 5;
bool is_repost = 6;
bool is_quote_post = 7;
}
// - Return recent post uris from users in list A
// - `getListFeed`
// - (This is essentially the same as `getTimeline` but instead of follows of a did, it is list items of a list)
message GetListFeedRequest {
string list_uri = 1;
int32 limit = 2;
string cursor = 3;
bool exclude_replies = 4;
bool exclude_reposts = 5;
bool exclude_quotes = 6;
}
message GetListFeedResponse {
repeated TimelineFeedItem items = 1;
string cursor = 2;
}
//
// Threads
//
// Return posts uris of any replies N levels above or M levels below post A
message GetThreadRequest {
string post_uri = 1;
int32 above = 2;
int32 below = 3;
}
message GetThreadResponse {
repeated string uris = 1;
}
//
// Search
//
// - Return DIDs of actors matching term, paginated
// - `searchActors` skeleton
message SearchActorsRequest {
string term = 1;
int32 limit = 2;
string cursor = 3;
}
message SearchActorsResponse {
repeated string dids = 1;
string cursor = 2;
}
// - Return uris of posts matching term, paginated
// - `searchPosts` skeleton
message SearchPostsRequest {
string term = 1;
int32 limit = 2;
string cursor = 3;
}
message SearchPostsResponse {
repeated string uris = 1;
string cursor = 2;
}
// - Return uris of starter packs matching term, paginated
// - `searchStarterPacks` skeleton
message SearchStarterPacksRequest {
string term = 1;
int32 limit = 2;
string cursor = 3;
}
message SearchStarterPacksResponse {
repeated string uris = 1;
string cursor = 2;
}
//
// Suggestions
//
// - Return DIDs of suggested follows for a user, excluding anyone they already follow
// - `getSuggestions`, `getSuggestedFollowsByActor`
message GetFollowSuggestionsRequest {
string actor_did = 1;
string relative_to_did = 2;
int32 limit = 3;
string cursor = 4;
}
message GetFollowSuggestionsResponse {
repeated string dids = 1;
string cursor = 2;
}
message SuggestedEntity {
string tag = 1;
string subject = 2;
string subject_type = 3;
int64 priority = 4;
}
message GetSuggestedEntitiesRequest {
int32 limit = 1;
string cursor = 2;
}
message GetSuggestedEntitiesResponse {
repeated SuggestedEntity entities = 1;
string cursor = 2;
}
//
// Posts
//
// - Return post reply count with uris A, B, C…
// - All feed hydration
message GetPostReplyCountsRequest {
repeated RecordRef refs = 1;
}
message GetPostReplyCountsResponse {
repeated int32 counts = 1;
}
//
// Labels
//
// - Get all labels on a subjects A, B, C (uri or did) issued by dids D, E, F…
// - label hydration on nearly every view
message GetLabelsRequest {
repeated string subjects = 1;
repeated string issuers = 2;
}
message GetLabelsResponse {
repeated bytes labels = 1;
}
//
// Starter packs
//
message GetActorStarterPacksRequest {
string actor_did = 1;
int32 limit = 2;
string cursor = 3;
}
message GetActorStarterPacksResponse {
repeated string uris = 1;
string cursor = 2;
}
//
// Sync
//
// - Latest repo rev of user w/ DID
// - Read-after-write header in`getProfile`, `getProfiles`, `getActorLikes`, `getAuthorFeed`, `getListFeed`, `getPostThread`, `getTimeline`. Could it be view dependent?
message GetLatestRevRequest {
string actor_did = 1;
}
message GetLatestRevResponse {
string rev = 1;
}
message GetIdentityByDidRequest {
string did = 1;
}
message GetIdentityByDidResponse {
string did = 1;
string handle = 2;
bytes keys = 3;
bytes services = 4;
google.protobuf.Timestamp updated = 5;
}
message GetIdentityByHandleRequest {
string handle = 1;
}
message GetIdentityByHandleResponse {
string handle = 1;
string did = 2;
bytes keys = 3;
bytes services = 4;
google.protobuf.Timestamp updated = 5;
}
//
// Moderation
//
message GetBlobTakedownRequest {
string did = 1;
string cid = 2;
}
message GetBlobTakedownResponse {
bool taken_down = 1;
string takedown_ref = 2;
}
message GetActorTakedownRequest {
string did = 1;
}
message GetActorTakedownResponse {
bool taken_down = 1;
string takedown_ref = 2;
}
message GetRecordTakedownRequest {
string record_uri = 1;
}
message GetRecordTakedownResponse {
bool taken_down = 1;
string takedown_ref = 2;
}
// Polo-backed Graph Endpoints
// GetFollowsFollowing gets the list of DIDs that the actor follows that also follow the targets
message GetFollowsFollowingRequest {
string actor_did = 1;
repeated string target_dids = 2;
}
message FollowsFollowing {
string target_did = 1;
repeated string dids = 2;
}
message GetFollowsFollowingResponse {
repeated FollowsFollowing results = 1;
}
// Ping
message PingRequest {}
message PingResponse {}
service Service {
//
// Read Path
//
// Records
rpc GetBlockRecords(GetBlockRecordsRequest) returns (GetBlockRecordsResponse);
rpc GetFeedGeneratorRecords(GetFeedGeneratorRecordsRequest) returns (GetFeedGeneratorRecordsResponse);
rpc GetFollowRecords(GetFollowRecordsRequest) returns (GetFollowRecordsResponse);
rpc GetLikeRecords(GetLikeRecordsRequest) returns (GetLikeRecordsResponse);
rpc GetListBlockRecords(GetListBlockRecordsRequest) returns (GetListBlockRecordsResponse);
rpc GetListItemRecords(GetListItemRecordsRequest) returns (GetListItemRecordsResponse);
rpc GetListRecords(GetListRecordsRequest) returns (GetListRecordsResponse);
rpc GetPostRecords(GetPostRecordsRequest) returns (GetPostRecordsResponse);
rpc GetProfileRecords(GetProfileRecordsRequest) returns (GetProfileRecordsResponse);
rpc GetActorChatDeclarationRecords(GetActorChatDeclarationRecordsRequest) returns (GetActorChatDeclarationRecordsResponse);
rpc GetRepostRecords(GetRepostRecordsRequest) returns (GetRepostRecordsResponse);
rpc GetThreadGateRecords(GetThreadGateRecordsRequest) returns (GetThreadGateRecordsResponse);
rpc GetPostgateRecords(GetPostgateRecordsRequest) returns (GetPostgateRecordsResponse);
rpc GetLabelerRecords(GetLabelerRecordsRequest) returns (GetLabelerRecordsResponse);
rpc GetStarterPackRecords(GetStarterPackRecordsRequest) returns (GetStarterPackRecordsResponse);
// Follows
rpc GetActorFollowsActors(GetActorFollowsActorsRequest) returns (GetActorFollowsActorsResponse);
rpc GetFollowers(GetFollowersRequest) returns (GetFollowersResponse);
rpc GetFollows(GetFollowsRequest) returns (GetFollowsResponse);
// Likes
rpc GetLikesBySubject(GetLikesBySubjectRequest) returns (GetLikesBySubjectResponse);
rpc GetLikesBySubjectSorted(GetLikesBySubjectSortedRequest) returns (GetLikesBySubjectSortedResponse);
rpc GetLikesByActorAndSubjects(GetLikesByActorAndSubjectsRequest) returns (GetLikesByActorAndSubjectsResponse);
rpc GetActorLikes(GetActorLikesRequest) returns (GetActorLikesResponse);
// Reposts
rpc GetRepostsBySubject(GetRepostsBySubjectRequest) returns (GetRepostsBySubjectResponse);
rpc GetRepostsByActorAndSubjects(GetRepostsByActorAndSubjectsRequest) returns (GetRepostsByActorAndSubjectsResponse);
rpc GetActorReposts(GetActorRepostsRequest) returns (GetActorRepostsResponse);
// Quotes
rpc GetQuotesBySubjectSorted(GetQuotesBySubjectSortedRequest) returns (GetQuotesBySubjectSortedResponse);
// Interaction Counts
rpc GetInteractionCounts(GetInteractionCountsRequest) returns (GetInteractionCountsResponse);
rpc GetCountsForUsers(GetCountsForUsersRequest) returns (GetCountsForUsersResponse);
rpc GetStarterPackCounts(GetStarterPackCountsRequest) returns (GetStarterPackCountsResponse);
rpc GetListCounts(GetListCountsRequest) returns (GetListCountsResponse);
rpc GetNewUserCountForRange(GetNewUserCountForRangeRequest) returns (GetNewUserCountForRangeResponse);
// Profile
rpc GetActors(GetActorsRequest) returns (GetActorsResponse);
rpc GetDidsByHandles(GetDidsByHandlesRequest) returns (GetDidsByHandlesResponse);
// Relationships
rpc GetRelationships(GetRelationshipsRequest) returns (GetRelationshipsResponse);
rpc GetBlockExistence(GetBlockExistenceRequest) returns (GetBlockExistenceResponse);
// Lists
rpc GetActorLists(GetActorListsRequest) returns (GetActorListsResponse);
rpc GetListMembers(GetListMembersRequest) returns (GetListMembersResponse);
rpc GetListMembership(GetListMembershipRequest) returns (GetListMembershipResponse);
rpc GetListCount(GetListCountRequest) returns (GetListCountResponse);
// Mutes
rpc GetActorMutesActor(GetActorMutesActorRequest) returns (GetActorMutesActorResponse);
rpc GetMutes(GetMutesRequest) returns (GetMutesResponse);
// Mutelists
rpc GetActorMutesActorViaList(GetActorMutesActorViaListRequest) returns (GetActorMutesActorViaListResponse);
rpc GetMutelistSubscription(GetMutelistSubscriptionRequest) returns (GetMutelistSubscriptionResponse);
rpc GetMutelistSubscriptions(GetMutelistSubscriptionsRequest) returns (GetMutelistSubscriptionsResponse);
// Thread Mutes
rpc GetThreadMutesOnSubjects(GetThreadMutesOnSubjectsRequest) returns (GetThreadMutesOnSubjectsResponse);
// Blocks
rpc GetBidirectionalBlock(GetBidirectionalBlockRequest) returns (GetBidirectionalBlockResponse);
rpc GetBlocks(GetBlocksRequest) returns (GetBlocksResponse);
// Blocklists
rpc GetBidirectionalBlockViaList(GetBidirectionalBlockViaListRequest) returns (GetBidirectionalBlockViaListResponse);
rpc GetBlocklistSubscription(GetBlocklistSubscriptionRequest) returns (GetBlocklistSubscriptionResponse);
rpc GetBlocklistSubscriptions(GetBlocklistSubscriptionsRequest) returns (GetBlocklistSubscriptionsResponse);
// Notifications
rpc GetNotifications(GetNotificationsRequest) returns (GetNotificationsResponse);
rpc GetNotificationSeen(GetNotificationSeenRequest) returns (GetNotificationSeenResponse);
rpc GetUnreadNotificationCount(GetUnreadNotificationCountRequest) returns (GetUnreadNotificationCountResponse);
rpc UpdateNotificationSeen(UpdateNotificationSeenRequest) returns (UpdateNotificationSeenResponse);
// FeedGenerators
rpc GetActorFeeds(GetActorFeedsRequest) returns (GetActorFeedsResponse);
rpc GetSuggestedFeeds(GetSuggestedFeedsRequest) returns (GetSuggestedFeedsResponse);
rpc GetFeedGeneratorStatus(GetFeedGeneratorStatusRequest) returns (GetFeedGeneratorStatusResponse);
rpc SearchFeedGenerators(SearchFeedGeneratorsRequest) returns (SearchFeedGeneratorsResponse);
// Feeds
rpc GetAuthorFeed(GetAuthorFeedRequest) returns (GetAuthorFeedResponse);
rpc GetTimeline(GetTimelineRequest) returns (GetTimelineResponse);
rpc GetListFeed(GetListFeedRequest) returns (GetListFeedResponse);
// Threads
rpc GetThread(GetThreadRequest) returns (GetThreadResponse);
// Search
rpc SearchActors(SearchActorsRequest) returns (SearchActorsResponse);
rpc SearchPosts(SearchPostsRequest) returns (SearchPostsResponse);
rpc SearchStarterPacks(SearchStarterPacksRequest) returns (SearchStarterPacksResponse);
// Suggestions
rpc GetFollowSuggestions(GetFollowSuggestionsRequest) returns (GetFollowSuggestionsResponse);
rpc GetSuggestedEntities(GetSuggestedEntitiesRequest) returns (GetSuggestedEntitiesResponse);
// Posts
rpc GetPostReplyCounts(GetPostReplyCountsRequest) returns (GetPostReplyCountsResponse);
// Labels
rpc GetLabels(GetLabelsRequest) returns (GetLabelsResponse);
rpc GetAllLabelers(GetAllLabelersRequest) returns (GetAllLabelersResponse);
// Starter packs
rpc GetActorStarterPacks(GetActorStarterPacksRequest) returns (GetActorStarterPacksResponse);
// Sync
rpc GetLatestRev(GetLatestRevRequest) returns (GetLatestRevResponse);
// Moderation
rpc GetBlobTakedown(GetBlobTakedownRequest) returns (GetBlobTakedownResponse);
rpc GetRecordTakedown(GetRecordTakedownRequest) returns (GetRecordTakedownResponse);
rpc GetActorTakedown(GetActorTakedownRequest) returns (GetActorTakedownResponse);
// Identity
rpc GetIdentityByDid(GetIdentityByDidRequest) returns (GetIdentityByDidResponse);
rpc GetIdentityByHandle(GetIdentityByHandleRequest) returns (GetIdentityByHandleResponse);
// Graph
rpc GetFollowsFollowing(GetFollowsFollowingRequest) returns (GetFollowsFollowingResponse);
// Ping
rpc Ping(PingRequest) returns (PingResponse);
//
// Write Path
//
// Moderation
rpc TakedownBlob(TakedownBlobRequest) returns (TakedownBlobResponse);
rpc TakedownRecord(TakedownRecordRequest) returns (TakedownRecordResponse);
rpc TakedownActor(TakedownActorRequest) returns (TakedownActorResponse);
rpc UpdateActorUpstreamStatus(UpdateActorUpstreamStatusRequest) returns (UpdateActorUpstreamStatusResponse);
rpc UntakedownBlob(UntakedownBlobRequest) returns (UntakedownBlobResponse);
rpc UntakedownRecord(UntakedownRecordRequest) returns (UntakedownRecordResponse);
rpc UntakedownActor(UntakedownActorRequest) returns (UntakedownActorResponse);
// Ingestion
rpc CreateActorMute(CreateActorMuteRequest) returns (CreateActorMuteResponse);
rpc DeleteActorMute(DeleteActorMuteRequest) returns (DeleteActorMuteResponse);
rpc ClearActorMutes(ClearActorMutesRequest) returns (ClearActorMutesResponse);
rpc CreateActorMutelistSubscription(CreateActorMutelistSubscriptionRequest) returns (CreateActorMutelistSubscriptionResponse);
rpc DeleteActorMutelistSubscription(DeleteActorMutelistSubscriptionRequest) returns (DeleteActorMutelistSubscriptionResponse);
rpc ClearActorMutelistSubscriptions(ClearActorMutelistSubscriptionsRequest) returns (ClearActorMutelistSubscriptionsResponse);
rpc CreateThreadMute(CreateThreadMuteRequest) returns (CreateThreadMuteResponse);
rpc DeleteThreadMute(DeleteThreadMuteRequest) returns (DeleteThreadMuteResponse);
rpc ClearThreadMutes(ClearThreadMutesRequest) returns (ClearThreadMutesResponse);
}
//
// Write Path
//
message UpdateActorUpstreamStatusRequest {
string actor_did = 1;
bool active = 2;
string upstream_status = 3;
}
message UpdateActorUpstreamStatusResponse {
}
message TakedownActorRequest {
string did = 1;
string ref = 2;
google.protobuf.Timestamp seen = 3;
}
message TakedownActorResponse {
}
message UntakedownActorRequest {
string did = 1;
google.protobuf.Timestamp seen = 2;
}
message UntakedownActorResponse {
}
message TakedownBlobRequest {
string did = 1;
string cid = 2;
string ref = 3;
google.protobuf.Timestamp seen = 4;
}
message TakedownBlobResponse {}
message UntakedownBlobRequest {
string did = 1;
string cid = 2;
google.protobuf.Timestamp seen = 3;
}
message UntakedownBlobResponse {}
message TakedownRecordRequest {
string record_uri = 1;
string ref = 2;
google.protobuf.Timestamp seen = 3;
}
message TakedownRecordResponse {
}
message UntakedownRecordRequest {
string record_uri = 1;
google.protobuf.Timestamp seen = 2;
}
message UntakedownRecordResponse {
}
message CreateActorMuteRequest {
string actor_did = 1;
string subject_did = 2;
}
message CreateActorMuteResponse {}
message DeleteActorMuteRequest {
string actor_did = 1;
string subject_did = 2;
}
message DeleteActorMuteResponse {}
message ClearActorMutesRequest {
string actor_did = 1;
}
message ClearActorMutesResponse {}
message CreateActorMutelistSubscriptionRequest {
string actor_did = 1;
string subject_uri = 2;
}
message CreateActorMutelistSubscriptionResponse {}
message DeleteActorMutelistSubscriptionRequest {
string actor_did = 1;
string subject_uri = 2;
}
message DeleteActorMutelistSubscriptionResponse {}
message ClearActorMutelistSubscriptionsRequest {
string actor_did = 1;
}
message ClearActorMutelistSubscriptionsResponse {}
message CreateThreadMuteRequest {
string actor_did = 1;
string thread_root = 2;
}
message CreateThreadMuteResponse {}
message DeleteThreadMuteRequest {
string actor_did = 1;
string thread_root = 2;
}
message DeleteThreadMuteResponse {}
message ClearThreadMutesRequest {
string actor_did = 1;
}
message ClearThreadMutesResponse {}