syntax = "proto3"; package devvit.plugin.redditapi.users; import "devvit/plugin/redditapi/common/common_msg.proto"; import "devvit/plugin/redditapi/users/users_msg.proto"; import "google/protobuf/empty.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.users"; // USERS - https://www.reddit.com/dev/api#section_users // Note: all endpoints require oauth service Users { // https://www.reddit.com/dev/api#POST_api_block_user rpc BlockUser(BlockUserRequest) returns (BlockUserResponse) { option (devvit.plugin.redditapi.common.api_client_config).method = 'POST'; option (devvit.plugin.redditapi.common.api_client_config).path = '/api/block_user'; option (devvit.plugin.redditapi.common.api_client_config).request_body_type = FORM_SNAKE; option (devvit.plugin.redditapi.common.api_client_config).enforce_json = true; } // https://www.reddit.com/dev/api#POST_api_friend rpc Friend(FriendRequest) returns (devvit.plugin.redditapi.common.JsonStatus) { option (devvit.plugin.redditapi.common.api_client_config).method = 'POST'; option (devvit.plugin.redditapi.common.api_client_config).path = '/r/{subreddit}/api/friend'; option (devvit.plugin.redditapi.common.api_client_config).request_body_type = FORM_SNAKE; option (devvit.plugin.redditapi.common.api_client_config).enforce_json = true; option (devvit.plugin.redditapi.common.api_client_config).validate_subreddit_context = 'subreddit'; option (devvit.plugin.redditapi.common.api_client_config).validate_without_enforcement = true; } // https://www.reddit.com/dev/api#POST_api_report_user rpc ReportUser(ReportUserRequest) returns (google.protobuf.Empty) { option (devvit.plugin.redditapi.common.api_client_config).method = 'POST'; option (devvit.plugin.redditapi.common.api_client_config).path = '/api/report_user'; option (devvit.plugin.redditapi.common.api_client_config).request_body_type = FORM_SNAKE; } // https://www.reddit.com/dev/api#POST_api_setpermissions rpc SetPermissions(SetPermissionsRequest) returns (devvit.plugin.redditapi.common.JsonStatus) { option (devvit.plugin.redditapi.common.api_client_config).method = 'POST'; option (devvit.plugin.redditapi.common.api_client_config).path = '/r/{subreddit}/api/setpermissions'; option (devvit.plugin.redditapi.common.api_client_config).request_body_type = FORM_SNAKE; option (devvit.plugin.redditapi.common.api_client_config).enforce_json = true; option (devvit.plugin.redditapi.common.api_client_config).validate_subreddit_context = 'subreddit'; } // https://www.reddit.com/dev/api#POST_api_unfriend rpc Unfriend(UnfriendRequest) returns (google.protobuf.Empty) { option (devvit.plugin.redditapi.common.api_client_config).method = 'POST'; option (devvit.plugin.redditapi.common.api_client_config).path = '/r/{subreddit}/api/unfriend'; option (devvit.plugin.redditapi.common.api_client_config).request_body_type = FORM_SNAKE; option (devvit.plugin.redditapi.common.api_client_config).validate_subreddit_context = 'subreddit'; option (devvit.plugin.redditapi.common.api_client_config).validate_without_enforcement = true; } // https://www.reddit.com/dev/api#GET_api_user_data_by_account_ids rpc UserDataByAccountIds(UserDataByAccountIdsRequest) returns (UserDataByAccountIdsResponse); // https://www.reddit.com/dev/api#DELETE_api_v1_me_friends_username rpc UnfriendUser(GenericUsersRequest) returns (google.protobuf.Empty) { option (devvit.plugin.redditapi.common.api_client_config).method = 'DELETE'; option (devvit.plugin.redditapi.common.api_client_config).path = '/api/v1/me/friends/{username}?id={id}'; } // https://www.reddit.com/dev/api#GET_api_v1_me_friends_username // TODO: this actually returns a WrappedRedditObject. Fix this up after the system worker is deleted. rpc GetFriendInformation(GenericUsersRequest) returns (GeneralFriendResponse) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/api/v1/me/friends/{username}?id={id}'; } // https://www.reddit.com/dev/api#PUT_api_v1_me_friends_username rpc UpdateFriendRelationship(UpdateFriendRelationshipRequest) returns (GeneralFriendResponse) { option (devvit.plugin.redditapi.common.api_client_config).method = 'PUT'; option (devvit.plugin.redditapi.common.api_client_config).path = '/api/v1/me/friends/{name}'; option (devvit.plugin.redditapi.common.api_client_config).request_body_type = JSON_CAMEL; } // https://www.reddit.com/dev/api#GET_api_v1_user_username_trophies rpc UserTrophies(GenericUsersRequest) returns (UserTrophiesResponse) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/api/v1/user/{username}/trophies?id={id}'; } // https://www.reddit.com/dev/api#GET_user_username_about rpc UserAbout(UserAboutRequest) returns (UserAboutResponse) { option (devvit.plugin.redditapi.common.api_client_config).method = 'GET'; option (devvit.plugin.redditapi.common.api_client_config).path = '/user/{username}/about'; } // https://www.reddit.com/dev/api#GET_user_username_where rpc UserWhere(UserWhereRequest) 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 = '/user/{username}/{where}?context={context}&show={show}&sort={sort}&t={t}&type={type}&after={after}&before={before}&count={count}&limit={limit}'; } // Returns the karma for a given user in the specified subreddit. rpc GetUserKarmaForSubreddit(GetUserKarmaForSubredditRequest) returns (GetUserKarmaForSubredditResponse); }