e621 3.2.2 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/browser/e621.js +4877 -2478
  2. package/dist/browser/e621.js.map +4 -4
  3. package/dist/lib/generated/schemas.d.ts +2339 -1536
  4. package/dist/lib/generated/schemas.js +3354 -2294
  5. package/dist/lib/generated/sdk.d.ts +214 -3
  6. package/dist/lib/generated/sdk.js +575 -92
  7. package/dist/lib/generated/types.d.ts +2306 -977
  8. package/dist/lib/models/APIKey.d.ts +14 -0
  9. package/dist/lib/models/{ApiKey.js → APIKey.js} +8 -8
  10. package/dist/lib/models/Artist.d.ts +2 -2
  11. package/dist/lib/models/ArtistURL.d.ts +14 -0
  12. package/dist/lib/models/{ArtistUrl.js → ArtistURL.js} +8 -8
  13. package/dist/lib/models/Blip.d.ts +2 -3
  14. package/dist/lib/models/Blip.js +2 -2
  15. package/dist/lib/models/Comment.d.ts +2 -2
  16. package/dist/lib/models/Comment.js +2 -2
  17. package/dist/lib/models/{DbExport.d.ts → DBExport.d.ts} +1 -1
  18. package/dist/lib/models/{DbExport.js → DBExport.js} +1 -1
  19. package/dist/lib/models/ForumPost.d.ts +4 -5
  20. package/dist/lib/models/ForumPost.js +3 -3
  21. package/dist/lib/models/{IpBan.d.ts → IPBan.d.ts} +6 -6
  22. package/dist/lib/models/{IpBan.js → IPBan.js} +9 -9
  23. package/dist/lib/models/IQDBPost.d.ts +14 -0
  24. package/dist/lib/models/{IqdbPost.js → IQDBPost.js} +8 -8
  25. package/dist/lib/models/SearchTrendHourly.d.ts +14 -0
  26. package/dist/lib/models/SearchTrendHourly.js +17 -0
  27. package/dist/lib/models/UploadKarmaEvent.d.ts +9 -0
  28. package/dist/lib/models/UploadKarmaEvent.js +6 -0
  29. package/dist/lib/models/User.d.ts +4 -4
  30. package/dist/lib/models/User.js +6 -6
  31. package/dist/lib/models/UserAlt.d.ts +14 -0
  32. package/dist/lib/models/UserAlt.js +17 -0
  33. package/dist/lib/models/index.d.ts +8 -5
  34. package/dist/lib/models/index.js +9 -6
  35. package/dist/lib/modules/Appeals.js +3 -3
  36. package/dist/lib/modules/ArtistUrls.d.ts +2 -2
  37. package/dist/lib/modules/ArtistUrls.js +2 -2
  38. package/dist/lib/modules/Artists.js +3 -3
  39. package/dist/lib/modules/AvoidPostings.d.ts +16 -2
  40. package/dist/lib/modules/AvoidPostings.js +22 -3
  41. package/dist/lib/modules/Blips.d.ts +1 -1
  42. package/dist/lib/modules/Blips.js +4 -4
  43. package/dist/lib/modules/BulkUpdateRequests.js +3 -3
  44. package/dist/lib/modules/Comments.d.ts +13 -3
  45. package/dist/lib/modules/Comments.js +24 -6
  46. package/dist/lib/modules/DbExports.d.ts +1 -1
  47. package/dist/lib/modules/DbExports.js +1 -1
  48. package/dist/lib/modules/DoorkeeperOpenidConnectDiscovery.d.ts +40 -0
  49. package/dist/lib/modules/DoorkeeperOpenidConnectDiscovery.js +56 -0
  50. package/dist/lib/modules/DoorkeeperOpenidConnectUserinfo.d.ts +26 -0
  51. package/dist/lib/modules/DoorkeeperOpenidConnectUserinfo.js +35 -0
  52. package/dist/lib/modules/DoorkeeperTokenInfo.d.ts +24 -0
  53. package/dist/lib/modules/DoorkeeperTokenInfo.js +33 -0
  54. package/dist/lib/modules/DoorkeeperTokens.d.ts +65 -0
  55. package/dist/lib/modules/DoorkeeperTokens.js +82 -0
  56. package/dist/lib/modules/EmailBlacklists.js +2 -2
  57. package/dist/lib/modules/ForumPostVotes.d.ts +1 -1
  58. package/dist/lib/modules/ForumPostVotes.js +2 -2
  59. package/dist/lib/modules/ForumPosts.d.ts +3 -3
  60. package/dist/lib/modules/ForumPosts.js +4 -4
  61. package/dist/lib/modules/ForumTopics.d.ts +13 -2
  62. package/dist/lib/modules/ForumTopics.js +19 -3
  63. package/dist/lib/modules/HelpPages.js +4 -4
  64. package/dist/lib/modules/IpBans.d.ts +3 -3
  65. package/dist/lib/modules/IpBans.js +5 -5
  66. package/dist/lib/modules/IqdbQueries.js +4 -4
  67. package/dist/lib/modules/NewsUpdates.js +3 -3
  68. package/dist/lib/modules/Notes.js +3 -3
  69. package/dist/lib/modules/Pools.js +3 -3
  70. package/dist/lib/modules/PostDisapprovals.js +2 -2
  71. package/dist/lib/modules/PostFlags.js +2 -2
  72. package/dist/lib/modules/PostReplacements.d.ts +11 -0
  73. package/dist/lib/modules/PostReplacements.js +25 -2
  74. package/dist/lib/modules/PostSets.d.ts +9 -0
  75. package/dist/lib/modules/PostSets.js +27 -7
  76. package/dist/lib/modules/Posts.d.ts +12 -2
  77. package/dist/lib/modules/Posts.js +24 -3
  78. package/dist/lib/modules/RailsHealth.d.ts +17 -0
  79. package/dist/lib/modules/RailsHealth.js +26 -0
  80. package/dist/lib/modules/SearchTrendBlacklists.d.ts +15 -1
  81. package/dist/lib/modules/SearchTrendBlacklists.js +27 -4
  82. package/dist/lib/modules/SearchTrendHourlies.d.ts +22 -0
  83. package/dist/lib/modules/SearchTrendHourlies.js +32 -0
  84. package/dist/lib/modules/SearchTrends.d.ts +11 -1
  85. package/dist/lib/modules/SearchTrends.js +22 -4
  86. package/dist/lib/modules/Sessions.d.ts +46 -0
  87. package/dist/lib/modules/Sessions.js +69 -0
  88. package/dist/lib/modules/StaffIpAddrs.d.ts +41 -0
  89. package/dist/lib/modules/StaffIpAddrs.js +53 -0
  90. package/dist/lib/modules/StaffNotes.js +3 -3
  91. package/dist/lib/modules/StaffReowner.d.ts +19 -0
  92. package/dist/lib/modules/StaffReowner.js +29 -0
  93. package/dist/lib/modules/StaffStuckDnp.d.ts +14 -0
  94. package/dist/lib/modules/StaffStuckDnp.js +29 -0
  95. package/dist/lib/modules/StaffUserAlts.d.ts +17 -0
  96. package/dist/lib/modules/StaffUserAlts.js +32 -0
  97. package/dist/lib/modules/StaffUsers.d.ts +26 -6
  98. package/dist/lib/modules/StaffUsers.js +53 -10
  99. package/dist/lib/modules/StaffWikiRefs.d.ts +43 -0
  100. package/dist/lib/modules/StaffWikiRefs.js +77 -0
  101. package/dist/lib/modules/StaffWikis.d.ts +9 -0
  102. package/dist/lib/modules/StaffWikis.js +23 -2
  103. package/dist/lib/modules/Stats.d.ts +17 -0
  104. package/dist/lib/modules/Stats.js +26 -0
  105. package/dist/lib/modules/TagAliases.d.ts +11 -0
  106. package/dist/lib/modules/TagAliases.js +26 -4
  107. package/dist/lib/modules/TagImplications.d.ts +11 -0
  108. package/dist/lib/modules/TagImplications.js +26 -4
  109. package/dist/lib/modules/Tags.js +2 -2
  110. package/dist/lib/modules/Takedowns.js +2 -2
  111. package/dist/lib/modules/Tickets.js +2 -2
  112. package/dist/lib/modules/UploadKarmaEvents.d.ts +18 -0
  113. package/dist/lib/modules/UploadKarmaEvents.js +28 -0
  114. package/dist/lib/modules/UploadWhitelists.js +3 -3
  115. package/dist/lib/modules/UserFeedbacks.js +3 -3
  116. package/dist/lib/modules/UserNameChangeRequests.js +2 -2
  117. package/dist/lib/modules/UserReverts.d.ts +16 -0
  118. package/dist/lib/modules/UserReverts.js +31 -0
  119. package/dist/lib/modules/Users.d.ts +55 -3
  120. package/dist/lib/modules/Users.js +93 -7
  121. package/dist/lib/modules/WikiPages.js +3 -3
  122. package/dist/lib/modules/index.d.ts +45 -0
  123. package/dist/lib/modules/index.js +31 -1
  124. package/dist/lib/util.d.ts +33 -4
  125. package/dist/lib/util.js +3 -2
  126. package/dist/lib/version.d.ts +1 -1
  127. package/dist/lib/version.js +1 -1
  128. package/package.json +6 -6
  129. package/dist/lib/models/ApiKey.d.ts +0 -14
  130. package/dist/lib/models/ArtistUrl.d.ts +0 -14
  131. package/dist/lib/models/IqdbPost.d.ts +0 -14
@@ -1,27 +1,68 @@
1
1
  export type ClientOptions = {
2
2
  baseUrl: 'https://e621.net' | 'https://e926.net' | 'http://localhost:3000' | (string & {});
3
3
  };
4
- export type AccessDeniedResponse = {
5
- success: boolean;
6
- reason: 'Access Denied';
4
+ export type AppealStatus = 'pending' | 'partial' | 'approved' | 'rejected';
5
+ export type AppealType = 'flag';
6
+ export type DBExportName = 'artists' | 'bulk_update_requests' | 'pools' | 'post_replacements' | 'posts' | 'post_versions' | 'tag_aliases' | 'tag_implications' | 'tags' | 'wiki_pages';
7
+ export type EditHistoryVersionableType = 'Blip' | 'Comment' | 'ForumPost';
8
+ export type JWKSAlgorithm = 'RS256';
9
+ export type ModActionAction = 'admin_user_delete' | 'artist_delete' | 'artist_page_rename' | 'artist_page_lock' | 'artist_page_unlock' | 'artist_user_linked' | 'artist_user_unlinked' | 'avoid_posting_create' | 'avoid_posting_update' | 'avoid_posting_delete' | 'avoid_posting_undelete' | 'avoid_posting_destroy' | 'staff_note_create' | 'staff_note_update' | 'staff_note_delete' | 'staff_note_undelete' | 'blip_destroy' | 'blip_delete' | 'blip_undelete' | 'blip_update' | 'comment_delete' | 'comment_hide' | 'comment_unhide' | 'comment_update' | 'forum_category_create' | 'forum_category_delete' | 'forum_category_update' | 'forum_post_delete' | 'forum_post_hide' | 'forum_post_unhide' | 'forum_post_update' | 'forum_topic_delete' | 'forum_topic_hide' | 'forum_topic_unhide' | 'forum_topic_lock' | 'forum_topic_unlock' | 'forum_topic_stick' | 'forum_topic_unstick' | 'forum_topic_update' | 'help_create' | 'help_delete' | 'help_update' | 'ip_ban_create' | 'ip_ban_delete' | 'search_trend_blacklist_create' | 'search_trend_blacklist_update' | 'search_trend_blacklist_delete' | 'search_trend_blacklist_purge' | 'mascot_create' | 'mascot_update' | 'mascot_delete' | 'staff_file_create' | 'staff_file_update' | 'staff_file_delete' | 'pool_delete' | 'report_reason_create' | 'report_reason_delete' | 'report_reason_update' | 'set_update' | 'set_delete' | 'set_change_visibility' | 'tag_destroy' | 'tag_alias_create' | 'tag_alias_update' | 'tag_alias_undo' | 'tag_implication_create' | 'tag_implication_update' | 'tag_implication_undo' | 'ticket_claim' | 'ticket_unclaim' | 'ticket_update' | 'appeal_claim' | 'appeal_unclaim' | 'appeal_update' | 'upload_whitelist_create' | 'upload_whitelist_update' | 'upload_whitelist_delete' | 'user_avatar_clear' | 'user_profile_clear' | 'user_comments_hide' | 'user_forum_posts_hide' | 'user_blips_delete' | 'user_blacklist_changed' | 'totp_reset' | 'password_reset' | 'user_text_change' | 'user_custom_title_change' | 'user_upload_limit_change' | 'user_karma_change' | 'user_karma_free_toggle' | 'user_uploads_toggle' | 'user_flags_change' | 'user_level_change' | 'user_name_change' | 'user_delete' | 'user_ban' | 'user_ban_update' | 'user_unban' | 'user_feedback_create' | 'user_feedback_update' | 'user_feedback_delete' | 'user_feedback_undelete' | 'user_feedback_destroy' | 'user_flush_favorites' | 'wiki_page_rename' | 'wiki_page_delete' | 'wiki_page_lock' | 'wiki_page_unlock' | 'mass_update' | 'nuke_tag' | 'takedown_delete' | 'takedown_process' | 'post_version_hide' | 'post_version_unhide' | 'created_positive_record' | 'created_neutral_record' | 'created_negative_record' | 'created_flag_reason' | 'edited_flag_reason' | 'deleted_flag_reason' | 'post_move_favorites' | 'post_delete' | 'post_undelete' | 'post_destroy' | 'post_rating_lock' | 'post_unapprove' | 'post_replacement_accept' | 'post_replacement_reject' | 'post_replacement_delete';
10
+ export type OAuthClaim = 'iss' | 'sub' | 'aud' | 'exp' | 'iat' | 'preferred_username' | 'name' | 'picture' | 'updated_at' | 'e621_level' | 'e621_level_string' | 'e621_avatar_id' | 'e621_permissions' | 'email' | 'email_verified';
11
+ export type OAuthClaimType = 'normal';
12
+ export type OAuthCodeChallengeMethod = 'S256';
13
+ export type OAuthGrantType = 'authorization_code' | 'refresh_token';
14
+ export type OAuthIDTokenSigningAlgValue = 'RS256';
15
+ export type OAuthPermission = 'can_approve_posts' | 'can_upload_free' | 'is_bd_staff' | 'is_bd_auditor' | 'can_view_staff_notes' | 'can_handle_takedowns' | 'can_edit_avoid_posting_entries' | 'is_blocked' | 'is_member' | 'is_privileged' | 'is_former_staff' | 'is_staff' | 'is_janitor' | 'is_moderator' | 'is_admin';
16
+ export type OAuthResponseMode = 'query' | 'fragment' | 'form_post';
17
+ export type OAuthResponseType = 'code';
18
+ export type OAuthScope = 'openid' | 'profile' | 'email' | 'full';
19
+ export type OAuthSubjectType = 'public';
20
+ export type OAuthTokenEndpointAuthMethod = 'client_secret_basic' | 'client_secret_post';
21
+ export type PoolCategory = 'collection' | 'series';
22
+ export type PostEventAction = 'deleted' | 'undeleted' | 'approved' | 'unapproved' | 'flag_created' | 'flag_removed' | 'favorites_moved' | 'favorites_received' | 'rating_locked' | 'rating_unlocked' | 'status_locked' | 'status_unlocked' | 'note_locked' | 'note_unlocked' | 'comment_locked' | 'comment_unlocked' | 'replacement_accepted' | 'replacement_rejected' | 'replacement_promoted' | 'replacement_deleted' | 'expunged' | 'changed_bg_color' | 'replacement_penalty_changed' | 'owner_changed' | 'replacement_moved';
23
+ export type PostReplacementStatus = 'promoted' | 'approved' | 'rejected' | 'pending' | 'original';
24
+ export type Rating = 's' | 'q' | 'e';
25
+ export type StaffWikiRefRelatedType = 'User' | 'Artist' | 'StaffWiki';
26
+ export type TagCategory = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
27
+ export type TagCategoryNames = 'general' | 'artist' | 'contributor' | 'copyright' | 'character' | 'species' | 'invalid' | 'meta' | 'lore';
28
+ export type TagRequestStatus = 'active' | 'deleted' | 'processing' | 'queued' | 'retired' | 'pending' | `error: ${string}`;
29
+ export type TicketStatus = 'pending' | 'partial' | 'approved';
30
+ export type TicketType = 'blip' | 'comment' | 'dmail' | 'forum' | 'pool' | 'post' | 'set' | 'user' | 'wiki' | 'replacement';
31
+ export type UpDownMehFlipVote = 2 | 1 | 0 | -1;
32
+ export type UpDownMehVote = 1 | 0 | -1;
33
+ export type UpDownVote = 1 | -1;
34
+ export type UserFeedbackCategory = 'negative' | 'neutral' | 'positive';
35
+ export type UserLevel = 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80;
36
+ export type UserLevelName = 'Anonymous' | 'Blocked' | 'Member' | 'Privileged' | 'Former Staff' | 'Staff' | 'Janitor' | 'Moderator' | 'Admin';
37
+ export type WarningRecordType = 'warning' | 'record' | 'ban' | 'unmark';
38
+ export type WarningType = 'warning' | 'record' | 'ban';
39
+ export type APIKey = {
40
+ id: number;
41
+ updated_at: string;
42
+ created_at: string;
43
+ user_id: number;
44
+ key: string;
45
+ name: string;
46
+ last_used_at: string | null;
47
+ last_used_ip_address: string | null | string;
48
+ last_user_agent: string | null;
49
+ expires_at: string | null;
50
+ notified_at: string | null;
7
51
  };
8
- export type NotFoundResponse = {
9
- success: boolean;
10
- reason: 'not found';
52
+ export type Appeal = {
53
+ id: number;
54
+ creator_id?: number;
55
+ disp_id: string;
56
+ qtype: AppealType;
57
+ status: AppealStatus;
58
+ reason?: string;
59
+ response?: string;
60
+ claimant_id?: number | null;
61
+ handler_id: number | null;
62
+ accused_id?: number;
63
+ created_at: string;
64
+ updated_at: string;
11
65
  };
12
- export type WarningRecordType = {
13
- record_type: 'unmark' | 'ban' | 'record' | 'warning';
14
- };
15
- export type ModActionActions = 'admin_user_delete' | 'artist_page_rename' | 'artist_page_lock' | 'artist_page_unlock' | 'artist_user_linked' | 'artist_user_unlinked' | 'avoid_posting_create' | 'avoid_posting_update' | 'avoid_posting_delete' | 'avoid_posting_undelete' | 'avoid_posting_destroy' | 'staff_note_create' | 'staff_note_update' | 'staff_note_delete' | 'staff_note_undelete' | 'blip_destroy' | 'blip_delete' | 'blip_undelete' | 'blip_update' | 'comment_delete' | 'comment_hide' | 'comment_unhide' | 'comment_update' | 'forum_category_create' | 'forum_category_delete' | 'forum_category_update' | 'forum_post_delete' | 'forum_post_hide' | 'forum_post_unhide' | 'forum_post_update' | 'forum_topic_delete' | 'forum_topic_hide' | 'forum_topic_unhide' | 'forum_topic_lock' | 'forum_topic_unlock' | 'forum_topic_stick' | 'forum_topic_unstick' | 'forum_topic_update' | 'help_create' | 'help_delete' | 'help_update' | 'ip_ban_create' | 'ip_ban_delete' | 'search_trend_blacklist_create' | 'search_trend_blacklist_update' | 'search_trend_blacklist_delete' | 'search_trend_blacklist_purge' | 'mascot_create' | 'mascot_update' | 'mascot_delete' | 'staff_file_create' | 'staff_file_update' | 'staff_file_delete' | 'pool_delete' | 'report_reason_create' | 'report_reason_delete' | 'report_reason_update' | 'set_update' | 'set_delete' | 'set_change_visibility' | 'tag_destroy' | 'tag_alias_create' | 'tag_alias_update' | 'tag_implication_create' | 'tag_implication_update' | 'ticket_claim' | 'ticket_unclaim' | 'ticket_update' | 'appeal_claim' | 'appeal_unclaim' | 'appeal_update' | 'upload_whitelist_create' | 'upload_whitelist_update' | 'upload_whitelist_delete' | 'user_avatar_clear' | 'user_profile_clear' | 'user_comments_hide' | 'user_forum_posts_hide' | 'user_blips_delete' | 'user_blacklist_changed' | 'user_text_change' | 'user_custom_title_change' | 'user_upload_limit_change' | 'user_uploads_toggle' | 'user_flags_change' | 'user_level_change' | 'user_name_change' | 'user_delete' | 'user_ban' | 'user_ban_update' | 'user_unban' | 'user_feedback_create' | 'user_feedback_update' | 'user_feedback_delete' | 'user_feedback_undelete' | 'user_feedback_destroy' | 'user_flush_favorites' | 'wiki_page_rename' | 'wiki_page_delete' | 'wiki_page_lock' | 'wiki_page_unlock' | 'mass_update' | 'nuke_tag' | 'takedown_delete' | 'takedown_process' | 'post_version_hide' | 'post_version_unhide' | 'created_positive_record' | 'created_neutral_record' | 'created_negative_record' | 'created_flag_reason' | 'edited_flag_reason' | 'deleted_flag_reason' | 'post_move_favorites' | 'post_delete' | 'post_undelete' | 'post_destroy' | 'post_rating_lock' | 'post_unapprove' | 'post_replacement_accept' | 'post_replacement_reject' | 'post_replacement_delete';
16
- export type PostEventActions = 'deleted' | 'undeleted' | 'approved' | 'unapproved' | 'flag_created' | 'flag_removed' | 'favorites_moved' | 'favorites_received' | 'rating_locked' | 'rating_unlocked' | 'status_locked' | 'status_unlocked' | 'note_locked' | 'note_unlocked' | 'comment_locked' | 'comment_unlocked' | 'replacement_accepted' | 'replacement_rejected' | 'replacement_promoted' | 'replacement_deleted' | 'expunged' | 'changed_bg_color' | 'replacement_penalty_changed' | 'owner_changed';
17
- export type Ratings = 's' | 'q' | 'e';
18
- export type TagCategories = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
19
- export type FeedbackCategories = 'negative' | 'neutral' | 'positive';
20
- export type TagRequestStatuses = 'active' | 'deleted' | 'processing' | 'queued' | 'retired' | 'pending' | `error: ${string}`;
21
- export type WarningTypes = 'warning' | 'record' | 'ban';
22
- export type PoolCategories = 'collection' | 'series';
23
- export type TicketTypes = 'blip' | 'comment' | 'dmail' | 'forum' | 'pool' | 'post' | 'set' | 'user' | 'wiki' | 'replacement';
24
- export type TicketStatuses = 'pending' | 'partial' | 'approved';
25
66
  export type Artist = {
26
67
  id: number;
27
68
  name: string;
@@ -35,7 +76,7 @@ export type Artist = {
35
76
  is_locked: boolean;
36
77
  notes: string | null;
37
78
  };
38
- export type ArtistUrl = {
79
+ export type ArtistURL = {
39
80
  id: number;
40
81
  artist_id: number;
41
82
  url: string;
@@ -86,11 +127,14 @@ export type Ban = {
86
127
  id: number;
87
128
  user_id: number;
88
129
  reason: string;
89
- expires_at: string | null;
90
130
  banner_id: number;
131
+ expires_at: string | null;
91
132
  created_at: string;
92
133
  updated_at: string;
93
134
  };
135
+ export type BasicPost = Post & {
136
+ tags: Array<string>;
137
+ };
94
138
  export type Blip = {
95
139
  id: number;
96
140
  creator_id: number;
@@ -99,14 +143,11 @@ export type Blip = {
99
143
  created_at: string;
100
144
  updated_at: string;
101
145
  is_deleted: boolean;
102
- warning_type: WarningTypes;
146
+ warning_type: WarningType;
103
147
  warning_user_id: number;
104
148
  updater_id: number;
105
149
  creator_name: string;
106
150
  };
107
- export type BulkRelatedTag = RelatedTag & {
108
- count: number;
109
- };
110
151
  export type BulkUpdateRequest = {
111
152
  id: number;
112
153
  creator_id: number;
@@ -134,11 +175,19 @@ export type Comment = {
134
175
  do_not_bump_post: boolean;
135
176
  is_hidden: boolean;
136
177
  is_sticky: boolean;
137
- warning_type: WarningTypes;
178
+ warning_type: WarningType;
138
179
  warning_user_id: number | null;
139
180
  creator_name: string;
140
181
  updater_name: string;
141
- vote: -1 | 0 | 1;
182
+ vote: UpDownMehVote;
183
+ };
184
+ export type CommentVote = {
185
+ id: number;
186
+ comment_id: number;
187
+ user_id: number;
188
+ score: UpDownVote;
189
+ created_at: string;
190
+ updated_at: string;
142
191
  };
143
192
  export type CurrentUser = User & {
144
193
  blacklist_users: boolean;
@@ -149,7 +198,6 @@ export type CurrentUser = User & {
149
198
  receive_email_notifications: boolean;
150
199
  enable_keyboard_navigation: boolean;
151
200
  enable_privacy_mode: boolean;
152
- style_usernames: boolean;
153
201
  enable_auto_complete: boolean;
154
202
  can_approve_posts?: boolean;
155
203
  disable_cropped_thumbnails: boolean;
@@ -181,6 +229,17 @@ export type CurrentUser = User & {
181
229
  has_mail: boolean;
182
230
  forum_notification_dot: boolean;
183
231
  };
232
+ export type DBExport = {
233
+ name: DBExportName;
234
+ file_name: string;
235
+ file_size: number;
236
+ updated_at: string;
237
+ url: string;
238
+ /**
239
+ * SHA-256
240
+ */
241
+ checksum: string;
242
+ };
184
243
  export type DMail = {
185
244
  id: number;
186
245
  owner_id: number;
@@ -199,7 +258,7 @@ export type DeferredPost = {
199
258
  id: number;
200
259
  flags: string;
201
260
  tags: string;
202
- rating: Ratings;
261
+ rating: Rating;
203
262
  file_ext: string;
204
263
  width: number;
205
264
  height: number;
@@ -218,9 +277,16 @@ export type DeferredPost = {
218
277
  preview_width: number;
219
278
  preview_height: number;
220
279
  };
221
- export type DTextResponse = {
222
- html: string;
223
- posts: DeferredPost;
280
+ export type EditHistory = {
281
+ id: number;
282
+ created_at: string;
283
+ updated_at: string;
284
+ body: string;
285
+ subject: string | null;
286
+ versionable_type: EditHistoryVersionableType;
287
+ versionable_id: number;
288
+ version: number;
289
+ user_id: number;
224
290
  };
225
291
  export type EmailBlacklist = {
226
292
  id: number;
@@ -230,6 +296,33 @@ export type EmailBlacklist = {
230
296
  creator_id: string;
231
297
  reason: string;
232
298
  };
299
+ export type ExceptionLog = {
300
+ id: number;
301
+ created_at: string;
302
+ updated_at: string;
303
+ class_name: string;
304
+ version: string;
305
+ extra_params: {
306
+ [key: string]: unknown;
307
+ };
308
+ message: string;
309
+ trace: string;
310
+ code: string;
311
+ user_id: number;
312
+ };
313
+ export type ExtendedPost = Post & {
314
+ tags: {
315
+ general: Array<string>;
316
+ artist: Array<string>;
317
+ contributor: Array<string>;
318
+ copyright: Array<string>;
319
+ character: Array<string>;
320
+ species: Array<string>;
321
+ invalid: Array<string>;
322
+ meta: Array<string>;
323
+ lore: Array<string>;
324
+ };
325
+ };
233
326
  export type ForumPost = {
234
327
  id: number;
235
328
  topic_id: number;
@@ -239,14 +332,14 @@ export type ForumPost = {
239
332
  is_hidden: boolean;
240
333
  created_at: string;
241
334
  updated_at: string;
242
- warning_type: WarningTypes;
335
+ warning_type: WarningType;
243
336
  warning_user_id: number | null;
244
337
  };
245
338
  export type ForumPostVote = {
246
339
  id: number;
247
340
  forum_post_id: number;
248
341
  creator_id: number;
249
- score: number;
342
+ score: UpDownMehFlipVote;
250
343
  created_at: string;
251
344
  updated_at: string;
252
345
  creator_name: string;
@@ -276,7 +369,7 @@ export type FullUser = User & {
276
369
  positive_feedback_count: number;
277
370
  neutral_feedback_count: number;
278
371
  negative_feedback_count: number;
279
- upload_limit: number;
372
+ upload_slots: number;
280
373
  profile_about: string;
281
374
  profile_artinfo: string;
282
375
  };
@@ -292,14 +385,14 @@ export type HelpPage = {
292
385
  /**
293
386
  * Due to a global filter, the ip_addr is not present no matter your user level.
294
387
  */
295
- export type IpBan = {
388
+ export type IPBan = {
296
389
  id: number;
297
390
  creator_id: number;
298
391
  reason: string;
299
392
  created_at: string;
300
393
  updated_at: string;
301
394
  };
302
- export type IqdbPost = {
395
+ export type IQDBPost = {
303
396
  id: number;
304
397
  created_at: string;
305
398
  updated_at: string;
@@ -308,7 +401,7 @@ export type IqdbPost = {
308
401
  score: number;
309
402
  source: string;
310
403
  md5: string;
311
- rating: Ratings;
404
+ rating: Rating;
312
405
  is_note_locked: boolean;
313
406
  is_rating_locked: boolean;
314
407
  is_status_locked: boolean;
@@ -357,71 +450,106 @@ export type IqdbPost = {
357
450
  large_file_url?: string;
358
451
  preview_file_url?: string;
359
452
  };
360
- export type RawPost = {
453
+ export type JWKS = {
454
+ keys: Array<JWKSKey>;
455
+ };
456
+ export type JWKSKey = {
457
+ kty: 'RSA';
458
+ use: 'sig';
459
+ alg: JWKSAlgorithm;
460
+ /**
461
+ * Key ID, matched against the `kid` header of a signed JWT to select the key that verifies it.
462
+ */
463
+ kid: string;
464
+ /**
465
+ * RSA modulus, base64url-encoded.
466
+ */
467
+ n: string;
468
+ /**
469
+ * RSA public exponent, base64url-encoded.
470
+ */
471
+ e: string;
472
+ };
473
+ export type LegacyPost = {
361
474
  id: number;
362
475
  created_at: string;
363
476
  updated_at: string;
364
- up_score: number;
365
- down_score: number;
366
- score: number;
367
- source: string;
368
- md5: string;
369
- rating: Ratings;
370
- is_note_locked: boolean;
371
- is_rating_locked: boolean;
372
- is_status_locked: boolean;
373
- is_pending: boolean;
374
- is_flagged: boolean;
375
- is_deleted: boolean;
376
- uploader_id: number;
377
- approver_id: number;
378
- last_noted_at: string | null;
379
- last_comment_bumped_at: string | null;
477
+ file: {
478
+ width: number;
479
+ height: number;
480
+ ext: string;
481
+ size: number;
482
+ md5: string;
483
+ url: string | null;
484
+ };
485
+ preview: {
486
+ width: number;
487
+ height: number;
488
+ url: string | null;
489
+ };
490
+ sample: {
491
+ has: boolean;
492
+ height: number | null;
493
+ width: number | null;
494
+ url: string | null;
495
+ alternates: {
496
+ has?: boolean;
497
+ original?: PostSampleAlternate;
498
+ variants?: {
499
+ webm?: PostSampleAlternate;
500
+ mp4?: PostSampleAlternate;
501
+ };
502
+ samples?: {
503
+ '480p'?: PostSampleAlternate;
504
+ '720p'?: PostSampleAlternate;
505
+ };
506
+ };
507
+ };
508
+ score: {
509
+ up: number;
510
+ down: number;
511
+ total: number;
512
+ };
513
+ tags: {
514
+ general: Array<string>;
515
+ artist: Array<string>;
516
+ copyright: Array<string>;
517
+ character: Array<string>;
518
+ species: Array<string>;
519
+ invalid: Array<string>;
520
+ meta: Array<string>;
521
+ lore: Array<string>;
522
+ contributor: Array<string>;
523
+ };
524
+ locked_tags: Array<string> | null;
525
+ change_seq: number;
526
+ flags: {
527
+ pending: boolean;
528
+ flagged: boolean;
529
+ note_locked: boolean;
530
+ status_locked: boolean;
531
+ rating_locked: boolean;
532
+ deleted: boolean;
533
+ };
534
+ rating: Rating;
380
535
  fav_count: number;
381
- tag_string: string;
382
- tag_count: number;
383
- tag_count_general: number;
384
- tag_count_artist: number;
385
- tag_count_character: number;
386
- tag_count_copyright: number;
387
- file_ext: string;
388
- file_size: number;
389
- image_width: number;
390
- image_height: number;
391
- parent_id: number | null;
392
- has_children: boolean;
393
- last_commented_at: string | null;
394
- has_active_children: boolean;
395
- bit_flags: number;
396
- tag_count_meta: number;
397
- locked_tags: string | null;
398
- tag_count_species: number;
399
- tag_count_invalid: number;
536
+ sources: Array<string>;
537
+ pools: Array<number>;
538
+ relationships: {
539
+ parent_id: number | null;
540
+ has_children: boolean;
541
+ has_active_children: boolean;
542
+ children: Array<number>;
543
+ };
544
+ approver_id: number | null;
545
+ uploader_id: number;
400
546
  description: string;
401
547
  comment_count: number;
402
- change_seq: number;
403
- tag_count_lore: number;
404
- bg_color: string | null;
405
- generated_samples: Array<'720p' | '480p' | 'original'> | null;
406
- duration: string | null;
407
- is_comment_disabled: boolean;
408
- is_comment_locked: boolean;
409
- has_large: boolean;
410
- has_visible_children: boolean;
411
- children_ids: string | null;
412
- pool_ids: Array<number>;
413
548
  is_favorited: boolean;
414
- file_url?: string;
415
- large_file_url?: string;
416
- preview_file_url?: string;
417
- };
418
- export type IqdbResponse = {
419
- hash: string;
420
- post_id: number;
421
- score: number;
422
- post: {
423
- posts: IqdbPost;
424
- };
549
+ has_notes: boolean;
550
+ duration: number | null;
551
+ uploader_name: string;
552
+ vote: UpDownMehVote;
425
553
  };
426
554
  export type Mascot = {
427
555
  id: number;
@@ -438,12 +566,18 @@ export type Mascot = {
438
566
  available_on: Array<string>;
439
567
  url_path: string;
440
568
  };
569
+ export type MinimalUser = {
570
+ id: number;
571
+ name: string;
572
+ level_string: UserLevelName;
573
+ favorite_count: number;
574
+ };
441
575
  export type ModAction = {
442
576
  id: number;
443
577
  creator_id: number;
444
578
  created_at: string;
445
579
  updated_at: string;
446
- action: ModActionActions;
580
+ action: ModActionAction;
447
581
  };
448
582
  export type NewsUpdate = {
449
583
  id: number;
@@ -483,20 +617,114 @@ export type NoteVersion = {
483
617
  post_id: number;
484
618
  updater_id: number;
485
619
  };
486
- export type Pool = {
487
- id: number;
488
- name: string;
489
- updated_at: string;
490
- creator_id: number;
491
- description: string;
492
- is_active: boolean;
493
- category: PoolCategories;
494
- post_ids: Array<number>;
495
- created_at: string;
496
- creator_name: string;
497
- post_count: number;
620
+ /**
621
+ * Only `active` is present when the token is inactive/unknown - the other fields are omitted entirely.
622
+ */
623
+ export type OAuthIntrospection = {
624
+ active: boolean;
625
+ /**
626
+ * Space-separated list of the token's granted scopes.
627
+ */
628
+ scope?: string;
629
+ /**
630
+ * The `uid` of the OAuth application the token was issued to.
631
+ */
632
+ client_id?: string;
633
+ token_type?: 'Bearer';
634
+ /**
635
+ * Unix timestamp of when the token was issued.
636
+ */
637
+ iat?: number;
638
+ /**
639
+ * Unix timestamp of when the token expires. Omitted for tokens that don't expire.
640
+ */
641
+ exp?: number;
498
642
  };
499
- export type PoolVersion = {
643
+ export type OAuthToken = {
644
+ access_token: string;
645
+ token_type: 'Bearer';
646
+ /**
647
+ * Seconds until `access_token` expires.
648
+ */
649
+ expires_in: number;
650
+ refresh_token: string;
651
+ /**
652
+ * Space-separated list of granted scopes.
653
+ */
654
+ scope: string;
655
+ /**
656
+ * Unix timestamp of when the token was issued.
657
+ */
658
+ created_at: number;
659
+ /**
660
+ * A signed JWT containing the user's ID token claims. Present only when the `openid` scope was granted.
661
+ */
662
+ id_token?: string;
663
+ };
664
+ export type OAuthTokenInfo = {
665
+ resource_owner_id: number;
666
+ scope: Array<OAuthScope>;
667
+ expires_in: number;
668
+ application: {
669
+ uid: string;
670
+ };
671
+ created_at: number;
672
+ };
673
+ /**
674
+ * null properties are entriely absent
675
+ */
676
+ export type OAuthUserInfo = {
677
+ preferred_username: string;
678
+ name: string;
679
+ picture?: string;
680
+ updated_at: number;
681
+ e621_level: UserLevel;
682
+ e621_level_string: UserLevelName;
683
+ e621_avatar_id?: number;
684
+ e621_permissions: OAuthPermission;
685
+ /**
686
+ * Requires `email` scope.
687
+ */
688
+ email?: string;
689
+ /**
690
+ * Requires `email` scope.
691
+ */
692
+ email_verified?: boolean;
693
+ sub: string;
694
+ };
695
+ export type OpenIDConfiguration = {
696
+ issuer: string;
697
+ authorization_endpoint: string;
698
+ token_endpoint: string;
699
+ revocation_endpoint: string;
700
+ introspection_endpoint: string;
701
+ userinfo_endpoint: string;
702
+ jwks_uri: string;
703
+ scopes_supported: Array<OAuthScope>;
704
+ response_types_supported: Array<OAuthResponseType>;
705
+ response_modes_supported: Array<OAuthResponseMode>;
706
+ grant_types_supported: Array<OAuthGrantType>;
707
+ token_endpoint_auth_methods_supported: Array<OAuthTokenEndpointAuthMethod>;
708
+ subject_types_supported: Array<OAuthSubjectType>;
709
+ id_token_signing_alg_values_supported: Array<OAuthIDTokenSigningAlgValue>;
710
+ claim_types_supported: Array<OAuthClaimType>;
711
+ claims_supported: Array<OAuthClaim>;
712
+ code_challenge_methods_supported: Array<OAuthCodeChallengeMethod>;
713
+ };
714
+ export type Pool = {
715
+ id: number;
716
+ name: string;
717
+ updated_at: string;
718
+ creator_id: number;
719
+ description: string;
720
+ is_active: boolean;
721
+ category: PoolCategory;
722
+ post_ids: Array<number>;
723
+ created_at: string;
724
+ creator_name: string;
725
+ post_count: number;
726
+ };
727
+ export type PoolVersion = {
500
728
  id: number;
501
729
  pool_id: number;
502
730
  post_ids: Array<number>;
@@ -509,7 +737,7 @@ export type PoolVersion = {
509
737
  description_changed: boolean;
510
738
  is_active: boolean;
511
739
  is_locked: boolean;
512
- category: PoolCategories;
740
+ category: PoolCategory;
513
741
  version: number;
514
742
  added_post_ids: Array<number>;
515
743
  removed_post_ids: Array<number>;
@@ -519,67 +747,16 @@ export type Post = {
519
747
  created_at: string;
520
748
  updated_at: string;
521
749
  change_seq: number;
522
- files: {
523
- meta: {
524
- md5: string;
525
- ext: string;
526
- size: number;
527
- duration: number | null;
528
- has_sample: boolean;
529
- };
530
- original: {
531
- width: number;
532
- height: number;
533
- url: string | null;
534
- };
535
- preview: {
536
- width: number;
537
- height: number;
538
- jpg: string | null;
539
- webp: string | null;
540
- };
541
- sample: {
542
- width: number;
543
- height: number;
544
- jpg: string | null;
545
- webp: string | null;
546
- };
547
- };
750
+ files: PostFiles;
548
751
  uploader_id: number;
549
752
  uploader_name: string;
550
753
  approver_id: number | null;
551
- stats: {
552
- score: {
553
- up: number;
554
- down: number;
555
- total: number;
556
- };
557
- fav_count: number;
558
- is_favorited: boolean;
559
- vote: -1 | 0 | 1;
560
- comment_count: number;
561
- };
562
- flags: {
563
- pending: boolean;
564
- flagged: boolean;
565
- note_locked: boolean;
566
- status_locked: boolean;
567
- rating_locked: boolean;
568
- deleted: boolean;
569
- };
570
- has: {
571
- parent: boolean;
572
- children: boolean;
573
- active_children: boolean;
574
- notes: boolean;
575
- sample: boolean;
576
- };
577
- relationships: {
578
- parent_id: number | null;
579
- children: Array<number>;
580
- };
754
+ stats: PostStats;
755
+ flags: PostFlags;
756
+ has: PostHas;
757
+ relationships: PostRelationships;
581
758
  pools: Array<number>;
582
- rating: Ratings;
759
+ rating: Rating;
583
760
  locked_tags: Array<string>;
584
761
  sources: Array<string>;
585
762
  description: string;
@@ -591,6 +768,9 @@ export type PostApproval = {
591
768
  created_at: string;
592
769
  updated_at: string;
593
770
  };
771
+ export type PostData = {
772
+ post_data: Array<ThumbnailPost>;
773
+ };
594
774
  export type PostDisapproval = {
595
775
  id: number;
596
776
  user_id: number;
@@ -604,9 +784,39 @@ export type PostEvent = {
604
784
  id: number;
605
785
  creator_id: number | null;
606
786
  post_id: number;
607
- action: PostEventActions;
787
+ action: PostEventAction;
608
788
  created_at: string;
609
789
  };
790
+ export type PostFiles = {
791
+ meta: PostFilesMeta;
792
+ original: PostFilesOriginal;
793
+ preview: PostFilesPreview;
794
+ sample: PostFilesSample;
795
+ };
796
+ export type PostFilesMeta = {
797
+ md5: string;
798
+ ext: string;
799
+ size: number;
800
+ duration: number | null;
801
+ has_sample: boolean;
802
+ };
803
+ export type PostFilesOriginal = {
804
+ width: number;
805
+ height: number;
806
+ url: string | null;
807
+ };
808
+ export type PostFilesPreview = {
809
+ width: number;
810
+ height: number;
811
+ jpg: string | null;
812
+ webp: string | null;
813
+ };
814
+ export type PostFilesSample = {
815
+ width: number;
816
+ height: number;
817
+ jpg: string | null;
818
+ webp: string | null;
819
+ };
610
820
  export type PostFlag = {
611
821
  id: number;
612
822
  created_at: string;
@@ -625,6 +835,30 @@ export type PostFlag = {
625
835
  */
626
836
  note?: string | null;
627
837
  };
838
+ export type PostFlags = {
839
+ pending: boolean;
840
+ flagged: boolean;
841
+ note_locked: boolean;
842
+ status_locked: boolean;
843
+ rating_locked: boolean;
844
+ deleted: boolean;
845
+ };
846
+ export type PostHas = {
847
+ parent: boolean;
848
+ children: boolean;
849
+ active_children: boolean;
850
+ notes: boolean;
851
+ sample: boolean;
852
+ };
853
+ export type PostRecommendation = {
854
+ post_id: number;
855
+ score: number;
856
+ explanation: string | null;
857
+ };
858
+ export type PostRelationships = {
859
+ parent_id: number | null;
860
+ children: Array<number>;
861
+ };
628
862
  export type PostReplacement = {
629
863
  id: number;
630
864
  created_at: string;
@@ -639,8 +873,9 @@ export type PostReplacement = {
639
873
  md5: string;
640
874
  source: string;
641
875
  file_name: string;
642
- status: 'prompted' | 'approved' | 'rejected' | 'pending' | 'original';
876
+ status: PostReplacementStatus;
643
877
  reason: string;
878
+ sequence_number: number;
644
879
  };
645
880
  export type PostSampleAlternate = {
646
881
  fps: number;
@@ -663,13 +898,25 @@ export type PostSet = {
663
898
  transfer_on_delete: boolean;
664
899
  post_ids: Array<number>;
665
900
  };
901
+ export type PostStats = {
902
+ score: PostStatsScore;
903
+ fav_count: number;
904
+ is_favorited: boolean;
905
+ vote: UpDownMehVote;
906
+ comment_count: number;
907
+ };
908
+ export type PostStatsScore = {
909
+ up: number;
910
+ down: number;
911
+ total: number;
912
+ };
666
913
  export type PostVersion = {
667
914
  id: number;
668
915
  post_id: number;
669
916
  tags: string;
670
917
  updater_id: number;
671
918
  updated_at: string;
672
- rating: Ratings;
919
+ rating: Rating;
673
920
  parent_id: number | null;
674
921
  source: string;
675
922
  description: string;
@@ -690,9 +937,140 @@ export type PostVersion = {
690
937
  updater_name: string;
691
938
  is_hidden: boolean;
692
939
  };
693
- export type RelatedTag = {
940
+ export type PostVote = {
941
+ id: number;
942
+ post_id: number;
943
+ user_id: number;
944
+ score: UpDownVote;
945
+ created_at: string;
946
+ updated_at: string;
947
+ };
948
+ export type RawPost = {
949
+ id: number;
950
+ created_at: string;
951
+ updated_at: string;
952
+ up_score: number;
953
+ down_score: number;
954
+ score: number;
955
+ source: string;
956
+ md5: string;
957
+ rating: Rating;
958
+ is_note_locked: boolean;
959
+ is_rating_locked: boolean;
960
+ is_status_locked: boolean;
961
+ is_pending: boolean;
962
+ is_flagged: boolean;
963
+ is_deleted: boolean;
964
+ uploader_id: number;
965
+ approver_id: number;
966
+ last_noted_at: string | null;
967
+ last_comment_bumped_at: string | null;
968
+ fav_count: number;
969
+ tag_string: string;
970
+ tag_count: number;
971
+ tag_count_general: number;
972
+ tag_count_artist: number;
973
+ tag_count_character: number;
974
+ tag_count_copyright: number;
975
+ file_ext: string;
976
+ file_size: number;
977
+ image_width: number;
978
+ image_height: number;
979
+ parent_id: number | null;
980
+ has_children: boolean;
981
+ last_commented_at: string | null;
982
+ has_active_children: boolean;
983
+ bit_flags: number;
984
+ tag_count_meta: number;
985
+ locked_tags: string | null;
986
+ tag_count_species: number;
987
+ tag_count_invalid: number;
988
+ description: string;
989
+ comment_count: number;
990
+ change_seq: number;
991
+ tag_count_lore: number;
992
+ bg_color: string | null;
993
+ generated_samples: Array<'720p' | '480p' | 'original'> | null;
994
+ duration: string | null;
995
+ is_comment_disabled: boolean;
996
+ is_comment_locked: boolean;
997
+ has_large: boolean;
998
+ has_visible_children: boolean;
999
+ children_ids: string | null;
1000
+ pool_ids: Array<number>;
1001
+ is_favorited: boolean;
1002
+ file_url?: string;
1003
+ large_file_url?: string;
1004
+ preview_file_url?: string;
1005
+ };
1006
+ export type RecommendedPosts = {
1007
+ post_id: number;
1008
+ model_version: string;
1009
+ results: Array<PostRecommendation>;
1010
+ };
1011
+ export type RisingSearchTrend = {
694
1012
  name: string;
695
- category_id: TagCategories;
1013
+ pretty_name: string;
1014
+ post_count: number;
1015
+ category: TagCategory;
1016
+ };
1017
+ export type SearchTrend = {
1018
+ tag: string;
1019
+ count: number;
1020
+ day: string;
1021
+ };
1022
+ export type SearchTrendBlacklist = {
1023
+ id: number;
1024
+ tag: string;
1025
+ reason: string;
1026
+ creator_id: number;
1027
+ created_at: string;
1028
+ updated_at: string;
1029
+ };
1030
+ export type SearchTrendHourly = {
1031
+ tag: string;
1032
+ count: number;
1033
+ hour: string;
1034
+ processed: boolean;
1035
+ };
1036
+ export type StaffFile = {
1037
+ id: number;
1038
+ creator_id: number;
1039
+ storage_id: string;
1040
+ md5: string;
1041
+ file_ext: string;
1042
+ file_size: number;
1043
+ original_filename: string;
1044
+ title: string;
1045
+ description: string | null;
1046
+ created_at: string;
1047
+ updated_at: string;
1048
+ };
1049
+ export type StaffIPAddrIPListing = StaffIPAddrSums & {
1050
+ last_login: unknown;
1051
+ };
1052
+ /**
1053
+ * Dictionary of ip address to count.
1054
+ */
1055
+ export type StaffIPAddrSum = {
1056
+ [key: string]: number;
1057
+ };
1058
+ export type StaffIPAddrSums = {
1059
+ comment: StaffIPAddrSum;
1060
+ blip: StaffIPAddrSum;
1061
+ dmail: StaffIPAddrSum;
1062
+ post_flag: StaffIPAddrSum;
1063
+ posts: StaffIPAddrSum;
1064
+ users: StaffIPAddrSum;
1065
+ artist_version?: StaffIPAddrSum;
1066
+ note_version?: StaffIPAddrSum;
1067
+ pool_version?: StaffIPAddrSum;
1068
+ post_version?: StaffIPAddrSum;
1069
+ wiki_page_version?: StaffIPAddrSum;
1070
+ };
1071
+ export type StaffIPAddrUserListing = {
1072
+ sums: StaffIPAddrSums;
1073
+ ip_addrs: Array<string>;
696
1074
  };
697
1075
  export type StaffNote = {
698
1076
  id: number;
@@ -704,13 +1082,111 @@ export type StaffNote = {
704
1082
  is_deleted: boolean;
705
1083
  updater_id: number;
706
1084
  };
1085
+ export type StaffWiki = {
1086
+ id: number;
1087
+ creator_id: number;
1088
+ updater_id: number;
1089
+ claimant_id: number | null;
1090
+ title: string;
1091
+ body: string;
1092
+ created_at: string;
1093
+ updated_at: string;
1094
+ };
1095
+ export type StaffWikiVersion = {
1096
+ id: number;
1097
+ staff_wiki_id: number;
1098
+ updater_id: number;
1099
+ claimant_id: number | null;
1100
+ title: string;
1101
+ body: string;
1102
+ created_at: string;
1103
+ updated_at: string;
1104
+ };
1105
+ export type Stats = {
1106
+ /**
1107
+ * When the first post was created.
1108
+ */
1109
+ started: string;
1110
+ total_posts: number;
1111
+ active_posts: number;
1112
+ deleted_posts: number;
1113
+ /**
1114
+ * `active_posts + deleted_posts`
1115
+ */
1116
+ existing_posts: number;
1117
+ destroyed_posts: number;
1118
+ total_votes: number;
1119
+ total_notes: number;
1120
+ total_favorites: number;
1121
+ total_pools: number;
1122
+ public_sets: number;
1123
+ private_sets: number;
1124
+ total_sets: number;
1125
+ average_posts_per_pool: number;
1126
+ average_posts_per_set: number;
1127
+ safe_posts: number;
1128
+ questionable_posts: number;
1129
+ explicit_posts: number;
1130
+ jpg_posts: number;
1131
+ png_posts: number;
1132
+ webp_posts: number;
1133
+ gif_posts: number;
1134
+ swf_posts: number;
1135
+ webm_posts: number;
1136
+ mp4_posts: number;
1137
+ average_file_size: number;
1138
+ total_file_size: number;
1139
+ average_posts_per_day: number;
1140
+ total_users: number;
1141
+ anonymous_users: number;
1142
+ blocked_users: number;
1143
+ member_users: number;
1144
+ privileged_users: number;
1145
+ former_staff_users: number;
1146
+ staff_users: number;
1147
+ janitor_users: number;
1148
+ moderator_users: number;
1149
+ admin_users: number;
1150
+ unactivated_users: number;
1151
+ total_dmails: number;
1152
+ average_registrations_per_day: number;
1153
+ /**
1154
+ * Users who have logged in within the last 3 months.
1155
+ */
1156
+ active_users: number;
1157
+ total_comments: number;
1158
+ active_comments: number;
1159
+ hidden_comments: number;
1160
+ deleted_comments: number;
1161
+ average_comments_per_day: number;
1162
+ total_forum_threads: number;
1163
+ total_forum_posts: number;
1164
+ average_posts_per_thread: number;
1165
+ average_forum_posts_per_day: number;
1166
+ total_blips: number;
1167
+ active_blips: number;
1168
+ deleted_blips: number;
1169
+ destroyed_blips: number;
1170
+ average_blips_per_day: number;
1171
+ total_tags: number;
1172
+ general_tags: number;
1173
+ species_tags: number;
1174
+ character_tags: number;
1175
+ copyright_tags: number;
1176
+ artist_tags: number;
1177
+ contributor_tags: number;
1178
+ invalid_tags: number;
1179
+ lore_tags: number;
1180
+ meta_tags: number;
1181
+ updated_at: string;
1182
+ };
707
1183
  export type Tag = {
708
1184
  id: number;
709
1185
  name: string;
710
1186
  post_count: number;
711
1187
  related_tags: string;
712
1188
  related_tags_updated_at: string | null;
713
- category: TagCategories;
1189
+ category: TagCategory;
714
1190
  is_locked: boolean;
715
1191
  created_at: string;
716
1192
  updated_at: string;
@@ -725,10 +1201,17 @@ export type TagAlias = {
725
1201
  updated_at: string | null;
726
1202
  forum_topic_id: number | null;
727
1203
  consequent_name: string;
728
- status: TagRequestStatuses;
1204
+ status: TagRequestStatus;
729
1205
  post_count: number;
730
1206
  approver_id: number | null;
731
1207
  };
1208
+ export type TagCorrection = {
1209
+ post_count: number;
1210
+ real_post_count: number;
1211
+ category: TagCategory;
1212
+ category_cache: TagCategory;
1213
+ tag: Tag;
1214
+ };
732
1215
  export type TagImplication = {
733
1216
  id: number;
734
1217
  reason: string;
@@ -737,7 +1220,7 @@ export type TagImplication = {
737
1220
  forum_post_id: number | null;
738
1221
  antecedent_name: string;
739
1222
  consequent_name: string;
740
- status: TagRequestStatuses;
1223
+ status: TagRequestStatus;
741
1224
  forum_topic_id: number | null;
742
1225
  updated_at: string;
743
1226
  descendant_names: Array<string>;
@@ -747,7 +1230,7 @@ export type TagPreview = {
747
1230
  id?: number;
748
1231
  name: string;
749
1232
  resolved?: string;
750
- category?: TagCategories;
1233
+ category?: TagCategory;
751
1234
  post_count?: number;
752
1235
  alias?: string;
753
1236
  implies?: Array<string>;
@@ -756,12 +1239,17 @@ export type TagTypeVersion = {
756
1239
  id: number;
757
1240
  created_at: string;
758
1241
  updated_at: string;
759
- old_type: TagCategories;
760
- new_type: TagCategories;
1242
+ old_type: TagCategory;
1243
+ new_type: TagCategory;
761
1244
  is_locked: boolean;
762
1245
  tag_id: number;
763
1246
  creator_id: number;
764
1247
  };
1248
+ export type TagWithCount = {
1249
+ name: string;
1250
+ category_id: TagCategory;
1251
+ count: number;
1252
+ };
765
1253
  export type Takedown = {
766
1254
  id: number;
767
1255
  status: 'approved' | 'denied' | 'partial' | 'pending';
@@ -771,13 +1259,49 @@ export type Takedown = {
771
1259
  updated_at: string;
772
1260
  post_count: number;
773
1261
  };
1262
+ export type ThumbnailPost = {
1263
+ id: number;
1264
+ created_at: string;
1265
+ md5: string;
1266
+ file_ext: string;
1267
+ width: number;
1268
+ height: number;
1269
+ size: number;
1270
+ preview_url: string | null;
1271
+ preview_webp: string | null;
1272
+ sample_url: string | null;
1273
+ file_url: string | null;
1274
+ preview_width: number;
1275
+ preview_height: number;
1276
+ uploader_id: number;
1277
+ uploader: string;
1278
+ score: number;
1279
+ fav_count: number;
1280
+ is_favorited: boolean;
1281
+ vote: UpDownMehVote;
1282
+ comment_count: number;
1283
+ /**
1284
+ * space separated list of flags:
1285
+ * - pending
1286
+ * - flagged
1287
+ * - deleted
1288
+ *
1289
+ */
1290
+ flags: string;
1291
+ /**
1292
+ * space separated list of ids
1293
+ */
1294
+ pools: string;
1295
+ rating: Rating;
1296
+ tags: string;
1297
+ };
774
1298
  export type Ticket = {
775
1299
  id: number;
776
1300
  creator_id: number;
777
1301
  reason: string;
778
1302
  disp_id: number;
779
- qtype: TicketTypes;
780
- status: TicketStatuses;
1303
+ qtype: TicketType;
1304
+ status: TicketStatus;
781
1305
  created_at: string;
782
1306
  updated_at: string;
783
1307
  response: string;
@@ -789,22 +1313,14 @@ export type Ticket = {
789
1313
  report_reason: string | null;
790
1314
  accused_id: number | null;
791
1315
  };
792
- export type UploadWhitelist = {
793
- id: number;
794
- created_at: string;
795
- updated_at: string;
796
- pattern: string;
797
- note: string;
798
- hidden: boolean;
799
- allowed: boolean;
800
- reason: string;
801
- domain: string;
802
- path: string;
803
- };
804
- export type Upload = {
1316
+ export type TrackedSearchTrend = {
1317
+ count: number;
1318
+ day: string;
1319
+ };
1320
+ export type Upload = {
805
1321
  id: number;
806
1322
  source: string;
807
- rating: Ratings;
1323
+ rating: Rating;
808
1324
  uploader_id: number;
809
1325
  tag_string: string;
810
1326
  /**
@@ -829,390 +1345,92 @@ export type Upload = {
829
1345
  description: string;
830
1346
  uploader_name: string;
831
1347
  };
1348
+ export type UploadWhitelist = {
1349
+ id: number;
1350
+ created_at: string;
1351
+ updated_at: string;
1352
+ pattern: string;
1353
+ note: string;
1354
+ hidden: boolean;
1355
+ allowed: boolean;
1356
+ reason: string;
1357
+ domain: string;
1358
+ path: string;
1359
+ };
832
1360
  export type User = {
833
1361
  id: number;
834
1362
  created_at: string;
835
1363
  name: string;
836
- level: UserLevels;
1364
+ level: UserLevel;
837
1365
  base_upload_limit: number;
1366
+ upload_karma: number;
1367
+ upload_karma_free: boolean;
838
1368
  post_upload_count: number;
839
1369
  post_update_count: number;
840
1370
  note_update_count: number;
841
1371
  is_banned: boolean;
842
- can_approve_posts: boolean;
843
- can_upload_free: boolean;
844
- level_string: UserLevelsNames;
845
- avatar_id: number | null;
846
- is_verified?: boolean;
847
- has_cropped_avatar: boolean;
848
- /**
849
- * Only visible to Admin+.
850
- */
851
- last_logged_in_at?: string;
852
- };
853
- export type UserFeedback = {
854
- id: number;
855
- user_id: number;
856
- creator_id: number;
857
- category: FeedbackCategories;
858
- body: string;
859
- created_at: string;
860
- updated_at: string;
861
- updater_id: number;
862
- is_deleted: boolean;
863
- };
864
- export type UserNameChangeRequest = {
865
- id: number;
866
- approver_id: number;
867
- user_id: number;
868
- original_name: string;
869
- desired_name: string;
870
- change_reason?: string;
871
- created_at: string;
872
- updated_at: string;
873
- status: 'approved';
874
- };
875
- export type WikiPage = {
876
- id: number;
877
- created_at: string;
878
- updated_at: string;
879
- title: string;
880
- body: string;
881
- creator_id: number;
882
- is_locked: boolean;
883
- updater_id: number;
884
- is_deleted: boolean;
885
- other_names: Array<string>;
886
- parent: string | null;
887
- creator_name: string;
888
- category_id: TagCategories;
889
- featured_posts?: Array<number>;
890
- };
891
- export type WikiPageVersion = {
892
- id: number;
893
- created_at: string;
894
- updated_at: string;
895
- title: string;
896
- body: string;
897
- updater_id: number;
898
- wiki_page_id: number;
899
- is_locked: boolean;
900
- other_names: Array<string>;
901
- is_deleted: boolean;
902
- reason: string | null;
903
- parent: string | null;
904
- featured_posts?: Array<number>;
905
- };
906
- export type ApiKey = {
907
- id: number;
908
- updated_at: string;
909
- created_at: string;
910
- user_id: number;
911
- key: string;
912
- name: string;
913
- last_used_at: string | null;
914
- last_used_ip_address: string | null | string;
915
- last_user_agent: string | null;
916
- expires_at: string | null;
917
- notified_at: string | null;
918
- };
919
- export type EditHistory = {
920
- id: number;
921
- created_at: string;
922
- updated_at: string;
923
- body: string;
924
- subject: string | null;
925
- versionable_type: 'Blip' | 'Comment' | 'ForumPost';
926
- versionable_id: number;
927
- version: number;
928
- user_id: number;
929
- };
930
- export type UserAvatarMenu = {
931
- has_uploads: boolean;
932
- has_favorites: boolean;
933
- has_sets: boolean;
934
- has_comments: boolean;
935
- has_forums: boolean;
936
- };
937
- export type TagCorrection = {
938
- post_count: number;
939
- real_post_count: number;
940
- category: TagCategories;
941
- category_cache: TagCategories;
942
- tag: Tag;
943
- };
944
- export type SearchTrend = {
945
- tag: string;
946
- count: number;
947
- day: string;
948
- };
949
- export type RisingSearchTrend = {
950
- name: string;
951
- pretty_name: string;
952
- post_count: number;
953
- category: TagCategories;
954
- };
955
- export type SearchTrendBlacklist = {
956
- id: number;
957
- tag: string;
958
- reason: string;
959
- creator_id: number;
960
- created_at: string;
961
- updated_at: string;
962
- };
963
- export type MessageErrorResponse = {
964
- success: boolean;
965
- message: string;
966
- code?: string | null;
967
- };
968
- export type MessageSuccessResponse = {
969
- success: true;
970
- message: string;
971
- };
972
- export type PostRecommendation = {
973
- post_id: number;
974
- score: number;
975
- explanation: string | null;
976
- };
977
- export type RecommendedPosts = {
978
- post_id: number;
979
- model_version: string;
980
- results: Array<PostRecommendation>;
981
- };
982
- export type PostVote = {
983
- id: number;
984
- post_id: number;
985
- user_id: number;
986
- score: UpDownVote;
987
- created_at: string;
988
- updated_at: string;
989
- };
990
- export type UpDownVote = 1 | -1;
991
- export type UpDownMehVote = 1 | 0 | -1;
992
- export type MinimalUser = {
993
- id: number;
994
- name: string;
995
- level_string: UserLevelsNames;
996
- favorite_count: number;
997
- };
998
- export type ThumbnailPost = {
999
- id: number;
1000
- created_at: string;
1001
- md5: string;
1002
- file_ext: string;
1003
- width: number;
1004
- height: number;
1005
- size: number;
1006
- preview_url: string | null;
1007
- preview_webp: string | null;
1008
- sample_url: string | null;
1009
- file_url: string | null;
1010
- preview_width: number;
1011
- preview_height: number;
1012
- uploader_id: number;
1013
- uploader: string;
1014
- score: number;
1015
- fav_count: number;
1016
- is_favorited: boolean;
1017
- vote: -1 | 0 | 1;
1018
- comment_count: number;
1019
- /**
1020
- * space separated list of flags:
1021
- * - pending
1022
- * - flagged
1023
- * - deleted
1024
- *
1025
- */
1026
- flags: string;
1027
- /**
1028
- * space separated list of ids
1029
- */
1030
- pools: string;
1031
- rating: Ratings;
1032
- tags: string;
1033
- };
1034
- export type PostData = {
1035
- post_data: Array<ThumbnailPost>;
1036
- };
1037
- export type CommentVote = {
1038
- id: number;
1039
- comment_id: number;
1040
- user_id: number;
1041
- score: UpDownVote;
1042
- created_at: string;
1043
- updated_at: string;
1044
- };
1045
- export type LegacyPost = {
1046
- id: number;
1047
- created_at: string;
1048
- updated_at: string;
1049
- file: {
1050
- width: number;
1051
- height: number;
1052
- ext: string;
1053
- size: number;
1054
- md5: string;
1055
- url: string | null;
1056
- };
1057
- preview: {
1058
- width: number;
1059
- height: number;
1060
- url: string | null;
1061
- };
1062
- sample: {
1063
- has: boolean;
1064
- height: number | null;
1065
- width: number | null;
1066
- url: string | null;
1067
- alternates: {
1068
- has?: boolean;
1069
- original?: PostSampleAlternate;
1070
- variants?: {
1071
- webm?: PostSampleAlternate;
1072
- mp4?: PostSampleAlternate;
1073
- };
1074
- samples?: {
1075
- '480p'?: PostSampleAlternate;
1076
- '720p'?: PostSampleAlternate;
1077
- };
1078
- };
1079
- };
1080
- score: {
1081
- up: number;
1082
- down: number;
1083
- total: number;
1084
- };
1085
- tags: {
1086
- general: Array<string>;
1087
- artist: Array<string>;
1088
- copyright: Array<string>;
1089
- character: Array<string>;
1090
- species: Array<string>;
1091
- invalid: Array<string>;
1092
- meta: Array<string>;
1093
- lore: Array<string>;
1094
- contributor: Array<string>;
1095
- };
1096
- locked_tags: Array<string> | null;
1097
- change_seq: number;
1098
- flags: {
1099
- pending: boolean;
1100
- flagged: boolean;
1101
- note_locked: boolean;
1102
- status_locked: boolean;
1103
- rating_locked: boolean;
1104
- deleted: boolean;
1105
- };
1106
- rating: Ratings;
1107
- fav_count: number;
1108
- sources: Array<string>;
1109
- pools: Array<number>;
1110
- relationships: {
1111
- parent_id: number | null;
1112
- has_children: boolean;
1113
- has_active_children: boolean;
1114
- children: Array<number>;
1115
- };
1116
- approver_id: number | null;
1117
- uploader_id: number;
1118
- description: string;
1119
- comment_count: number;
1120
- is_favorited: boolean;
1121
- has_notes: boolean;
1122
- duration: number | null;
1123
- uploader_name: string;
1124
- vote: -1 | 0 | 1;
1125
- };
1126
- export type BasicPost = Post & {
1127
- tags: Array<string>;
1128
- };
1129
- export type ExtendedPost = Post & {
1130
- tags: {
1131
- general: Array<string>;
1132
- artist: Array<string>;
1133
- contributor: Array<string>;
1134
- copyright: Array<string>;
1135
- character: Array<string>;
1136
- species: Array<string>;
1137
- invalid: Array<string>;
1138
- meta: Array<string>;
1139
- lore: Array<string>;
1140
- };
1141
- };
1142
- export type ExceptionLog = {
1143
- id: number;
1144
- created_at: string;
1145
- updated_at: string;
1146
- class_name: string;
1147
- version: string;
1148
- extra_params: {
1149
- [key: string]: unknown;
1150
- };
1151
- message: string;
1152
- trace: string;
1153
- code: string;
1154
- user_id: number;
1155
- };
1156
- export type Appeal = {
1157
- id: number;
1158
- creator_id?: number;
1159
- disp_id: string;
1160
- qtype: 'flag';
1161
- status: 'pending' | 'partial' | 'approved' | 'rejected';
1162
- reason?: string;
1163
- response?: string;
1164
- claimant_id?: number | null;
1165
- handler_id: number | null;
1166
- accused_id?: number;
1167
- created_at: string;
1168
- updated_at: string;
1169
- };
1170
- export type DbExport = {
1171
- name: DbExportNames;
1172
- file_name: string;
1173
- file_size: number;
1174
- updated_at: string;
1175
- url: string;
1372
+ can_approve_posts: boolean;
1373
+ can_upload_free: boolean;
1374
+ level_string: UserLevelName;
1375
+ avatar_id: number | null;
1376
+ is_verified?: boolean;
1377
+ has_cropped_avatar: boolean;
1176
1378
  /**
1177
- * SHA-256
1379
+ * Only visible to Admin+.
1178
1380
  */
1179
- checksum: string;
1381
+ last_logged_in_at?: string;
1180
1382
  };
1181
- export type DbExportNames = 'artists' | 'bulk_update_requests' | 'pools' | 'post_replacements' | 'posts' | 'post_versions' | 'tag_aliases' | 'tag_implications' | 'tags' | 'wiki_pages';
1182
- export type UserLevels = 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80;
1183
- export type UserLevelsNames = 'Anonymous' | 'Blocked' | 'Member' | 'Privileged' | 'Former Staff' | 'Staff' | 'Janitor' | 'Moderator' | 'Admin';
1184
- export type StaffFile = {
1383
+ export type UserAlt = {
1384
+ user_id: number;
1385
+ score: number;
1386
+ handoff: boolean;
1387
+ handoff_users: number | null;
1388
+ shared_exact: number;
1389
+ shared_subnet: number;
1390
+ total_ips: number;
1391
+ ratio: number;
1392
+ rarest_users: number;
1393
+ overlap_first: string;
1394
+ overlap_last: string;
1395
+ last_co_seen: string;
1396
+ concurrent: boolean;
1397
+ deleted: boolean;
1398
+ user: UserAltUser;
1399
+ };
1400
+ export type UserAltUser = {
1185
1401
  id: number;
1186
- creator_id: number;
1187
- storage_id: string;
1188
- md5: string;
1189
- file_ext: string;
1190
- file_size: number;
1191
- original_filename: string;
1192
- title: string;
1193
- description: string | null;
1402
+ name: string;
1403
+ level_string: string;
1194
1404
  created_at: string;
1195
- updated_at: string;
1196
1405
  };
1197
- export type StaffWiki = {
1406
+ export type UserAvatarMenu = {
1407
+ has_uploads: boolean;
1408
+ has_favorites: boolean;
1409
+ has_sets: boolean;
1410
+ has_comments: boolean;
1411
+ has_forums: boolean;
1412
+ };
1413
+ export type UserFeedback = {
1198
1414
  id: number;
1415
+ user_id: number;
1199
1416
  creator_id: number;
1200
- updater_id: number;
1201
- claimant_id: number | null;
1202
- title: string;
1417
+ category: UserFeedbackCategory;
1203
1418
  body: string;
1204
1419
  created_at: string;
1205
1420
  updated_at: string;
1421
+ updater_id: number;
1422
+ is_deleted: boolean;
1206
1423
  };
1207
- export type StaffWikiVersion = {
1424
+ export type UserNameChangeRequest = {
1208
1425
  id: number;
1209
- staff_wiki_id: number;
1210
- updater_id: number;
1211
- claimant_id: number | null;
1212
- title: string;
1213
- body: string;
1426
+ approver_id: number;
1427
+ user_id: number;
1428
+ original_name: string;
1429
+ desired_name: string;
1430
+ change_reason?: string;
1214
1431
  created_at: string;
1215
1432
  updated_at: string;
1433
+ status: 'approved';
1216
1434
  };
1217
1435
  export type VoteTrend = Tag | VoteTrendMetatag | VoteTrendUploader;
1218
1436
  export type VoteTrendMetatag = {
@@ -1227,43 +1445,119 @@ export type VoteTrendUploader = {
1227
1445
  uploader_id: number;
1228
1446
  uploader: User;
1229
1447
  };
1448
+ export type WikiPage = {
1449
+ id: number;
1450
+ created_at: string;
1451
+ updated_at: string;
1452
+ title: string;
1453
+ body: string;
1454
+ creator_id: number;
1455
+ is_locked: boolean;
1456
+ updater_id: number;
1457
+ is_deleted: boolean;
1458
+ other_names: Array<string>;
1459
+ parent: string | null;
1460
+ creator_name: string;
1461
+ category_id: TagCategory;
1462
+ featured_posts?: Array<number>;
1463
+ };
1464
+ export type WikiPageVersion = {
1465
+ id: number;
1466
+ created_at: string;
1467
+ updated_at: string;
1468
+ title: string;
1469
+ body: string;
1470
+ updater_id: number;
1471
+ wiki_page_id: number;
1472
+ is_locked: boolean;
1473
+ other_names: Array<string>;
1474
+ is_deleted: boolean;
1475
+ reason: string | null;
1476
+ parent: string | null;
1477
+ featured_posts?: Array<number>;
1478
+ };
1479
+ export type AccessDeniedResponse = {
1480
+ success: boolean;
1481
+ reason: 'Access Denied';
1482
+ };
1483
+ export type DTextResponse = {
1484
+ html: string;
1485
+ posts: DeferredPost;
1486
+ };
1487
+ export type IQDBResponse = {
1488
+ hash: string;
1489
+ post_id: number;
1490
+ score: number;
1491
+ post: {
1492
+ posts: IQDBPost;
1493
+ };
1494
+ };
1495
+ export type IQDBResponseV2 = {
1496
+ hash: string;
1497
+ post_id: number;
1498
+ score: number;
1499
+ post: BasicPost;
1500
+ };
1501
+ export type MessageErrorResponse = {
1502
+ success: boolean;
1503
+ message: string;
1504
+ code?: string | null;
1505
+ };
1506
+ export type MessageSuccessResponse = {
1507
+ success: true;
1508
+ message: string;
1509
+ };
1510
+ export type NotFoundResponse = {
1511
+ success: boolean;
1512
+ reason: 'not found';
1513
+ };
1514
+ export type OAuthError = {
1515
+ /**
1516
+ * OAuth 2.0 error code (RFC 6749 §5.2 / RFC 6750 §3), e.g. `invalid_token`.
1517
+ */
1518
+ error: string;
1519
+ error_description?: string;
1520
+ state?: string;
1521
+ };
1230
1522
  /**
1231
1523
  * Search for a specific id. Multiple can be separated by commas, up to 320.
1232
1524
  */
1233
- export type IdQuery = string | number;
1525
+ export type idQuery = string | number;
1234
1526
  /**
1235
1527
  * The maximum number of results to return. Between 0 and 320.
1236
1528
  */
1237
- export type LimitQuery = number;
1529
+ export type limitQuery = number;
1238
1530
  /**
1239
1531
  * The page number of results to get. Between 1 and 750.
1240
1532
  */
1241
- export type PageQuery = number;
1533
+ export type pageQuery = number;
1242
1534
  /**
1243
1535
  * Must be Admin+ to use. See [the PostgreSQL documentation](https://www.postgresql.org/docs/9.3/functions-net.html) for information on how this is parsed. Specifically, "is contained within or equals" (`<<=`).
1244
1536
  */
1245
- export type IpAddrQuery = string;
1537
+ export type ipAddrQuery = string;
1246
1538
  /**
1247
1539
  * The order of the results.
1248
1540
  */
1249
- export type OrderQuery = 'id_asc' | 'id_desc';
1541
+ export type orderQuery = 'id_asc' | 'id_desc';
1250
1542
  /**
1251
1543
  * Use the new V2 format. See the `v2=true` responses.
1252
1544
  */
1253
- export type V2Query = boolean;
1545
+ export type v2Query = boolean;
1254
1546
  /**
1255
1547
  * Set the mode for the V2 format. Ignored if `v2` is not set or false. See the `v2=true` responses.
1256
1548
  */
1257
- export type ModeQuery = 'basic' | 'extended' | 'thumbnail';
1549
+ export type modeQuery = 'basic' | 'extended' | 'thumbnail';
1258
1550
  /**
1259
1551
  * The ID of the item.
1260
1552
  */
1261
- export type IdPath = number;
1553
+ export type idPath = number;
1262
1554
  /**
1263
1555
  * An ID that can be either an integer or a name.
1264
1556
  */
1265
- export type IdOrNamePath = number | string;
1266
- export type Warning = WarningRecordType;
1557
+ export type idOrNamePath = number | string;
1558
+ export type warning = {
1559
+ record_type: WarningRecordType;
1560
+ };
1267
1561
  export type ApiKeysIndexData = {
1268
1562
  body?: never;
1269
1563
  path?: never;
@@ -1301,7 +1595,7 @@ export type ApiKeysIndexResponses = {
1301
1595
  /**
1302
1596
  * Success
1303
1597
  */
1304
- 200: Array<ApiKey>;
1598
+ 200: Array<APIKey>;
1305
1599
  };
1306
1600
  export type ApiKeysIndexResponse = ApiKeysIndexResponses[keyof ApiKeysIndexResponses];
1307
1601
  export type ApiKeysCreateData = {
@@ -1335,7 +1629,7 @@ export type ApiKeysCreateResponses = {
1335
1629
  /**
1336
1630
  * Success
1337
1631
  */
1338
- 201: ApiKey;
1632
+ 201: APIKey;
1339
1633
  };
1340
1634
  export type ApiKeysCreateResponse = ApiKeysCreateResponses[keyof ApiKeysCreateResponses];
1341
1635
  export type ApiKeysDestroyData = {
@@ -1400,7 +1694,7 @@ export type ApiKeysRegenerateResponses = {
1400
1694
  /**
1401
1695
  * Success
1402
1696
  */
1403
- 201: ApiKey;
1697
+ 201: APIKey;
1404
1698
  };
1405
1699
  export type ApiKeysRegenerateResponse = ApiKeysRegenerateResponses[keyof ApiKeysRegenerateResponses];
1406
1700
  export type AppealsIndexData = {
@@ -1447,8 +1741,8 @@ export type AppealsIndexData = {
1447
1741
  * Must be Janitor+.
1448
1742
  */
1449
1743
  'search[accused_name]'?: string;
1450
- 'search[qtype]'?: 'flag';
1451
- 'search[status]'?: ('pending' | 'partial' | 'approved' | 'rejected') & ('pending_claimed' | 'pending_unclaimed');
1744
+ 'search[qtype]'?: AppealType;
1745
+ 'search[status]'?: AppealStatus & ('pending_claimed' | 'pending_unclaimed');
1452
1746
  };
1453
1747
  url: '/appeals.json';
1454
1748
  };
@@ -1467,7 +1761,7 @@ export type AppealsIndexResponses = {
1467
1761
  /**
1468
1762
  * Success
1469
1763
  */
1470
- 200: Array<ApiKey>;
1764
+ 200: Array<APIKey>;
1471
1765
  };
1472
1766
  export type AppealsIndexResponse = AppealsIndexResponses[keyof AppealsIndexResponses];
1473
1767
  export type AppealsShowData = {
@@ -1501,12 +1795,12 @@ export type AppealsShowResponses = {
1501
1795
  export type AppealsShowResponse = AppealsShowResponses[keyof AppealsShowResponses];
1502
1796
  export type AppealsUpdateData = {
1503
1797
  body?: {
1504
- status?: 'partial' | 'approved';
1505
- response?: string;
1798
+ 'appeal[status]'?: 'partial' | 'approved';
1799
+ 'appeal[response]'?: string;
1506
1800
  /**
1507
1801
  * An update dmail will always be sent when the status is changed.
1508
1802
  */
1509
- send_update_dmail?: boolean;
1803
+ 'appeal[send_update_dmail]'?: boolean;
1510
1804
  };
1511
1805
  path: {
1512
1806
  /**
@@ -1630,26 +1924,26 @@ export type ArtistsIndexResponses = {
1630
1924
  * Success
1631
1925
  */
1632
1926
  200: Array<Artist & {
1633
- urls: Array<ArtistUrl>;
1927
+ urls: Array<ArtistURL>;
1634
1928
  }>;
1635
1929
  };
1636
1930
  export type ArtistsIndexResponse = ArtistsIndexResponses[keyof ArtistsIndexResponses];
1637
1931
  export type ArtistsCreateData = {
1638
1932
  body?: {
1639
- name: string;
1640
- other_names?: Array<string>;
1641
- other_names_string?: string;
1642
- url_string?: string;
1643
- notes?: string;
1644
- group_name?: string;
1933
+ 'artist[name]': string;
1934
+ 'artist[other_names][]'?: Array<string>;
1935
+ 'artist[other_names_string]'?: string;
1936
+ 'artist[url_string]'?: string;
1937
+ 'artist[notes]'?: string;
1938
+ 'artist[group_name]'?: string;
1645
1939
  /**
1646
1940
  * Only usable for Staff+
1647
1941
  */
1648
- linked_user_id?: number | null;
1942
+ 'artist[linked_user_id]'?: number | null;
1649
1943
  /**
1650
1944
  * Only usable for Staff+
1651
1945
  */
1652
- is_locked?: boolean;
1946
+ 'artist[is_locked]'?: boolean;
1653
1947
  };
1654
1948
  path?: never;
1655
1949
  query?: never;
@@ -1728,7 +2022,7 @@ export type ArtistsShowResponses = {
1728
2022
  */
1729
2023
  200: Artist & {
1730
2024
  domains: Array<Array<string | number>>;
1731
- urls: Array<ArtistUrl>;
2025
+ urls: Array<ArtistURL>;
1732
2026
  };
1733
2027
  };
1734
2028
  export type ArtistsShowResponse = ArtistsShowResponses[keyof ArtistsShowResponses];
@@ -1737,20 +2031,20 @@ export type ArtistsUpdateData = {
1737
2031
  /**
1738
2032
  * Only usable for Staff+
1739
2033
  */
1740
- name?: string;
1741
- other_names?: Array<string>;
1742
- other_names_string?: string;
1743
- url_string?: string;
1744
- notes?: string;
1745
- group_name?: string;
2034
+ 'artist[name]'?: string;
2035
+ 'artist[other_names][]'?: Array<string>;
2036
+ 'artist[other_names_string]'?: string;
2037
+ 'artist[url_string]'?: string;
2038
+ 'artist[notes]'?: string;
2039
+ 'artist[group_name]'?: string;
1746
2040
  /**
1747
2041
  * Only usable for Staff+
1748
2042
  */
1749
- linked_user_id?: number | null;
2043
+ 'artist[linked_user_id]'?: number | null;
1750
2044
  /**
1751
2045
  * Only usable for Staff+
1752
2046
  */
1753
- is_locked?: boolean;
2047
+ 'artist[is_locked]'?: boolean;
1754
2048
  };
1755
2049
  path: {
1756
2050
  /**
@@ -1940,7 +2234,7 @@ export type ArtistUrlsIndexResponses = {
1940
2234
  /**
1941
2235
  * Success
1942
2236
  */
1943
- 200: Array<ArtistUrl & {
2237
+ 200: Array<ArtistURL & {
1944
2238
  artist: Artist;
1945
2239
  }>;
1946
2240
  };
@@ -2011,19 +2305,17 @@ export type AvoidPostingsIndexResponses = {
2011
2305
  export type AvoidPostingsIndexResponse = AvoidPostingsIndexResponses[keyof AvoidPostingsIndexResponses];
2012
2306
  export type AvoidPostingsCreateData = {
2013
2307
  body?: {
2014
- details?: string;
2015
- staff_notes?: string;
2016
- is_active?: boolean;
2017
- artist_attributes: {
2018
- /**
2019
- * If provided and the artist does not exist, an artist will be created.
2020
- */
2021
- name: string;
2022
- other_names_string?: string;
2023
- other_names?: Array<string>;
2024
- group_name?: string;
2025
- linked_user_id?: number;
2026
- };
2308
+ 'avoid_posting[details]'?: string;
2309
+ 'avoid_posting[staff_notes]'?: string;
2310
+ 'avoid_posting[is_active]'?: boolean;
2311
+ /**
2312
+ * If provided and the artist does not exist, an artist will be created.
2313
+ */
2314
+ 'avoid_posting[artist_attributes][name]': string;
2315
+ 'avoid_posting[artist_attributes][other_names_string]'?: string;
2316
+ 'avoid_posting[artist_attributes][other_names][]'?: Array<string>;
2317
+ 'avoid_posting[artist_attributes][group_name]'?: string;
2318
+ 'avoid_posting[artist_attributes][linked_user_id]'?: number;
2027
2319
  };
2028
2320
  path?: never;
2029
2321
  query?: never;
@@ -2105,19 +2397,17 @@ export type AvoidPostingsShowResponses = {
2105
2397
  export type AvoidPostingsShowResponse = AvoidPostingsShowResponses[keyof AvoidPostingsShowResponses];
2106
2398
  export type AvoidPostingsUpdateData = {
2107
2399
  body?: {
2108
- details?: string;
2109
- staff_notes?: string;
2110
- is_active?: boolean;
2111
- artist_attributes?: {
2112
- /**
2113
- * If provided and the artist does not exist, an artist will be created.
2114
- */
2115
- name?: string;
2116
- other_names_string?: string;
2117
- other_names?: Array<string>;
2118
- group_name?: string;
2119
- linked_user_id?: number;
2120
- };
2400
+ 'avoid_posting[details]'?: string;
2401
+ 'avoid_posting[staff_notes]'?: string;
2402
+ 'avoid_posting[is_active]'?: boolean;
2403
+ /**
2404
+ * If provided and the artist does not exist, an artist will be created.
2405
+ */
2406
+ 'avoid_posting[artist_attributes][name]'?: string;
2407
+ 'avoid_posting[artist_attributes][other_names_string]'?: string;
2408
+ 'avoid_posting[artist_attributes][other_names][]'?: Array<string>;
2409
+ 'avoid_posting[artist_attributes][group_name]'?: string;
2410
+ 'avoid_posting[artist_attributes][linked_user_id]'?: number;
2121
2411
  };
2122
2412
  path: {
2123
2413
  /**
@@ -2392,8 +2682,8 @@ export type BlipsIndexResponses = {
2392
2682
  export type BlipsIndexResponse = BlipsIndexResponses[keyof BlipsIndexResponses];
2393
2683
  export type BlipsCreateData = {
2394
2684
  body?: {
2395
- body: string;
2396
- response_to?: number;
2685
+ 'blip[body]': string;
2686
+ 'blip[response_to]'?: number;
2397
2687
  };
2398
2688
  path?: never;
2399
2689
  query?: never;
@@ -2483,7 +2773,7 @@ export type BlipsShowResponses = {
2483
2773
  export type BlipsShowResponse = BlipsShowResponses[keyof BlipsShowResponses];
2484
2774
  export type BlipsUpdateData = {
2485
2775
  body?: {
2486
- body?: string;
2776
+ 'blip[body]'?: string;
2487
2777
  };
2488
2778
  path: {
2489
2779
  /**
@@ -2563,7 +2853,7 @@ export type BlipsUndeleteErrors = {
2563
2853
  };
2564
2854
  export type BlipsUndeleteError = BlipsUndeleteErrors[keyof BlipsUndeleteErrors];
2565
2855
  export type BlipsWarningData = {
2566
- body?: Warning;
2856
+ body?: warning;
2567
2857
  path: {
2568
2858
  /**
2569
2859
  * The ID of the item.
@@ -2632,17 +2922,17 @@ export type BulkUpdateRequestsIndexResponses = {
2632
2922
  export type BulkUpdateRequestsIndexResponse = BulkUpdateRequestsIndexResponses[keyof BulkUpdateRequestsIndexResponses];
2633
2923
  export type BulkUpdateRequestsCreateData = {
2634
2924
  body?: {
2635
- script: string;
2636
- title: string;
2637
- reason: string;
2925
+ 'bulk_update_request[script]': string;
2926
+ 'bulk_update_request[title]': string;
2927
+ 'bulk_update_request[reason]': string;
2638
2928
  /**
2639
2929
  * You must be able to reply to the topic.
2640
2930
  */
2641
- forum_topic_id?: number;
2931
+ 'bulk_update_request[forum_topic_id]'?: number;
2642
2932
  /**
2643
2933
  * Only usable for Admin+
2644
2934
  */
2645
- skip_forum?: boolean;
2935
+ 'bulk_update_request[skip_forum]'?: boolean;
2646
2936
  };
2647
2937
  path?: never;
2648
2938
  query?: never;
@@ -2724,15 +3014,15 @@ export type BulkUpdateRequestsShowResponses = {
2724
3014
  export type BulkUpdateRequestsShowResponse = BulkUpdateRequestsShowResponses[keyof BulkUpdateRequestsShowResponses];
2725
3015
  export type BulkUpdateRequestsUpdateData = {
2726
3016
  body?: {
2727
- script?: string;
3017
+ 'bulk_update_request[script]'?: string;
2728
3018
  /**
2729
3019
  * You must be Admin+.
2730
3020
  */
2731
- forum_topic_id?: string;
3021
+ 'bulk_update_request[forum_topic_id]'?: string;
2732
3022
  /**
2733
3023
  * You must be Admin+.
2734
3024
  */
2735
- forum_post_id?: string;
3025
+ 'bulk_update_request[forum_post_id]'?: string;
2736
3026
  };
2737
3027
  path: {
2738
3028
  /**
@@ -2823,6 +3113,9 @@ export type CommentsIndexData = {
2823
3113
  * Accepts a comma separated list.
2824
3114
  */
2825
3115
  'search[post_id]'?: string;
3116
+ /**
3117
+ * Only usable by Member+
3118
+ */
2826
3119
  'search[post_tags_match]'?: string;
2827
3120
  'search[post_note_updater_name]'?: string;
2828
3121
  'search[post_note_updater_id]'?: number;
@@ -2846,17 +3139,17 @@ export type CommentsIndexResponses = {
2846
3139
  export type CommentsIndexResponse = CommentsIndexResponses[keyof CommentsIndexResponses];
2847
3140
  export type CommentsCreateData = {
2848
3141
  body?: {
2849
- body: string;
2850
- post_id: number;
2851
- do_not_bump_post?: boolean;
3142
+ 'comment[body]': string;
3143
+ 'comment[post_id]': number;
3144
+ 'comment[do_not_bump_post]'?: boolean;
2852
3145
  /**
2853
3146
  * Only usable for Staff+
2854
3147
  */
2855
- is_sticky?: boolean;
3148
+ 'comment[is_sticky]'?: boolean;
2856
3149
  /**
2857
3150
  * Only usable for Moderator+
2858
3151
  */
2859
- is_hidden?: boolean;
3152
+ 'comment[is_hidden]'?: boolean;
2860
3153
  };
2861
3154
  path?: never;
2862
3155
  query?: never;
@@ -2942,15 +3235,15 @@ export type CommentsShowResponses = {
2942
3235
  export type CommentsShowResponse = CommentsShowResponses[keyof CommentsShowResponses];
2943
3236
  export type CommentsUpdateData = {
2944
3237
  body?: {
2945
- body?: string;
3238
+ 'comment[body]'?: string;
2946
3239
  /**
2947
3240
  * Only usable for Staff+
2948
3241
  */
2949
- is_sticky?: boolean;
3242
+ 'comment[is_sticky]'?: boolean;
2950
3243
  /**
2951
3244
  * Only usable for Moderator+
2952
3245
  */
2953
- is_hidden?: boolean;
3246
+ 'comment[is_hidden]'?: boolean;
2954
3247
  };
2955
3248
  path: {
2956
3249
  /**
@@ -3044,7 +3337,7 @@ export type CommentsUnhideResponses = {
3044
3337
  };
3045
3338
  export type CommentsUnhideResponse = CommentsUnhideResponses[keyof CommentsUnhideResponses];
3046
3339
  export type CommentsWarningData = {
3047
- body?: Warning;
3340
+ body?: warning;
3048
3341
  path: {
3049
3342
  /**
3050
3343
  * The ID of the item.
@@ -3206,87 +3499,287 @@ export type CommentVotesLockData = {
3206
3499
  path?: never;
3207
3500
  query: {
3208
3501
  /**
3209
- * The IDs of the comment votes, comma separated.
3502
+ * The IDs of the comment votes, comma separated.
3503
+ */
3504
+ ids: string;
3505
+ };
3506
+ url: '/comment_votes/lock.json';
3507
+ };
3508
+ export type CommentVotesLockErrors = {
3509
+ /**
3510
+ * Access Denied
3511
+ */
3512
+ 403: AccessDeniedResponse;
3513
+ /**
3514
+ * Not Found
3515
+ */
3516
+ 404: NotFoundResponse;
3517
+ /**
3518
+ * Invalid Input Data
3519
+ */
3520
+ 422: {
3521
+ errors: Array<string>;
3522
+ };
3523
+ };
3524
+ export type CommentVotesLockError = CommentVotesLockErrors[keyof CommentVotesLockErrors];
3525
+ export type CommentVotesLockResponses = {
3526
+ /**
3527
+ * Success
3528
+ */
3529
+ 204: void;
3530
+ };
3531
+ export type CommentVotesLockResponse = CommentVotesLockResponses[keyof CommentVotesLockResponses];
3532
+ export type CommentVotesDeleteData = {
3533
+ body?: never;
3534
+ path?: never;
3535
+ query: {
3536
+ /**
3537
+ * The IDs of the comment votes, comma separated.
3538
+ */
3539
+ ids: string;
3540
+ };
3541
+ url: '/comment_votes/delete.json';
3542
+ };
3543
+ export type CommentVotesDeleteErrors = {
3544
+ /**
3545
+ * Access Denied
3546
+ */
3547
+ 403: AccessDeniedResponse;
3548
+ };
3549
+ export type CommentVotesDeleteError = CommentVotesDeleteErrors[keyof CommentVotesDeleteErrors];
3550
+ export type CommentVotesDeleteResponses = {
3551
+ /**
3552
+ * Success
3553
+ */
3554
+ 204: void;
3555
+ };
3556
+ export type CommentVotesDeleteResponse = CommentVotesDeleteResponses[keyof CommentVotesDeleteResponses];
3557
+ export type DbExportsIndexData = {
3558
+ body?: never;
3559
+ path?: never;
3560
+ query?: never;
3561
+ url: '/db_exports.json';
3562
+ };
3563
+ export type DbExportsIndexResponses = {
3564
+ /**
3565
+ * Success
3566
+ */
3567
+ 200: Array<DBExport>;
3568
+ };
3569
+ export type DbExportsIndexResponse = DbExportsIndexResponses[keyof DbExportsIndexResponses];
3570
+ export type HealthIndexData = {
3571
+ body?: never;
3572
+ path?: never;
3573
+ query?: never;
3574
+ url: '/health';
3575
+ };
3576
+ export type HealthIndexResponses = {
3577
+ /**
3578
+ * Success
3579
+ */
3580
+ 200: string;
3581
+ };
3582
+ export type HealthIndexResponse = HealthIndexResponses[keyof HealthIndexResponses];
3583
+ export type RailsHealthShowData = {
3584
+ body?: never;
3585
+ path?: never;
3586
+ query?: never;
3587
+ url: '/status.json';
3588
+ };
3589
+ export type RailsHealthShowResponses = {
3590
+ /**
3591
+ * Success
3592
+ */
3593
+ 200: {
3594
+ status: 'up';
3595
+ timestamp: string;
3596
+ };
3597
+ };
3598
+ export type RailsHealthShowResponse = RailsHealthShowResponses[keyof RailsHealthShowResponses];
3599
+ export type DoorkeeperOpenidConnectDiscoveryProviderData = {
3600
+ body?: never;
3601
+ path?: never;
3602
+ query?: never;
3603
+ url: '/.well-known/openid-configuration';
3604
+ };
3605
+ export type DoorkeeperOpenidConnectDiscoveryProviderResponses = {
3606
+ /**
3607
+ * Success
3608
+ */
3609
+ 200: OpenIDConfiguration;
3610
+ };
3611
+ export type DoorkeeperOpenidConnectDiscoveryProviderResponse = DoorkeeperOpenidConnectDiscoveryProviderResponses[keyof DoorkeeperOpenidConnectDiscoveryProviderResponses];
3612
+ export type DoorkeeperOpenidConnectDiscoveryKeysData = {
3613
+ body?: never;
3614
+ path?: never;
3615
+ query?: never;
3616
+ url: '/oauth/discovery/keys';
3617
+ };
3618
+ export type DoorkeeperOpenidConnectDiscoveryKeysResponses = {
3619
+ /**
3620
+ * Success
3621
+ */
3622
+ 200: JWKS;
3623
+ };
3624
+ export type DoorkeeperOpenidConnectDiscoveryKeysResponse = DoorkeeperOpenidConnectDiscoveryKeysResponses[keyof DoorkeeperOpenidConnectDiscoveryKeysResponses];
3625
+ export type DoorkeeperOpenidConnectUserinfoShowData = {
3626
+ body?: never;
3627
+ path?: never;
3628
+ query?: never;
3629
+ url: '/oauth/userinfo';
3630
+ };
3631
+ export type DoorkeeperOpenidConnectUserinfoShowErrors = {
3632
+ /**
3633
+ * The access token is missing, expired, or revoked.
3634
+ */
3635
+ 401: OAuthError;
3636
+ };
3637
+ export type DoorkeeperOpenidConnectUserinfoShowError = DoorkeeperOpenidConnectUserinfoShowErrors[keyof DoorkeeperOpenidConnectUserinfoShowErrors];
3638
+ export type DoorkeeperOpenidConnectUserinfoShowResponses = {
3639
+ /**
3640
+ * Success
3641
+ */
3642
+ 200: OAuthUserInfo;
3643
+ };
3644
+ export type DoorkeeperOpenidConnectUserinfoShowResponse = DoorkeeperOpenidConnectUserinfoShowResponses[keyof DoorkeeperOpenidConnectUserinfoShowResponses];
3645
+ export type DoorkeeperTokensCreateData = {
3646
+ body?: {
3647
+ grant_type: 'authorization_code' | 'refresh_token';
3648
+ /**
3649
+ * Required for the `authorization_code` grant type.
3650
+ */
3651
+ code?: string;
3652
+ /**
3653
+ * Required for the `authorization_code` grant type. Must match the `redirect_uri` used to obtain `code`.
3654
+ */
3655
+ redirect_uri?: string;
3656
+ /**
3657
+ * Required for the `authorization_code` grant type (PKCE is enforced).
3658
+ */
3659
+ code_verifier?: string;
3660
+ /**
3661
+ * Required for the `refresh_token` grant type.
3662
+ */
3663
+ refresh_token?: string;
3664
+ /**
3665
+ * Space-separated list of scopes to narrow the token to. Only used by the `refresh_token` grant type.
3666
+ */
3667
+ scope?: string;
3668
+ /**
3669
+ * Required unless authenticating via HTTP Basic Auth instead.
3210
3670
  */
3211
- ids: string;
3671
+ client_id?: string;
3672
+ /**
3673
+ * Required unless authenticating via HTTP Basic Auth instead, or the client is public.
3674
+ */
3675
+ client_secret?: string;
3212
3676
  };
3213
- url: '/comment_votes/lock.json';
3677
+ path?: never;
3678
+ query?: never;
3679
+ url: '/oauth/token';
3214
3680
  };
3215
- export type CommentVotesLockErrors = {
3216
- /**
3217
- * Access Denied
3218
- */
3219
- 403: AccessDeniedResponse;
3681
+ export type DoorkeeperTokensCreateErrors = {
3220
3682
  /**
3221
- * Not Found
3683
+ * Invalid request, client, grant, or scope.
3222
3684
  */
3223
- 404: NotFoundResponse;
3685
+ 400: OAuthError;
3224
3686
  /**
3225
- * Invalid Input Data
3687
+ * Client authentication failed.
3226
3688
  */
3227
- 422: {
3228
- errors: Array<string>;
3229
- };
3689
+ 401: OAuthError;
3230
3690
  };
3231
- export type CommentVotesLockError = CommentVotesLockErrors[keyof CommentVotesLockErrors];
3232
- export type CommentVotesLockResponses = {
3691
+ export type DoorkeeperTokensCreateError = DoorkeeperTokensCreateErrors[keyof DoorkeeperTokensCreateErrors];
3692
+ export type DoorkeeperTokensCreateResponses = {
3233
3693
  /**
3234
3694
  * Success
3235
3695
  */
3236
- 204: void;
3696
+ 200: OAuthToken;
3237
3697
  };
3238
- export type CommentVotesLockResponse = CommentVotesLockResponses[keyof CommentVotesLockResponses];
3239
- export type CommentVotesDeleteData = {
3240
- body?: never;
3241
- path?: never;
3242
- query: {
3698
+ export type DoorkeeperTokensCreateResponse = DoorkeeperTokensCreateResponses[keyof DoorkeeperTokensCreateResponses];
3699
+ export type DoorkeeperTokensRevokeData = {
3700
+ body?: {
3243
3701
  /**
3244
- * The IDs of the comment votes, comma separated.
3702
+ * The access or refresh token to revoke.
3245
3703
  */
3246
- ids: string;
3704
+ token: string;
3705
+ token_type_hint?: 'access_token' | 'refresh_token';
3706
+ /**
3707
+ * Required unless authenticating via HTTP Basic Auth instead, or the token was issued without a client.
3708
+ */
3709
+ client_id?: string;
3710
+ /**
3711
+ * Required unless authenticating via HTTP Basic Auth instead, or the token was issued without a client.
3712
+ */
3713
+ client_secret?: string;
3247
3714
  };
3248
- url: '/comment_votes/delete.json';
3715
+ path?: never;
3716
+ query?: never;
3717
+ url: '/oauth/revoke';
3249
3718
  };
3250
- export type CommentVotesDeleteErrors = {
3719
+ export type DoorkeeperTokensRevokeErrors = {
3251
3720
  /**
3252
- * Access Denied
3721
+ * The token was issued to a different client than the one making this request.
3253
3722
  */
3254
- 403: AccessDeniedResponse;
3723
+ 403: OAuthError;
3255
3724
  };
3256
- export type CommentVotesDeleteError = CommentVotesDeleteErrors[keyof CommentVotesDeleteErrors];
3257
- export type CommentVotesDeleteResponses = {
3725
+ export type DoorkeeperTokensRevokeError = DoorkeeperTokensRevokeErrors[keyof DoorkeeperTokensRevokeErrors];
3726
+ export type DoorkeeperTokensRevokeResponses = {
3258
3727
  /**
3259
3728
  * Success
3260
3729
  */
3261
- 204: void;
3730
+ 200: {
3731
+ [key: string]: unknown;
3732
+ };
3262
3733
  };
3263
- export type CommentVotesDeleteResponse = CommentVotesDeleteResponses[keyof CommentVotesDeleteResponses];
3264
- export type DbExportsIndexData = {
3265
- body?: never;
3734
+ export type DoorkeeperTokensRevokeResponse = DoorkeeperTokensRevokeResponses[keyof DoorkeeperTokensRevokeResponses];
3735
+ export type DoorkeeperTokensIntrospectData = {
3736
+ body?: {
3737
+ /**
3738
+ * The access or refresh token to introspect.
3739
+ */
3740
+ token: string;
3741
+ token_type_hint?: 'access_token' | 'refresh_token';
3742
+ client_id?: string;
3743
+ client_secret?: string;
3744
+ };
3266
3745
  path?: never;
3267
3746
  query?: never;
3268
- url: '/db_exports.json';
3747
+ url: '/oauth/introspect';
3269
3748
  };
3270
- export type DbExportsIndexResponses = {
3749
+ export type DoorkeeperTokensIntrospectErrors = {
3271
3750
  /**
3272
- * Success
3751
+ * Client or bearer token authentication failed.
3273
3752
  */
3274
- 200: Array<DbExport>;
3753
+ 401: OAuthError;
3275
3754
  };
3276
- export type DbExportsIndexResponse = DbExportsIndexResponses[keyof DbExportsIndexResponses];
3277
- export type HealthIndexData = {
3755
+ export type DoorkeeperTokensIntrospectError = DoorkeeperTokensIntrospectErrors[keyof DoorkeeperTokensIntrospectErrors];
3756
+ export type DoorkeeperTokensIntrospectResponses = {
3757
+ /**
3758
+ * Success. Note that an unrecognized, expired, or revoked token is reported as `{"active": false}`, not an error.
3759
+ */
3760
+ 200: OAuthIntrospection;
3761
+ };
3762
+ export type DoorkeeperTokensIntrospectResponse = DoorkeeperTokensIntrospectResponses[keyof DoorkeeperTokensIntrospectResponses];
3763
+ export type DoorkeeperTokenInfoShowData = {
3278
3764
  body?: never;
3279
3765
  path?: never;
3280
3766
  query?: never;
3281
- url: '/health';
3767
+ url: '/oauth/token/info';
3282
3768
  };
3283
- export type HealthIndexResponses = {
3769
+ export type DoorkeeperTokenInfoShowErrors = {
3770
+ /**
3771
+ * The access token is missing, expired, or revoked.
3772
+ */
3773
+ 401: OAuthError;
3774
+ };
3775
+ export type DoorkeeperTokenInfoShowError = DoorkeeperTokenInfoShowErrors[keyof DoorkeeperTokenInfoShowErrors];
3776
+ export type DoorkeeperTokenInfoShowResponses = {
3284
3777
  /**
3285
3778
  * Success
3286
3779
  */
3287
- 200: string;
3780
+ 200: OAuthTokenInfo;
3288
3781
  };
3289
- export type HealthIndexResponse = HealthIndexResponses[keyof HealthIndexResponses];
3782
+ export type DoorkeeperTokenInfoShowResponse = DoorkeeperTokenInfoShowResponses[keyof DoorkeeperTokenInfoShowResponses];
3290
3783
  export type DmailsIndexData = {
3291
3784
  body?: never;
3292
3785
  path?: never;
@@ -3587,8 +4080,8 @@ export type EmailBlacklistsIndexResponses = {
3587
4080
  export type EmailBlacklistsIndexResponse = EmailBlacklistsIndexResponses[keyof EmailBlacklistsIndexResponses];
3588
4081
  export type EmailBlacklistsCreateData = {
3589
4082
  body?: {
3590
- domain: string;
3591
- reason: string;
4083
+ 'email_blacklist[domain]': string;
4084
+ 'email_blacklist[reason]': string;
3592
4085
  };
3593
4086
  path?: never;
3594
4087
  query?: never;
@@ -3796,8 +4289,8 @@ export type ForumPostsIndexResponses = {
3796
4289
  export type ForumPostsIndexResponse = ForumPostsIndexResponses[keyof ForumPostsIndexResponses];
3797
4290
  export type ForumPostsCreateData = {
3798
4291
  body?: {
3799
- body: string;
3800
- topic_id: number;
4292
+ 'forum_post[body]': string;
4293
+ 'forum_post[topic_id]': number;
3801
4294
  };
3802
4295
  path?: never;
3803
4296
  query?: never;
@@ -3883,7 +4376,7 @@ export type ForumPostsShowResponses = {
3883
4376
  export type ForumPostsShowResponse = ForumPostsShowResponses[keyof ForumPostsShowResponses];
3884
4377
  export type ForumPostsUpdateData = {
3885
4378
  body?: {
3886
- body?: string;
4379
+ 'forum_post[body]'?: string;
3887
4380
  };
3888
4381
  path: {
3889
4382
  /**
@@ -3977,7 +4470,7 @@ export type ForumPostsUnhideResponses = {
3977
4470
  };
3978
4471
  export type ForumPostsUnhideResponse = ForumPostsUnhideResponses[keyof ForumPostsUnhideResponses];
3979
4472
  export type ForumPostsWarningData = {
3980
- body?: Warning;
4473
+ body?: warning;
3981
4474
  path: {
3982
4475
  /**
3983
4476
  * The ID of the item.
@@ -4077,7 +4570,7 @@ export type ForumPostVotesShowResponses = {
4077
4570
  export type ForumPostVotesShowResponse = ForumPostVotesShowResponses[keyof ForumPostVotesShowResponses];
4078
4571
  export type ForumPostVotesCreateData = {
4079
4572
  body?: {
4080
- score: UpDownMehVote;
4573
+ 'forum_post_vote[score]': UpDownMehFlipVote;
4081
4574
  };
4082
4575
  path: {
4083
4576
  /**
@@ -4146,27 +4639,25 @@ export type ForumTopicsIndexResponses = {
4146
4639
  };
4147
4640
  export type ForumTopicsIndexResponse = ForumTopicsIndexResponses[keyof ForumTopicsIndexResponses];
4148
4641
  export type ForumTopicsCreateData = {
4149
- body?: {
4150
- title: string;
4151
- category_id: number;
4642
+ body?: unknown & {
4643
+ 'forum_topic[title]': string;
4644
+ 'forum_topic[category_id]': number;
4152
4645
  /**
4153
4646
  * You must be Moderator+.
4154
4647
  */
4155
- is_sticky?: boolean;
4648
+ 'forum_topic[is_sticky]'?: boolean;
4156
4649
  /**
4157
4650
  * You must be Moderator+.
4158
4651
  */
4159
- is_locked?: boolean;
4160
- original_post_attributes: {
4161
- /**
4162
- * Forum post ID. Mutually exclusive with body, one must be provided.
4163
- */
4164
- id?: number;
4165
- /**
4166
- * First forum post body. Mutually exclusive with id, one must be provided.
4167
- */
4168
- body?: string;
4169
- };
4652
+ 'forum_topic[is_locked]'?: boolean;
4653
+ /**
4654
+ * Forum post ID. Mutually exclusive with body, one must be provided.
4655
+ */
4656
+ 'forum_topic[original_post_attributes][id]'?: number;
4657
+ /**
4658
+ * First forum post body. Mutually exclusive with id, one must be provided.
4659
+ */
4660
+ 'forum_topic[original_post_attributes][body]'?: string;
4170
4661
  };
4171
4662
  path?: never;
4172
4663
  query?: never;
@@ -4252,26 +4743,24 @@ export type ForumTopicsShowResponses = {
4252
4743
  export type ForumTopicsShowResponse = ForumTopicsShowResponses[keyof ForumTopicsShowResponses];
4253
4744
  export type ForumTopicsUpdateData = {
4254
4745
  body?: {
4255
- title?: string;
4256
- category_id?: number;
4746
+ 'forum_topic[title]'?: string;
4747
+ 'forum_topic[category_id]'?: number;
4257
4748
  /**
4258
4749
  * You must be Moderator+.
4259
4750
  */
4260
- is_sticky?: boolean;
4751
+ 'forum_topic[is_sticky]'?: boolean;
4261
4752
  /**
4262
4753
  * You must be Moderator+.
4263
4754
  */
4264
- is_locked?: boolean;
4265
- original_post_attributes?: {
4266
- /**
4267
- * Forum post ID. Silently ignored
4268
- */
4269
- id?: number;
4270
- /**
4271
- * First forum post body.
4272
- */
4273
- body?: string;
4274
- };
4755
+ 'forum_topic[is_locked]'?: boolean;
4756
+ /**
4757
+ * Forum post ID. Silently ignored
4758
+ */
4759
+ 'forum_topic[original_post_attributes][id]'?: number;
4760
+ /**
4761
+ * First forum post body.
4762
+ */
4763
+ 'forum_topic[original_post_attributes][body]'?: string;
4275
4764
  };
4276
4765
  path: {
4277
4766
  /**
@@ -4466,13 +4955,13 @@ export type HelpIndexResponses = {
4466
4955
  export type HelpIndexResponse = HelpIndexResponses[keyof HelpIndexResponses];
4467
4956
  export type HelpCreateData = {
4468
4957
  body?: {
4469
- name: string;
4470
- wiki_page: string;
4958
+ 'help_page[name]': string;
4959
+ 'help_page[wiki_page]': string;
4471
4960
  /**
4472
4961
  * Separate with a comma followed by a space.
4473
4962
  */
4474
- related?: string;
4475
- title?: string;
4963
+ 'help_page[related]'?: string;
4964
+ 'help_page[title]'?: string;
4476
4965
  };
4477
4966
  path?: never;
4478
4967
  query?: never;
@@ -4571,13 +5060,13 @@ export type HelpShowResponses = {
4571
5060
  export type HelpShowResponse = HelpShowResponses[keyof HelpShowResponses];
4572
5061
  export type HelpUpdateData = {
4573
5062
  body?: {
4574
- name?: string;
4575
- wiki_page?: string;
5063
+ 'help_page[name]'?: string;
5064
+ 'help_page[wiki_page]'?: string;
4576
5065
  /**
4577
5066
  * Separate with a comma followed by a space.
4578
5067
  */
4579
- related?: string;
4580
- title?: string;
5068
+ 'help_page[related]'?: string;
5069
+ 'help_page[title]'?: string;
4581
5070
  };
4582
5071
  path: {
4583
5072
  /**
@@ -4646,13 +5135,13 @@ export type IpBansIndexResponses = {
4646
5135
  /**
4647
5136
  * Success
4648
5137
  */
4649
- 200: Array<IpBan>;
5138
+ 200: Array<IPBan>;
4650
5139
  };
4651
5140
  export type IpBansIndexResponse = IpBansIndexResponses[keyof IpBansIndexResponses];
4652
5141
  export type IpBansCreateData = {
4653
5142
  body?: {
4654
- ip_addr: string;
4655
- reason: string;
5143
+ 'ip_ban[ip_addr]': string;
5144
+ 'ip_ban[reason]': string;
4656
5145
  };
4657
5146
  path?: never;
4658
5147
  query?: never;
@@ -4675,7 +5164,7 @@ export type IpBansCreateResponses = {
4675
5164
  /**
4676
5165
  * Success
4677
5166
  */
4678
- 201: IpBan;
5167
+ 201: IPBan;
4679
5168
  };
4680
5169
  export type IpBansCreateResponse = IpBansCreateResponses[keyof IpBansCreateResponses];
4681
5170
  export type IpBansDestroyData = {
@@ -4733,12 +5222,7 @@ export type IqdbQueriesShowResponses = {
4733
5222
  /**
4734
5223
  * Success
4735
5224
  */
4736
- 200: Array<IqdbResponse> | Array<{
4737
- hash: string;
4738
- post_id: number;
4739
- score: number;
4740
- post: BasicPost;
4741
- }>;
5225
+ 200: Array<IQDBResponse> | Array<IQDBResponseV2>;
4742
5226
  };
4743
5227
  export type IqdbQueriesShowResponse = IqdbQueriesShowResponses[keyof IqdbQueriesShowResponses];
4744
5228
  export type IqdbQueriesShowPostData = {
@@ -4768,12 +5252,7 @@ export type IqdbQueriesShowPostResponses = {
4768
5252
  /**
4769
5253
  * Success
4770
5254
  */
4771
- 200: Array<IqdbResponse> | Array<{
4772
- hash: string;
4773
- post_id: number;
4774
- score: number;
4775
- post: BasicPost;
4776
- }>;
5255
+ 200: Array<IQDBResponse> | Array<IQDBResponseV2>;
4777
5256
  };
4778
5257
  export type IqdbQueriesShowPostResponse = IqdbQueriesShowPostResponses[keyof IqdbQueriesShowPostResponses];
4779
5258
  export type MascotsIndexData = {
@@ -4807,6 +5286,8 @@ export type MascotsCreateData = {
4807
5286
  'mascot[mascot_file]': Blob | File;
4808
5287
  'mascot[display_name]': string;
4809
5288
  'mascot[background_color]': string;
5289
+ 'mascot[foreground_color]'?: string;
5290
+ 'mascot[is_layered]'?: boolean;
4810
5291
  'mascot[artist_url]': string;
4811
5292
  'mascot[artist_name]': string;
4812
5293
  /**
@@ -4814,7 +5295,6 @@ export type MascotsCreateData = {
4814
5295
  */
4815
5296
  'mascot[available_on_string]'?: string;
4816
5297
  'mascot[active]'?: boolean;
4817
- 'mascot[hide_anonymous]'?: boolean;
4818
5298
  };
4819
5299
  path?: never;
4820
5300
  query?: never;
@@ -4874,6 +5354,8 @@ export type MascotsUpdateData = {
4874
5354
  'mascot[mascot_file]'?: Blob | File;
4875
5355
  'mascot[display_name]'?: string;
4876
5356
  'mascot[background_color]'?: string;
5357
+ 'mascot[foreground_color]'?: string;
5358
+ 'mascot[is_layered]'?: boolean;
4877
5359
  'mascot[artist_url]'?: string;
4878
5360
  'mascot[artist_name]'?: string;
4879
5361
  /**
@@ -4881,7 +5363,6 @@ export type MascotsUpdateData = {
4881
5363
  */
4882
5364
  'mascot[available_on_string]'?: string;
4883
5365
  'mascot[active]'?: boolean;
4884
- 'mascot[hide_anonymous]'?: boolean;
4885
5366
  };
4886
5367
  path: {
4887
5368
  /**
@@ -4935,7 +5416,7 @@ export type ModActionsIndexData = {
4935
5416
  'search[order]'?: 'id_asc' | 'id_desc';
4936
5417
  'search[creator_id]'?: number;
4937
5418
  'search[creator_name]'?: string;
4938
- 'search[action]'?: ModActionActions;
5419
+ 'search[action]'?: ModActionAction;
4939
5420
  };
4940
5421
  url: '/mod_actions.json';
4941
5422
  };
@@ -4999,7 +5480,7 @@ export type NewsUpdatesIndexResponses = {
4999
5480
  export type NewsUpdatesIndexResponse = NewsUpdatesIndexResponses[keyof NewsUpdatesIndexResponses];
5000
5481
  export type NewsUpdatesCreateData = {
5001
5482
  body?: {
5002
- message: string;
5483
+ 'news_update[message]': string;
5003
5484
  };
5004
5485
  path?: never;
5005
5486
  query?: never;
@@ -5056,7 +5537,7 @@ export type NewsUpdatesDestroyResponses = {
5056
5537
  export type NewsUpdatesDestroyResponse = NewsUpdatesDestroyResponses[keyof NewsUpdatesDestroyResponses];
5057
5538
  export type NewsUpdatesUpdateData = {
5058
5539
  body?: {
5059
- message: string;
5540
+ 'news_update[message]': string;
5060
5541
  };
5061
5542
  path: {
5062
5543
  /**
@@ -5114,6 +5595,9 @@ export type NotesIndexData = {
5114
5595
  'search[body_matches]'?: string;
5115
5596
  'search[is_active]'?: boolean;
5116
5597
  'search[post_id]'?: number;
5598
+ /**
5599
+ * Only usable by Member+
5600
+ */
5117
5601
  'search[post_tags_match]'?: string;
5118
5602
  'search[post_note_updater_id]'?: number;
5119
5603
  'search[post_note_updater_name]'?: string;
@@ -5131,16 +5615,16 @@ export type NotesIndexResponses = {
5131
5615
  export type NotesIndexResponse = NotesIndexResponses[keyof NotesIndexResponses];
5132
5616
  export type NotesCreateData = {
5133
5617
  body?: {
5134
- post_id: number;
5135
- x: number;
5136
- y: number;
5137
- width: number;
5138
- height: number;
5139
- body: string;
5618
+ 'note[post_id]': number;
5619
+ 'note[x]': number;
5620
+ 'note[y]': number;
5621
+ 'note[width]': number;
5622
+ 'note[height]': number;
5623
+ 'note[body]': string;
5140
5624
  /**
5141
5625
  * Passthrough, used in frontend.
5142
5626
  */
5143
- html_id?: string;
5627
+ 'note[html_id]'?: string;
5144
5628
  };
5145
5629
  path?: never;
5146
5630
  query?: never;
@@ -5227,11 +5711,11 @@ export type NotesShowResponses = {
5227
5711
  export type NotesShowResponse = NotesShowResponses[keyof NotesShowResponses];
5228
5712
  export type NotesUpdateData = {
5229
5713
  body?: {
5230
- x?: number;
5231
- y?: number;
5232
- width?: number;
5233
- height?: number;
5234
- body?: string;
5714
+ 'note[x]'?: number;
5715
+ 'note[y]'?: number;
5716
+ 'note[width]'?: number;
5717
+ 'note[height]'?: number;
5718
+ 'note[body]'?: string;
5235
5719
  };
5236
5720
  path: {
5237
5721
  /**
@@ -5367,7 +5851,7 @@ export type PoolsIndexData = {
5367
5851
  'search[description_matches]'?: string;
5368
5852
  'search[creator_id]'?: number;
5369
5853
  'search[creator_name]'?: string;
5370
- 'search[category]'?: PoolCategories;
5854
+ 'search[category]'?: PoolCategory;
5371
5855
  'search[is_active]'?: boolean;
5372
5856
  };
5373
5857
  url: '/pools.json';
@@ -5381,18 +5865,18 @@ export type PoolsIndexResponses = {
5381
5865
  export type PoolsIndexResponse = PoolsIndexResponses[keyof PoolsIndexResponses];
5382
5866
  export type PoolsCreateData = {
5383
5867
  body?: {
5384
- name: string;
5385
- description?: string;
5386
- category?: PoolCategories;
5387
- is_active?: boolean;
5868
+ 'pool[name]': string;
5869
+ 'pool[description]'?: string;
5870
+ 'pool[category]'?: PoolCategory;
5871
+ 'pool[is_active]'?: boolean;
5388
5872
  /**
5389
5873
  * Space separated list of post IDs. Mutually exclusive with post_ids.
5390
5874
  */
5391
- post_ids_string?: string;
5875
+ 'pool[post_ids_string]'?: string;
5392
5876
  /**
5393
5877
  * Array of post IDs. Mutually exclusive with post_ids_string.
5394
5878
  */
5395
- post_ids?: Array<number>;
5879
+ 'pool[post_ids][]'?: Array<number>;
5396
5880
  };
5397
5881
  path?: never;
5398
5882
  query?: never;
@@ -5474,18 +5958,18 @@ export type PoolsShowResponses = {
5474
5958
  export type PoolsShowResponse = PoolsShowResponses[keyof PoolsShowResponses];
5475
5959
  export type PoolsUpdateData = {
5476
5960
  body?: {
5477
- name?: string;
5478
- description?: string;
5479
- is_active?: boolean;
5480
- category?: PoolCategories;
5961
+ 'pool[name]'?: string;
5962
+ 'pool[description]'?: string;
5963
+ 'pool[is_active]'?: boolean;
5964
+ 'pool[category]'?: PoolCategory;
5481
5965
  /**
5482
5966
  * Space separated list of post IDs. Mutually exclusive with post_ids.
5483
5967
  */
5484
- post_ids_string?: string;
5968
+ 'pool[post_ids_string]'?: string;
5485
5969
  /**
5486
5970
  * Array of post IDs. Mutually exclusive with post_ids_string.
5487
5971
  */
5488
- post_ids?: Array<number>;
5972
+ 'pool[post_ids][]'?: Array<number>;
5489
5973
  };
5490
5974
  path: {
5491
5975
  /**
@@ -5799,6 +6283,31 @@ export type PostsRandomResponses = {
5799
6283
  } | (BasicPost & unknown) | (ExtendedPost & unknown) | (ThumbnailPost & unknown);
5800
6284
  };
5801
6285
  export type PostsRandomResponse = PostsRandomResponses[keyof PostsRandomResponses];
6286
+ export type PostsCountData = {
6287
+ body?: never;
6288
+ path?: never;
6289
+ query: {
6290
+ tags: string;
6291
+ };
6292
+ url: '/posts/count.json';
6293
+ };
6294
+ export type PostsCountErrors = {
6295
+ /**
6296
+ * Error
6297
+ */
6298
+ 400: MessageErrorResponse;
6299
+ };
6300
+ export type PostsCountError = PostsCountErrors[keyof PostsCountErrors];
6301
+ export type PostsCountResponses = {
6302
+ /**
6303
+ * Success
6304
+ */
6305
+ 200: {
6306
+ count: number;
6307
+ capped: boolean;
6308
+ };
6309
+ };
6310
+ export type PostsCountResponse = PostsCountResponses[keyof PostsCountResponses];
5802
6311
  export type PostsShowData = {
5803
6312
  body?: never;
5804
6313
  path: {
@@ -5842,70 +6351,74 @@ export type PostsUpdateData = {
5842
6351
  /**
5843
6352
  * Replaces all tags on the post.
5844
6353
  */
5845
- tag_string?: string;
6354
+ 'post[tag_string]'?: string;
5846
6355
  /**
5847
6356
  * The tag string before your edits, used to reconcile conflicts.
5848
6357
  */
5849
- old_tag_string?: string;
6358
+ 'post[old_tag_string]'?: string;
5850
6359
  /**
5851
6360
  * Tags with a minus are removed, else they are added. Mutually exclusive with tag_string.
5852
6361
  */
5853
- tag_string_diff?: string;
6362
+ 'post[tag_string_diff]'?: string;
5854
6363
  /**
5855
6364
  * Sources with a minus are removed, else they are added. It is not possible to add inactive sources through this. Mutually exclusive with source.
5856
6365
  */
5857
- source_diff?: string;
6366
+ 'post[source_diff]'?: string;
5858
6367
  /**
5859
6368
  * Replaces all sources on the post.
5860
6369
  */
5861
- source?: string;
6370
+ 'post[source]'?: string;
5862
6371
  /**
5863
6372
  * The sources before your edits, used to reconcile conflicts.
5864
6373
  */
5865
- old_source?: string;
5866
- parent_id?: number;
5867
- old_parent_id?: number;
5868
- description?: string;
5869
- old_description?: string;
5870
- rating?: Ratings;
5871
- old_rating?: Ratings;
5872
- edit_reason?: string;
6374
+ 'post[old_source]'?: string;
6375
+ 'post[parent_id]'?: number;
6376
+ 'post[old_parent_id]'?: number;
6377
+ 'post[description]'?: string;
6378
+ 'post[old_description]'?: string;
6379
+ 'post[rating]'?: Rating;
6380
+ 'post[old_rating]'?: Rating;
6381
+ 'post[edit_reason]'?: string;
5873
6382
  /**
5874
6383
  * You must be Privileged+.
5875
6384
  */
5876
- is_rating_locked?: boolean;
6385
+ 'post[is_rating_locked]'?: boolean;
5877
6386
  /**
5878
6387
  * You must be Staff+.
5879
6388
  */
5880
- is_note_locked?: boolean;
6389
+ 'post[is_note_locked]'?: boolean;
5881
6390
  /**
5882
6391
  * You must be Staff+.
5883
6392
  */
5884
- bg_color?: string;
6393
+ 'post[bg_color]'?: string;
5885
6394
  /**
5886
6395
  * You must be Moderator+.
5887
6396
  */
5888
- is_comment_locked?: boolean;
6397
+ 'post[is_comment_locked]'?: boolean;
6398
+ /**
6399
+ * You must be Admin+.
6400
+ */
6401
+ 'post[is_comment_disabled]'?: boolean;
5889
6402
  /**
5890
6403
  * You must be Admin+.
5891
6404
  */
5892
- is_comment_disabled?: boolean;
6405
+ 'post[is_status_locked]'?: boolean;
5893
6406
  /**
5894
6407
  * You must be Admin+.
5895
6408
  */
5896
- is_status_locked?: boolean;
6409
+ 'post[locked_tags]'?: string;
5897
6410
  /**
5898
6411
  * You must be Admin+.
5899
6412
  */
5900
- locked_tags?: string;
6413
+ 'post[hide_from_anonymous]'?: boolean;
5901
6414
  /**
5902
6415
  * You must be Admin+.
5903
6416
  */
5904
- hide_from_anonymous?: boolean;
6417
+ 'post[hide_from_search_engines]'?: boolean;
5905
6418
  /**
5906
6419
  * You must be Admin+.
5907
6420
  */
5908
- hide_from_search_engines?: boolean;
6421
+ 'post[hide_favorites_list]'?: boolean;
5909
6422
  };
5910
6423
  path: {
5911
6424
  /**
@@ -6003,8 +6516,8 @@ export type PostsUpdateIqdbResponses = {
6003
6516
  export type PostsUpdateIqdbResponse = PostsUpdateIqdbResponses[keyof PostsUpdateIqdbResponses];
6004
6517
  export type PostsMarkAsTranslatedData = {
6005
6518
  body?: {
6006
- translation_check?: boolean;
6007
- partially_translated?: boolean;
6519
+ 'post[translation_check]'?: boolean;
6520
+ 'post[partially_translated]'?: boolean;
6008
6521
  };
6009
6522
  path: {
6010
6523
  /**
@@ -6329,6 +6842,31 @@ export type PostVotesCreateResponses = {
6329
6842
  };
6330
6843
  };
6331
6844
  export type PostVotesCreateResponse = PostVotesCreateResponses[keyof PostVotesCreateResponses];
6845
+ export type CommentsForPostData = {
6846
+ body?: never;
6847
+ path: {
6848
+ /**
6849
+ * The ID of the item.
6850
+ */
6851
+ id: number;
6852
+ };
6853
+ query?: never;
6854
+ url: '/posts/{id}/comments.json';
6855
+ };
6856
+ export type CommentsForPostErrors = {
6857
+ /**
6858
+ * Not Found
6859
+ */
6860
+ 404: NotFoundResponse;
6861
+ };
6862
+ export type CommentsForPostError = CommentsForPostErrors[keyof CommentsForPostErrors];
6863
+ export type CommentsForPostResponses = {
6864
+ /**
6865
+ * Success
6866
+ */
6867
+ 200: DTextResponse;
6868
+ };
6869
+ export type CommentsForPostResponse = CommentsForPostResponses[keyof CommentsForPostResponses];
6332
6870
  export type PostRecommendationsArtistData = {
6333
6871
  body?: never;
6334
6872
  path: {
@@ -6436,11 +6974,11 @@ export type PostSetsIndexResponses = {
6436
6974
  export type PostSetsIndexResponse = PostSetsIndexResponses[keyof PostSetsIndexResponses];
6437
6975
  export type PostSetsCreateData = {
6438
6976
  body?: {
6439
- name: string;
6440
- shortname: string;
6441
- description?: string;
6442
- is_public?: boolean;
6443
- ransfer_on_delete?: boolean;
6977
+ 'post_set[name]': string;
6978
+ 'post_set[shortname]': string;
6979
+ 'post_set[description]'?: string;
6980
+ 'post_set[is_public]'?: boolean;
6981
+ 'post_set[transfer_on_delete]'?: boolean;
6444
6982
  };
6445
6983
  path?: never;
6446
6984
  query?: never;
@@ -6526,11 +7064,11 @@ export type PostSetsShowResponses = {
6526
7064
  export type PostSetsShowResponse = PostSetsShowResponses[keyof PostSetsShowResponses];
6527
7065
  export type PostSetsUpdateData = {
6528
7066
  body?: {
6529
- name?: string;
6530
- shortname?: string;
6531
- description?: string;
6532
- is_public?: boolean;
6533
- transfer_on_delete?: boolean;
7067
+ 'post_set[name]'?: string;
7068
+ 'post_set[shortname]'?: string;
7069
+ 'post_set[description]'?: string;
7070
+ 'post_set[is_public]'?: boolean;
7071
+ 'post_set[transfer_on_delete]'?: boolean;
6534
7072
  };
6535
7073
  path: {
6536
7074
  /**
@@ -6565,9 +7103,38 @@ export type PostSetsUpdateResponses = {
6565
7103
  204: void;
6566
7104
  };
6567
7105
  export type PostSetsUpdateResponse = PostSetsUpdateResponses[keyof PostSetsUpdateResponses];
7106
+ export type PostSetsPostListData = {
7107
+ body?: never;
7108
+ path: {
7109
+ /**
7110
+ * The ID of the item.
7111
+ */
7112
+ id: number;
7113
+ };
7114
+ query?: never;
7115
+ url: '/post_sets/{id}/post_list.json';
7116
+ };
7117
+ export type PostSetsPostListErrors = {
7118
+ /**
7119
+ * Access Denied
7120
+ */
7121
+ 403: AccessDeniedResponse;
7122
+ /**
7123
+ * Not Found
7124
+ */
7125
+ 404: NotFoundResponse;
7126
+ };
7127
+ export type PostSetsPostListError = PostSetsPostListErrors[keyof PostSetsPostListErrors];
7128
+ export type PostSetsPostListResponses = {
7129
+ /**
7130
+ * Success
7131
+ */
7132
+ 200: PostSet;
7133
+ };
7134
+ export type PostSetsPostListResponse = PostSetsPostListResponses[keyof PostSetsPostListResponses];
6568
7135
  export type PostSetsUpdatePostsData = {
6569
7136
  body?: {
6570
- post_ids_string: string;
7137
+ 'post_set[post_ids_string]': string;
6571
7138
  };
6572
7139
  path: {
6573
7140
  /**
@@ -6607,7 +7174,7 @@ export type PostSetsAddPostsData = {
6607
7174
  /**
6608
7175
  * post_ids[]=1&post_ids[]=2
6609
7176
  */
6610
- post_ids: Array<number>;
7177
+ 'post_ids[]': Array<number>;
6611
7178
  };
6612
7179
  path: {
6613
7180
  /**
@@ -6647,7 +7214,7 @@ export type PostSetsRemovePostsData = {
6647
7214
  /**
6648
7215
  * post_ids[]=1&post_ids[]=2
6649
7216
  */
6650
- post_ids: Array<number>;
7217
+ 'post_ids[]': Array<number>;
6651
7218
  };
6652
7219
  path: {
6653
7220
  /**
@@ -6731,6 +7298,9 @@ export type PostApprovalsIndexData = {
6731
7298
  * The order of the results.
6732
7299
  */
6733
7300
  'search[order]'?: 'id_asc' | 'id_desc';
7301
+ /**
7302
+ * Only usable by Member+
7303
+ */
6734
7304
  'search[post_tags_match]'?: string;
6735
7305
  'search[user_id]'?: number;
6736
7306
  'search[user_name]'?: string;
@@ -6772,7 +7342,7 @@ export type PostEventsIndexData = {
6772
7342
  'search[post_id]'?: number;
6773
7343
  'search[creator_id]'?: number;
6774
7344
  'search[creator_name]'?: string;
6775
- 'search[action]'?: PostEventActions;
7345
+ 'search[action]'?: PostEventAction;
6776
7346
  };
6777
7347
  url: '/post_events.json';
6778
7348
  };
@@ -6813,6 +7383,9 @@ export type PostFlagsIndexData = {
6813
7383
  'search[creator_id]'?: number;
6814
7384
  'search[creator_name]'?: string;
6815
7385
  'search[post_id]'?: number;
7386
+ /**
7387
+ * Only usable by Member+
7388
+ */
6816
7389
  'search[post_tags_match]'?: string;
6817
7390
  'search[type]'?: string;
6818
7391
  'search[is_resolved]'?: boolean;
@@ -6828,10 +7401,10 @@ export type PostFlagsIndexResponses = {
6828
7401
  export type PostFlagsIndexResponse = PostFlagsIndexResponses[keyof PostFlagsIndexResponses];
6829
7402
  export type PostFlagsCreateData = {
6830
7403
  body?: {
6831
- post_id: number;
6832
- reason_name: 'uploading_guidelines' | 'young_human' | 'dnp_artist' | 'pay_content' | 'trace' | 'previously_deleted' | 'real_porn' | 'corrupt' | 'inferior';
6833
- parent_id?: number;
6834
- note?: string;
7404
+ 'post_flag[post_id]': number;
7405
+ 'post_flag[reason_name]': 'uploading_guidelines' | 'young_human' | 'dnp_artist' | 'pay_content' | 'trace' | 'previously_deleted' | 'real_porn' | 'corrupt' | 'inferior';
7406
+ 'post_flag[parent_id]'?: number;
7407
+ 'post_flag[note]'?: string;
6835
7408
  };
6836
7409
  path?: never;
6837
7410
  query?: never;
@@ -7174,6 +7747,41 @@ export type PostReplacementsTogglePenalizeResponses = {
7174
7747
  204: void;
7175
7748
  };
7176
7749
  export type PostReplacementsTogglePenalizeResponse = PostReplacementsTogglePenalizeResponses[keyof PostReplacementsTogglePenalizeResponses];
7750
+ export type PostReplacementsTransferData = {
7751
+ body?: {
7752
+ new_post_id: number;
7753
+ };
7754
+ path: {
7755
+ /**
7756
+ * The ID of the item.
7757
+ */
7758
+ id: number;
7759
+ };
7760
+ query?: never;
7761
+ url: '/post_replacements/{id}/transfer.json';
7762
+ };
7763
+ export type PostReplacementsTransferErrors = {
7764
+ /**
7765
+ * Access Denied
7766
+ */
7767
+ 403: AccessDeniedResponse;
7768
+ /**
7769
+ * Not Found
7770
+ */
7771
+ 404: NotFoundResponse;
7772
+ /**
7773
+ * Error
7774
+ */
7775
+ 412: MessageErrorResponse;
7776
+ };
7777
+ export type PostReplacementsTransferError = PostReplacementsTransferErrors[keyof PostReplacementsTransferErrors];
7778
+ export type PostReplacementsTransferResponses = {
7779
+ /**
7780
+ * Success
7781
+ */
7782
+ 204: void;
7783
+ };
7784
+ export type PostReplacementsTransferResponse = PostReplacementsTransferResponses[keyof PostReplacementsTransferResponses];
7177
7785
  export type PostVersionsIndexData = {
7178
7786
  body?: never;
7179
7787
  path?: never;
@@ -7194,7 +7802,7 @@ export type PostVersionsIndexData = {
7194
7802
  'search[updater_id]'?: number;
7195
7803
  'search[post_id]'?: number;
7196
7804
  'search[start_id]'?: number;
7197
- 'search[rating]'?: Ratings;
7805
+ 'search[rating]'?: Rating;
7198
7806
  'search[rating_changed]'?: 'e' | 'q' | 's' | 'any';
7199
7807
  'search[parent_id]'?: number;
7200
7808
  'search[parent_id_changed]'?: boolean;
@@ -7425,7 +8033,7 @@ export type TagsIndexData = {
7425
8033
  'search[fuzzy_name_matches]'?: string;
7426
8034
  'search[name_matches]'?: string;
7427
8035
  'search[name]'?: string;
7428
- 'search[category]'?: TagCategories;
8036
+ 'search[category]'?: TagCategory;
7429
8037
  'search[hide_empty]'?: boolean;
7430
8038
  'search[has_wiki]'?: boolean;
7431
8039
  'search[has_artist]'?: boolean;
@@ -7495,11 +8103,11 @@ export type TagsShowResponses = {
7495
8103
  export type TagsShowResponse = TagsShowResponses[keyof TagsShowResponses];
7496
8104
  export type TagsUpdateData = {
7497
8105
  body?: {
7498
- category?: TagCategories;
8106
+ 'tag[category]'?: TagCategory;
7499
8107
  /**
7500
8108
  * Must be Admin+.
7501
8109
  */
7502
- is_locked?: boolean;
8110
+ 'tag[is_locked]'?: boolean;
7503
8111
  };
7504
8112
  path: {
7505
8113
  /**
@@ -7660,9 +8268,9 @@ export type TagAliasesIndexData = {
7660
8268
  'search[name_matches]'?: string;
7661
8269
  'search[antecedent_name]'?: string;
7662
8270
  'search[consequent_name]'?: string;
7663
- 'search[status]'?: TagRequestStatuses;
7664
- 'search[antecedent_tag_category]'?: TagCategories;
7665
- 'search[consequent_tag_category]'?: TagCategories;
8271
+ 'search[status]'?: TagRequestStatus;
8272
+ 'search[antecedent_tag_category]'?: TagCategory;
8273
+ 'search[consequent_tag_category]'?: TagCategory;
7666
8274
  'search[creator_id]'?: number;
7667
8275
  'search[creator_name]'?: string;
7668
8276
  'search[approver_id]'?: number;
@@ -7733,9 +8341,9 @@ export type TagAliasesShowResponses = {
7733
8341
  export type TagAliasesShowResponse = TagAliasesShowResponses[keyof TagAliasesShowResponses];
7734
8342
  export type TagAliasesUpdateData = {
7735
8343
  body?: {
7736
- antecedent_name?: string;
7737
- consequent_name?: string;
7738
- forum_topic_id?: string;
8344
+ 'tag_alias[antecedent_name]'?: string;
8345
+ 'tag_alias[consequent_name]'?: string;
8346
+ 'tag_alias[forum_topic_id]'?: string;
7739
8347
  };
7740
8348
  path: {
7741
8349
  /**
@@ -7805,15 +8413,50 @@ export type TagAliasesApproveResponses = {
7805
8413
  204: void;
7806
8414
  };
7807
8415
  export type TagAliasesApproveResponse = TagAliasesApproveResponses[keyof TagAliasesApproveResponses];
8416
+ export type TagAliasesUndoData = {
8417
+ body?: never;
8418
+ path: {
8419
+ /**
8420
+ * The ID of the item.
8421
+ */
8422
+ id: number;
8423
+ };
8424
+ query?: never;
8425
+ url: '/tag_aliases/{id}/undo.json';
8426
+ };
8427
+ export type TagAliasesUndoErrors = {
8428
+ /**
8429
+ * Access Denied
8430
+ */
8431
+ 403: AccessDeniedResponse;
8432
+ /**
8433
+ * Not Found
8434
+ */
8435
+ 404: NotFoundResponse;
8436
+ /**
8437
+ * Invalid Input Data
8438
+ */
8439
+ 422: {
8440
+ errors: Array<string>;
8441
+ };
8442
+ };
8443
+ export type TagAliasesUndoError = TagAliasesUndoErrors[keyof TagAliasesUndoErrors];
8444
+ export type TagAliasesUndoResponses = {
8445
+ /**
8446
+ * Success
8447
+ */
8448
+ 204: void;
8449
+ };
8450
+ export type TagAliasesUndoResponse = TagAliasesUndoResponses[keyof TagAliasesUndoResponses];
7808
8451
  export type TagAliasRequestsCreateData = {
7809
8452
  body?: {
7810
- antecedent_name: string;
7811
- consequent_name: string;
7812
- reason: string;
8453
+ 'tag_alias_request[antecedent_name]': string;
8454
+ 'tag_alias_request[consequent_name]': string;
8455
+ 'tag_alias_request[reason]': string;
7813
8456
  /**
7814
8457
  * Must be Admin+.
7815
8458
  */
7816
- skip_forum?: boolean;
8459
+ 'tag_alias_request[skip_forum]'?: boolean;
7817
8460
  };
7818
8461
  path?: never;
7819
8462
  query?: never;
@@ -7850,9 +8493,9 @@ export type TagImplicationsIndexData = {
7850
8493
  'search[name_matches]'?: string;
7851
8494
  'search[antecedent_name]'?: string;
7852
8495
  'search[consequent_name]'?: string;
7853
- 'search[status]'?: TagRequestStatuses;
7854
- 'search[antecedent_tag_category]'?: TagCategories;
7855
- 'search[consequent_tag_category]'?: TagCategories;
8496
+ 'search[status]'?: TagRequestStatus;
8497
+ 'search[antecedent_tag_category]'?: TagCategory;
8498
+ 'search[consequent_tag_category]'?: TagCategory;
7856
8499
  'search[creator_id]'?: number;
7857
8500
  'search[creator_name]'?: string;
7858
8501
  'search[approver_id]'?: number;
@@ -7923,9 +8566,9 @@ export type TagImplicationsShowResponses = {
7923
8566
  export type TagImplicationsShowResponse = TagImplicationsShowResponses[keyof TagImplicationsShowResponses];
7924
8567
  export type TagImplicationsUpdateData = {
7925
8568
  body?: {
7926
- antecedent_name?: string;
7927
- consequent_name?: string;
7928
- forum_topic_id?: string;
8569
+ 'tag_implication[antecedent_name]'?: string;
8570
+ 'tag_implication[consequent_name]'?: string;
8571
+ 'tag_implication[forum_topic_id]'?: string;
7929
8572
  };
7930
8573
  path: {
7931
8574
  /**
@@ -7969,9 +8612,44 @@ export type TagImplicationsApproveData = {
7969
8612
  id: number;
7970
8613
  };
7971
8614
  query?: never;
7972
- url: '/tag_implications/{id}/approve.json';
8615
+ url: '/tag_implications/{id}/approve.json';
8616
+ };
8617
+ export type TagImplicationsApproveErrors = {
8618
+ /**
8619
+ * Access Denied
8620
+ */
8621
+ 403: AccessDeniedResponse;
8622
+ /**
8623
+ * Not Found
8624
+ */
8625
+ 404: NotFoundResponse;
8626
+ /**
8627
+ * Invalid Input Data
8628
+ */
8629
+ 422: {
8630
+ errors: Array<string>;
8631
+ };
8632
+ };
8633
+ export type TagImplicationsApproveError = TagImplicationsApproveErrors[keyof TagImplicationsApproveErrors];
8634
+ export type TagImplicationsApproveResponses = {
8635
+ /**
8636
+ * Success
8637
+ */
8638
+ 204: void;
8639
+ };
8640
+ export type TagImplicationsApproveResponse = TagImplicationsApproveResponses[keyof TagImplicationsApproveResponses];
8641
+ export type TagImplicationsUndoData = {
8642
+ body?: never;
8643
+ path: {
8644
+ /**
8645
+ * The ID of the item.
8646
+ */
8647
+ id: number;
8648
+ };
8649
+ query?: never;
8650
+ url: '/tag_implications/{id}/undo.json';
7973
8651
  };
7974
- export type TagImplicationsApproveErrors = {
8652
+ export type TagImplicationsUndoErrors = {
7975
8653
  /**
7976
8654
  * Access Denied
7977
8655
  */
@@ -7987,23 +8665,23 @@ export type TagImplicationsApproveErrors = {
7987
8665
  errors: Array<string>;
7988
8666
  };
7989
8667
  };
7990
- export type TagImplicationsApproveError = TagImplicationsApproveErrors[keyof TagImplicationsApproveErrors];
7991
- export type TagImplicationsApproveResponses = {
8668
+ export type TagImplicationsUndoError = TagImplicationsUndoErrors[keyof TagImplicationsUndoErrors];
8669
+ export type TagImplicationsUndoResponses = {
7992
8670
  /**
7993
8671
  * Success
7994
8672
  */
7995
8673
  204: void;
7996
8674
  };
7997
- export type TagImplicationsApproveResponse = TagImplicationsApproveResponses[keyof TagImplicationsApproveResponses];
8675
+ export type TagImplicationsUndoResponse = TagImplicationsUndoResponses[keyof TagImplicationsUndoResponses];
7998
8676
  export type TagImplicationRequestsCreateData = {
7999
8677
  body?: {
8000
- antecedent_name: string;
8001
- consequent_name: string;
8002
- reason: string;
8678
+ 'tag_implication_request[antecedent_name]': string;
8679
+ 'tag_implication_request[consequent_name]': string;
8680
+ 'tag_implication_request[reason]': string;
8003
8681
  /**
8004
8682
  * Must be Admin+.
8005
8683
  */
8006
- skip_forum?: boolean;
8684
+ 'tag_implication_request[skip_forum]'?: boolean;
8007
8685
  };
8008
8686
  path?: never;
8009
8687
  query?: never;
@@ -8023,7 +8701,7 @@ export type TagImplicationRequestsCreateError = TagImplicationRequestsCreateErro
8023
8701
  export type RelatedTagsBulkData = {
8024
8702
  body?: {
8025
8703
  query?: string;
8026
- category_id?: TagCategories;
8704
+ category_id?: TagCategory;
8027
8705
  };
8028
8706
  path?: never;
8029
8707
  query?: never;
@@ -8040,7 +8718,7 @@ export type RelatedTagsBulkResponses = {
8040
8718
  /**
8041
8719
  * Success
8042
8720
  */
8043
- 200: BulkRelatedTag;
8721
+ 200: TagWithCount;
8044
8722
  };
8045
8723
  export type RelatedTagsBulkResponse = RelatedTagsBulkResponses[keyof RelatedTagsBulkResponses];
8046
8724
  export type SearchTrendsIndexData = {
@@ -8079,6 +8757,26 @@ export type SearchTrendsRisingResponses = {
8079
8757
  200: Array<RisingSearchTrend>;
8080
8758
  };
8081
8759
  export type SearchTrendsRisingResponse = SearchTrendsRisingResponses[keyof SearchTrendsRisingResponses];
8760
+ export type SearchTrendsTrackData = {
8761
+ body?: never;
8762
+ path?: never;
8763
+ query?: {
8764
+ /**
8765
+ * Up to 10 comma separated values.
8766
+ */
8767
+ tag?: string;
8768
+ };
8769
+ url: '/search_trends/track.json';
8770
+ };
8771
+ export type SearchTrendsTrackResponses = {
8772
+ /**
8773
+ * Dictionary of tag to trends.
8774
+ */
8775
+ 200: {
8776
+ [key: string]: Array<TrackedSearchTrend>;
8777
+ };
8778
+ };
8779
+ export type SearchTrendsTrackResponse = SearchTrendsTrackResponses[keyof SearchTrendsTrackResponses];
8082
8780
  export type SearchTrendsClearCacheData = {
8083
8781
  body?: never;
8084
8782
  path?: never;
@@ -8101,15 +8799,15 @@ export type SearchTrendsClearCacheResponses = {
8101
8799
  export type SearchTrendsClearCacheResponse = SearchTrendsClearCacheResponses[keyof SearchTrendsClearCacheResponses];
8102
8800
  export type SearchTrendsUpdateSettingsData = {
8103
8801
  body?: {
8104
- trends_enabled?: boolean;
8105
- trends_displayed?: boolean;
8106
- trends_min_today?: number;
8107
- trends_min_dleta?: number;
8108
- trends_min_ratio?: number;
8109
- trends_ip_limit?: number;
8110
- trends_ip_window?: number;
8111
- trends_tag_limit?: number;
8112
- trends_tag_window?: number;
8802
+ 'search_trend_settings[trends_enabled]'?: boolean;
8803
+ 'search_trend_settings[trends_displayed]'?: boolean;
8804
+ 'search_trend_settings[trends_min_today]'?: number;
8805
+ 'search_trend_settings[trends_min_delta]'?: number;
8806
+ 'search_trend_settings[trends_min_ratio]'?: number;
8807
+ 'search_trend_settings[trends_ip_limit]'?: number;
8808
+ 'search_trend_settings[trends_ip_window]'?: number;
8809
+ 'search_trend_settings[trends_tag_limit]'?: number;
8810
+ 'search_trend_settings[trends_tag_window]'?: number;
8113
8811
  };
8114
8812
  path?: never;
8115
8813
  query?: never;
@@ -8197,8 +8895,8 @@ export type SearchTrendBlacklistsIndexResponses = {
8197
8895
  export type SearchTrendBlacklistsIndexResponse = SearchTrendBlacklistsIndexResponses[keyof SearchTrendBlacklistsIndexResponses];
8198
8896
  export type SearchTrendBlacklistsCreateData = {
8199
8897
  body?: {
8200
- tag: string;
8201
- reason: string;
8898
+ 'search_trend_blacklist[tag]': string;
8899
+ 'search_trend_blacklist[reason]': string;
8202
8900
  };
8203
8901
  path?: never;
8204
8902
  query?: never;
@@ -8253,6 +8951,93 @@ export type SearchTrendBlacklistsDestroyResponses = {
8253
8951
  204: void;
8254
8952
  };
8255
8953
  export type SearchTrendBlacklistsDestroyResponse = SearchTrendBlacklistsDestroyResponses[keyof SearchTrendBlacklistsDestroyResponses];
8954
+ export type SearchTrendBlacklistsUpdateData = {
8955
+ body?: {
8956
+ 'search_trend_blacklist[tag]'?: string;
8957
+ 'search_trend_blacklist[reason]'?: string;
8958
+ };
8959
+ path: {
8960
+ /**
8961
+ * The ID of the item.
8962
+ */
8963
+ id: number;
8964
+ };
8965
+ query?: never;
8966
+ url: '/search_trend_blacklists/{id}.json';
8967
+ };
8968
+ export type SearchTrendBlacklistsUpdateErrors = {
8969
+ /**
8970
+ * Access Denied
8971
+ */
8972
+ 403: AccessDeniedResponse;
8973
+ /**
8974
+ * Invalid Input Data
8975
+ */
8976
+ 422: {
8977
+ errors: Array<string>;
8978
+ };
8979
+ };
8980
+ export type SearchTrendBlacklistsUpdateError = SearchTrendBlacklistsUpdateErrors[keyof SearchTrendBlacklistsUpdateErrors];
8981
+ export type SearchTrendBlacklistsUpdateResponses = {
8982
+ /**
8983
+ * Success
8984
+ */
8985
+ 204: void;
8986
+ };
8987
+ export type SearchTrendBlacklistsUpdateResponse = SearchTrendBlacklistsUpdateResponses[keyof SearchTrendBlacklistsUpdateResponses];
8988
+ export type SearchTrendHourliesIndexData = {
8989
+ body?: never;
8990
+ path?: never;
8991
+ query?: {
8992
+ /**
8993
+ * The maximum number of results to return. Between 0 and 320.
8994
+ */
8995
+ limit?: number;
8996
+ /**
8997
+ * The page number of results to get. Between 1 and 750.
8998
+ */
8999
+ page?: number;
9000
+ 'search[name_matches]'?: string;
9001
+ hour?: string;
9002
+ };
9003
+ url: '/search_trend_hourlies.json';
9004
+ };
9005
+ export type SearchTrendHourliesIndexErrors = {
9006
+ /**
9007
+ * Access Denied
9008
+ */
9009
+ 403: AccessDeniedResponse;
9010
+ };
9011
+ export type SearchTrendHourliesIndexError = SearchTrendHourliesIndexErrors[keyof SearchTrendHourliesIndexErrors];
9012
+ export type SearchTrendHourliesIndexResponses = {
9013
+ /**
9014
+ * Success
9015
+ */
9016
+ 200: Array<SearchTrendHourly>;
9017
+ };
9018
+ export type SearchTrendHourliesIndexResponse = SearchTrendHourliesIndexResponses[keyof SearchTrendHourliesIndexResponses];
9019
+ export type SessionsDestroyData = {
9020
+ body?: {
9021
+ /**
9022
+ * CSRF Token
9023
+ */
9024
+ authenticity_token: string;
9025
+ };
9026
+ path?: never;
9027
+ query?: never;
9028
+ url: '/session.json';
9029
+ };
9030
+ export type SessionsDestroyErrors = {
9031
+ /**
9032
+ * Access Denied
9033
+ */
9034
+ 403: AccessDeniedResponse;
9035
+ /**
9036
+ * Failure
9037
+ */
9038
+ 406: unknown;
9039
+ };
9040
+ export type SessionsDestroyError = SessionsDestroyErrors[keyof SessionsDestroyErrors];
8256
9041
  export type SessionsCreateData = {
8257
9042
  body?: {
8258
9043
  /**
@@ -8271,6 +9056,14 @@ export type SessionsCreateData = {
8271
9056
  url: '/session.json';
8272
9057
  };
8273
9058
  export type SessionsCreateErrors = {
9059
+ /**
9060
+ * Two-factor authentication required - verification required within 5 minutes
9061
+ */
9062
+ 401: {
9063
+ error: string;
9064
+ code: 'totp_required';
9065
+ url: string;
9066
+ };
8274
9067
  /**
8275
9068
  * Access Denied
8276
9069
  */
@@ -8281,6 +9074,61 @@ export type SessionsCreateErrors = {
8281
9074
  406: unknown;
8282
9075
  };
8283
9076
  export type SessionsCreateError = SessionsCreateErrors[keyof SessionsCreateErrors];
9077
+ export type SessionsCreateResponses = {
9078
+ /**
9079
+ * Success
9080
+ */
9081
+ 200: {
9082
+ error: string;
9083
+ code: 'totp_required';
9084
+ url: string;
9085
+ };
9086
+ };
9087
+ export type SessionsCreateResponse = SessionsCreateResponses[keyof SessionsCreateResponses];
9088
+ export type SessionsVerifyTotpData = {
9089
+ body?: {
9090
+ /**
9091
+ * CSRF Token
9092
+ */
9093
+ authenticity_token: string;
9094
+ /**
9095
+ * Code or backup code
9096
+ */
9097
+ 'totp[code]': string;
9098
+ };
9099
+ path?: never;
9100
+ query?: never;
9101
+ url: '/session/verify_totp.json';
9102
+ };
9103
+ export type SessionsVerifyTotpErrors = {
9104
+ /**
9105
+ * Challenge expired or code incorrect
9106
+ */
9107
+ 401: {
9108
+ error: string;
9109
+ code?: 'challenge_expired';
9110
+ };
9111
+ /**
9112
+ * Access Denied
9113
+ */
9114
+ 403: AccessDeniedResponse;
9115
+ /**
9116
+ * Ratelimited
9117
+ */
9118
+ 429: {
9119
+ error: string;
9120
+ };
9121
+ };
9122
+ export type SessionsVerifyTotpError = SessionsVerifyTotpErrors[keyof SessionsVerifyTotpErrors];
9123
+ export type SessionsVerifyTotpResponses = {
9124
+ /**
9125
+ * Success
9126
+ */
9127
+ 200: {
9128
+ url: string;
9129
+ };
9130
+ };
9131
+ export type SessionsVerifyTotpResponse = SessionsVerifyTotpResponses[keyof SessionsVerifyTotpResponses];
8284
9132
  export type StaffNotesIndexData = {
8285
9133
  body?: never;
8286
9134
  path?: never;
@@ -8322,7 +9170,7 @@ export type StaffNotesIndexResponses = {
8322
9170
  export type StaffNotesIndexResponse = StaffNotesIndexResponses[keyof StaffNotesIndexResponses];
8323
9171
  export type StaffNotesCreateData = {
8324
9172
  body?: {
8325
- body: string;
9173
+ 'staff_note[body]': string;
8326
9174
  };
8327
9175
  path?: never;
8328
9176
  query?: never;
@@ -8383,7 +9231,7 @@ export type StaffNotesShowResponses = {
8383
9231
  export type StaffNotesShowResponse = StaffNotesShowResponses[keyof StaffNotesShowResponses];
8384
9232
  export type StaffNotesUpdateData = {
8385
9233
  body?: {
8386
- body?: string;
9234
+ 'staff_note[body]'?: string;
8387
9235
  };
8388
9236
  path: {
8389
9237
  /**
@@ -8557,29 +9405,29 @@ export type TakedownsIndexResponses = {
8557
9405
  export type TakedownsIndexResponse = TakedownsIndexResponses[keyof TakedownsIndexResponses];
8558
9406
  export type TakedownsCreateData = {
8559
9407
  body?: {
8560
- email: string;
8561
- source?: string;
8562
- instructions?: string;
8563
- reason: string;
9408
+ 'takedown[email]': string;
9409
+ 'takedown[source]'?: string;
9410
+ 'takedown[instructions]'?: string;
9411
+ 'takedown[reason]': string;
8564
9412
  /**
8565
- * post_ids][]=1&takedown[post_ids][=2
9413
+ * takedown[post_ids][]=1&takedown[post_ids][]=2
8566
9414
  */
8567
- post_ids?: Array<number>;
8568
- reason_hidden?: boolean;
9415
+ 'takedown[post_ids][]'?: Array<number>;
9416
+ 'takedown[reason_hidden]'?: boolean;
8569
9417
  /**
8570
9418
  * Must have the bd staff user flag to use.
8571
9419
  */
8572
- notes?: string;
9420
+ 'takedown[notes]'?: string;
8573
9421
  /**
8574
9422
  * Must have the bd staff user flag to use.
8575
- * del_post_ids][]=1&takedown[del_post_ids][=2
9423
+ * takedown[del_post_ids][]=1&takedown[del_post_ids][]=2
8576
9424
  *
8577
9425
  */
8578
- del_post_ids?: Array<number>;
9426
+ 'takedown[del_post_ids][]'?: Array<number>;
8579
9427
  /**
8580
9428
  * Must have the bd staff user flag to use.
8581
9429
  */
8582
- status?: string;
9430
+ 'takedown[status]'?: string;
8583
9431
  };
8584
9432
  path?: never;
8585
9433
  query?: never;
@@ -8661,8 +9509,8 @@ export type TakedownsShowResponses = {
8661
9509
  export type TakedownsShowResponse = TakedownsShowResponses[keyof TakedownsShowResponses];
8662
9510
  export type TakedownsUpdateData = {
8663
9511
  body?: {
8664
- notes?: string;
8665
- reason_hidden?: boolean;
9512
+ 'takedown[notes]'?: string;
9513
+ 'takedown[reason_hidden]'?: boolean;
8666
9514
  takedown_posts?: string;
8667
9515
  /**
8668
9516
  * If not truthy, the takedown will be denied.
@@ -8879,7 +9727,7 @@ export type TicketsIndexData = {
8879
9727
  * You must be Staff+.
8880
9728
  */
8881
9729
  'search[disp_id]'?: number;
8882
- 'search[qtype]'?: TicketTypes;
9730
+ 'search[qtype]'?: TicketType;
8883
9731
  /**
8884
9732
  * You must be Staff+.
8885
9733
  */
@@ -8933,13 +9781,13 @@ export type TicketsShowResponses = {
8933
9781
  export type TicketsShowResponse = TicketsShowResponses[keyof TicketsShowResponses];
8934
9782
  export type TicketsUpdateData = {
8935
9783
  body?: {
8936
- status?: 'partial' | 'approved';
8937
- response: string;
8938
- record_type?: WarningTypes;
9784
+ 'ticket[status]'?: 'partial' | 'approved';
9785
+ 'ticket[response]': string;
9786
+ 'ticket[record_type]'?: WarningRecordType;
8939
9787
  /**
8940
9788
  * An update dmail will always be sent when the status is changed.
8941
9789
  */
8942
- send_update_dmail?: boolean;
9790
+ 'ticket[send_update_dmail]'?: boolean;
8943
9791
  };
8944
9792
  path: {
8945
9793
  /**
@@ -9026,6 +9874,54 @@ export type TicketsUnclaimResponses = {
9026
9874
  201: Ticket;
9027
9875
  };
9028
9876
  export type TicketsUnclaimResponse = TicketsUnclaimResponses[keyof TicketsUnclaimResponses];
9877
+ export type UploadKarmaEventsIndexData = {
9878
+ body?: never;
9879
+ path?: never;
9880
+ query?: {
9881
+ /**
9882
+ * The maximum number of results to return. Between 0 and 320.
9883
+ */
9884
+ limit?: number;
9885
+ /**
9886
+ * The page number of results to get. Between 1 and 750.
9887
+ */
9888
+ page?: number;
9889
+ /**
9890
+ * Search for a specific id. Multiple can be separated by commas, up to 320.
9891
+ */
9892
+ 'search[id]'?: string | number;
9893
+ /**
9894
+ * The order of the results.
9895
+ */
9896
+ 'search[order]'?: 'id_asc' | 'id_desc';
9897
+ 'search[user_id]'?: number;
9898
+ 'search[user_name]'?: string;
9899
+ 'search[creator_id]'?: number;
9900
+ 'search[creator_name]'?: string;
9901
+ 'search[post_id]'?: number;
9902
+ 'search[reason]'?: 'approved' | 'unapproved' | 'deleted' | 'undeleted' | 'replacement_penalty' | 'replacement_penalty_reversed' | 'replacement_transfer' | 'owner_change' | 'staff_override' | 'queue_bypass';
9903
+ };
9904
+ url: '/upload_karma_events.json';
9905
+ };
9906
+ export type UploadKarmaEventsIndexResponses = {
9907
+ /**
9908
+ * Success
9909
+ */
9910
+ 200: Array<{
9911
+ id: number;
9912
+ user_id: number;
9913
+ creator_id: number;
9914
+ post_id: number | null;
9915
+ reason: 'approved' | 'unapproved' | 'deleted' | 'undeleted' | 'replacement_penalty' | 'replacement_penalty_reversed' | 'replacement_transfer' | 'owner_change' | 'staff_override' | 'queue_bypass';
9916
+ delta: number;
9917
+ balance: number;
9918
+ extra_data: {
9919
+ [key: string]: unknown;
9920
+ };
9921
+ created_at: string;
9922
+ }>;
9923
+ };
9924
+ export type UploadKarmaEventsIndexResponse = UploadKarmaEventsIndexResponses[keyof UploadKarmaEventsIndexResponses];
9029
9925
  export type UploadsIndexData = {
9030
9926
  body?: never;
9031
9927
  path?: never;
@@ -9050,7 +9946,7 @@ export type UploadsIndexData = {
9050
9946
  'search[uploader_name]'?: string;
9051
9947
  'search[source]'?: string;
9052
9948
  'search[source_matches]'?: string;
9053
- 'search[rating]'?: Ratings;
9949
+ 'search[rating]'?: Rating;
9054
9950
  'search[parent_id]'?: number;
9055
9951
  'search[post_id]'?: number;
9056
9952
  'search[has_post]'?: boolean;
@@ -9084,7 +9980,7 @@ export type UploadsCreateData = {
9084
9980
  'upload[direct_url]'?: string;
9085
9981
  'upload[source]'?: string;
9086
9982
  'upload[tag_string]': string;
9087
- 'upload[rating]': Ratings;
9983
+ 'upload[rating]': Rating;
9088
9984
  'upload[parent_id]'?: number;
9089
9985
  'upload[description]'?: string;
9090
9986
  /**
@@ -9188,12 +10084,12 @@ export type UploadWhitelistsIndexResponses = {
9188
10084
  export type UploadWhitelistsIndexResponse = UploadWhitelistsIndexResponses[keyof UploadWhitelistsIndexResponses];
9189
10085
  export type UploadWhitelistsCreateData = {
9190
10086
  body?: {
9191
- allowed: string;
9192
- domain: string;
9193
- path: string;
9194
- reason?: string;
9195
- note?: string;
9196
- hidden?: boolean;
10087
+ 'upload_whitelist[allowed]': string;
10088
+ 'upload_whitelist[domain]': string;
10089
+ 'upload_whitelist[path]': string;
10090
+ 'upload_whitelist[reason]'?: string;
10091
+ 'upload_whitelist[note]'?: string;
10092
+ 'upload_whitelist[hidden]'?: boolean;
9197
10093
  };
9198
10094
  path?: never;
9199
10095
  query?: never;
@@ -9250,11 +10146,11 @@ export type UploadWhitelistsDestroyResponses = {
9250
10146
  export type UploadWhitelistsDestroyResponse = UploadWhitelistsDestroyResponses[keyof UploadWhitelistsDestroyResponses];
9251
10147
  export type UploadWhitelistsUpdateData = {
9252
10148
  body?: {
9253
- allowed?: string;
9254
- pattern?: string;
9255
- reason?: string;
9256
- note?: string;
9257
- hidden?: boolean;
10149
+ 'upload_whitelist[allowed]'?: string;
10150
+ 'upload_whitelist[pattern]'?: string;
10151
+ 'upload_whitelist[reason]'?: string;
10152
+ 'upload_whitelist[note]'?: string;
10153
+ 'upload_whitelist[hidden]'?: boolean;
9258
10154
  };
9259
10155
  path: {
9260
10156
  /**
@@ -9346,14 +10242,20 @@ export type UsersIndexData = {
9346
10242
  * Must be Admin+ to use. See [the PostgreSQL documentation](https://www.postgresql.org/docs/9.3/functions-net.html) for information on how this is parsed. Specifically, "is contained within or equals" (`<<=`).
9347
10243
  */
9348
10244
  'search[ip_addr]'?: string;
9349
- 'search[order]'?: 'id_asc' | 'id_desc' | 'name' | 'post_upload_count' | 'note_count' | 'post_update_count';
10245
+ 'search[order]'?: 'id_asc' | 'id_desc' | 'name' | 'post_upload_count' | 'note_count' | 'post_update_count' | 'upload_karma';
9350
10246
  'search[name_matches]'?: string;
9351
10247
  'search[about_me]'?: string;
9352
10248
  'search[avatar_id]'?: number;
9353
- 'search[level]'?: UserLevels;
9354
- 'search[min_level]'?: UserLevels;
9355
- 'search[max_level]'?: UserLevels;
10249
+ 'search[level]'?: UserLevel;
10250
+ 'search[min_level]'?: UserLevel;
10251
+ 'search[max_level]'?: UserLevel;
9356
10252
  'search[can_upload_free]'?: boolean;
10253
+ /**
10254
+ * Only permitted if `upload_karma_free_threshold` != nil
10255
+ * Always true in prod.
10256
+ *
10257
+ */
10258
+ 'search[can_karma_free]'?: boolean;
9357
10259
  'search[can_approve_posts]'?: boolean;
9358
10260
  /**
9359
10261
  * You must be Admin+.
@@ -9402,6 +10304,47 @@ export type UsersAvatarMenuResponses = {
9402
10304
  200: UserAvatarMenu;
9403
10305
  };
9404
10306
  export type UsersAvatarMenuResponse = UsersAvatarMenuResponses[keyof UsersAvatarMenuResponses];
10307
+ export type UsersUploadTagsData = {
10308
+ body?: never;
10309
+ path?: never;
10310
+ query?: never;
10311
+ url: '/users/upload_tags.json';
10312
+ };
10313
+ export type UsersUploadTagsErrors = {
10314
+ /**
10315
+ * Access Denied
10316
+ */
10317
+ 403: AccessDeniedResponse;
10318
+ };
10319
+ export type UsersUploadTagsError = UsersUploadTagsErrors[keyof UsersUploadTagsErrors];
10320
+ export type UsersUploadTagsResponses = {
10321
+ /**
10322
+ * Success
10323
+ */
10324
+ 200: {
10325
+ upload_tags: Array<TagWithCount>;
10326
+ recent_tags: Array<TagWithCount>;
10327
+ };
10328
+ };
10329
+ export type UsersUploadTagsResponse = UsersUploadTagsResponses[keyof UsersUploadTagsResponses];
10330
+ export type UsersCustomStyleData = {
10331
+ body?: never;
10332
+ path?: never;
10333
+ query?: never;
10334
+ url: '/users/custom_style.css';
10335
+ };
10336
+ export type UsersCustomStyleErrors = {
10337
+ /**
10338
+ * Not Logged In
10339
+ */
10340
+ 406: unknown;
10341
+ };
10342
+ export type UsersCustomStyleResponses = {
10343
+ /**
10344
+ * Success
10345
+ */
10346
+ 200: unknown;
10347
+ };
9405
10348
  export type UsersShowData = {
9406
10349
  body?: never;
9407
10350
  path: {
@@ -9429,40 +10372,39 @@ export type UsersShowResponses = {
9429
10372
  export type UsersShowResponse = UsersShowResponses[keyof UsersShowResponses];
9430
10373
  export type UsersUpdateData = {
9431
10374
  body?: {
9432
- comment_threshold?: number;
9433
- default_image_size?: 'large' | 'fit' | 'fitv' | 'original';
9434
- favorite_tags?: string;
9435
- blacklisted_tags?: string;
10375
+ 'user[comment_threshold]'?: number;
10376
+ 'user[default_image_size]'?: 'large' | 'fit' | 'fitv' | 'original';
10377
+ 'user[favorite_tags]'?: string;
10378
+ 'user[blacklisted_tags]'?: string;
9436
10379
  /**
9437
10380
  * https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
9438
10381
  */
9439
- time_zone?: string;
9440
- per_page?: number;
9441
- custom_style?: string;
9442
- description_collapsed_initially?: boolean;
9443
- hide_comments?: boolean;
9444
- receive_email_notifications?: boolean;
9445
- enable_keyboard_navigation?: boolean;
9446
- enable_privacy_mode?: boolean;
9447
- disable_user_dmails?: boolean;
9448
- blacklist_users?: boolean;
9449
- show_post_statistics?: boolean;
9450
- style_usernames?: boolean;
9451
- show_hidden_comments?: boolean;
9452
- enable_autocomplete?: boolean;
9453
- disable_cropped_thumbnails?: boolean;
9454
- enable_safe_mode?: boolean;
9455
- disable_responsive_mode?: boolean;
9456
- 'dmail_filter_attributes][id'?: number;
9457
- 'dmail_filter_attributes][words'?: string;
9458
- profile_about?: string;
9459
- profile_artinfo?: string;
9460
- avatar_id?: number;
10382
+ 'user[time_zone]'?: string;
10383
+ 'user[per_page]'?: number;
10384
+ 'user[custom_style]'?: string;
10385
+ 'user[description_collapsed_initially]'?: boolean;
10386
+ 'user[hide_comments]'?: boolean;
10387
+ 'user[receive_email_notifications]'?: boolean;
10388
+ 'user[enable_keyboard_navigation]'?: boolean;
10389
+ 'user[enable_privacy_mode]'?: boolean;
10390
+ 'user[disable_user_dmails]'?: boolean;
10391
+ 'user[blacklist_users]'?: boolean;
10392
+ 'user[show_post_statistics]'?: boolean;
10393
+ 'user[show_hidden_comments]'?: boolean;
10394
+ 'user[enable_autocomplete]'?: boolean;
10395
+ 'user[disable_cropped_thumbnails]'?: boolean;
10396
+ 'user[enable_safe_mode]'?: boolean;
10397
+ 'user[disable_responsive_mode]'?: boolean;
10398
+ 'user[dmail_filter_attributes][id]'?: number;
10399
+ 'user[dmail_filter_attributes][words]'?: string;
10400
+ 'user[profile_about]'?: string;
10401
+ 'user[profile_artinfo]'?: string;
10402
+ 'user[avatar_id]'?: number;
9461
10403
  /**
9462
10404
  * You must have uploaded at least 10 posts.
9463
10405
  */
9464
- enable_compact_uploader?: boolean;
9465
- forum_notification_dot?: boolean;
10406
+ 'user[enable_compact_uploader]'?: boolean;
10407
+ 'user[forum_notification_dot]'?: boolean;
9466
10408
  };
9467
10409
  path: {
9468
10410
  /**
@@ -9571,7 +10513,7 @@ export type UsersToggleUploadsData = {
9571
10513
  idOrName: number | string;
9572
10514
  };
9573
10515
  query?: never;
9574
- url: '/users/{idOrName}/toggle_uploads.json';
10516
+ url: '/users/{idOrName}/toggle_uploads';
9575
10517
  };
9576
10518
  export type UsersToggleUploadsErrors = {
9577
10519
  /**
@@ -9584,9 +10526,55 @@ export type UsersToggleUploadsErrors = {
9584
10526
  404: NotFoundResponse;
9585
10527
  };
9586
10528
  export type UsersToggleUploadsError = UsersToggleUploadsErrors[keyof UsersToggleUploadsErrors];
10529
+ export type UsersToggleKarmaFreeData = {
10530
+ body?: never;
10531
+ path: {
10532
+ /**
10533
+ * An ID that can be either an integer or a name.
10534
+ */
10535
+ idOrName: number | string;
10536
+ };
10537
+ query?: never;
10538
+ url: '/users/{idOrName}/toggle_karma_free';
10539
+ };
10540
+ export type UsersToggleKarmaFreeErrors = {
10541
+ /**
10542
+ * Access Denied
10543
+ */
10544
+ 403: AccessDeniedResponse;
10545
+ /**
10546
+ * Not Found
10547
+ */
10548
+ 404: NotFoundResponse;
10549
+ };
10550
+ export type UsersToggleKarmaFreeError = UsersToggleKarmaFreeErrors[keyof UsersToggleKarmaFreeErrors];
9587
10551
  export type UsersDisableUploadsData = {
9588
10552
  body?: {
9589
- body: string;
10553
+ 'staff_note[body]': string;
10554
+ };
10555
+ path: {
10556
+ /**
10557
+ * An ID that can be either an integer or a name.
10558
+ */
10559
+ idOrName: number | string;
10560
+ };
10561
+ query?: never;
10562
+ url: '/users/{idOrName}/disable_uploads';
10563
+ };
10564
+ export type UsersDisableUploadsErrors = {
10565
+ /**
10566
+ * Access Denied
10567
+ */
10568
+ 403: AccessDeniedResponse;
10569
+ /**
10570
+ * Not Found
10571
+ */
10572
+ 404: NotFoundResponse;
10573
+ };
10574
+ export type UsersDisableUploadsError = UsersDisableUploadsErrors[keyof UsersDisableUploadsErrors];
10575
+ export type UsersDisableKarmaFreeData = {
10576
+ body?: {
10577
+ 'staff_note[body]': string;
9590
10578
  };
9591
10579
  path: {
9592
10580
  /**
@@ -9595,9 +10583,28 @@ export type UsersDisableUploadsData = {
9595
10583
  idOrName: number | string;
9596
10584
  };
9597
10585
  query?: never;
9598
- url: '/users/{idOrName}/disable_uploads.json';
10586
+ url: '/users/{idOrName}/disable_karma_free';
10587
+ };
10588
+ export type UsersDisableKarmaFreeErrors = {
10589
+ /**
10590
+ * Access Denied
10591
+ */
10592
+ 403: AccessDeniedResponse;
10593
+ /**
10594
+ * Not Found
10595
+ */
10596
+ 404: NotFoundResponse;
10597
+ };
10598
+ export type UsersDisableKarmaFreeError = UsersDisableKarmaFreeErrors[keyof UsersDisableKarmaFreeErrors];
10599
+ export type UserRevertsCreateData = {
10600
+ body?: {
10601
+ user_id: number;
10602
+ };
10603
+ path?: never;
10604
+ query?: never;
10605
+ url: '/user_reverts';
9599
10606
  };
9600
- export type UsersDisableUploadsErrors = {
10607
+ export type UserRevertsCreateErrors = {
9601
10608
  /**
9602
10609
  * Access Denied
9603
10610
  */
@@ -9607,7 +10614,7 @@ export type UsersDisableUploadsErrors = {
9607
10614
  */
9608
10615
  404: NotFoundResponse;
9609
10616
  };
9610
- export type UsersDisableUploadsError = UsersDisableUploadsErrors[keyof UsersDisableUploadsErrors];
10617
+ export type UserRevertsCreateError = UserRevertsCreateErrors[keyof UserRevertsCreateErrors];
9611
10618
  export type MaintenanceUserCountFixesCreateData = {
9612
10619
  body?: never;
9613
10620
  path?: never;
@@ -9623,7 +10630,7 @@ export type MaintenanceUserCountFixesCreateErrors = {
9623
10630
  export type MaintenanceUserCountFixesCreateError = MaintenanceUserCountFixesCreateErrors[keyof MaintenanceUserCountFixesCreateErrors];
9624
10631
  export type MaintenanceUserDmailFiltersUpdateData = {
9625
10632
  body?: {
9626
- words: string;
10633
+ 'dmail_filter[words]': string;
9627
10634
  };
9628
10635
  path?: never;
9629
10636
  query: {
@@ -9703,7 +10710,7 @@ export type UserFeedbacksIndexData = {
9703
10710
  'search[user_name]'?: string;
9704
10711
  'search[creator_id]'?: number;
9705
10712
  'search[creator_name]'?: string;
9706
- 'search[category]'?: FeedbackCategories;
10713
+ 'search[category]'?: UserFeedbackCategory;
9707
10714
  };
9708
10715
  url: '/user_feedbacks.json';
9709
10716
  };
@@ -9716,10 +10723,10 @@ export type UserFeedbacksIndexResponses = {
9716
10723
  export type UserFeedbacksIndexResponse = UserFeedbacksIndexResponses[keyof UserFeedbacksIndexResponses];
9717
10724
  export type UserFeedbacksCreateData = {
9718
10725
  body?: {
9719
- user_id?: number;
9720
- user_name?: string;
9721
- body: string;
9722
- category: FeedbackCategories;
10726
+ 'user_feedback[user_id]'?: number;
10727
+ 'user_feedback[user_name]'?: string;
10728
+ 'user_feedback[body]': string;
10729
+ 'user_feedback[category]': UserFeedbackCategory;
9723
10730
  };
9724
10731
  path?: never;
9725
10732
  query?: never;
@@ -9805,8 +10812,8 @@ export type UserFeedbacksShowResponses = {
9805
10812
  export type UserFeedbacksShowResponse = UserFeedbacksShowResponses[keyof UserFeedbacksShowResponses];
9806
10813
  export type UserFeedbacksUpdateData = {
9807
10814
  body?: {
9808
- body?: string;
9809
- category?: FeedbackCategories;
10815
+ 'user_feedback[body]'?: string;
10816
+ 'user_feedback[category]'?: UserFeedbackCategory;
9810
10817
  };
9811
10818
  path: {
9812
10819
  /**
@@ -9935,8 +10942,8 @@ export type UserNameChangeRequestsIndexResponses = {
9935
10942
  export type UserNameChangeRequestsIndexResponse = UserNameChangeRequestsIndexResponses[keyof UserNameChangeRequestsIndexResponses];
9936
10943
  export type UserNameChangeRequestsCreateData = {
9937
10944
  body?: {
9938
- desired_name: string;
9939
- change_reason?: string;
10945
+ 'user_name_change_request[desired_name]': string;
10946
+ 'user_name_change_request[change_reason]'?: string;
9940
10947
  };
9941
10948
  path?: never;
9942
10949
  query?: never;
@@ -10041,29 +11048,29 @@ export type WikiPagesIndexResponses = {
10041
11048
  export type WikiPagesIndexResponse = WikiPagesIndexResponses[keyof WikiPagesIndexResponses];
10042
11049
  export type WikiPagesCreateData = {
10043
11050
  body?: {
10044
- title: string;
10045
- body: string;
10046
- edit_reason?: string;
11051
+ 'wiki_page[title]': string;
11052
+ 'wiki_page[body]': string;
11053
+ 'wiki_page[edit_reason]'?: string;
10047
11054
  /**
10048
11055
  * Must be Privileged+ to use.
10049
11056
  */
10050
- parent?: string;
11057
+ 'wiki_page[parent]'?: string;
10051
11058
  /**
10052
11059
  * Must be Staff+ to use.
10053
11060
  */
10054
- is_locked?: boolean;
11061
+ 'wiki_page[is_locked]'?: boolean;
10055
11062
  /**
10056
11063
  * Must be Staff+ to use.
10057
11064
  */
10058
- is_deleted?: boolean;
11065
+ 'wiki_page[is_deleted]'?: boolean;
10059
11066
  /**
10060
11067
  * Must be Staff+ to use.
10061
11068
  */
10062
- skip_secondary_validations?: boolean;
11069
+ 'wiki_page[skip_secondary_validations]'?: boolean;
10063
11070
  /**
10064
11071
  * Space separated
10065
11072
  */
10066
- featured_posts_string?: string;
11073
+ 'wiki_page[featured_posts_string]'?: string;
10067
11074
  };
10068
11075
  path?: never;
10069
11076
  query?: never;
@@ -10145,37 +11152,32 @@ export type WikiPagesShowResponses = {
10145
11152
  export type WikiPagesShowResponse = WikiPagesShowResponses[keyof WikiPagesShowResponses];
10146
11153
  export type WikiPagesUpdateData = {
10147
11154
  body?: {
10148
- body?: string;
10149
- edit_reason?: string;
11155
+ 'wiki_page[body]'?: string;
11156
+ 'wiki_page[edit_reason]'?: string;
10150
11157
  /**
10151
11158
  * Must be Privileged+ to use.
10152
11159
  */
10153
- parent?: string;
11160
+ 'wiki_page[parent]'?: string;
10154
11161
  /**
10155
11162
  * Must be Staff+ to use.
10156
11163
  */
10157
- title?: string;
11164
+ 'wiki_page[title]'?: string;
10158
11165
  /**
10159
11166
  * Must be Staff+ to use.
10160
11167
  */
10161
- is_locked?: boolean;
11168
+ 'wiki_page[is_locked]'?: boolean;
10162
11169
  /**
10163
11170
  * Must be Staff+ to use.
10164
11171
  */
10165
- is_deleted?: boolean;
11172
+ 'wiki_page[is_deleted]'?: boolean;
10166
11173
  /**
10167
11174
  * Must be Staff+ to use.
10168
11175
  */
10169
- skip_secondary_validations?: boolean;
10170
- category_id?: TagCategories;
10171
- /**
10172
- * Must be Admin+ to use.
10173
- */
10174
- category_is_locked?: boolean;
11176
+ 'wiki_page[skip_secondary_validations]'?: boolean;
10175
11177
  /**
10176
11178
  * Space separated
10177
11179
  */
10178
- featured_posts_string?: string;
11180
+ 'wiki_page[featured_posts_string]'?: string;
10179
11181
  };
10180
11182
  path: {
10181
11183
  /**
@@ -10339,22 +11341,24 @@ export type StaffUsersUpdateData = {
10339
11341
  /**
10340
11342
  * Must have the bd staff user flag to use.
10341
11343
  */
10342
- verified?: boolean;
10343
- level?: UserLevels;
10344
- name?: string;
10345
- profile_about?: string;
10346
- profile_artinfo?: string;
10347
- base_upload_limit?: number;
10348
- enable_privacy_mode?: boolean;
11344
+ 'user[verified]'?: boolean;
11345
+ 'user[level]'?: UserLevel;
11346
+ 'user[name]'?: string;
11347
+ 'user[profile_about]'?: string;
11348
+ 'user[profile_artinfo]'?: string;
11349
+ 'user[base_upload_limit]'?: number;
11350
+ 'user[enable_privacy_mode]'?: boolean;
10349
11351
  /**
10350
11352
  * Must have the bd staff user flag to use.
10351
11353
  */
10352
- email?: string;
10353
- can_approve_posts?: boolean;
10354
- can_upload_free?: boolean;
10355
- no_flagging?: boolean;
10356
- replacements_beta?: boolean;
10357
- custom_title?: string;
11354
+ 'user[email]'?: string;
11355
+ 'user[can_approve_posts]'?: boolean;
11356
+ 'user[can_upload_free]'?: boolean;
11357
+ 'user[no_flagging]'?: boolean;
11358
+ 'user[replacements_beta]'?: boolean;
11359
+ 'user[custom_title]'?: string;
11360
+ 'user[tag_warden]'?: boolean;
11361
+ 'user[raised_favorite_limit]'?: boolean;
10358
11362
  };
10359
11363
  path: {
10360
11364
  /**
@@ -10401,7 +11405,7 @@ export type StaffUsersAnonymizeConfirmData = {
10401
11405
  id: number;
10402
11406
  };
10403
11407
  query?: never;
10404
- url: '/staff/users/{id}/anonymize.json';
11408
+ url: '/staff/users/{id}/anonymize_confirm';
10405
11409
  };
10406
11410
  export type StaffUsersAnonymizeConfirmErrors = {
10407
11411
  /**
@@ -10410,6 +11414,48 @@ export type StaffUsersAnonymizeConfirmErrors = {
10410
11414
  404: NotFoundResponse;
10411
11415
  };
10412
11416
  export type StaffUsersAnonymizeConfirmError = StaffUsersAnonymizeConfirmErrors[keyof StaffUsersAnonymizeConfirmErrors];
11417
+ export type StaffUsersTotpResetData = {
11418
+ body?: never;
11419
+ path: {
11420
+ /**
11421
+ * The ID of the item.
11422
+ */
11423
+ id: number;
11424
+ };
11425
+ query?: never;
11426
+ url: '/staff/users/{id}/totp_reset';
11427
+ };
11428
+ export type StaffUsersTotpResetErrors = {
11429
+ /**
11430
+ * Not Found
11431
+ */
11432
+ 404: NotFoundResponse;
11433
+ };
11434
+ export type StaffUsersTotpResetError = StaffUsersTotpResetErrors[keyof StaffUsersTotpResetErrors];
11435
+ export type StaffUsersUpdateBlacklistData = {
11436
+ body?: {
11437
+ 'user[blacklisted_tags]': string;
11438
+ };
11439
+ path: {
11440
+ /**
11441
+ * The ID of the item.
11442
+ */
11443
+ id: number;
11444
+ };
11445
+ query?: never;
11446
+ url: '/staff/users/{id}/update_blacklist';
11447
+ };
11448
+ export type StaffUsersUpdateBlacklistErrors = {
11449
+ /**
11450
+ * Access Denied
11451
+ */
11452
+ 403: AccessDeniedResponse;
11453
+ /**
11454
+ * Not Found
11455
+ */
11456
+ 404: NotFoundResponse;
11457
+ };
11458
+ export type StaffUsersUpdateBlacklistError = StaffUsersUpdateBlacklistErrors[keyof StaffUsersUpdateBlacklistErrors];
10413
11459
  export type StaffDmailsIndexData = {
10414
11460
  body?: never;
10415
11461
  path: {
@@ -10989,7 +12035,7 @@ export type StaffPostPostsReownerData = {
10989
12035
  id: number;
10990
12036
  };
10991
12037
  query?: never;
10992
- url: '/staff/post/posts/{id}/reowner.json';
12038
+ url: '/staff/post/posts/{id}/reowner';
10993
12039
  };
10994
12040
  export type StaffPostPostsReownerErrors = {
10995
12041
  /**
@@ -11071,6 +12117,32 @@ export type StaffPostApprovalsCreateResponses = {
11071
12117
  204: void;
11072
12118
  };
11073
12119
  export type StaffPostApprovalsCreateResponse = StaffPostApprovalsCreateResponses[keyof StaffPostApprovalsCreateResponses];
12120
+ export type StaffUserAltsShowData = {
12121
+ body?: never;
12122
+ path?: never;
12123
+ query: {
12124
+ user_id: number;
12125
+ };
12126
+ url: '/staff/user_alts.json';
12127
+ };
12128
+ export type StaffUserAltsShowErrors = {
12129
+ /**
12130
+ * Access Denied
12131
+ */
12132
+ 403: AccessDeniedResponse;
12133
+ /**
12134
+ * Not Found
12135
+ */
12136
+ 404: NotFoundResponse;
12137
+ };
12138
+ export type StaffUserAltsShowError = StaffUserAltsShowErrors[keyof StaffUserAltsShowErrors];
12139
+ export type StaffUserAltsShowResponses = {
12140
+ /**
12141
+ * Success
12142
+ */
12143
+ 200: Array<UserAlt>;
12144
+ };
12145
+ export type StaffUserAltsShowResponse = StaffUserAltsShowResponses[keyof StaffUserAltsShowResponses];
11074
12146
  export type StaffUserCleanupsClearAvatarData = {
11075
12147
  body?: never;
11076
12148
  path: {
@@ -11217,9 +12289,9 @@ export type StaffPostDisapprovalsIndexResponses = {
11217
12289
  export type StaffPostDisapprovalsIndexResponse = StaffPostDisapprovalsIndexResponses[keyof StaffPostDisapprovalsIndexResponses];
11218
12290
  export type StaffPostDisapprovalsCreateData = {
11219
12291
  body?: {
11220
- post_id: number;
11221
- reason: 'borderline_quality' | 'borderline_relevancy' | 'other';
11222
- message?: string;
12292
+ 'post_disapproval[post_id]': number;
12293
+ 'post_disapproval[reason]': 'borderline_quality' | 'borderline_relevancy' | 'other';
12294
+ 'post_disapproval[message]'?: string;
11223
12295
  };
11224
12296
  path?: never;
11225
12297
  query?: never;
@@ -11637,6 +12709,124 @@ export type StaffWikisUnclaimResponses = {
11637
12709
  201: StaffWiki;
11638
12710
  };
11639
12711
  export type StaffWikisUnclaimResponse = StaffWikisUnclaimResponses[keyof StaffWikisUnclaimResponses];
12712
+ export type StaffWikisRevertData = {
12713
+ body?: never;
12714
+ path: {
12715
+ /**
12716
+ * The ID of the item.
12717
+ */
12718
+ id: number;
12719
+ };
12720
+ query: {
12721
+ /**
12722
+ * The version ID to revert to.
12723
+ */
12724
+ version_id: number;
12725
+ };
12726
+ url: '/staff/wikis/{id}/revert.json';
12727
+ };
12728
+ export type StaffWikisRevertErrors = {
12729
+ /**
12730
+ * Access Denied
12731
+ */
12732
+ 403: AccessDeniedResponse;
12733
+ /**
12734
+ * Not Found
12735
+ */
12736
+ 404: NotFoundResponse;
12737
+ /**
12738
+ * Invalid Input Data
12739
+ */
12740
+ 422: {
12741
+ errors: Array<string>;
12742
+ };
12743
+ };
12744
+ export type StaffWikisRevertError = StaffWikisRevertErrors[keyof StaffWikisRevertErrors];
12745
+ export type StaffWikisRevertResponses = {
12746
+ /**
12747
+ * Success
12748
+ */
12749
+ 204: void;
12750
+ };
12751
+ export type StaffWikisRevertResponse = StaffWikisRevertResponses[keyof StaffWikisRevertResponses];
12752
+ export type StaffWikiRefsCreateData = {
12753
+ body?: {
12754
+ 'staff_wiki_ref[related_type]': StaffWikiRefRelatedType;
12755
+ 'staff_wiki_ref[related_id]': number;
12756
+ };
12757
+ path: {
12758
+ /**
12759
+ * The ID of the item.
12760
+ */
12761
+ id: number;
12762
+ };
12763
+ query?: never;
12764
+ url: '/staff/wikis/{id}/references';
12765
+ };
12766
+ export type StaffWikiRefsCreateErrors = {
12767
+ /**
12768
+ * Access Denied
12769
+ */
12770
+ 403: AccessDeniedResponse;
12771
+ /**
12772
+ * Not Found
12773
+ */
12774
+ 404: NotFoundResponse;
12775
+ };
12776
+ export type StaffWikiRefsCreateError = StaffWikiRefsCreateErrors[keyof StaffWikiRefsCreateErrors];
12777
+ export type StaffWikiRefsDestroyData = {
12778
+ body?: never;
12779
+ path: {
12780
+ /**
12781
+ * The ID of the item.
12782
+ */
12783
+ id: number;
12784
+ /**
12785
+ * The ID of the item.
12786
+ */
12787
+ wiki_id: number;
12788
+ };
12789
+ query?: never;
12790
+ url: '/staff/wikis/{wiki_id}/references/{id}';
12791
+ };
12792
+ export type StaffWikiRefsDestroyErrors = {
12793
+ /**
12794
+ * Access Denied
12795
+ */
12796
+ 403: AccessDeniedResponse;
12797
+ /**
12798
+ * Not Found
12799
+ */
12800
+ 404: NotFoundResponse;
12801
+ };
12802
+ export type StaffWikiRefsDestroyError = StaffWikiRefsDestroyErrors[keyof StaffWikiRefsDestroyErrors];
12803
+ export type StaffWikiRefsBulkCreateData = {
12804
+ body?: {
12805
+ /**
12806
+ * Space separated, parses `users/<id>`, `artists/<id>`, `staff/wiki/<id>`
12807
+ */
12808
+ urls: string;
12809
+ };
12810
+ path: {
12811
+ /**
12812
+ * The ID of the item.
12813
+ */
12814
+ id: number;
12815
+ };
12816
+ query?: never;
12817
+ url: '/staff/wikis/{id}/references/bulk_create';
12818
+ };
12819
+ export type StaffWikiRefsBulkCreateErrors = {
12820
+ /**
12821
+ * Access Denied
12822
+ */
12823
+ 403: AccessDeniedResponse;
12824
+ /**
12825
+ * Not Found
12826
+ */
12827
+ 404: NotFoundResponse;
12828
+ };
12829
+ export type StaffWikiRefsBulkCreateError = StaffWikiRefsBulkCreateErrors[keyof StaffWikiRefsBulkCreateErrors];
11640
12830
  export type StaffWikiVersionsIndexData = {
11641
12831
  body?: never;
11642
12832
  path?: never;
@@ -11736,3 +12926,142 @@ export type StaffVoteTrendsIndexResponses = {
11736
12926
  200: Array<VoteTrend | Array<number>>;
11737
12927
  };
11738
12928
  export type StaffVoteTrendsIndexResponse = StaffVoteTrendsIndexResponses[keyof StaffVoteTrendsIndexResponses];
12929
+ export type StaffIpAddrsIndexData = {
12930
+ body?: never;
12931
+ path?: never;
12932
+ query?: {
12933
+ 'search[with_history]'?: boolean;
12934
+ /**
12935
+ * Accepts multiple comma separated values.
12936
+ */
12937
+ 'search[user_id]'?: string;
12938
+ /**
12939
+ * Accepts multiple comma separated values.
12940
+ */
12941
+ 'search[user_name]'?: string;
12942
+ /**
12943
+ * Accepts multiple comma separated values.
12944
+ */
12945
+ 'search[ip_addr]'?: string;
12946
+ 'search[add_ip_mask]'?: boolean;
12947
+ };
12948
+ url: '/staff/ip_addrs.json';
12949
+ };
12950
+ export type StaffIpAddrsIndexErrors = {
12951
+ /**
12952
+ * Access Denied
12953
+ */
12954
+ 403: AccessDeniedResponse;
12955
+ /**
12956
+ * Invalid Input Data
12957
+ */
12958
+ 422: {
12959
+ errors: Array<string>;
12960
+ };
12961
+ };
12962
+ export type StaffIpAddrsIndexError = StaffIpAddrsIndexErrors[keyof StaffIpAddrsIndexErrors];
12963
+ export type StaffIpAddrsIndexResponses = {
12964
+ /**
12965
+ * Success
12966
+ */
12967
+ 200: Array<StaffIPAddrUserListing | StaffIPAddrIPListing>;
12968
+ };
12969
+ export type StaffIpAddrsIndexResponse = StaffIpAddrsIndexResponses[keyof StaffIpAddrsIndexResponses];
12970
+ export type StaffIpAddrsExportData = {
12971
+ body?: never;
12972
+ path?: never;
12973
+ query?: {
12974
+ 'search[with_history]'?: boolean;
12975
+ /**
12976
+ * Accepts multiple comma separated values.
12977
+ */
12978
+ 'search[user_id]'?: string;
12979
+ /**
12980
+ * Accepts multiple comma separated values.
12981
+ */
12982
+ 'search[user_name]'?: string;
12983
+ /**
12984
+ * Accepts multiple comma separated values.
12985
+ */
12986
+ 'search[ip_addr]'?: string;
12987
+ 'search[add_ip_mask]'?: boolean;
12988
+ };
12989
+ url: '/staff/ip_addrs/export.json';
12990
+ };
12991
+ export type StaffIpAddrsExportErrors = {
12992
+ /**
12993
+ * Access Denied
12994
+ */
12995
+ 403: AccessDeniedResponse;
12996
+ /**
12997
+ * Invalid Input Data
12998
+ */
12999
+ 422: {
13000
+ errors: Array<string>;
13001
+ };
13002
+ };
13003
+ export type StaffIpAddrsExportError = StaffIpAddrsExportErrors[keyof StaffIpAddrsExportErrors];
13004
+ export type StaffIpAddrsExportResponses = {
13005
+ /**
13006
+ * Success
13007
+ */
13008
+ 200: Array<string>;
13009
+ };
13010
+ export type StaffIpAddrsExportResponse = StaffIpAddrsExportResponses[keyof StaffIpAddrsExportResponses];
13011
+ export type StaffReownerCreateData = {
13012
+ body?: {
13013
+ /**
13014
+ * Must be a string
13015
+ * Name: `name`
13016
+ * ID: `!1234`
13017
+ *
13018
+ */
13019
+ 'reowner[new_owner]': string;
13020
+ /**
13021
+ * Also reown post versions. (default false)
13022
+ */
13023
+ 'reowner[reowner_versions]'?: boolean;
13024
+ /**
13025
+ * Also reown post events. (default true)
13026
+ */
13027
+ 'reowner[post_events]'?: boolean;
13028
+ };
13029
+ path?: never;
13030
+ query?: never;
13031
+ url: '/staff/reowner.json';
13032
+ };
13033
+ export type StaffReownerCreateErrors = {
13034
+ /**
13035
+ * Access Denied
13036
+ */
13037
+ 403: AccessDeniedResponse;
13038
+ };
13039
+ export type StaffReownerCreateError = StaffReownerCreateErrors[keyof StaffReownerCreateErrors];
13040
+ export type StaffStuckDnpCreateData = {
13041
+ body?: {
13042
+ 'stuck_dnp[query]': string;
13043
+ };
13044
+ path?: never;
13045
+ query?: never;
13046
+ url: '/staff/stuck_dnp.json';
13047
+ };
13048
+ export type StaffStuckDnpCreateErrors = {
13049
+ /**
13050
+ * Access Denied
13051
+ */
13052
+ 403: AccessDeniedResponse;
13053
+ };
13054
+ export type StaffStuckDnpCreateError = StaffStuckDnpCreateErrors[keyof StaffStuckDnpCreateErrors];
13055
+ export type StatsIndexData = {
13056
+ body?: never;
13057
+ path?: never;
13058
+ query?: never;
13059
+ url: '/stats.json';
13060
+ };
13061
+ export type StatsIndexResponses = {
13062
+ /**
13063
+ * Success
13064
+ */
13065
+ 200: Stats;
13066
+ };
13067
+ export type StatsIndexResponse = StatsIndexResponses[keyof StatsIndexResponses];