export const RedditAPIMappings = {
    /* ----------------------- LISTINGS ---------------------*/
    Best: {
        method: 'get',
        path: '/best.json?after={after}&before={before}&count={count}&limit={limit}&show={show}',
    },
    ById: {
        method: 'get',
        path: '/by_id/{postIds}.json',
    },
    Comments: {
        method: 'get',
        path: '/comments/{article}.json?comment={comment}&context={context}&depth={depth}&limit={limit}&sort={sort}&threaded={threaded}&truncate={truncate}',
    },
    Duplicates: {
        method: 'get',
        path: '/duplicates/{article}.json?before={before}&after={after}&limit={limit}&sort={sort}&sr={sr}&count={count}&crossposts_only={crosspostsOnly}&show={show}',
    },
    Hot: {
        method: 'get',
        path: '{/r/subreddit}/hot.json?after={after}&before={before}&count={count}&limit={limit}&show={show}&g={g}',
    },
    New: {
        method: 'get',
        path: '{/r/subreddit}/new.json?after={after}&before={before}&count={count}&limit={limit}&show={show}',
    },
    Rising: {
        method: 'get',
        path: '{/r/subreddit}/rising.json?after={after}&before={before}&count={count}&limit={limit}&show={show}',
    },
    Sort: {
        method: 'get',
        path: '{/r/subreddit}/{sort}.json?after={after}&before={before}&limit={limit}&count={count}&show={show}&t={t}',
    },
    /* ----------------------- PRIVATE MESSAGES ---------------------*/
    Block: {
        method: 'post',
        path: '/api/block',
        body: '*form',
    },
    CollapseMessage: {
        method: 'post',
        path: '/api/collapse_message.json',
        body: '*',
    },
    Compose: {
        method: 'post',
        path: '/api/compose',
        body: '*form.snake',
        enforceJson: true,
    },
    DelMsg: {
        method: 'post',
        path: '/api/del_msg.json',
        body: '*',
    },
    ReadAllMessages: {
        method: 'post',
        path: '/api/read_all_messages.json',
        body: '*',
    },
    ReadMessage: {
        method: 'post',
        path: '/api/read_message.json',
        body: '*',
    },
    UnblockSubreddit: {
        method: 'post',
        path: '/api/unblock_subreddit.json',
        body: '*',
    },
    UncollapseMessage: {
        method: 'post',
        path: '/api/uncollapse_message.json',
        body: '*',
    },
    UnreadMessage: {
        method: 'post',
        path: '/api/unread_message.json',
        body: '*',
    },
    MessageWhere: {
        method: 'get',
        path: '/message/{where}.json?mark={mark}&mid={mid}&after={after}&before={before}&count={count}&limit={limit}&show={show}',
    },
    /* ----------------------- LINKS & COMMENTS ---------------------*/
    Comment: {
        method: 'post',
        path: '/api/comment',
        body: '*form.snake',
        enforceJson: true,
    },
    Del: {
        method: 'post',
        path: '/api/del',
        body: '*form',
    },
    EditUserText: {
        method: 'post',
        path: '/api/editusertext',
        body: '*form.snake',
        enforceJson: true,
    },
    EventPostTime: {
        method: 'post',
        path: '/api/event_post_time',
        body: '*form.snake',
    },
    FollowPost: {
        method: 'post',
        path: '/api/follow_post',
        body: '*form.snake',
    },
    Hide: {
        method: 'post',
        path: '/api/hide',
        body: '*form.snake',
    },
    Info: {
        method: 'get',
        path: '/api/info.json?sr_name={subreddits}&id={thingIds}&url={url}&rtj=1',
    },
    Lock: {
        method: 'post',
        path: '/api/lock',
        body: '*form.snake',
    },
    MarkNSFW: {
        method: 'post',
        path: '/api/marknsfw',
        body: '*form.snake',
    },
    MoreChildren: {
        method: 'get',
        path: '/api/morechildren?children={children}&depth={depth}&id={id}&limit_children={limitChildren}&link_id={linkId}&sort={sort}&api_type=json',
    },
    Report: {
        method: 'post',
        path: '/api/report',
        body: '*form.snake',
        enforceJson: true,
    },
    ReportAward: {
        method: 'post',
        path: '/api/report_award',
        body: '*form.snake',
    },
    Save: {
        method: 'post',
        path: '/api/save',
        body: '*form.snake',
    },
    SavedCategories: {
        method: 'get',
        path: '/api/saved_categories',
    },
    SendReplies: {
        method: 'post',
        path: '/api/sendreplies',
        body: '*form.snake',
    },
    SetContestMode: {
        method: 'post',
        path: '/api/set_contest_mode',
        body: '*form.snake',
        enforceJson: true,
    },
    SetSubredditSticky: {
        method: 'post',
        path: '/api/set_subreddit_sticky',
        body: '*form.snake',
        enforceJson: true,
    },
    SetSuggestedSort: {
        method: 'post',
        path: '/api/set_suggested_sort',
        body: '*form.snake',
        enforceJson: true,
    },
    Spoiler: {
        method: 'post',
        path: '/api/spoiler',
        body: '*form.snake',
    },
    StoreVisits: {
        method: 'post',
        path: '/api/store_visits',
        body: '*form.snake',
    },
    Submit: {
        method: 'post',
        path: '/api/submit',
        body: '*form.snake',
        enforceJson: true,
    },
    Unhide: {
        method: 'post',
        path: '/api/unhide',
        body: '*form.snake',
    },
    Unlock: {
        method: 'post',
        path: '/api/unlock',
        body: '*form.snake',
    },
    UnmarkNSFW: {
        method: 'post',
        path: '/api/unmarknsfw',
        body: '*form.snake',
    },
    Unsave: {
        method: 'post',
        path: '/api/unsave',
        body: '*form.snake',
    },
    Unspoiler: {
        method: 'post',
        path: '/api/unspoiler',
        body: '*form.snake',
    },
    Vote: {
        method: 'post',
        path: '/api/vote',
        body: '*form.snake',
    },
    /* ----------------------- MODERATION ---------------------*/
    AboutLog: {
        method: 'get',
        path: '/r/{subreddit}/about/log?after={after}&before={before}&count={count}&limit={limit}&show={show}&mod={mod}&type={type}',
    },
    AboutLocation: {
        method: 'get',
        path: '/r/{subreddit}/about/{location}?after={after}&before={before}&count={count}&limit={limit}&show={show}&only={only}',
    },
    AboutReports: {
        method: 'get',
        path: '/r/{subreddit}/about/reports?after={after}&before={before}&count={count}&limit={limit}&show={show}&only={only}',
    },
    AboutSpam: {
        method: 'get',
        path: '/r/{subreddit}/about/spam?after={after}&before={before}&count={count}&limit={limit}&show={show}&only={only}',
    },
    AboutModqueue: {
        method: 'get',
        path: '/r/{subreddit}/about/modqueue?after={after}&before={before}&count={count}&limit={limit}&show={show}&only={only}',
    },
    AboutUnmoderated: {
        method: 'get',
        path: '/r/{subreddit}/about/unmoderated?after={after}&before={before}&count={count}&limit={limit}&show={show}&only={only}',
    },
    AboutEdited: {
        method: 'get',
        path: '/r/{subreddit}/about/edited?after={after}&before={before}&count={count}&limit={limit}&show={show}&only={only}',
    },
    AcceptModeratorInvite: {
        method: 'post',
        path: '/r/{subreddit}/api/accept_moderator_invite',
    },
    Approve: {
        method: 'post',
        path: '/api/approve',
        body: '*form',
    },
    Distinguish: {
        method: 'post',
        path: '/api/distinguish',
        body: '*form.snake',
        enforceJson: true,
    },
    IgnoreReports: {
        method: 'post',
        path: '/api/ignore_reports',
        body: '*form',
    },
    LeaveContributor: {
        method: 'post',
        path: '/api/leavecontributor',
        body: '*form',
    },
    LeaveModerator: {
        method: 'post',
        path: '/api/leavemoderator',
        body: '*form',
    },
    MuteMessageAuthor: {
        method: 'post',
        path: '/api/mute_message_author',
        body: '*form',
    },
    Remove: {
        method: 'post',
        path: '/api/remove',
        body: '*form',
    },
    ShowComment: {
        method: 'post',
        path: '/api/show_comment',
        body: '*form',
    },
    SnoozeReports: {
        method: 'post',
        path: '/api/snooze_reports',
        body: '*form',
    },
    UnignoreReports: {
        method: 'post',
        path: '/api/unignore_reports',
        body: '*form',
    },
    UnmuteMessageAuthor: {
        method: 'post',
        path: '/api/unmute_message_author',
        body: '*form',
    },
    UnsnoozeReports: {
        method: 'post',
        path: '/api/unsnooze_reports',
        body: '*form',
    },
    UpdateCrowdControlLevel: {
        method: 'post',
        path: '/api/update_crowd_control_level',
        body: '*form',
    },
    Stylesheet: {
        method: 'get',
        path: '/r/{subreddit}/stylesheet',
    },
    /* ----------------------- FLAIR ---------------------*/
    ClearFlairTemplates: {
        method: 'post',
        path: '/r/{subreddit}/api/clearflairtemplates',
        body: '*form.snake',
        enforceJson: true,
    },
    DeleteFlair: {
        method: 'post',
        path: '/r/{subreddit}/api/deleteflair',
        body: '*form',
    },
    DeleteFlairTemplate: {
        method: 'post',
        path: '/r/{subreddit}/api/deleteflairtemplate',
        body: '*form.snake',
        enforceJson: true,
    },
    Flair: {
        method: 'post',
        path: '/r/{subreddit}/api/flair',
        body: '*form.snake',
        enforceJson: true,
    },
    FlairTemplateOrder: {
        method: 'patch',
        path: '/r/{subreddit}/api/flair_template_order?flair_type={flairType}',
        body: '*',
    },
    FlairConfig: {
        method: 'post',
        path: '/r/{subreddit}/api/flairconfig',
        body: '*form.snake',
        enforceJson: true,
    },
    FlairCsv: {
        method: 'post',
        path: '/r/{subreddit}/api/flaircsv?flair_csv={flairCsv}',
    },
    FlairList: {
        method: 'get',
        path: '/r/{subreddit}/api/flairlist.json?after={after}&before={before}&count={count}&limit={limit}&name={name}&show={show}',
    },
    FlairSelector: {
        method: 'post',
        path: '/r/{subreddit}/api/flairselector?name={name}&link={link}&is_newlink={isNewlink}',
    },
    FlairTemplate: {
        method: 'post',
        path: '/r/{subreddit}/api/flairtemplate_v2',
        body: '*form.snake',
        enforceJson: true,
    },
    LinkFlair: {
        method: 'get',
        path: '/r/{subreddit}/api/link_flair_v2',
    },
    SelectFlair: {
        method: 'post',
        path: '/r/{subreddit}/api/selectflair',
        body: '*form.snake',
        enforceJson: true,
    },
    SetFlairEnabled: {
        method: 'post',
        path: '/r/{subreddit}/api/setflairenabled',
        body: '*form.snake',
        enforceJson: true,
    },
    UserFlair: {
        method: 'get',
        path: '/r/{subreddit}/api/user_flair_v2',
    },
    /* ----------------------- NEWMODMAIL ---------------------*/
    BulkReadConversations: {
        method: 'post',
        path: '/api/mod/conversations/bulk/read',
        body: '*form',
    },
    GetConversations: {
        method: 'get',
        path: '/api/mod/conversations?after={after}&entity={entity}&limit={limit}&sort={sort}&state={state}',
    },
    CreateConversation: {
        method: 'post',
        path: '/api/mod/conversations',
        body: '*form',
    },
    GetConversation: {
        method: 'get',
        path: '/api/mod/conversations/{conversationId}?markRead={markRead}',
    },
    CreateConversationMessage: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}',
        body: '*form',
    },
    ApproveConversation: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/approve',
    },
    ArchiveConversation: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/archive',
    },
    DisapproveConversation: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/disapprove',
    },
    UnhighlightConversation: {
        method: 'delete',
        path: '/api/mod/conversations/{conversationId}/highlight',
    },
    HighlightConversation: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/highlight',
    },
    MuteConversation: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/mute',
        body: '*form',
    },
    TempBan: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/temp_ban',
        body: '*',
    },
    UnarchiveConversation: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/unarchive',
    },
    Unban: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/unban',
    },
    UnmuteConversation: {
        method: 'post',
        path: '/api/mod/conversations/{conversationId}/unmute',
    },
    UserConversations: {
        method: 'get',
        path: '/api/mod/conversations/{conversationId}/user',
    },
    Read: {
        method: 'post',
        path: '/api/mod/conversations/read',
        body: '*form',
    },
    Subreddits: {
        method: 'get',
        path: '/api/mod/conversations/subreddits',
    },
    Unread: {
        method: 'post',
        path: '/api/mod/conversations/unread',
        body: '*form',
    },
    UnreadCount: {
        method: 'get',
        path: '/api/mod/conversations/unread/count',
    },
    /* ----------------------- ModNote ---------------------*/
    DeleteNotes: {
        method: 'delete',
        path: '/api/mod/notes?note_id={noteId}&subreddit={subreddit}&user={user}',
    },
    GetNotes: {
        method: 'get',
        path: '/api/mod/notes?before={before}&filter={filter}&limit={limit}&subreddit={subreddit}&user={user}',
    },
    PostNotes: {
        method: 'post',
        path: '/api/mod/notes',
        body: '*form.snake',
    },
    PostRemovalNote: {
        method: 'post',
        path: '/api/v1/modactions/removal_reasons',
        body: '*.snake',
    },
    RecentNotes: {
        method: 'get',
        path: '/api/mod/notes/recent?subreddits={subreddits}&users={users}',
    },
    /* -------------------------- USERS -----------------------*/
    BlockUser: {
        method: 'post',
        path: '/api/block_user',
        body: '*form.snake',
        enforceJson: true,
    },
    Friend: {
        method: 'post',
        path: '/r/{subreddit}/api/friend',
        body: '*form.snake',
        enforceJson: true,
    },
    ReportUser: {
        method: 'post',
        path: '/api/report_user',
        body: '*form.snake',
    },
    SetPermissions: {
        method: 'post',
        path: '/r/{subreddit}/api/setpermissions',
        body: '*form.snake',
        enforceJson: true,
    },
    Unfriend: {
        method: 'post',
        path: '/r/{subreddit}/api/unfriend',
        body: '*form.snake',
    },
    UserDataByAccountIds: {
        method: 'get',
        path: '/api/user_data_by_account_ids?ids={ids}',
    },
    UsernameAvailable: {
        method: 'get',
        path: '/api/username_available?user={user}',
    },
    UnfriendUser: {
        method: 'delete',
        path: '/api/v1/me/friends/{username}?id={id}',
    },
    GetFriendInformation: {
        method: 'get',
        path: '/api/v1/me/friends/{username}?id={id}',
    },
    UpdateFriendRelationship: {
        method: 'put',
        path: '/api/v1/me/friends/{name}',
        body: '*',
    },
    UserTrophies: {
        method: 'get',
        path: '/api/v1/user/{username}/trophies?id={id}',
    },
    UserAbout: {
        method: 'get',
        path: '/user/{username}/about',
    },
    UserWhere: {
        method: 'get',
        path: '/user/{username}/{where}?context={context}&show={show}&sort={sort}&t={t}&type={type}&after={after}&before={before}&count={count}&limit={limit}',
    },
    /* ----------------------- SUBREDDITS ---------------------*/
    AboutWhere: {
        method: 'get',
        path: '/r/{subreddit}/about/{where}?after={after}&before={before}&count={count}&limit={limit}&show={show}&user={user}',
    },
    DeleteSrBanner: {
        method: 'post',
        path: '/r/{subreddit}/api/delete_sr_banner',
    },
    DeleteSrHeader: {
        method: 'post',
        path: '/r/{subreddit}/api/delete_sr_header',
    },
    DeleteSrIcon: {
        method: 'post',
        path: '/r/{subreddit}/api/delete_sr_icon',
    },
    DeleteSrImg: {
        method: 'post',
        path: '/r/{subreddit}/api/delete_sr_img',
        body: '*form.snake',
        enforceJson: true,
    },
    SearchRedditNames: {
        method: 'post',
        path: '/api/search_reddit_names',
        body: '*form.snake',
    },
    SearchSubreddits: {
        method: 'post',
        path: '/api/search_subreddits',
        body: '*form.snake',
    },
    SiteAdmin: {
        method: 'post',
        path: '/api/site_admin',
        body: '*form.snake',
        enforceJson: true,
    },
    SubmitText: {
        method: 'get',
        path: '/r/{subreddit}/api/submit_text',
    },
    SubredditAutocomplete: {
        method: 'get',
        path: '/api/subreddit_autocomplete_v2?include_over_18={includeOver18}&include_profiles={includeProfiles}&limit={limit}&query={query}&search_query_id={searchQueryId}&typeahead_active={typeaheadActive}',
    },
    SubredditStylesheet: {
        method: 'post',
        path: '/r/{subreddit}/api/subreddit_stylesheet',
        body: '*form.snake',
        enforceJson: true,
    },
    Subscribe: {
        method: 'post',
        path: '/api/subscribe',
        body: '*form.snake',
    },
    UploadSrImg: {
        method: 'post',
        path: '/r/{subreddit}/api/upload_sr_img',
        body: '*form.snake',
    },
    SubredditPostRequirements: {
        method: 'get',
        path: '/api/v1/{subreddit}/post_requirements',
    },
    SubredditAbout: {
        method: 'get',
        path: '/r/{subreddit}/about',
    },
    SubredditAboutEdit: {
        method: 'get',
        path: '/r/{subreddit}/about/edit?created={created}&location={location}',
    },
    SubredditAboutRules: {
        method: 'get',
        path: '/r/{subreddit}/about/rules',
    },
    SubredditAboutTraffic: {
        method: 'get',
        path: '/r/{subreddit}/about/traffic',
    },
    Sidebar: {
        method: 'get',
        path: '/r/{subreddit}/sidebar',
    },
    Sticky: {
        method: 'get',
        path: '/r/{subreddit}/sticky?num={num}',
    },
    SubredditsMineWhere: {
        method: 'get',
        path: '/subreddits/mine/{where}?after={after}&before={before}&count={count}&limit={limit}&show={show}',
    },
    SubredditsSearch: {
        method: 'get',
        path: '/subreddits/search?after={after}&before={before}&count={count}&limit={limit}&q={q}&search_query_id={searchQueryId}&show={show}&show_users={showUsers}&sort={sort}&typeahead_active={typeaheadActive}',
    },
    SubredditsWhere: {
        method: 'get',
        path: '/subreddits/{where}?after={after}&before={before}&count={count}&limit={limit}&show={show}',
    },
    UsersSearch: {
        method: 'get',
        path: '/users/search?after={after}&before={before}&count={count}&limit={limit}&q={q}&search_query_id={searchQueryId}&show={show}&sort={sort}&typeahead_active={typeaheadActive}',
    },
    UsersWhere: {
        method: 'get',
        path: '/users/{where}?after={after}&before={before}&count={count}&limit={limit}&show={show}',
    },
    SubredditAddRemovalReason: {
        method: 'post',
        path: '/api/v1/{subreddit}/removal_reasons',
        body: '*form.snake',
        enforceJson: true,
    },
    SubredditGetRemovalReasons: {
        method: 'get',
        path: '/api/v1/{subreddit}/removal_reasons',
    },
    /* ----------------------- WIDGETS ---------------------*/
    AddWidget: {
        method: 'post',
        path: '/r/{subreddit}/api/widget',
        body: '*',
    },
    DeleteWidget: {
        method: 'delete',
        path: '/r/{subreddit}/api/widget/{id}',
    },
    UpdateWidget: {
        method: 'put',
        path: '/r/{subreddit}/api/widget/{id}',
        body: '*',
    },
    UploadImageForWidget: {
        method: 'post',
        path: '/r/{subreddit}/api/widget_image_upload_s3',
        body: '*form',
    },
    ReorderWidgets: {
        method: 'patch',
        path: '/r/{subreddit}/api/widget_order/section',
        body: '*',
    },
    GetWidgets: {
        method: 'get',
        path: '/r/{subreddit}/api/widgets',
    },
    /* ----------------------- WIKI ---------------------*/
    GetWikiPages: {
        method: 'get',
        path: '/r/{subreddit}/wiki/pages',
    },
    GetWikiPage: {
        method: 'get',
        path: '/r/{subreddit}/wiki/{page}',
    },
    EditWikiPage: {
        method: 'post',
        path: '/r/{subreddit}/api/wiki/edit',
        body: '*form.snake',
    },
    HideWikiPage: {
        method: 'post',
        path: '/r/{subreddit}/api/wiki/hide',
        body: '*form.snake',
    },
    RevertWikiPage: {
        method: 'post',
        path: '/r/{subreddit}/api/wiki/revert',
        body: '*form.snake',
    },
    GetWikiPageRevisions: {
        method: 'get',
        path: '/r/{subreddit}/wiki/revisions/{page}?after={after}&before={before}&count={count}&limit={limit}&show={show}&sr_detail={srDetail}',
    },
    GetWikiRevisions: {
        method: 'get',
        path: '/r/{subreddit}/wiki/revisions?after={after}&before={before}&count={count}&limit={limit}&show={show}&sr_detail={srDetail}',
    },
    GetWikiPageSettings: {
        method: 'get',
        path: '/r/{subreddit}/wiki/settings/{page}',
    },
    UpdateWikiPageSettings: {
        method: 'post',
        path: '/r/{subreddit}/wiki/settings/{page}',
        body: '*form',
    },
    AllowEditor: {
        method: 'post',
        path: '/r/{subreddit}/api/wiki/alloweditor/{act}',
        body: '*form.snake',
    },
    Collection: {
        method: 'get',
        path: '/api/v1/collections/collection?collection_id={collectionId}&include_links={includeLinks}',
    },
    CreateCollection: {
        method: 'post',
        path: '/api/v1/collections/create_collection',
        body: '*form.snake',
    },
    AddPostToCollection: {
        method: 'post',
        path: '/api/v1/collections/add_post_to_collection',
        body: '*form.snake',
    },
    DeleteCollection: {
        method: 'post',
        path: '/api/v1/collections/delete_collection',
        body: '*form.snake',
    },
    FollowCollection: {
        method: 'post',
        path: '/api/v1/collections/follow_collection',
        body: '*form.snake',
    },
    RemovePostInCollection: {
        method: 'post',
        path: '/api/v1/collections/remove_post_in_collection',
        body: '*form.snake',
    },
    ReorderCollection: {
        method: 'post',
        path: '/api/v1/collections/reorder_collection',
        body: '*form.snake',
    },
    SubredditCollections: {
        method: 'get',
        path: '/api/v1/collections/subreddit_collections?sr_fullname={srFullname}',
    },
    UpdateCollectionDescription: {
        method: 'post',
        path: '/api/v1/collections/update_collection_description',
        body: '*form.snake',
    },
    UpdateCollectionDisplayLayout: {
        method: 'post',
        path: '/api/v1/collections/update_collection_display_layout',
        body: '*form.snake',
    },
    UpdateCollectionTitle: {
        method: 'post',
        path: '/api/v1/collections/update_collection_title',
        body: '*form.snake',
    },
};
