syntax = "proto3";

package devvit.plugin.redditapi.subreddits;

import "devvit/plugin/redditapi/common/common_msg.proto";
import "devvit/reddit/common.proto";
import "google/protobuf/any.proto";
import "google/protobuf/wrappers.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.subreddits";

// requests
message AboutWhereRequest {
  // fullname of a thing
  google.protobuf.StringValue after = 1;
  // fullname of a thing
  google.protobuf.StringValue before = 2;
  // a positive integer (default: 0)
  google.protobuf.Int64Value count = 3;
  // the maximum number of items desired (default: 25, maximum: 100)
  google.protobuf.Int64Value limit = 4;
  // (optional) the string all
  google.protobuf.StringValue show = 5;
  // A valid, existing reddit username
  google.protobuf.StringValue user = 7;
  // the name of the subreddit
  google.protobuf.StringValue subreddit = 8;
  // one of "banned", "muted", "wikibanned", "contributors", "wikicontributors", or "moderators"
  string where = 9;
}

message BasicSubredditRequest {
  // the name of the subreddit
  string subreddit = 1;
}

message DeleteSrImgRequest {
  // the name of the subreddit
  string subreddit = 1;
  // a valid subreddit image name
  string img_name = 2;
}

message BasicSearchRequest {
  // boolean value
  google.protobuf.BoolValue exact = 1;
  // boolean value
  google.protobuf.BoolValue include_over_18 = 2;
  // boolean value
  google.protobuf.BoolValue include_unadvertisable = 3;
  // a string up to 50 characters long, consisting of printable characters
  string query = 4;
  // a uuid
  google.protobuf.StringValue search_query_id = 5;
  // (optional) boolean value
  google.protobuf.BoolValue typeahead_active = 6;
}

message SiteAdminRequest {
  // boolean value
  bool accept_followers = 1;
  // boolean value
  bool admin_override_spam_comments = 2;
  // boolean value
  bool admin_override_spam_links = 3;
  // boolean value
  bool admin_override_spam_selfposts = 4;
  // boolean value
  bool all_original_content = 5;
  // boolean value
  bool allow_chat_post_creation = 6;
  // boolean value
  bool allow_discovery = 7;
  // boolean value
  bool allow_galleries = 8;
  // boolean value
  bool allow_images = 9;
  // boolean value
  bool allow_polls = 10;
  // boolean value
  bool allow_post_crossposts = 11;
  // boolean value
  bool allow_prediction_contributors = 12;
  // boolean value
  bool allow_predictions = 13;
  // boolean value
  bool allow_predictions_tournament = 14;
  // boolean value
  bool allow_talks = 15;
  // boolean value
  bool allow_top = 16;
  // boolean value
  bool allow_videos = 17;
  // an integer between 0 and 3
  int64 ban_evasion_threshold = 18;
  // boolean value
  bool collapse_deleted_comments = 19;
  // json data:
  // \{
  //   "allowed_media_types": [
  //     one of (`giphy`, `unknown`, `animated`, `static`),
  //     ...
  //   ],
  // \}
  devvit.reddit.CommentContributionSettings comment_contribution_settings = 20;
  // an integer between 0 and 1440 (default: 0)
  int32 comment_score_hide_mins = 21;
  // boolean value
  bool crowd_control_filter = 22;
  // an integer between 0 and 3
  int64 crowd_control_level = 23;
  // boolean value
  bool crowd_control_mode = 24;
  // an integer between 0 and 3
  int64 crowd_control_post_level = 25;
  // raw markdown text
  string description = 26;
  // boolean value
  bool disable_contributor_requests = 27;
  // boolean value
  bool exclude_banned_modqueue = 28;
  // boolean value
  bool free_form_reports = 29;
  string g_recaptcha_response = 30;
  // an integer between 0 and 3
  int64 hateful_content_threshold_abuse = 31;
  // an integer between 0 and 3
  int64 hateful_content_threshold_identity = 32;
  // a string no longer than 500 characters
  string header_title = 33;
  // a 6-digit rgb hex color, e.g. #AABBCC
  string key_color = 34;
  // one of (any, link, self)
  string link_type = 36;
  // subreddit name
  string name = 37;
  // boolean value
  bool new_pinned_post_pns_enabled = 38;
  // boolean value
  bool original_content_tag_enabled = 39;
  // boolean value
  bool over_18 = 40;
  // an integer between 0 and 2
  int64 prediction_leaderboard_entry_type = 41;
  // raw markdown text
  string public_description = 42;
  // boolean value
  bool restrict_commenting = 43;
  // boolean value
  bool restrict_posting = 44;
  // boolean value
  bool should_archive_posts = 45;
  // boolean value
  bool show_media = 46;
  // boolean value
  bool show_media_preview = 47;
  // one of (low, high, all)
  string spam_comments = 48;
  // one of (low, high, all)
  string spam_links = 49;
  // one of (low, high, all)
  string spam_selfposts = 50;
  // boolean value
  bool spoilers_enabled = 51;
  // fullname of a thing
  string sr = 52;
  // a string no longer than 60 characters
  string submit_link_label = 53;
  // raw markdown text
  string submit_text = 54;
  // a string no longer than 60 characters
  string submit_text_label = 55;
  // one of (confidence, top, new, controversial, old, random, qa, live)
  string suggested_comment_sort = 56;
  // a string no longer than 100 characters
  string title = 57;
  // an integer between 0 and 1
  int64 toxicity_threshold_chat_level = 58;
  // one of (gold_restricted, archived, restricted, private, employees_only, gold_only, public, user)
  string type = 59;
  // boolean value
  bool user_flair_pns_enabled = 60;
  // boolean value
  bool welcome_message_enabled = 61;
  // raw markdown text
  string welcome_message_text = 62;
  // an integer between 0 and 36600 (default: 0)
  int64 wiki_edit_age = 63;
  // an integer between 0 and 1000000000 (default: 0)
  int64 wiki_edit_karma = 64;
  // one of (disabled, modonly, anyone)
  string wikimode = 65;
  // an integer between 0 and 3
  int64 crowd_control_chat_level = 66;
  // boolean value
  bool hide_ads = 67;
  // boolean value
  bool modmail_harassment_filter_enabled = 68;
}

message SubredditAutocompleteRequest {
  // boolean value
  google.protobuf.BoolValue include_over_18 = 1;
  // boolean value
  google.protobuf.BoolValue include_profiles = 2;
  // an integer between 1 and 10 (default: 5)
  google.protobuf.Int64Value limit = 3;
  // a string up to 25 characters long, consisting of printable characters
  string query = 4;
  // a uuid
  google.protobuf.StringValue search_query_id = 5;
  // (optional) boolean value
  google.protobuf.BoolValue typeahead_active = 6;
}

message SubredditStylesheetRequest {
  // one of (save, preview)
  string op = 1;
  // a string up to 256 characters long, consisting of printable characters.
  string reason = 2;
  // the new stylesheet content
  string stylesheet_contents = 3;
  // the name of the subreddit
  string subreddit = 4;
}

message SubscribeRequest {
  // one of (sub, unsub)
  string action = 1;
  // one of (o, n, b, o, a, r, d, i, n, g)
  string action_source = 2;
  // boolean value
  bool skip_initial_defaults = 3;
  // A comma-separated list of subreddit fullnames
  string sr = 4;
  // A comma-separated list of subreddit names
  string sr_name = 5;
}

message UploadSrImgRequest {
  // file upload with maximum size of 500 KiB
  string file = 1;
  // (optional) can be ignored
  int64 header = 2;
  // an integer between 0 and 1
  string img_type = 3;
  // a valid subreddit image name
  string name = 4;
  // one of png or jpg (default: png)
  string upload_type = 5;
  // the name of the subreddit
  string subreddit = 6;
}

message SubredditAboutEditRequest {
  // one of (true, false)
  string created = 1;
  string location = 2;
  // the name of the subreddit
  string subreddit = 3;
}

message StickyRequest {
  // an integer between 1 and 2 (default: 1)
  int64 num = 1;
  // the name of the subreddit
  string subreddit = 2;
}

message BasicWhereRequest {
  // fullname of a thing
  google.protobuf.StringValue after = 1;
  // fullname of a thing
  google.protobuf.StringValue before = 2;
  // a positive integer (default: 0)
  google.protobuf.Int64Value count = 3;
  // the maximum number of items desired (default: 25, maximum: 100)
  google.protobuf.Int64Value limit = 4;
  // (optional) the string all
  google.protobuf.StringValue show = 5;
  // SubredditsMineWhere: one of (subscriber, contributor, moderator, streams)
  // SubredditsWhere: one of (popular, new, gold, default)
  // UsersWhere: one of (popular, new)
  string where = 7;
}

message SubredditsSearchRequest {
  // fullname of a thing
  google.protobuf.StringValue after = 1;
  // fullname of a thing
  google.protobuf.StringValue before = 2;
  // a positive integer (default: 0)
  google.protobuf.Int64Value count = 3;
  // the maximum number of items desired (default: 25, maximum: 100)
  google.protobuf.Int64Value limit = 4;
  // a search query
  string q = 5;
  // a uuid
  google.protobuf.StringValue search_query_id = 6;
  // (optional) the string all
  google.protobuf.StringValue show = 7;
  // boolean value
  google.protobuf.BoolValue show_users = 8;
  // one of (relevance, activity)
  google.protobuf.StringValue sort = 9;
  // (optional) boolean value
  google.protobuf.BoolValue typeahead_active = 11;
}

message UsersSearchRequest {
  // fullname of a thing
  google.protobuf.StringValue after = 1;
  // fullname of a thing
  google.protobuf.StringValue before = 2;
  // a positive integer (default: 0)
  google.protobuf.Int64Value count = 3;
  // the maximum number of items desired (default: 25, maximum: 100)
  google.protobuf.Int64Value limit = 4;
  // a search query
  string q = 5;
  // a uuid
  google.protobuf.StringValue search_query_id = 6;
  // (optional) the string all
  google.protobuf.StringValue show = 7;
  // one of (relevance, activity)
  google.protobuf.StringValue sort = 8;
  // (optional) boolean value
  google.protobuf.BoolValue typeahead_active = 10;
}

// responses
message SearchRedditNamesResponse {
  repeated google.protobuf.StringValue names = 1;
}

message SearchSubredditsResponse {
  message SubredditData {
    google.protobuf.Int32Value active_user_count = 1;
    google.protobuf.StringValue icon_img = 2;
    google.protobuf.StringValue key_color = 3;
    google.protobuf.StringValue name = 4;
    google.protobuf.Int32Value subscriber_count = 5;
    google.protobuf.BoolValue is_chat_post_feature_enabled = 6;
    google.protobuf.BoolValue allow_chat_post_creation = 7;
    google.protobuf.BoolValue allow_images = 8;
  }
  repeated SubredditData subreddits = 1;
}

message SubmitTextResponse {
  google.protobuf.StringValue submit_text = 1;
  google.protobuf.StringValue submit_text_html = 2;
}

message SubredditAutocompleteResponse {
  message AutocompleteAccount {
    message Subreddit {
      google.protobuf.BoolValue default_set = 1;
      google.protobuf.BoolValue user_is_contributor = 2;
      google.protobuf.StringValue banner_img = 3;
      repeated google.protobuf.StringValue allowed_media_in_comments = 4;
      google.protobuf.BoolValue user_is_banned = 5;
      google.protobuf.BoolValue free_form_reports = 6;
      google.protobuf.StringValue community_icon = 7;
      google.protobuf.BoolValue show_media = 8;
      google.protobuf.StringValue icon_color = 9;
      google.protobuf.BoolValue user_is_muted = 10;
      google.protobuf.StringValue display_name = 11;
      google.protobuf.StringValue header_img = 12;
      google.protobuf.StringValue title = 13;
      repeated google.protobuf.StringValue previous_names = 14;
      google.protobuf.BoolValue over_18 = 15;
      repeated google.protobuf.Int32Value icon_size = 16;
      google.protobuf.StringValue primary_color = 17;
      google.protobuf.StringValue icon_img = 18;
      google.protobuf.StringValue description = 19;
      google.protobuf.StringValue submit_link_label = 20;
      google.protobuf.Int32Value header_size = 21;
      google.protobuf.BoolValue restrict_posting = 22;
      google.protobuf.BoolValue restrict_commenting = 23;
      google.protobuf.Int64Value subscribers = 24;
      google.protobuf.StringValue submit_text_label = 25;
      google.protobuf.BoolValue is_default_icon = 26;
      google.protobuf.StringValue ink_flair_position = 27;
      google.protobuf.StringValue display_name_prefixed = 28;
      google.protobuf.StringValue key_color = 29;
      google.protobuf.StringValue name = 30;
      google.protobuf.BoolValue is_default_banner = 31;
      google.protobuf.StringValue url = 32;
      google.protobuf.BoolValue quarantine = 33;
      google.protobuf.Int32Value banner_size = 34;
      google.protobuf.BoolValue user_is_moderator = 35;
      google.protobuf.BoolValue accept_followers = 36;
      google.protobuf.StringValue public_description = 37;
      google.protobuf.BoolValue link_flair_enabled = 38;
      google.protobuf.BoolValue disable_contributor_requests = 39;
      google.protobuf.StringValue subreddit_type = 40;
      google.protobuf.BoolValue user_is_subscriber = 41;
    }
    google.protobuf.BoolValue is_employee = 1;
    google.protobuf.BoolValue is_friend = 2;
    google.protobuf.Int32Value snoovatar_size = 3;
    google.protobuf.StringValue id = 4;
    google.protobuf.BoolValue verified = 5;
    google.protobuf.BoolValue is_gold = 6;
    google.protobuf.BoolValue is_mod = 7;
    google.protobuf.BoolValue has_verified_email = 8;
    google.protobuf.StringValue icon_img = 9;
    google.protobuf.BoolValue hide_from_robots = 10;
    google.protobuf.Int32Value link_karma = 11;
    google.protobuf.BoolValue accept_chats = 12;
    google.protobuf.BoolValue is_blocked = 13;
    google.protobuf.BoolValue pref_show_snoovatar = 14;
    google.protobuf.StringValue name = 15;
    google.protobuf.Int64Value created = 16;
    google.protobuf.Int64Value created_utc = 17;
    google.protobuf.StringValue snoovatar_img = 18;
    google.protobuf.Int64Value comment_karma = 19;
    google.protobuf.BoolValue accept_followers = 20;
    google.protobuf.BoolValue has_subscribed = 21;
    google.protobuf.BoolValue accept_pms = 22;
  }

  message WrappedAutoCompleteSubreddit {
    string kind = 1;
    FullSubredditObject data = 2;
  }

  message WrappedAutoCompleteAccount {
    string kind = 1;
    AutocompleteAccount data = 2;
  }

  message AutocompleteResponse {
    google.protobuf.StringValue after = 1;
    google.protobuf.StringValue before = 2;
    google.protobuf.Int32Value dist = 3;
    repeated WrappedAutoCompleteSubreddit children_subreddits = 4;
    repeated WrappedAutoCompleteAccount children_accounts = 5;
  }

  google.protobuf.StringValue kind = 1;
  AutocompleteResponse data = 2;
}

message UploadSrImgResponse {
  repeated google.protobuf.StringValue errors = 1;
  google.protobuf.StringValue img_src = 2;
  repeated google.protobuf.StringValue errors_values = 3;
}

message SubredditPostRequirementsResponse {
  repeated google.protobuf.StringValue title_regexes = 1;
  repeated google.protobuf.StringValue body_blacklisted_strings = 2;
  repeated google.protobuf.StringValue title_blacklisted_strings = 3;
  google.protobuf.Int32Value body_text_max_length = 4;
  repeated google.protobuf.StringValue title_required_strings = 5;
  google.protobuf.StringValue guidelines_text = 6;
  google.protobuf.Int32Value gallery_min_items = 7;
  repeated google.protobuf.StringValue domain_blacklist = 8;
  repeated google.protobuf.StringValue domain_whitelist = 9;
  google.protobuf.Int32Value title_text_max_length = 10;
  google.protobuf.StringValue body_restriction_policy = 11;
  google.protobuf.StringValue link_restriction_policy = 12;
  google.protobuf.StringValue guidelines_display_policy = 13;
  repeated google.protobuf.StringValue body_required_strings = 14;
  google.protobuf.Int32Value title_text_min_length = 15;
  google.protobuf.StringValue gallery_captions_requirement = 16;
  google.protobuf.BoolValue is_flair_required = 17;
  google.protobuf.Int32Value gallery_max_items = 18;
  google.protobuf.StringValue gallery_urls_requirement = 19;
  repeated google.protobuf.StringValue body_regexes = 20;
  google.protobuf.Int32Value link_repost_age = 21;
  google.protobuf.Int32Value body_text_min_length = 22;
}

message SubredditAboutResponse {
  message AboutData {
    google.protobuf.StringValue user_flair_background_color = 1;
    google.protobuf.StringValue submit_text_html = 2;
    google.protobuf.BoolValue restrict_posting = 3;
    google.protobuf.BoolValue user_is_banned = 4;
    google.protobuf.BoolValue free_form_reports = 5;
    google.protobuf.BoolValue wiki_enabled = 6;
    google.protobuf.BoolValue user_is_muted = 7;
    google.protobuf.BoolValue user_can_flair_in_sr = 8;
    google.protobuf.StringValue display_name = 9;
    google.protobuf.StringValue header_img = 10;
    google.protobuf.StringValue title = 11;
    google.protobuf.BoolValue allow_galleries = 12;
    google.protobuf.StringValue primary_color = 14;
    google.protobuf.Int64Value active_user_count = 15;
    google.protobuf.StringValue icon_img = 16;
    google.protobuf.StringValue display_name_prefixed = 17;
    google.protobuf.Int64Value accounts_active = 18;
    google.protobuf.BoolValue public_traffic = 19;
    google.protobuf.Int64Value subscribers = 20;
    repeated devvit.reddit.UserFlairRichtext user_flair_richtext = 21;
    google.protobuf.StringValue name = 22;
    google.protobuf.BoolValue quarantine = 23;
    google.protobuf.BoolValue hide_ads = 24;
    google.protobuf.BoolValue emojis_enabled = 26;
    google.protobuf.StringValue advertiser_category = 27;
    google.protobuf.StringValue public_description = 28;
    google.protobuf.Int32Value comment_score_hide_mins = 29;
    google.protobuf.BoolValue allow_predictions = 30;
    google.protobuf.BoolValue user_has_favorited = 31;
    google.protobuf.StringValue user_flair_template_id = 32;
    google.protobuf.StringValue community_icon = 33;
    google.protobuf.StringValue banner_background_image = 34;
    google.protobuf.BoolValue original_content_tag_enabled = 35;
    google.protobuf.BoolValue community_reviewed = 36;
    google.protobuf.StringValue submit_text = 37;
    google.protobuf.StringValue description_html = 38;
    google.protobuf.BoolValue spoilers_enabled = 39;
    devvit.reddit.CommentContributionSettings comment_contribution_settings = 40;
    google.protobuf.BoolValue allow_talks = 41;
    google.protobuf.StringValue user_flair_position = 43;
    google.protobuf.BoolValue all_original_content = 44;
    google.protobuf.BoolValue collections_enabled = 45;
    google.protobuf.BoolValue is_enrolled_in_new_modmail = 46;
    google.protobuf.StringValue key_color = 47;
    google.protobuf.BoolValue event_posts_enabled = 48;
    google.protobuf.BoolValue can_assign_user_flair = 49;
    google.protobuf.Int64Value created = 50;
    google.protobuf.BoolValue show_media_preview = 52;
    google.protobuf.StringValue submission_type = 53;
    google.protobuf.BoolValue user_is_subscriber = 54;
    repeated google.protobuf.StringValue allowed_media_in_comments = 55;
    google.protobuf.BoolValue allow_videogifs = 56;
    google.protobuf.BoolValue should_archive_posts = 57;
    google.protobuf.StringValue user_flair_type = 58;
    google.protobuf.BoolValue allow_polls = 59;
    google.protobuf.BoolValue collapse_deleted_comments = 60;
    google.protobuf.Int64Value coins = 61;
    google.protobuf.StringValue public_description_html = 63;
    google.protobuf.BoolValue allow_videos = 64;
    google.protobuf.BoolValue is_crosspostable_subreddit = 65;
    google.protobuf.StringValue notification_level = 66;
    google.protobuf.BoolValue should_show_media_in_comments_setting = 67;
    google.protobuf.BoolValue can_assign_link_flair = 68;
    google.protobuf.BoolValue has_menu_widget = 69;
    google.protobuf.BoolValue accounts_active_is_fuzzed = 70;
    google.protobuf.BoolValue allow_prediction_contributors = 71;
    google.protobuf.StringValue submit_text_label = 72;
    google.protobuf.StringValue link_flair_position = 73;
    google.protobuf.BoolValue user_sr_flair_enabled = 74;
    google.protobuf.BoolValue user_flair_enabled_in_sr = 75;
    google.protobuf.BoolValue allow_chat_post_creation = 76;
    google.protobuf.BoolValue allow_discovery = 77;
    google.protobuf.BoolValue accept_followers = 78;
    google.protobuf.BoolValue user_sr_theme_enabled = 79;
    google.protobuf.BoolValue link_flair_enabled = 80;
    google.protobuf.BoolValue disable_contributor_requests = 81;
    google.protobuf.StringValue subreddit_type = 82;
    google.protobuf.StringValue suggested_comment_sort = 83;
    google.protobuf.StringValue banner_img = 84;
    google.protobuf.StringValue user_flair_text = 85;
    google.protobuf.StringValue banner_background_color = 86;
    google.protobuf.BoolValue show_media = 87;
    google.protobuf.StringValue id = 88;
    google.protobuf.BoolValue user_is_moderator = 89;
    google.protobuf.BoolValue over18 = 90;
    google.protobuf.StringValue header_title = 91;
    google.protobuf.StringValue description = 92;
    google.protobuf.BoolValue is_chat_post_feature_enabled = 93;
    google.protobuf.StringValue submit_link_label = 94;
    google.protobuf.StringValue user_flair_text_color = 95;
    google.protobuf.BoolValue restrict_commenting = 96;
    google.protobuf.StringValue user_flair_css_class = 97;
    google.protobuf.BoolValue allow_images = 98;
    google.protobuf.StringValue lang = 99;
    google.protobuf.StringValue url = 101;
    google.protobuf.Int64Value created_utc = 102;
    repeated google.protobuf.Int64Value banner_size = 103;
    google.protobuf.StringValue mobile_banner_image = 104;
    google.protobuf.BoolValue user_is_contributor = 105;
    google.protobuf.BoolValue allow_predictions_tournament = 106;
    repeated google.protobuf.Int64Value icon_size = 107;
    repeated google.protobuf.Int64Value header_size = 108;
    google.protobuf.Int32Value wls = 109;
    google.protobuf.StringValue whitelist_status = 110;
    repeated google.protobuf.Int64Value emojis_custom_size = 111;

    reserved 13, 25, 42, 51, 62, 100;
  }
  google.protobuf.StringValue kind = 1;
  AboutData data = 2;
}

message SubredditAboutEditResponse {
  message SubredditSettings {
    google.protobuf.BoolValue default_set = 1;
    google.protobuf.Int32Value toxicity_threshold_chat_level = 2;
    google.protobuf.Int32Value crowd_control_chat_level = 3;
    google.protobuf.BoolValue restrict_posting = 4;
    google.protobuf.StringValue public_description = 5;
    google.protobuf.StringValue subreddit_id = 6;
    google.protobuf.BoolValue allow_images = 7;
    google.protobuf.BoolValue free_form_reports = 8;
    google.protobuf.StringValue domain = 9;
    google.protobuf.BoolValue original_content_tag_enabled = 10;
    google.protobuf.BoolValue show_media = 11;
    google.protobuf.BoolValue exclude_banned_modqueue = 12;
    google.protobuf.BoolValue should_archive_posts = 13;
    google.protobuf.StringValue submit_text = 14;
    google.protobuf.StringValue spam_links = 15;
    google.protobuf.StringValue title = 16;
    google.protobuf.BoolValue collapse_deleted_comments = 17;
    google.protobuf.StringValue wikimode = 18;
    google.protobuf.BoolValue over_18 = 19;
    google.protobuf.BoolValue allow_videos = 20;
    google.protobuf.BoolValue allow_galleries = 21;
    google.protobuf.Int32Value crowd_control_level = 22;
    google.protobuf.Int32Value ban_evasion_threshold = 23;
    google.protobuf.BoolValue crowd_control_mode = 24;
    google.protobuf.BoolValue welcome_message_enabled = 25;
    google.protobuf.StringValue welcome_message_text = 26;
    google.protobuf.BoolValue suggested_comment_sort = 27;
    google.protobuf.BoolValue disable_contributor_requests = 28;
    google.protobuf.BoolValue allow_talks = 29;
    google.protobuf.StringValue description = 30;
    google.protobuf.StringValue submit_link_label = 31;
    google.protobuf.BoolValue spoilers_enabled = 32;
    google.protobuf.BoolValue allow_post_crossposts = 33;
    google.protobuf.StringValue spam_comments = 34;
    google.protobuf.BoolValue public_traffic = 35;
    google.protobuf.BoolValue restrict_commenting = 36;
    google.protobuf.BoolValue allow_polls = 37;
    devvit.reddit.CommentContributionSettings comment_contribution_settings = 38;
    google.protobuf.StringValue submit_text_label = 39;
    google.protobuf.Int32Value comment_score_hide_mins = 40;
    google.protobuf.BoolValue all_original_content = 41;
    google.protobuf.StringValue spam_selfposts = 42;
    google.protobuf.StringValue key_color = 43;
    google.protobuf.StringValue language = 44;
    google.protobuf.BoolValue new_pinned_post_pns_enabled = 45;
    google.protobuf.BoolValue hide_ads = 46;
    google.protobuf.Int32Value prediction_leaderboard_entry_type = 47;
    google.protobuf.StringValue header_hover_text = 48;
    google.protobuf.Int32Value wiki_edit_age = 49;
    google.protobuf.BoolValue allow_chat_post_creation = 50;
    google.protobuf.BoolValue allow_prediction_contributors = 51;
    google.protobuf.BoolValue allow_discovery = 52;
    google.protobuf.BoolValue accept_followers = 53;
    google.protobuf.Int32Value crowd_control_post_level = 54;
    google.protobuf.BoolValue allow_predictions_tournament = 55;
    google.protobuf.Int32Value wiki_edit_karma = 56;
    google.protobuf.BoolValue show_media_preview = 57;
    google.protobuf.BoolValue crowd_control_filter = 58;
    google.protobuf.StringValue subreddit_type = 59;
    google.protobuf.BoolValue allow_predictions = 60;
    google.protobuf.BoolValue user_flair_pns_enabled = 61;
    google.protobuf.StringValue content_options = 62;
  }

  google.protobuf.StringValue kind = 1;
  SubredditSettings data = 2;
}

message SubredditAboutRulesResponse {
  message SubredditRule {
    google.protobuf.StringValue kind = 1;
    google.protobuf.StringValue description = 2;
    google.protobuf.StringValue short_name = 3;
    google.protobuf.StringValue violation_reason = 4;
    google.protobuf.Int64Value created_utc = 5;
    google.protobuf.Int32Value priority = 6;
    google.protobuf.StringValue description_html = 7;
  }

  message RuleFlow {
    google.protobuf.StringValue reason_text_to_show = 1;
    google.protobuf.StringValue reason_text = 2;
    google.protobuf.StringValue next_step_header = 3;
    repeated RuleFlow next_step_reasons = 4;
    google.protobuf.StringValue complaint_button_text = 5;
    google.protobuf.StringValue complaint_url = 6;
    google.protobuf.StringValue complaint_page_title = 7;
    google.protobuf.BoolValue file_complaint = 8;
    google.protobuf.StringValue complaint_prompt = 9;
    google.protobuf.BoolValue can_write_notes = 10;
    google.protobuf.BoolValue is_abuse_of_report_button = 11;
    google.protobuf.StringValue notes_input_title = 12;
    google.protobuf.StringValue usernames_input_title = 13;
    google.protobuf.BoolValue can_specify_usernames = 14;
    google.protobuf.BoolValue request_crisis_support = 15;
    google.protobuf.BoolValue one_username = 16;
  }

  repeated SubredditRule rules = 1;
  repeated google.protobuf.StringValue site_rules = 2;
  repeated RuleFlow site_rules_flow = 3;
}

message SubredditAboutTrafficResponse {
  message Data {
    repeated google.protobuf.Int64Value values = 1;
  }
  repeated Data day = 1;
  repeated Data hour = 2;
  repeated Data month = 3;
}

message StickyResponse {
  message LinkData {
    google.protobuf.StringValue author_flair_background_color = 1;
    google.protobuf.Int32Value approved_at_utc = 2;
    google.protobuf.StringValue subreddit = 3;
    google.protobuf.StringValue selftext = 4;
    repeated google.protobuf.StringValue user_reports = 5;
    google.protobuf.BoolValue saved = 6;
    google.protobuf.StringValue mod_reason_title = 7;
    google.protobuf.Int64Value gilded = 8;
    google.protobuf.BoolValue clicked = 9;
    google.protobuf.StringValue title = 10;
    repeated google.protobuf.StringValue link_flair_richtext = 11;
    google.protobuf.StringValue subreddit_name_prefixed = 12;
    google.protobuf.BoolValue hidden = 13;
    google.protobuf.StringValue pwls = 14;
    google.protobuf.StringValue link_flair_css_class = 15;
    google.protobuf.Int64Value downs = 16;
    google.protobuf.Int32Value thumbnail_height = 17;
    google.protobuf.StringValue top_awarded_type = 18;
    google.protobuf.BoolValue parent_whitelist_status = 19;
    google.protobuf.BoolValue hide_score = 20;
    google.protobuf.StringValue name = 21;
    google.protobuf.BoolValue quarantine = 22;
    google.protobuf.StringValue link_flair_text_color = 23;
    google.protobuf.Int64Value upvote_ratio = 24;
    google.protobuf.BoolValue ignore_reports = 25;
    google.protobuf.Int64Value ups = 26;
    google.protobuf.StringValue domain = 27;
    devvit.reddit.MediaEmbed media_embed = 28;
    google.protobuf.Int32Value thumbnail_width = 29;
    google.protobuf.StringValue author_flair_template_id = 30;
    google.protobuf.BoolValue is_original_content = 31;
    google.protobuf.StringValue author_fullname = 32;
    google.protobuf.BoolValue secure_media = 33;
    google.protobuf.BoolValue is_reddit_media_domain = 34;
    google.protobuf.BoolValue is_meta = 35;
    google.protobuf.StringValue category = 36;
    devvit.reddit.MediaEmbed secure_media_embed = 37;
    google.protobuf.StringValue link_flair_text = 38;
    google.protobuf.BoolValue can_mod_post = 39;
    google.protobuf.Int64Value score = 40;
    google.protobuf.StringValue approved_by = 41;
    google.protobuf.BoolValue is_created_from_ads_ui = 42;
    google.protobuf.BoolValue author_premium = 43;
    google.protobuf.StringValue thumbnail = 44;
    google.protobuf.BoolValue edited = 45;
    google.protobuf.StringValue author_flair_css_class = 46;
    repeated google.protobuf.Int64Value previous_visits = 47;
    repeated google.protobuf.StringValue author_flair_richtext = 48;
    google.protobuf.Any gildings = 49;
    google.protobuf.StringValue content_categories = 50;
    google.protobuf.BoolValue is_self = 51;
    google.protobuf.StringValue subreddit_type = 52;
    google.protobuf.Int64Value created = 53;
    google.protobuf.StringValue link_flair_type = 54;
    google.protobuf.StringValue wls = 55;
    google.protobuf.StringValue removed_by_category = 56;
    google.protobuf.StringValue banned_by = 57;
    google.protobuf.StringValue author_flair_type = 58;
    google.protobuf.Int64Value total_awards_received = 59;
    google.protobuf.BoolValue allow_live_comments = 60;
    google.protobuf.StringValue selftext_html = 61;
    google.protobuf.BoolValue likes = 62;
    google.protobuf.StringValue suggested_sort = 63;
    google.protobuf.Int32Value banned_at_utc = 64;
    google.protobuf.Int32Value view_count = 65;
    google.protobuf.BoolValue archived = 66;
    google.protobuf.BoolValue no_follow = 67;
    google.protobuf.BoolValue spam = 68;
    google.protobuf.BoolValue is_crosspostable = 69;
    google.protobuf.BoolValue pinned = 70;
    google.protobuf.BoolValue over_18 = 71;
    repeated google.protobuf.Any all_awardings = 72;
    repeated google.protobuf.StringValue awarders = 73;
    google.protobuf.BoolValue media_only = 74;
    google.protobuf.BoolValue can_gild = 75;
    google.protobuf.BoolValue removed = 76;
    google.protobuf.BoolValue spoiler = 77;
    google.protobuf.BoolValue locked = 78;
    google.protobuf.StringValue author_flair_text = 79;
    repeated google.protobuf.Any treatment_tags = 80;
    google.protobuf.StringValue rte_mode = 81;
    google.protobuf.BoolValue visited = 82;
    google.protobuf.StringValue removed_by = 83;
    google.protobuf.StringValue mod_note = 84;
    google.protobuf.StringValue distinguished = 85;
    google.protobuf.StringValue subreddit_id = 86;
    google.protobuf.BoolValue author_is_blocked = 87;
    google.protobuf.StringValue mod_reason_by = 88;
    google.protobuf.Int64Value num_reports = 89;
    google.protobuf.StringValue removal_reason = 90;
    google.protobuf.StringValue link_flair_background_color = 91;
    google.protobuf.StringValue id = 92;
    google.protobuf.BoolValue is_robot_indexable = 93;
    google.protobuf.Int32Value num_duplicates = 94;
    repeated google.protobuf.Any report_reasons = 95;
    google.protobuf.StringValue author = 96;
    google.protobuf.StringValue discussion_type = 97;
    google.protobuf.Int64Value num_comments = 98;
    google.protobuf.BoolValue send_replies = 99;
    google.protobuf.StringValue media = 100;
    google.protobuf.BoolValue contest_mode = 101;
    google.protobuf.BoolValue author_patreon_flair = 102;
    google.protobuf.BoolValue approved = 103;
    google.protobuf.StringValue author_flair_text_color = 104;
    google.protobuf.StringValue permalink = 105;
    google.protobuf.BoolValue whitelist_status = 106;
    google.protobuf.BoolValue stickied = 107;
    google.protobuf.StringValue url = 108;
    google.protobuf.Int64Value subreddit_subscribers = 109;
    google.protobuf.Int64Value created_utc = 110;
    google.protobuf.Int64Value num_crossposts = 111;
    repeated google.protobuf.Any mod_reports = 112;
    google.protobuf.BoolValue is_video = 113;
  }

  message WrappedStickyListing {
    google.protobuf.StringValue kind = 1;
    LinkData data = 2;
  }
  message StickyResponseData {
    google.protobuf.StringValue after = 1;
    google.protobuf.StringValue before = 2;
    google.protobuf.Int32Value dist = 3;
    google.protobuf.StringValue modhash = 4;
    google.protobuf.StringValue geo_filter = 5;
    repeated WrappedStickyListing children = 6;
  }

  google.protobuf.StringValue kind = 1;
  StickyResponseData data = 2;
}

message FullSubredditObject {
  google.protobuf.StringValue user_flair_background_color = 1;
  google.protobuf.StringValue submit_text_html = 2;
  google.protobuf.BoolValue restrict_posting = 3;
  google.protobuf.BoolValue user_is_banned = 4;
  google.protobuf.BoolValue free_form_reports = 5;
  google.protobuf.BoolValue wiki_enabled = 6;
  google.protobuf.BoolValue user_is_muted = 7;
  google.protobuf.BoolValue user_can_flair_in_sr = 8;
  google.protobuf.StringValue display_name = 9;
  google.protobuf.StringValue header_img = 10;
  google.protobuf.StringValue title = 11;
  google.protobuf.BoolValue allow_galleries = 12;
  repeated google.protobuf.Int64Value icon_size = 13;
  google.protobuf.StringValue primary_color = 14;
  google.protobuf.Int64Value active_user_count = 15;
  google.protobuf.StringValue icon_img = 16;
  google.protobuf.StringValue display_name_prefixed = 17;
  google.protobuf.Int64Value accounts_active = 18;
  google.protobuf.BoolValue public_traffic = 19;
  google.protobuf.Int64Value subscribers = 20;
  repeated google.protobuf.StringValue user_flair_richtext = 21;
  google.protobuf.Int64Value videostream_links_count = 22;
  google.protobuf.StringValue name = 23;
  google.protobuf.BoolValue quarantine = 24;
  google.protobuf.BoolValue hide_ads = 25;
  google.protobuf.BoolValue emojis_enabled = 27;
  google.protobuf.StringValue advertiser_category = 28;
  google.protobuf.StringValue public_description = 29;
  google.protobuf.Int32Value comment_score_hide_mins = 30;
  google.protobuf.BoolValue allow_predictions = 31;
  google.protobuf.BoolValue user_has_favorited = 32;
  google.protobuf.StringValue user_flair_template_id = 33;
  google.protobuf.StringValue community_icon = 34;
  google.protobuf.StringValue banner_background_image = 35;
  google.protobuf.BoolValue original_content_tag_enabled = 36;
  google.protobuf.BoolValue community_reviewed = 37;
  google.protobuf.StringValue submit_text = 39;
  google.protobuf.StringValue description_html = 40;
  google.protobuf.BoolValue spoilers_enabled = 41;
  devvit.reddit.CommentContributionSettings comment_contribution_settings = 42;
  google.protobuf.BoolValue allow_talks = 43;
  repeated google.protobuf.Int64Value header_size = 44;
  google.protobuf.StringValue user_flair_position = 45;
  google.protobuf.BoolValue all_original_content = 46;
  google.protobuf.BoolValue has_menu_widget = 47;
  google.protobuf.BoolValue is_enrolled_in_new_modmail = 48;
  google.protobuf.StringValue key_color = 49;
  google.protobuf.BoolValue can_assign_user_flair = 50;
  google.protobuf.Int64Value created = 51;
  google.protobuf.Int32Value wls = 52;
  google.protobuf.BoolValue show_media_preview = 53;
  google.protobuf.StringValue submission_type = 54;
  google.protobuf.BoolValue user_is_subscriber = 55;
  repeated google.protobuf.StringValue allowed_media_in_comments = 56;
  google.protobuf.BoolValue allow_videogifs = 57;
  google.protobuf.BoolValue should_archive_posts = 58;
  google.protobuf.StringValue user_flair_type = 59;
  google.protobuf.BoolValue allow_polls = 60;
  google.protobuf.BoolValue collapse_deleted_comments = 61;
  repeated google.protobuf.Int64Value emojis_custom_size = 62;
  google.protobuf.StringValue public_description_html = 63;
  google.protobuf.BoolValue allow_videos = 64;
  google.protobuf.BoolValue is_crosspostable_subreddit = 65;
  google.protobuf.StringValue notification_level = 66;
  google.protobuf.BoolValue should_show_media_in_comments_setting = 67;
  google.protobuf.BoolValue can_assign_link_flair = 68;
  google.protobuf.BoolValue accounts_active_is_fuzzed = 69;
  google.protobuf.BoolValue allow_prediction_contributors = 70;
  google.protobuf.StringValue submit_text_label = 71;
  google.protobuf.StringValue link_flair_position = 72;
  google.protobuf.BoolValue user_sr_flair_enabled = 73;
  google.protobuf.BoolValue user_flair_enabled_in_sr = 74;
  google.protobuf.BoolValue allow_chat_post_creation = 75;
  google.protobuf.BoolValue allow_discovery = 76;
  google.protobuf.BoolValue accept_followers = 77;
  google.protobuf.BoolValue user_sr_theme_enabled = 78;
  google.protobuf.BoolValue link_flair_enabled = 79;
  google.protobuf.BoolValue disable_contributor_requests = 80;
  google.protobuf.StringValue subreddit_type = 81;
  google.protobuf.StringValue suggested_comment_sort = 82;
  google.protobuf.StringValue banner_img = 83;
  google.protobuf.StringValue user_flair_text = 84;
  google.protobuf.StringValue content_category = 85;
  google.protobuf.StringValue banner_background_color = 86;
  google.protobuf.BoolValue show_media = 87;
  google.protobuf.StringValue id = 88;
  google.protobuf.BoolValue user_is_moderator = 89;
  google.protobuf.BoolValue over18 = 90;
  google.protobuf.StringValue header_title = 91;
  google.protobuf.StringValue description = 92;
  google.protobuf.BoolValue is_chat_post_feature_enabled = 93;
  google.protobuf.StringValue submit_link_label = 94;
  google.protobuf.StringValue user_flair_text_color = 95;
  google.protobuf.BoolValue restrict_commenting = 96;
  google.protobuf.StringValue user_flair_css_class = 97;
  google.protobuf.BoolValue allow_images = 98;
  google.protobuf.StringValue lang = 99;
  google.protobuf.StringValue whitelist_status = 100;
  google.protobuf.StringValue url = 101;
  google.protobuf.Int64Value created_utc = 102;
  repeated google.protobuf.Int32Value banner_size = 103;
  google.protobuf.StringValue mobile_banner_image = 104;
  google.protobuf.BoolValue user_is_contributor = 105;
  google.protobuf.BoolValue allow_predictions_tournament = 106;

  reserved 26;
}

message SubredditsSearchResponse {
  message WrappedSubredditObject {
    message SubredditData {
      google.protobuf.StringValue kind = 1;
      FullSubredditObject data = 2;
    }
    google.protobuf.StringValue after = 1;
    google.protobuf.StringValue before = 2;
    google.protobuf.Int32Value dist = 3;
    google.protobuf.StringValue geo_filter = 4;
    repeated SubredditData children = 5;
  }

  google.protobuf.StringValue kind = 1;
  WrappedSubredditObject data = 2;
}

message UserSearchResponse {
  message AccData {
    google.protobuf.StringValue after = 1;
    google.protobuf.Int64Value dist = 2;
    google.protobuf.StringValue modhash = 3;
    google.protobuf.StringValue geo_filter = 4;
    repeated Account children = 5;
    google.protobuf.StringValue before = 6;
  }

  message Account {
    google.protobuf.StringValue kind = 1;
    AccountData data = 2;
  }

  message AccountData {
    message Subreddit {
      google.protobuf.BoolValue default_set = 1;
      google.protobuf.BoolValue user_is_contributor = 2;
      google.protobuf.StringValue banner_img = 3;
      repeated google.protobuf.StringValue allowed_media_in_comments = 4;
      google.protobuf.BoolValue user_is_banned = 5;
      google.protobuf.BoolValue free_form_reports = 6;
      google.protobuf.StringValue community_icon = 7;
      google.protobuf.BoolValue show_media = 8;
      google.protobuf.StringValue icon_color = 9;
      google.protobuf.BoolValue user_is_muted = 10;
      google.protobuf.StringValue display_name = 11;
      google.protobuf.StringValue header_img = 12;
      google.protobuf.StringValue title = 13;
      repeated google.protobuf.StringValue previous_names = 14;
      google.protobuf.BoolValue over_18 = 15;
      repeated google.protobuf.Int32Value icon_size = 16;
      google.protobuf.StringValue primary_color = 17;
      google.protobuf.StringValue icon_img = 18;
      google.protobuf.StringValue description = 19;
      google.protobuf.StringValue submit_link_label = 20;
      repeated google.protobuf.Int32Value header_size = 21;
      google.protobuf.BoolValue restrict_posting = 22;
      google.protobuf.BoolValue restrict_commenting = 23;
      google.protobuf.Int64Value subscribers = 24;
      google.protobuf.StringValue submit_text_label = 25;
      google.protobuf.BoolValue is_default_icon = 26;
      google.protobuf.StringValue link_flair_position = 27;
      google.protobuf.StringValue display_name_prefixed = 28;
      google.protobuf.StringValue key_color = 29;
      google.protobuf.StringValue name = 30;
      google.protobuf.BoolValue is_default_banner = 31;
      google.protobuf.StringValue url = 32;
      google.protobuf.BoolValue quarantine = 33;
      repeated google.protobuf.Int32Value banner_size = 34;
      google.protobuf.BoolValue user_is_moderator = 35;
      google.protobuf.BoolValue accept_followers = 36;
      google.protobuf.StringValue public_description = 37;
      google.protobuf.BoolValue link_flair_enabled = 38;
      google.protobuf.BoolValue disable_contributor_requests = 39;
      google.protobuf.StringValue subreddit_type = 40;
      google.protobuf.BoolValue user_is_subscriber = 41;
    }

    google.protobuf.BoolValue is_employee = 1;
    google.protobuf.BoolValue is_friend = 2;
    repeated google.protobuf.Int32Value snoovatar_size = 3;
    google.protobuf.StringValue id = 4;
    google.protobuf.BoolValue verified = 5;
    google.protobuf.BoolValue is_gold = 6;
    google.protobuf.BoolValue is_mod = 7;
    google.protobuf.BoolValue has_verified_email = 8;
    google.protobuf.StringValue icon_img = 9;
    google.protobuf.BoolValue hide_from_robots = 10;
    google.protobuf.Int32Value link_karma = 11;
    google.protobuf.BoolValue accept_chats = 12;
    google.protobuf.BoolValue is_blocked = 13;
    google.protobuf.BoolValue pref_show_snoovatar = 14;
    google.protobuf.StringValue name = 15;
    google.protobuf.Int64Value created = 16;
    google.protobuf.Int64Value created_utc = 17;
    google.protobuf.StringValue snoovatar_img = 18;
    google.protobuf.Int64Value comment_karma = 19;
    google.protobuf.BoolValue accept_followers = 20;
    google.protobuf.BoolValue has_subscribed = 21;
    google.protobuf.BoolValue accept_pms = 22;
    google.protobuf.BoolValue is_suspended = 23;
    Subreddit subreddit = 24;
  }

  google.protobuf.StringValue kind = 1;
  AccData data = 2;
}

message SubredditAddRemovalReasonRequest {
  // The name of the subreddit without `r/`
  string subreddit = 1;
  // A message that will communicate to the user why their post was removed
  string message = 2;
  // Removal Reason title
  string title = 3;
}

message SubredditAddRemovalReasonResponse {
  // Removal Reason ID
  string id = 1;
}

message SubredditGetRemovalReasonsRequest {
  // The name of the subreddit without `r/`
  string subreddit = 1;
}

message SubredditGetRemovalReasonsResponse {
  message SubredditRemovalReason {
    // Removal Reason ID
    string id = 1;
    // A message that will communicate to the user why their post was removed
    string message = 2;
    // Removal Reason title
    string title = 3;
  }

  map<string, SubredditRemovalReason> data = 1;
  // Ordered list of Removal Reason IDs
  repeated string order = 2;
}

message GetHighlightedPostsRequest {
  // Subreddit name without the "r/" prefix.
  string subreddit_name = 1;
}

// A highlighted post entry in a subreddit.
message HighlightedPost {
  // Post thing ID.
  string post_id = 1;
  // Expiration time as a Unix timestamp in seconds.
  optional int64 expires_at = 2;
  // Label to display for the highlighted post.
  optional devvit.plugin.redditapi.common.HighlightedPostLabel label = 3;
}

// Response containing highlighted posts for a subreddit.
message GetHighlightedPostsResponse {
  // Highlighted posts in display order.
  repeated HighlightedPost highlighted_posts = 1;
}

// Request to reorder highlighted posts in a subreddit.
message ReorderHighlightedPostsRequest {
  // Subreddit thing ID.
  // @example "t5_abc123"
  string subreddit_id = 1;
  // List of all highlighted post IDs in the new desired order.
  // Including a post ID that isn't highlited will return an error.
  // @example ["t3_abc123", "t3_def456", "t3_hij789"]
  repeated string post_ids_highlight_order = 2;
}

// Response for reordering highlighted posts.
message ReorderHighlightedPostsResponse {}
