syntax = "proto3"; package devvit.plugin.redditapi.listings; import "devvit/plugin/redditapi/common/common_msg.proto"; import "devvit/plugin/redditapi/listings/listings_msg.proto"; option go_package = "github.snooguts.net/reddit/reddit-devplatform-monorepo/go-common/generated/protos/types/devvit/plugin/redditapi"; option java_package = "com.reddit.devvit.plugin.redditapi.listings"; // LISTINGS - https://www.reddit.com/dev/api#section_listings service Listings { // Home listing // // @see {@link https://www.reddit.com/dev/api#GET_best} rpc Best(GetBestRequest) returns (devvit.plugin.redditapi.common.Listing) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/best.json?after={after}&before={before}&count={count}&limit={limit}&show={show}'; } // Create a custom listing with the Post IDs provided // // @see {@link https://www.reddit.com/dev/api#GET_by_id_\{names\}} rpc ById(GetByIdRequest) returns (devvit.plugin.redditapi.common.Listing) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/by_id/{post_ids}.json'; } // Get a comment tree for a Post // // @see {@link https://www.reddit.com/dev/api#GET_comments_\{article\}} // Note: reddit API returns this in an array of listings. Generated code can't handle this. rpc Comments(GetCommentsRequest) returns (ListingResponse) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/comments/{article}.json?comment={comment}&context={context}&depth={depth}&limit={limit}&sort={sort}&threaded={threaded}&truncate={truncate}'; option (devvit.plugin.redditapi.common.api_client_config).use_custom_response_parser = true; } // Find duplicate posts that reference the same URL as this Post // // @see {@link https://www.reddit.com/dev/api#GET_duplicates_\{article\}} // Note: reddit API returns this in an array of listings. Generated code can't handle this. rpc Duplicates(GetDuplicatesRequest) returns (ListingResponse) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/duplicates/{article}.json?before={before}&after={after}&limit={limit}&sort={sort}&sr={sr}&count={count}&crossposts_only={crossposts_only}&show={show}'; option (devvit.plugin.redditapi.common.api_client_config).use_custom_response_parser = true; } // Listing with Hot sort // // @see {@link https://www.reddit.com/dev/api#GET_hot} rpc Hot(GetHotRequest) returns (devvit.plugin.redditapi.common.Listing) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/r/{subreddit}/hot.json?after={after}&before={before}&count={count}&limit={limit}&show={show}&g={g}'; } // Listing with New sort // // @see {@link https://www.reddit.com/dev/api#GET_new} rpc New(GetNewRequest) returns (devvit.plugin.redditapi.common.Listing) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/r/{subreddit}/new.json?after={after}&before={before}&count={count}&limit={limit}&show={show}'; } // Listing with Rising sort // // @see {@link https://www.reddit.com/dev/api#GET_rising} rpc Rising(GetRisingRequest) returns (devvit.plugin.redditapi.common.Listing) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/r/{subreddit}/rising.json?after={after}&before={before}&count={count}&limit={limit}&show={show}'; } // Search posts in a subreddit // // @see {@link https://www.reddit.com/dev/api#GET_search} rpc SearchPosts(SearchPostsRequest) returns (devvit.plugin.redditapi.common.Listing) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/r/{subreddit}/search.json?after={after}&before={before}&count={count}&limit={limit}&q={q}&restrict_sr={restrict_sr}&show={show}&sort={sort}&t={t}&type={type}'; } // Listing with Top or Controversial sort // // @see {@link https://www.reddit.com/dev/api#GET_\{sort\}} rpc Sort(GetSortRequest) returns (devvit.plugin.redditapi.common.Listing) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/r/{subreddit}/{sort}.json?after={after}&before={before}&limit={limit}&count={count}&show={show}&t={t}'; } }