export type ClientOptions = { baseUrl: 'https://e621.net' | 'https://e926.net' | 'http://localhost:3000' | (string & {}); }; export type AccessDeniedResponse = { success: boolean; reason: 'Access Denied'; }; export type NotFoundResponse = { success: boolean; reason: 'not found'; }; export type WarningRecordType = { record_type: 'unmark' | 'ban' | 'record' | 'warning'; }; export type ModActionActions = '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' | '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' | 'mascot_create' | 'mascot_update' | 'mascot_delete' | 'pool_delete' | 'report_reason_create' | 'report_reason_delete' | 'report_reason_update' | 'set_update' | 'set_delete' | 'set_change_visibility' | 'tag_alias_create' | 'tag_alias_update' | 'tag_implication_create' | 'tag_implication_update' | 'ticket_claim' | 'ticket_unclaim' | 'ticket_update' | 'upload_whitelist_create' | 'upload_whitelist_update' | 'upload_whitelist_delete' | 'user_blacklist_changed' | 'user_text_change' | 'user_upload_limit_change' | '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' | 'wiki_page_rename' | 'wiki_page_delete' | 'wiki_page_lock' | 'wiki_page_unlock' | 'mass_update' | 'nuke_tag' | 'takedown_delete' | 'takedown_process' | 'user_flush_favorites' | 'post_version_hide' | 'post_version_unhide' | 'user_uploads_toggle' | 'staff_note_create' | 'staff_note_update' | 'staff_note_delete' | 'staff_note_undelete' | 'search_trend_blacklist_purge' | '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'; 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'; export type Ratings = 's' | 'q' | 'e'; export type TagCategories = 0 | 1 | 3 | 4 | 5 | 6 | 7 | 8; export type FeedbackCategories = 'negative' | 'neutral' | 'positive'; export type TagRequestStatuses = 'active' | 'deleted' | 'processing' | 'queued' | 'retired' | 'error' | 'pending'; export type WarningTypes = 'warning' | 'record' | 'ban'; export type PoolCategories = 'collection' | 'series'; export type TicketTypes = 'blip' | 'comment' | 'dmail' | 'forum' | 'pool' | 'post' | 'set' | 'user' | 'wiki' | 'replacement'; export type TicketStatuses = 'pending' | 'partial' | 'approved'; export type Artist = { id: number; name: string; updated_at: string; is_active: boolean; other_names: Array; group_name: string; linked_user_id: number | null; created_at: string; creator_id: number; is_locked: boolean; notes: string | null; }; export type ArtistUrl = { id: number; artist_id: number; url: string; normalized_url: string; created_at: string; updated_at: string; is_active: boolean; }; export type ArtistVersion = { id: number; artist_id: number; name: string; updater_id: number; created_at: string; updated_at: string; is_active: boolean; other_names: Array; notes_changed: boolean; urls: Array; }; export type AvoidPosting = { id: number; creator_id: number; updater_id: number; artist_id: number; /** * Only visible to Janitor+ */ staff_notes?: string; details: string; is_active: boolean; created_at: string; updated_at: string; }; export type AvoidPostingVersion = { id: number; updater_id: number; avoid_posting_id: number; details: string; /** * Only visible to Janitor+ */ staff_notes?: string; is_active: boolean; updated_at: string; }; export type Ban = { id: number; user_id: number; reason: string; expires_at: string | null; banner_id: number; created_at: string; updated_at: string; }; export type Blip = { id: number; creator_id: number; body: string; response_to: number; created_at: string; updated_at: string; is_deleted: boolean; warning_type: WarningTypes; warning_user_id: number; updater_id: number; creator_name: string; }; export type BulkRelatedTag = RelatedTag & { count: number; }; export type BulkUpdateRequest = { id: number; creator_id: number; forum_topic_id: number | null; script: string; status: 'approved' | 'rejected' | 'pending'; created_at: string; updated_at: string; approver_id: number | null; forum_post_id: number | null; title: string; }; export type Comment = { id: number; created_at: string; post_id: number; creator_id: number; body: string; score: number; updated_at: string; updater_id: number; /** * @deprecated */ do_not_bump_post: boolean; is_hidden: boolean; is_sticky: boolean; warning_type: WarningTypes; warning_user_id: number | null; creator_name: string; updater_name: string; }; export type CurrentUser = User & { blacklist_users: boolean; description_collapsed_initially: boolean; hide_comments: boolean; show_hidden_comments: boolean; show_post_statistics: boolean; receive_email_notifications: boolean; enable_keyboard_navigation: boolean; enable_privacy_mode: boolean; style_usernames: boolean; enable_auto_complete: boolean; can_approve_posts?: boolean; disable_cropped_thumbnails: boolean; enable_safe_mode: boolean; disable_responsive_mode: boolean; no_flagging: boolean; disable_user_dmails: boolean; enable_compact_uploader: boolean; replacements_beta: boolean; updated_at: string; email: string; last_logged_in_at: string; last_forum_read_at: string; recent_tags: string; comment_threshold: number; default_image_size: 'large' | 'fit' | 'fitv' | 'original'; favorite_tags: string; blacklisted_tags: string; time_zone: string; per_page: number; custom_style: string; favorite_count: number; api_regen_multiplier: number; api_burst_limit: number; remaining_api_limit: number; statement_timeout: number; favorite_limit: number; tag_query_limit: number; has_mail: boolean; forum_notification_dot: boolean; }; export type DMail = { id: number; owner_id: number; from_id: number; to_id: number; title: string; body: string; is_read: boolean; is_deleted: boolean; created_at: string; updated_at: string; to_name: string; from_name: string; }; export type DeferredPost = { id: number; flags: string; tags: string; rating: Ratings; file_ext: string; width: number; height: number; size: number; created_at: string; uploader: string; uploader_id: number; score: number; fav_count: number; is_favorited: boolean; pools: Array; md5: string; preview_url: string | null; large_url: string | null; file_url: string | null; preview_width: number; preview_height: number; }; export type DTextResponse = { html: string; posts: DeferredPost; }; export type EmailBlacklist = { id: number; created_at: string; updated_at: string; domain: string; creator_id: string; reason: string; }; export type ForumPost = { id: number; topic_id: number; creator_id: number; updater_id: number; body: string; is_hidden: boolean; created_at: string; updated_at: string; warning_type: WarningTypes; warning_user_id: number | null; }; export type ForumPostVote = { id: number; forum_post_id: number; creator_id: number; score: number; created_at: string; updated_at: string; creator_name: string; }; export type ForumTopic = { id: number; creator_id: number; updater_id: number; title: string; response_count: number; is_sticky: boolean; is_locked: boolean; is_hidden: boolean; created_at: string; updated_at: string; category_id: number; }; export type FullCurrentUser = CurrentUser & FullUser; export type FullUser = User & { wiki_page_version_count: number; artist_version_count: number; pool_version_count: number; forum_post_count: number; comment_count: number; flag_count: number; favorite_count: number; positive_feedback_count: number; neutral_feedback_count: number; negative_feedback_count: number; upload_limit: number; profile_about: string; profile_artinfo: string; }; export type Help = { id: number; name: string; title: string; wiki_page: string; related: string; created_at: string; updated_at: string; }; /** * Due to a global filter, the ip_addr is not present no matter your user level. */ export type IpBan = { id: number; creator_id: number; reason: string; created_at: string; updated_at: string; }; export type IqdbPost = { id: number; created_at: string; updated_at: string; up_score: number; down_score: number; score: number; source: string; md5: string; rating: Ratings; is_note_locked: boolean; is_rating_locked: boolean; is_status_locked: boolean; is_pending: boolean; is_flagged: boolean; is_deleted: boolean; uploader_id: number; approver_id: number; last_noted_at: string | null; last_comment_bumped_at: string | null; fav_count: number; tag_string: string; tag_count: number; tag_count_general: number; tag_count_artist: number; tag_count_character: number; tag_count_copyright: number; file_ext: string; file_size: number; image_width: number; image_height: number; parent_id: number | null; has_children: boolean; last_commented_at: string | null; has_active_children: boolean; bit_flags: number; tag_count_meta: number; locked_tags: string | null; tag_count_species: number; tag_count_invalid: number; description: string; comment_count: number; change_seq: number; tag_count_lore: number; bg_color: string | null; generated_samples: Array<'720p' | '480p' | 'original'> | null; duration: string | null; is_comment_disabled: boolean; is_comment_locked: boolean; has_large: boolean; has_visible_children: boolean; children_ids: string | null; pool_ids: Array; is_favorited: boolean; file_url?: string; large_file_url?: string; preview_file_url?: string; }; export type IqdbResponse = { hash: string; post_id: number; score: number; post: { posts: IqdbPost; }; }; export type Mascot = { id: number; creator_id: number; display_name: string; md5: string; file_ext: string; background_color: string; artist_url: string; artist_name: string; active: boolean; created_at: string; updated_at: string; available_on: Array; url_path: string; }; export type ModAction = { id: number; creator_id: number; created_at: string; updated_at: string; action: ModActionActions; }; export type NewsUpdate = { id: number; message: string; creator_id: number; updater_id: number; created_at: string; updated_at: string; }; export type Note = { id: number; created_at: string; updated_at: string; creator_id: number; x: number; y: number; width: number; height: number; version: number; is_active: boolean; post_id: number; body: string; creator_name: string; }; export type NoteVersion = { id: number; created_at: string; updated_at: string; x: number; y: number; width: number; height: number; body: string; version: number; is_active: boolean; note_id: number; post_id: number; updater_id: number; }; export type Pool = { id: number; name: string; updated_at: string; creator_id: number; description: string; is_active: boolean; category: PoolCategories; post_ids: Array; created_at: string; creator_name: string; post_count: number; }; export type PoolVersion = { id: number; pool_id: number; post_ids: Array; created_at: string; updated_at: string; updater_id: number; name: string; name_changed: boolean; description: string; description_changed: boolean; is_active: boolean; is_locked: boolean; category: PoolCategories; version: number; added_post_ids: Array; removed_post_ids: Array; }; export type Post = { id: number; created_at: string; updated_at: string; file: { width: number; height: number; ext: string; size: number; md5: string; url: string | null; }; preview: { width: number; height: number; url: string | null; }; sample: { has: boolean; height: number | null; width: number | null; url: string | null; alternates: { has?: boolean; original?: PostSampleAlternate; variants?: { webm?: PostSampleAlternate; mp4?: PostSampleAlternate; }; samples?: { '480p'?: PostSampleAlternate; '720p'?: PostSampleAlternate; }; }; }; score: { up: number; down: number; total: number; }; tags: { general: Array; artist: Array; copyright: Array; character: Array; species: Array; invalid: Array; meta: Array; lore: Array; contributor: Array; }; locked_tags: Array | null; change_seq: number; flags: { pending: boolean; flagged: boolean; note_locked: boolean; status_locked: boolean; rating_locked: boolean; deleted: boolean; }; rating: Ratings; fav_count: number; sources: Array; pools: Array; relationships: { parent_id: number | null; has_children: boolean; has_active_children: boolean; children: Array; }; approver_id: number | null; uploader_id: number; description: string; comment_count: number; is_favorited: boolean; has_notes: boolean; duration: number | null; uploader_name: string; }; export type PostApproval = { id: number; user_id: number; post_id: number; created_at: string; updated_at: string; }; export type PostDisapproval = { id: number; user_id: number; post_id: number; reason: 'borderline_quality' | 'borderline_relevancy' | 'other'; message: string | null; created_at: string; updated_at: string; }; export type PostEvent = { id: number; creator_id: number | null; post_id: number; action: PostEventActions; created_at: string; }; export type PostFlag = { id: number; created_at: string; post_id: number; reason: string; /** * Only visible to creator and Janitor+ */ creator_id?: number | null; is_resolved: boolean; updated_at: string; is_deletion: boolean; type: 'flag' | 'deletion'; /** * Only visible to creator and Janitor+ */ note?: string | null; }; export type PostReplacement = { id: number; created_at: string; updated_at: string; post_id: number; creator_id: number; approver_id: number | null; file_ext: string; file_size: number; image_height: number; image_width: number; md5: string; source: string; file_name: string; status: 'prompted' | 'approved' | 'rejected' | 'pending' | 'original'; reason: string; }; export type PostSampleAlternate = { fps: number; codec: string; size: number; width: number; height: number; url: string; }; export type PostSet = { id: number; created_at: string; updated_at: string; creator_id: number; is_public: boolean; name: string; shortname: string; description: string; post_count: number; transfer_on_delete: boolean; post_ids: Array; }; export type PostVersion = { id: number; post_id: number; tags: string; updater_id: number; updated_at: string; rating: Ratings; parent_id: number | null; source: string; description: string; reason: string | null; locked_tags: string | null; added_tags: Array; removed_tags: Array; added_locked_tags: Array; removed_locked_tags: Array; rating_changed: boolean; parent_changed: boolean; source_changed: boolean; description_changed: boolean; version: number; obsolete_added_tags: string; obsolete_removed_tags: string; unchanged_tags: string; updater_name: string; is_hidden: boolean; }; export type RelatedTag = { name: string; category_id: TagCategories; }; export type StaffNote = { id: number; created_at: string; updated_at: string; user_id: number; creator_id: number; body: string; is_deleted: boolean; updater_id: number; }; export type Tag = { id: number; name: string; post_count: number; related_tags: Array; related_tags_updated_at: string | null; category: TagCategories; is_locked: boolean; created_at: string; updated_at: string; }; export type TagAlias = { id: number; antecedent_name: string; reason: string; creator_id: number; created_at: string | null; forum_post_id: number | null; updated_at: string | null; forum_topic_id: number | null; consequent_name: string; status: TagRequestStatuses; post_count: number; approver_id: number | null; }; export type TagImplication = { id: number; reason: string; creator_id: number; created_at: string; forum_post_id: number | null; antecedent_name: string; consequent_name: string; status: TagRequestStatuses; forum_topic_id: number | null; updated_at: string; descendant_names: Array; approver_id: number | null; }; export type TagPreview = { id?: number; name: string; resolved?: string; category?: TagCategories; post_count?: number; alias?: string; implies?: Array; }; export type TagTypeVersion = { id: number; created_at: string; updated_at: string; old_type: TagCategories; new_type: TagCategories; is_locked: boolean; tag_id: number; creator_id: number; }; export type Takedown = { id: number; status: 'approved' | 'denied' | 'partial' | 'pending'; approver_id: number | null; reason_hidden: boolean; created_at: string; updated_at: string; post_count: number; }; export type Ticket = { id: number; creator_id: number; reason: string; disp_id: number; qtype: TicketTypes; status: TicketStatuses; created_at: string; updated_at: string; response: string; handler_id: number | null; /** * Only visible to Moderator+. */ claimant_id?: number | null; report_reason: string | null; accused_id: number | null; }; export type UploadWhitelist = { id: number; created_at: string; updated_at: string; pattern: string; note: string; hidden: boolean; allowed: boolean; reason: string; domain: string; path: string; }; export type Upload = { id: number; source: string; rating: Ratings; uploader_id: number; tag_string: string; /** * Note: The "error" status will be proceeded by an error, ex: "error: RuntimeError - No file or source URL provided" * */ status: 'completed' | 'duplicate' | 'error' | 'processing' | 'pending'; backtrace: string | null; post_id: number | null; /** * @deprecated */ md5_confirmation: string | null; created_at: string; updated_at: string; parent_id: number | null; md5: string | null; file_ext: string | null; file_size: number | null; image_width: number | null; image_height: number | null; description: string; uploader_name: string; }; export type User = { id: number; created_at: string; name: string; level: number; base_upload_limit: number; post_upload_count: number; post_update_count: number; note_update_count: number; is_banned: boolean; can_approve_posts: boolean; can_upload_free: boolean; level_string: string; avatar_id: number | null; is_verified?: boolean; }; export type UserFeedback = { id: number; user_id: number; creator_id: number; category: FeedbackCategories; body: string; created_at: string; updated_at: string; updater_id: number; is_deleted: boolean; }; export type UserNameChangeRequest = { id: number; approver_id: number; user_id: number; original_name: string; desired_name: string; change_reason?: string; created_at: string; updated_at: string; status: 'approved'; }; export type WikiPage = { id: number; created_at: string; updated_at: string; title: string; body: string; creator_id: number; is_locked: boolean; updater_id: number; is_deleted: boolean; other_names: Array; parent: string | null; creator_name: string; category_id: TagCategories; }; export type WikiPageVersion = { id: number; created_at: string; updated_at: string; title: string; body: string; updater_id: number; wiki_page_id: number; is_locked: boolean; other_names: Array; is_deleted: boolean; reason: string | null; parent: string | null; }; export type ApiKey = { id: number; updated_at: string; created_at: string; user_id: number; key: string; name: string; last_used_at: string | null; last_used_ip_address: string | null | string; last_user_agent: string | null; expires_at: string | null; notified_at: string | null; }; export type EditHistory = { id: number; created_at: string; updated_at: string; body: string; subject: string | null; versionable_type: 'Blip' | 'Comment' | 'ForumPost'; versionable_id: number; version: number; user_id: number; }; export type UserAvatarMenu = { has_uploads: boolean; has_favorites: boolean; has_sets: boolean; has_comments: boolean; has_forums: boolean; }; export type TagCorrection = { post_count: number; real_post_count: number; category: TagCategories; category_cache: TagCategories; tag: Tag; }; export type SearchTrend = { tag: string; count: number; day: string; }; export type RisingSearchTrend = { name: string; pretty_name: string; post_count: number; category: TagCategories; }; export type SearchTrendBlacklist = { id: number; tag: string; reason: string; creator_id: number; created_at: string; updated_at: string; }; export type MessageErrorResponse = { success: boolean; message: string; code?: string | null; }; export type MessageSuccessResponse = { success: true; message: string; }; export type PostRecommendation = { post_id: number; /** * Currently hardcoded as 1, https://github.com/e621ng/e621ng/blob/5f83e77329d4074c5462c7516c3850f33125f441/app/controllers/posts_controller.rb#L177 * */ score: number; /** * Currently hardcoded as null, https://github.com/e621ng/e621ng/blob/5f83e77329d4074c5462c7516c3850f33125f441/app/controllers/posts_controller.rb#L178 * */ explanation: string | null; }; export type RecommendedPosts = { post_id: number; model_version: 'opensearch'; results: Array; }; export type PostVote = { id: number; post_id: number; user_id: number; score: UpDownVote; created_at: string; updated_at: string; }; export type UpDownVote = 1 | -1; export type UpDownMehVote = 1 | 0 | -1; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ export type IdQuery = number | string; /** * The maximum number of results to return. Between 0 and 320. */ export type LimitQuery = number; /** * The page number of results to get. Between 1 and 750. */ export type PageQuery = number; /** * 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" (`<<=`). */ export type IpAddrQuery = string; /** * The order of the results. */ export type OrderQuery = 'id_asc' | 'id_desc'; /** * The ID of the item. */ export type IdPath = number; /** * An ID that can be either an integer or a name. */ export type IdOrNamePath = number | string; export type Warning = WarningRecordType; export type GetApiKeysData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id' | 'id_asc' | 'id_desc' | 'name' | 'name_asc' | 'name_desc' | 'created_at' | 'created_at_asc' | 'created_at_desc' | 'updated_at' | 'updated_at_asc' | 'updated_at_desc' | 'expires_at' | 'expires_at_asc' | 'expires_at_desc' | 'last_used_at' | 'last_used_at_asc' | 'last_used_at_desc'; 'search[name_matches]'?: string; 'search[is_expired]'?: boolean; }; url: '/api_keys.json'; }; export type GetApiKeysErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetApiKeysError = GetApiKeysErrors[keyof GetApiKeysErrors]; export type GetApiKeysResponses = { /** * Success */ 200: Array; }; export type GetApiKeysResponse = GetApiKeysResponses[keyof GetApiKeysResponses]; export type CreateApiKeyData = { body?: { /** * CSRF Token */ authenticity_token: string; 'api_key[name]': string; 'api_key[duration]'?: number | 'never' | 'custom'; 'api_key[expires_at]'?: string; }; path?: never; query?: never; url: '/api_keys.json'; }; export type CreateApiKeyErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateApiKeyError = CreateApiKeyErrors[keyof CreateApiKeyErrors]; export type CreateApiKeyResponses = { /** * Success */ 201: ApiKey; }; export type CreateApiKeyResponse = CreateApiKeyResponses[keyof CreateApiKeyResponses]; export type DeleteApiKeyData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/api_keys/{id}.json'; }; export type DeleteApiKeyErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteApiKeyError = DeleteApiKeyErrors[keyof DeleteApiKeyErrors]; export type DeleteApiKeyResponses = { /** * Success */ 204: void; }; export type DeleteApiKeyResponse = DeleteApiKeyResponses[keyof DeleteApiKeyResponses]; export type RegenerateApiKeyData = { body?: { /** * CSRF Token */ authenticity_token: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/api_keys/{id}/regenerate.json'; }; export type RegenerateApiKeyErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RegenerateApiKeyError = RegenerateApiKeyErrors[keyof RegenerateApiKeyErrors]; export type RegenerateApiKeyResponses = { /** * Success */ 201: ApiKey; }; export type RegenerateApiKeyResponse = RegenerateApiKeyResponses[keyof RegenerateApiKeyResponses]; export type SearchArtistsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'updated_at' | 'name' | 'post_count'; 'search[name]'?: string; 'search[group_name]'?: string; 'search[any_other_name_like]'?: string; 'search[any_name_matches]'?: string; 'search[any_name_or_url_matches]'?: string; 'search[url_matches]'?: string; 'search[creator_name]'?: string; 'search[creator_id]'?: number; 'search[has_tag]'?: boolean; 'search[is_linked]'?: string; 'search[linked_user_id]'?: number; 'search[linked_user_name]'?: string; }; url: '/artists.json'; }; export type SearchArtistsResponses = { /** * Success */ 200: Array; }>; }; export type SearchArtistsResponse = SearchArtistsResponses[keyof SearchArtistsResponses]; export type CreateArtistData = { body?: { 'artist[name]': string; 'artist[other_names]'?: Array; 'artist[other_names_string]'?: string; 'artist[url_string]'?: string; 'artist[notes]'?: string; 'artist[group_name]'?: string; /** * Only usable for Janitor+ */ 'artist[linked_user_id]'?: number | null; /** * Only usable for Janitor+ */ 'artist[is_locked]'?: boolean; }; path?: never; query?: never; url: '/artists.json'; }; export type CreateArtistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateArtistError = CreateArtistErrors[keyof CreateArtistErrors]; export type CreateArtistResponses = { /** * Success */ 201: Artist; }; export type CreateArtistResponse = CreateArtistResponses[keyof CreateArtistResponses]; export type DeleteArtistData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/artists/{idOrName}.json'; }; export type DeleteArtistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteArtistError = DeleteArtistErrors[keyof DeleteArtistErrors]; export type DeleteArtistResponses = { /** * Success */ 204: void; }; export type DeleteArtistResponse = DeleteArtistResponses[keyof DeleteArtistResponses]; export type GetArtistData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/artists/{idOrName}.json'; }; export type GetArtistErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetArtistError = GetArtistErrors[keyof GetArtistErrors]; export type GetArtistResponses = { /** * Success */ 200: Artist & { domains: Array>; urls: Array; }; }; export type GetArtistResponse = GetArtistResponses[keyof GetArtistResponses]; export type EditArtistData = { body?: { /** * Only usable for Janitor+ */ 'artist[name]'?: string; 'artist[other_names]'?: Array; 'artist[other_names_string]'?: string; 'artist[url_string]'?: string; 'artist[notes]'?: string; 'artist[group_name]'?: string; /** * Only usable for Janitor+ */ 'artist[linked_user_id]'?: number | null; /** * Only usable for Janitor+ */ 'artist[is_locked]'?: boolean; }; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/artists/{idOrName}.json'; }; export type EditArtistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditArtistError = EditArtistErrors[keyof EditArtistErrors]; export type EditArtistResponses = { /** * Success */ 204: void; }; export type EditArtistResponse = EditArtistResponses[keyof EditArtistResponses]; export type RevertArtistData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query: { /** * The version ID to revert to. */ version_id: number; }; url: '/artists/{idOrName}/revert.json'; }; export type RevertArtistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Access Denied */ 422: AccessDeniedResponse; }; export type RevertArtistError = RevertArtistErrors[keyof RevertArtistErrors]; export type RevertArtistResponses = { /** * Success */ 204: void; }; export type RevertArtistResponse = RevertArtistResponses[keyof RevertArtistResponses]; export type SearchArtistVersionsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc' | 'name'; /** * The name of the artist. */ 'search[name]'?: string; /** * The id of the artist. */ 'search[artist_id]'?: string; /** * The name of the user that updated the artist. */ 'search[updater_name]'?: string; /** * The id of the user that updated the artist. */ 'search[updater_id]'?: string; }; url: '/artist_versions.json'; }; export type SearchArtistVersionsResponses = { /** * Success */ 200: Array; }; export type SearchArtistVersionsResponse = SearchArtistVersionsResponses[keyof SearchArtistVersionsResponses]; export type SearchArtistUrlsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id' | 'id_asc' | 'id_desc' | 'artist_id' | 'artist_id_asc' | 'artist_id_desc' | 'url' | 'url_asc' | 'url_desc' | 'normalized_url' | 'normalized_url_asc' | 'normalized_url_desc' | 'created_at' | 'created_at_asc' | 'created_at_desc' | 'updated_at' | 'updated_at_asc' | 'updated_at_desc'; /** * The name of the artist. */ 'search[artist_name]'?: string; /** * The id of the artist. */ 'search[artist_id]'?: string; /** * If the artist url is active. */ 'search[is_active]'?: boolean; /** * The url. */ 'search[url]'?: string; /** * The normalized url. (http:, trailing `/`) */ 'search[normalized_url]'?: string; /** * Legacy nested search for artist. Supports the same parameters as /artists.json. * * @deprecated */ 'search[artist]'?: { [key: string]: unknown; }; /** * Legacy name for `search[url]`. * * @deprecated */ 'search[url_matches]'?: string; /** * Legacy name for `search[normalized_url]`. * * @deprecated */ 'search[normalized_url_matches]'?: string; }; url: '/artist_urls.json'; }; export type SearchArtistUrlsResponses = { /** * Success */ 200: Array; }; export type SearchArtistUrlsResponse = SearchArtistUrlsResponses[keyof SearchArtistUrlsResponses]; export type SearchAvoidPostingsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[creator_name]'?: string; 'search[creator_id]'?: string; /** * Any name matching. */ 'search[any_name_matches]'?: string; /** * The artist name of the avoid posting entry. */ 'search[artist_name]'?: string; /** * The artist id for the avoid posting entry. */ 'search[artist_id]'?: string; /** * Any other name matching. */ 'search[any_other_name_matches]'?: string; /** * The details of the avoid posting entry. */ 'search[details]'?: string; /** * The staff notes on the avoid posting entry. Must be Janitor+ to use. */ 'search[staff_notes]'?: string; /** * If the avoid posting entry is active. */ 'search[is_active]'?: boolean; }; url: '/avoid_postings.json'; }; export type SearchAvoidPostingsResponses = { /** * Success */ 200: Array; }; export type SearchAvoidPostingsResponse = SearchAvoidPostingsResponses[keyof SearchAvoidPostingsResponses]; export type CreateAvoidPostingData = { body?: { 'avoid_posting[details]'?: string; 'avoid_posting[staff_notes]'?: string; 'avoid_posting[is_active]'?: boolean; /** * If provided and the artist does not exist, an artist will be created. */ 'avoid_posting[artist_attributes][name]'?: string; 'avoid_posting[artist_attributes][other_names_string]'?: string; 'avoid_posting[artist_attributes][other_names]'?: Array; 'avoid_posting[artist_attributes][group_name]'?: string; 'avoid_posting[artist_attributes][linked_user_id]'?: number; }; path?: never; query?: never; url: '/avoid_postings.json'; }; export type CreateAvoidPostingErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateAvoidPostingError = CreateAvoidPostingErrors[keyof CreateAvoidPostingErrors]; export type CreateAvoidPostingResponses = { /** * Success */ 201: AvoidPosting; }; export type CreateAvoidPostingResponse = CreateAvoidPostingResponses[keyof CreateAvoidPostingResponses]; export type DestroyAvoidPostingData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/avoid_postings/{idOrName}.json'; }; export type DestroyAvoidPostingErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DestroyAvoidPostingError = DestroyAvoidPostingErrors[keyof DestroyAvoidPostingErrors]; export type DestroyAvoidPostingResponses = { /** * Success */ 204: void; }; export type DestroyAvoidPostingResponse = DestroyAvoidPostingResponses[keyof DestroyAvoidPostingResponses]; export type GetAvoidPostingData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/avoid_postings/{idOrName}.json'; }; export type GetAvoidPostingErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetAvoidPostingError = GetAvoidPostingErrors[keyof GetAvoidPostingErrors]; export type GetAvoidPostingResponses = { /** * Success */ 200: AvoidPosting; }; export type GetAvoidPostingResponse = GetAvoidPostingResponses[keyof GetAvoidPostingResponses]; export type EditAvoidPostingData = { body?: { 'avoid_posting[details]'?: string; 'avoid_posting[staff_notes]'?: string; 'avoid_posting[is_active]'?: boolean; 'avoid_posting[artist_attributes][name]'?: string; 'avoid_posting[artist_attributes][other_names_string]'?: string; 'avoid_posting[artist_attributes][other_names]'?: Array; 'avoid_posting[artist_attributes][group_name]'?: string; 'avoid_posting[artist_attributes][linked_user_id]'?: number; }; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/avoid_postings/{idOrName}.json'; }; export type EditAvoidPostingErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditAvoidPostingError = EditAvoidPostingErrors[keyof EditAvoidPostingErrors]; export type EditAvoidPostingResponses = { /** * Success */ 204: void; }; export type EditAvoidPostingResponse = EditAvoidPostingResponses[keyof EditAvoidPostingResponses]; export type DeleteAvoidPostingData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/avoid_postings/{idOrName}/delete.json'; }; export type DeleteAvoidPostingErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteAvoidPostingError = DeleteAvoidPostingErrors[keyof DeleteAvoidPostingErrors]; export type DeleteAvoidPostingResponses = { /** * Success */ 204: void; }; export type DeleteAvoidPostingResponse = DeleteAvoidPostingResponses[keyof DeleteAvoidPostingResponses]; export type UndeleteAvoidPostingData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/avoid_postings/{idOrName}/undelete.json'; }; export type UndeleteAvoidPostingErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UndeleteAvoidPostingError = UndeleteAvoidPostingErrors[keyof UndeleteAvoidPostingErrors]; export type UndeleteAvoidPostingResponses = { /** * Success */ 204: void; }; export type UndeleteAvoidPostingResponse = UndeleteAvoidPostingResponses[keyof UndeleteAvoidPostingResponses]; export type SearchAvoidPostingVersionsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; /** * The name of the updater of the avoid posting entry. */ 'search[updater_name]'?: string; /** * The ID of the updater of the avoid posting entry. */ 'search[updater_id]'?: string; /** * Any name matching. */ 'search[any_name_matches]'?: string; /** * The artist name of the avoid posting entry. */ 'search[artist_name]'?: string; /** * The artist id for the avoid posting entry. */ 'search[artist_id]'?: string; /** * Any other name matching. */ 'search[any_other_name_matches]'?: string; /** * Any other name matching. */ 'search[group_name]'?: string; /** * If the avoid posting entry is active. */ 'search[is_active]'?: boolean; }; url: '/avoid_posting_versions.json'; }; export type SearchAvoidPostingVersionsResponses = { /** * Success */ 200: Array; }; export type SearchAvoidPostingVersionsResponse = SearchAvoidPostingVersionsResponses[keyof SearchAvoidPostingVersionsResponses]; export type SearchBansData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc' | 'expires_at_desc'; /** * The ID of the banner. */ 'search[banner_id]'?: string; /** * The name of banner. */ 'search[banner_name]'?: string; /** * The ID of the banned user. */ 'search[user_id]'?: string; /** * The name of the banned user. */ 'search[user_name]'?: string; /** * The reason of the ban. */ 'search[reason_matches]'?: string; /** * If the ban is expired. */ 'search[expired]'?: string; }; url: '/bans.json'; }; export type SearchBansResponses = { /** * Success */ 200: Array; }; export type SearchBansResponse = SearchBansResponses[keyof SearchBansResponses]; export type GetBanData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/bans/{id}.json'; }; export type GetBanErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetBanError = GetBanErrors[keyof GetBanErrors]; export type GetBanResponses = { /** * Success */ 200: Ban; }; export type GetBanResponse = GetBanResponses[keyof GetBanResponses]; export type SearchBlipsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; 'search[order]'?: 'id_asc' | 'id_desc' | 'updated_at' | 'updated_at_desc'; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[body_matches]'?: string; 'search[response_to]'?: number; }; url: '/blips.json'; }; export type SearchBlipsResponses = { /** * Success */ 200: Array; }; export type SearchBlipsResponse = SearchBlipsResponses[keyof SearchBlipsResponses]; export type CreateBlipData = { body?: { 'blip[body]': string; 'blip[response_to]'?: number; }; path?: never; query?: never; url: '/blips.json'; }; export type CreateBlipErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateBlipError = CreateBlipErrors[keyof CreateBlipErrors]; export type CreateBlipResponses = { /** * Success */ 201: Blip; }; export type CreateBlipResponse = CreateBlipResponses[keyof CreateBlipResponses]; export type DestroyBlipData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/blips/{id}.json'; }; export type DestroyBlipErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DestroyBlipError = DestroyBlipErrors[keyof DestroyBlipErrors]; export type DestroyBlipResponses = { /** * Success */ 204: void; }; export type DestroyBlipResponse = DestroyBlipResponses[keyof DestroyBlipResponses]; export type GetBlipData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/blips/{id}.json'; }; export type GetBlipErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetBlipError = GetBlipErrors[keyof GetBlipErrors]; export type GetBlipResponses = { /** * Success */ 200: Blip; }; export type GetBlipResponse = GetBlipResponses[keyof GetBlipResponses]; export type EditBlipData = { body?: { 'blip[body]'?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/blips/{id}.json'; }; export type EditBlipErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditBlipError = EditBlipErrors[keyof EditBlipErrors]; export type EditBlipResponses = { /** * Success */ 204: void; }; export type EditBlipResponse = EditBlipResponses[keyof EditBlipResponses]; export type DeleteBlipData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/blips/{id}/delete.json'; }; export type DeleteBlipErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteBlipError = DeleteBlipErrors[keyof DeleteBlipErrors]; export type DeleteBlipResponses = { /** * Success */ 201: Blip; }; export type DeleteBlipResponse = DeleteBlipResponses[keyof DeleteBlipResponses]; export type UndeleteBlipData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/blips/{id}/undelete.json'; }; export type UndeleteBlipErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UndeleteBlipError = UndeleteBlipErrors[keyof UndeleteBlipErrors]; export type UndeleteBlipResponses = { /** * Success */ 201: Blip; }; export type UndeleteBlipResponse = UndeleteBlipResponses[keyof UndeleteBlipResponses]; export type MarkBlipData = { body?: Warning; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/blips/{id}/warning.json'; }; export type MarkBlipErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type MarkBlipError = MarkBlipErrors[keyof MarkBlipErrors]; export type MarkBlipResponses = { /** * Success */ 200: DTextResponse; }; export type MarkBlipResponse = MarkBlipResponses[keyof MarkBlipResponses]; export type SearchBulkUpdateRequestsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'status_desc' | 'updated_at_desc' | 'updated_at_asc'; 'search[user_id]'?: number; 'search[user_name]'?: string; 'search[approver_id]'?: number; 'search[approver_name]'?: string; 'search[forum_topic_id]'?: number; 'search[forum_post_id]'?: number; /** * Multiple can be specified via comma separating. */ 'search[status]'?: 'approved' | 'rejected' | 'pending'; 'search[title_matches]'?: string; 'search[script_matches]'?: string; }; url: '/bulk_update_requests.json'; }; export type SearchBulkUpdateRequestsResponses = { /** * Success */ 200: Array; }; export type SearchBulkUpdateRequestsResponse = SearchBulkUpdateRequestsResponses[keyof SearchBulkUpdateRequestsResponses]; export type CreateBulkUpdateRequestData = { body?: { 'bulk_update_request[script]': string; 'bulk_update_request[title]': string; 'bulk_update_request[reason]': string; 'bulk_update_request[forum_topic_id]'?: number; /** * Only usable for Admin+ */ 'bulk_update_request[skip_forum]'?: boolean; }; path?: never; query?: never; url: '/bulk_update_requests.json'; }; export type CreateBulkUpdateRequestErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateBulkUpdateRequestError = CreateBulkUpdateRequestErrors[keyof CreateBulkUpdateRequestErrors]; export type CreateBulkUpdateRequestResponses = { /** * Success */ 201: BulkUpdateRequest; }; export type CreateBulkUpdateRequestResponse = CreateBulkUpdateRequestResponses[keyof CreateBulkUpdateRequestResponses]; export type RejectBulkUpdateRequestData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/bulk_update_requests/{id}.json'; }; export type RejectBulkUpdateRequestErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type RejectBulkUpdateRequestError = RejectBulkUpdateRequestErrors[keyof RejectBulkUpdateRequestErrors]; export type RejectBulkUpdateRequestResponses = { /** * Success */ 204: void; }; export type RejectBulkUpdateRequestResponse = RejectBulkUpdateRequestResponses[keyof RejectBulkUpdateRequestResponses]; export type GetBulkUpdateRequestData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/bulk_update_requests/{id}.json'; }; export type GetBulkUpdateRequestErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetBulkUpdateRequestError = GetBulkUpdateRequestErrors[keyof GetBulkUpdateRequestErrors]; export type GetBulkUpdateRequestResponses = { /** * Success */ 200: BulkUpdateRequest; }; export type GetBulkUpdateRequestResponse = GetBulkUpdateRequestResponses[keyof GetBulkUpdateRequestResponses]; export type EditBulkUpdateRequestData = { body?: { 'bulk_update_request[script]'?: string; /** * You must be Admin+. */ 'bulk_update_request[forum_topic_id]'?: string; /** * You must be Admin+. */ 'bulk_update_request[forum_post_id]'?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/bulk_update_requests/{id}.json'; }; export type EditBulkUpdateRequestErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditBulkUpdateRequestError = EditBulkUpdateRequestErrors[keyof EditBulkUpdateRequestErrors]; export type EditBulkUpdateRequestResponses = { /** * Success */ 204: void; }; export type EditBulkUpdateRequestResponse = EditBulkUpdateRequestResponses[keyof EditBulkUpdateRequestResponses]; export type ApproveBulkUpdateRequestData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/bulk_update_requests/{id}/approve.json'; }; export type ApproveBulkUpdateRequestErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type ApproveBulkUpdateRequestError = ApproveBulkUpdateRequestErrors[keyof ApproveBulkUpdateRequestErrors]; export type ApproveBulkUpdateRequestResponses = { /** * Success */ 204: void; }; export type ApproveBulkUpdateRequestResponse = ApproveBulkUpdateRequestResponses[keyof ApproveBulkUpdateRequestResponses]; export type SearchCommentsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; 'search[order]'?: 'id_asc' | 'id_desc' | 'status' | 'status_desc' | 'updated_at_desc'; group_by?: 'comment' | 'post'; 'search[body_matches]'?: string; /** * Accepts a comma separated list. */ 'search[post_id]'?: string; 'search[post_tags_match]'?: string; 'search[post_note_updater_name]'?: string; 'search[post_note_updater_id]'?: number; 'search[creator_name]'?: string; 'search[creator_id]'?: number; 'search[is_sticky]'?: boolean; /** * Only usable by Moderator+ */ 'search[is_hidden]'?: boolean; 'search[do_not_bump_post]'?: boolean; }; url: '/comments.json'; }; export type SearchCommentsResponses = { /** * Success */ 200: Array; }; export type SearchCommentsResponse = SearchCommentsResponses[keyof SearchCommentsResponses]; export type CreateCommentData = { body?: { 'comment[body]': string; 'comment[post_id]': number; 'comment[do_not_bump_post]'?: boolean; /** * Only usable for Janitor+ */ 'comment[is_sticky]'?: boolean; /** * Only usable for Moderator+ */ 'comment[is_hidden]'?: boolean; }; path?: never; query?: never; url: '/comments.json'; }; export type CreateCommentErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateCommentError = CreateCommentErrors[keyof CreateCommentErrors]; export type CreateCommentResponses = { /** * Success */ 201: Comment; }; export type CreateCommentResponse = CreateCommentResponses[keyof CreateCommentResponses]; export type DeleteCommentData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/comments/{id}.json'; }; export type DeleteCommentErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteCommentError = DeleteCommentErrors[keyof DeleteCommentErrors]; export type DeleteCommentResponses = { /** * Success */ 204: void; }; export type DeleteCommentResponse = DeleteCommentResponses[keyof DeleteCommentResponses]; export type GetCommentData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/comments/{id}.json'; }; export type GetCommentErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetCommentError = GetCommentErrors[keyof GetCommentErrors]; export type GetCommentResponses = { /** * Success */ 200: Comment; }; export type GetCommentResponse = GetCommentResponses[keyof GetCommentResponses]; export type EditCommentData = { body?: { 'comment[body]'?: string; /** * Only usable for Janitor+ */ 'comment[is_sticky]'?: boolean; /** * Only usable for Moderator+ */ 'comment[is_hidden]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/comments/{id}.json'; }; export type EditCommentErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditCommentError = EditCommentErrors[keyof EditCommentErrors]; export type EditCommentResponses = { /** * Success */ 204: void; }; export type EditCommentResponse = EditCommentResponses[keyof EditCommentResponses]; export type HideCommentData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/comments/{id}/hide.json'; }; export type HideCommentErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type HideCommentError = HideCommentErrors[keyof HideCommentErrors]; export type HideCommentResponses = { /** * Success */ 201: Comment; }; export type HideCommentResponse = HideCommentResponses[keyof HideCommentResponses]; export type UnhideCommentData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/comments/{id}/unhide.json'; }; export type UnhideCommentErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UnhideCommentError = UnhideCommentErrors[keyof UnhideCommentErrors]; export type UnhideCommentResponses = { /** * Success */ 201: Comment; }; export type UnhideCommentResponse = UnhideCommentResponses[keyof UnhideCommentResponses]; export type MarkCommentData = { body?: Warning; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/comments/{id}/warning.json'; }; export type MarkCommentErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type MarkCommentError = MarkCommentErrors[keyof MarkCommentErrors]; export type MarkCommentResponses = { /** * Success */ 200: DTextResponse; }; export type MarkCommentResponse = MarkCommentResponses[keyof MarkCommentResponses]; export type DeleteCommentVoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/comments/{id}/votes.json'; }; export type DeleteCommentVoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type DeleteCommentVoteError = DeleteCommentVoteErrors[keyof DeleteCommentVoteErrors]; export type DeleteCommentVoteResponses = { /** * Success */ 204: void; }; export type DeleteCommentVoteResponse = DeleteCommentVoteResponses[keyof DeleteCommentVoteResponses]; export type CreateCommentVoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query: { score: UpDownVote; no_unvote?: boolean; }; url: '/comments/{id}/votes.json'; }; export type CreateCommentVoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateCommentVoteError = CreateCommentVoteErrors[keyof CreateCommentVoteErrors]; export type CreateCommentVoteResponses = { /** * Success */ 200: { score: number; our_score: number; }; }; export type CreateCommentVoteResponse = CreateCommentVoteResponses[keyof CreateCommentVoteResponses]; export type LockCommentVotesData = { body?: never; path?: never; query: { /** * The IDs of the comment votes, comma separated. */ ids: string; }; url: '/comment_votes/lock.json'; }; export type LockCommentVotesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type LockCommentVotesError = LockCommentVotesErrors[keyof LockCommentVotesErrors]; export type LockCommentVotesResponses = { /** * Success */ 204: void; }; export type LockCommentVotesResponse = LockCommentVotesResponses[keyof LockCommentVotesResponses]; export type DeleteCommentVotesData = { body?: never; path?: never; query: { /** * The IDs of the comment votes, comma separated. */ ids: string; }; url: '/comment_votes/delete.json'; }; export type DeleteCommentVotesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type DeleteCommentVotesError = DeleteCommentVotesErrors[keyof DeleteCommentVotesErrors]; export type DeleteCommentVotesResponses = { /** * Success */ 204: void; }; export type DeleteCommentVotesResponse = DeleteCommentVotesResponses[keyof DeleteCommentVotesResponses]; export type SearchDMailsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[title_matches]'?: string; 'search[message_matches]'?: string; 'search[to_name]'?: string; 'search[to_id]'?: number; 'search[from_name]'?: string; 'search[from_id]'?: number; 'search[is_read]'?: boolean; 'search[is_deleted]'?: boolean; 'search[read]'?: boolean; }; url: '/dmails.json'; }; export type SearchDMailsResponses = { /** * Success */ 200: Array; }; export type SearchDMailsResponse = SearchDMailsResponses[keyof SearchDMailsResponses]; export type DeleteDMailData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/dmails/{id}.json'; }; export type DeleteDMailErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteDMailError = DeleteDMailErrors[keyof DeleteDMailErrors]; export type DeleteDMailResponses = { /** * Success */ 204: void; }; export type DeleteDMailResponse = DeleteDMailResponses[keyof DeleteDMailResponses]; export type GetDMailData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/dmails/{id}.json'; }; export type GetDMailErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetDMailError = GetDMailErrors[keyof GetDMailErrors]; export type GetDMailResponses = { /** * Success */ 200: DMail; }; export type GetDMailResponse = GetDMailResponses[keyof GetDMailResponses]; export type MarkDMailAsReadData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/dmails/{id}/mark_as_read.json'; }; export type MarkDMailAsReadErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type MarkDMailAsReadError = MarkDMailAsReadErrors[keyof MarkDMailAsReadErrors]; export type MarkDMailAsReadResponses = { /** * Success */ 204: void; }; export type MarkDMailAsReadResponse = MarkDMailAsReadResponses[keyof MarkDMailAsReadResponses]; export type MarkDMailAsUnreadData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/dmails/{id}/mark_as_unread.json'; }; export type MarkDMailAsUnreadErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type MarkDMailAsUnreadError = MarkDMailAsUnreadErrors[keyof MarkDMailAsUnreadErrors]; export type MarkDMailAsUnreadResponses = { /** * Success */ 204: void; }; export type MarkDMailAsUnreadResponse = MarkDMailAsUnreadResponses[keyof MarkDMailAsUnreadResponses]; export type MarkAllDMailsAsReadData = { body?: never; path?: never; query?: never; url: '/dmails/mark_all_as_read.json'; }; export type MarkAllDMailsAsReadErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type MarkAllDMailsAsReadError = MarkAllDMailsAsReadErrors[keyof MarkAllDMailsAsReadErrors]; export type MarkAllDMailsAsReadResponses = { /** * Success */ 204: void; }; export type MarkAllDMailsAsReadResponse = MarkAllDMailsAsReadResponses[keyof MarkAllDMailsAsReadResponses]; export type PreviewDTextData = { body?: { body: string; }; path?: never; query?: never; url: '/dtext_preview.json'; }; export type PreviewDTextResponses = { /** * Success */ 200: DTextResponse; }; export type PreviewDTextResponse = PreviewDTextResponses[keyof PreviewDTextResponses]; export type SearchEditHistoriesData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[body_matches]'?: string; 'search[subject_matches]'?: string; 'search[versionable_type]'?: 'Blip' | 'Comment' | 'ForumPost'; 'search[versionable_id]'?: number; 'search[editor_id]'?: number; 'search[editor_name]'?: string; }; url: '/edit_histories.json'; }; export type SearchEditHistoriesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type SearchEditHistoriesError = SearchEditHistoriesErrors[keyof SearchEditHistoriesErrors]; export type SearchEditHistoriesResponses = { /** * Success */ 200: Array; }; export type SearchEditHistoriesResponse = SearchEditHistoriesResponses[keyof SearchEditHistoriesResponses]; export type GetEditHistoryData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query: { /** * The versionable type. */ type: 'Blip' | 'Comment' | 'ForumPost'; }; url: '/edit_histories/{id}.json'; }; export type GetEditHistoryErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type GetEditHistoryError = GetEditHistoryErrors[keyof GetEditHistoryErrors]; export type GetEditHistoryResponses = { /** * Success */ 200: Array; }; export type GetEditHistoryResponse = GetEditHistoryResponses[keyof GetEditHistoryResponses]; export type SearchEmailBlacklistsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'reason' | 'domain'; 'search[domain]'?: string; 'search[reason]'?: string; }; url: '/email_blacklists.json'; }; export type SearchEmailBlacklistsResponses = { /** * Success */ 200: Array; }; export type SearchEmailBlacklistsResponse = SearchEmailBlacklistsResponses[keyof SearchEmailBlacklistsResponses]; export type CreateEmailBlacklistData = { body?: { 'email_blacklist[domain]': string; 'email_blacklist[reason]': string; }; path?: never; query?: never; url: '/email_blacklists.json'; }; export type CreateEmailBlacklistErrors = { /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateEmailBlacklistError = CreateEmailBlacklistErrors[keyof CreateEmailBlacklistErrors]; export type CreateEmailBlacklistResponses = { /** * Success */ 201: EmailBlacklist; }; export type CreateEmailBlacklistResponse = CreateEmailBlacklistResponses[keyof CreateEmailBlacklistResponses]; export type DeleteEmailBlacklistData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/email_blacklists/{id}.json'; }; export type DeleteEmailBlacklistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteEmailBlacklistError = DeleteEmailBlacklistErrors[keyof DeleteEmailBlacklistErrors]; export type DeleteEmailBlacklistResponses = { /** * Success */ 204: void; }; export type DeleteEmailBlacklistResponse = DeleteEmailBlacklistResponses[keyof DeleteEmailBlacklistResponses]; export type ListFavoritesData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * You must be the user or Moderator+ if the user has their favorites hidden. */ user_id?: number; }; url: '/favorites.json'; }; export type ListFavoritesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type ListFavoritesError = ListFavoritesErrors[keyof ListFavoritesErrors]; export type ListFavoritesResponses = { /** * Success */ 200: { posts: Array; }; }; export type ListFavoritesResponse = ListFavoritesResponses[keyof ListFavoritesResponses]; export type AddFavoriteData = { body?: { post_id: number; }; path?: never; query?: never; url: '/favorites.json'; }; export type AddFavoriteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type AddFavoriteError = AddFavoriteErrors[keyof AddFavoriteErrors]; export type AddFavoriteResponses = { /** * Success */ 201: { post_id: number; favorite_count: number; }; }; export type AddFavoriteResponse = AddFavoriteResponses[keyof AddFavoriteResponses]; export type RemoveFavoriteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/favorites/{id}.json'; }; export type RemoveFavoriteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RemoveFavoriteError = RemoveFavoriteErrors[keyof RemoveFavoriteErrors]; export type RemoveFavoriteResponses = { /** * Success */ 200: { post_id: number; favorite_count: number; }; }; export type RemoveFavoriteResponse = RemoveFavoriteResponses[keyof RemoveFavoriteResponses]; export type SearchForumPostsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[topic_id]'?: number; 'search[topic_title_matches]'?: string; 'search[body_matches]'?: string; 'search[topic_category_id]'?: number; 'search[is_hidden]'?: boolean; }; url: '/forum_posts.json'; }; export type SearchForumPostsResponses = { /** * Success */ 200: Array; }; export type SearchForumPostsResponse = SearchForumPostsResponses[keyof SearchForumPostsResponses]; export type CreateForumPostData = { body?: { 'forum_post[body]': string; 'forum_post[topic_id]': number; }; path?: never; query?: never; url: '/forum_posts.json'; }; export type CreateForumPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateForumPostError = CreateForumPostErrors[keyof CreateForumPostErrors]; export type CreateForumPostResponses = { /** * Success */ 201: ForumPost; }; export type CreateForumPostResponse = CreateForumPostResponses[keyof CreateForumPostResponses]; export type DeleteForumPostData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_posts/{id}.json'; }; export type DeleteForumPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteForumPostError = DeleteForumPostErrors[keyof DeleteForumPostErrors]; export type DeleteForumPostResponses = { /** * Success */ 204: void; }; export type DeleteForumPostResponse = DeleteForumPostResponses[keyof DeleteForumPostResponses]; export type GetForumPostData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_posts/{id}.json'; }; export type GetForumPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetForumPostError = GetForumPostErrors[keyof GetForumPostErrors]; export type GetForumPostResponses = { /** * Success */ 200: ForumPost; }; export type GetForumPostResponse = GetForumPostResponses[keyof GetForumPostResponses]; export type EditForumPostData = { body?: { 'forum_post[body]'?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_posts/{id}.json'; }; export type EditForumPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditForumPostError = EditForumPostErrors[keyof EditForumPostErrors]; export type EditForumPostResponses = { /** * Success */ 204: void; }; export type EditForumPostResponse = EditForumPostResponses[keyof EditForumPostResponses]; export type HideForumPostData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_posts/{id}/hide.json'; }; export type HideForumPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type HideForumPostError = HideForumPostErrors[keyof HideForumPostErrors]; export type HideForumPostResponses = { /** * Success */ 201: ForumPost; }; export type HideForumPostResponse = HideForumPostResponses[keyof HideForumPostResponses]; export type UnhideForumPostData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_posts/{id}/unhide.json'; }; export type UnhideForumPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UnhideForumPostError = UnhideForumPostErrors[keyof UnhideForumPostErrors]; export type UnhideForumPostResponses = { /** * Success */ 201: ForumPost; }; export type UnhideForumPostResponse = UnhideForumPostResponses[keyof UnhideForumPostResponses]; export type MarkForumPostData = { body?: Warning; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_posts/{id}/warning.json'; }; export type MarkForumPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type MarkForumPostError = MarkForumPostErrors[keyof MarkForumPostErrors]; export type MarkForumPostResponses = { /** * Success */ 200: DTextResponse; }; export type MarkForumPostResponse = MarkForumPostResponses[keyof MarkForumPostResponses]; export type DeleteForumPostVoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_posts/{id}/votes.json'; }; export type DeleteForumPostVoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type DeleteForumPostVoteError = DeleteForumPostVoteErrors[keyof DeleteForumPostVoteErrors]; export type DeleteForumPostVoteResponses = { /** * Success */ 204: void; }; export type DeleteForumPostVoteResponse = DeleteForumPostVoteResponses[keyof DeleteForumPostVoteResponses]; export type CreateForumPostVoteData = { body?: { 'forum_post_vote[score]': UpDownMehVote; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_posts/{id}/votes.json'; }; export type CreateForumPostVoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateForumPostVoteError = CreateForumPostVoteErrors[keyof CreateForumPostVoteErrors]; export type CreateForumPostVoteResponses = { /** * Success */ 200: ForumPostVote; }; export type CreateForumPostVoteResponse = CreateForumPostVoteResponses[keyof CreateForumPostVoteResponses]; export type SearchForumTopicsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'sticky'; 'search[title]'?: string; 'search[title_matches]'?: string; 'search[category_id]'?: number; 'search[is_sticky]'?: boolean; 'search[is_locked]'?: boolean; 'search[is_hidden]'?: boolean; }; url: '/forum_topics.json'; }; export type SearchForumTopicsResponses = { /** * Success */ 200: Array; }; export type SearchForumTopicsResponse = SearchForumTopicsResponses[keyof SearchForumTopicsResponses]; export type CreateForumTopicData = { body?: { 'forum_topic[title]': string; 'forum_topic[category_id]': number; /** * Forum post ID. Mutually exclusive with body, one must be provided. */ 'forum_topic[original_post_attributes][id]'?: number; /** * First forum post body. Mutually exclusive with id, one must be provided. */ 'forum_topic[original_post_attributes][body]'?: string; /** * You must be Moderator+. */ 'forum_topic[is_sticky]'?: boolean; /** * You must be Moderator+. */ 'forum_topic[is_locked]'?: boolean; }; path?: never; query?: never; url: '/forum_topics.json'; }; export type CreateForumTopicErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateForumTopicError = CreateForumTopicErrors[keyof CreateForumTopicErrors]; export type CreateForumTopicResponses = { /** * Success */ 201: ForumTopic; }; export type CreateForumTopicResponse = CreateForumTopicResponses[keyof CreateForumTopicResponses]; export type DeleteForumTopicData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_topics/{id}.json'; }; export type DeleteForumTopicErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteForumTopicError = DeleteForumTopicErrors[keyof DeleteForumTopicErrors]; export type DeleteForumTopicResponses = { /** * Success */ 204: void; }; export type DeleteForumTopicResponse = DeleteForumTopicResponses[keyof DeleteForumTopicResponses]; export type GetForumTopicData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_topics/{id}.json'; }; export type GetForumTopicErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetForumTopicError = GetForumTopicErrors[keyof GetForumTopicErrors]; export type GetForumTopicResponses = { /** * Success */ 200: ForumTopic; }; export type GetForumTopicResponse = GetForumTopicResponses[keyof GetForumTopicResponses]; export type EditForumTopicData = { body?: { 'forum_topic[title]'?: string; 'forum_topic[category_id]'?: number; /** * Forum post ID. Silently ignored */ 'forum_topic[original_post_attributes][id]'?: number; /** * First forum post body. */ 'forum_topic[original_post_attributes][body]'?: string; /** * You must be Moderator+. */ 'forum_topic[is_sticky]'?: boolean; /** * You must be Moderator+. */ 'forum_topic[is_locked]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_topics/{id}.json'; }; export type EditForumTopicErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditForumTopicError = EditForumTopicErrors[keyof EditForumTopicErrors]; export type EditForumTopicResponses = { /** * Success */ 204: void; }; export type EditForumTopicResponse = EditForumTopicResponses[keyof EditForumTopicResponses]; export type HideForumTopicData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_topics/{id}/hide.json'; }; export type HideForumTopicErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type HideForumTopicError = HideForumTopicErrors[keyof HideForumTopicErrors]; export type HideForumTopicResponses = { /** * Success */ 201: ForumTopic; }; export type HideForumTopicResponse = HideForumTopicResponses[keyof HideForumTopicResponses]; export type UnhideForumTopicData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_topics/{id}/unhide.json'; }; export type UnhideForumTopicErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UnhideForumTopicError = UnhideForumTopicErrors[keyof UnhideForumTopicErrors]; export type UnhideForumTopicResponses = { /** * Success */ 201: ForumTopic; }; export type UnhideForumTopicResponse = UnhideForumTopicResponses[keyof UnhideForumTopicResponses]; export type SubscribeForumTopicData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_topics/{id}/subscribe.json'; }; export type SubscribeForumTopicErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type SubscribeForumTopicError = SubscribeForumTopicErrors[keyof SubscribeForumTopicErrors]; export type SubscribeForumTopicResponses = { /** * Success */ 201: ForumTopic; }; export type SubscribeForumTopicResponse = SubscribeForumTopicResponses[keyof SubscribeForumTopicResponses]; export type UnsubscribeForumTopicData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/forum_topics/{id}/unsubscribe.json'; }; export type UnsubscribeForumTopicErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UnsubscribeForumTopicError = UnsubscribeForumTopicErrors[keyof UnsubscribeForumTopicErrors]; export type UnsubscribeForumTopicResponses = { /** * Success */ 201: ForumTopic; }; export type UnsubscribeForumTopicResponse = UnsubscribeForumTopicResponses[keyof UnsubscribeForumTopicResponses]; export type MarkAllForumTopicsAsReadData = { body?: { category_id: number; }; path?: never; query?: never; url: '/forum_topics/mark_all_as_read.json'; }; export type MarkAllForumTopicsAsReadErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type MarkAllForumTopicsAsReadError = MarkAllForumTopicsAsReadErrors[keyof MarkAllForumTopicsAsReadErrors]; export type MarkAllForumTopicsAsReadResponses = { /** * Success */ 204: void; }; export type MarkAllForumTopicsAsReadResponse = MarkAllForumTopicsAsReadResponses[keyof MarkAllForumTopicsAsReadResponses]; export type ListHelpPagesData = { body?: never; path?: never; query?: never; url: '/help.json'; }; export type ListHelpPagesResponses = { /** * Success */ 200: Array; }; export type ListHelpPagesResponse = ListHelpPagesResponses[keyof ListHelpPagesResponses]; export type CreateHelpPageData = { body?: { 'help_page[name]': string; 'help_page[wiki_page]': string; /** * Separate with a comma followed by a space. */ 'help_page[related]'?: string; 'help_page[title]'?: string; }; path?: never; query?: never; url: '/help.json'; }; export type CreateHelpPageErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateHelpPageError = CreateHelpPageErrors[keyof CreateHelpPageErrors]; export type CreateHelpPageResponses = { /** * Success */ 201: Help; }; export type CreateHelpPageResponse = CreateHelpPageResponses[keyof CreateHelpPageResponses]; export type DeleteHelpPageData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/help/{id}.json'; }; export type DeleteHelpPageErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteHelpPageError = DeleteHelpPageErrors[keyof DeleteHelpPageErrors]; export type DeleteHelpPageResponses = { /** * Success */ 204: void; }; export type DeleteHelpPageResponse = DeleteHelpPageResponses[keyof DeleteHelpPageResponses]; export type GetHelpPageData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ id: number | string; }; query?: never; url: '/help/{id}.json'; }; export type GetHelpPageErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetHelpPageError = GetHelpPageErrors[keyof GetHelpPageErrors]; export type GetHelpPageResponses = { /** * Success */ 200: Help; }; export type GetHelpPageResponse = GetHelpPageResponses[keyof GetHelpPageResponses]; export type EditHelpPageData = { body?: { 'help_page[name]'?: string; 'help_page[wiki_page]'?: string; /** * Separate with a comma followed by a space. */ 'help_page[related]'?: string; 'help_page[title]'?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/help/{id}.json'; }; export type EditHelpPageErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditHelpPageError = EditHelpPageErrors[keyof EditHelpPageErrors]; export type EditHelpPageResponses = { /** * Success */ 204: void; }; export type EditHelpPageResponse = EditHelpPageResponses[keyof EditHelpPageResponses]; export type ListIpBansData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[banner_id]'?: number; 'search[banner_name]'?: string; 'search[reason]'?: string; }; url: '/ip_bans.json'; }; export type ListIpBansResponses = { /** * Success */ 200: Array; }; export type ListIpBansResponse = ListIpBansResponses[keyof ListIpBansResponses]; export type CreateIpBanData = { body?: { 'ip_ban[ip_addr]': string; 'ip_ban[reason]': string; }; path?: never; query?: never; url: '/ip_bans.json'; }; export type CreateIpBanErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateIpBanError = CreateIpBanErrors[keyof CreateIpBanErrors]; export type CreateIpBanResponses = { /** * Success */ 201: IpBan; }; export type CreateIpBanResponse = CreateIpBanResponses[keyof CreateIpBanResponses]; export type DeleteIpBanData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/ip_bans/{id}.json'; }; export type DeleteIpBanErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteIpBanError = DeleteIpBanErrors[keyof DeleteIpBanErrors]; export type DeleteIpBanResponses = { /** * Success */ 204: void; }; export type DeleteIpBanResponse = DeleteIpBanResponses[keyof DeleteIpBanResponses]; export type QueryIqdbGetData = { body?: never; path?: never; query?: { 'search[score_cutoff]'?: number; 'search[url]'?: string; 'search[post_id]'?: number; 'search[hash]'?: string; }; url: '/iqdb_queries.json'; }; export type QueryIqdbGetErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type QueryIqdbGetError = QueryIqdbGetErrors[keyof QueryIqdbGetErrors]; export type QueryIqdbGetResponses = { /** * Success */ 200: Array; }; export type QueryIqdbGetResponse = QueryIqdbGetResponses[keyof QueryIqdbGetResponses]; export type QueryIqdbPostData = { body?: { score_cutoff?: number; url?: string; post_id?: string; hash?: string; }; path?: never; query?: never; url: '/iqdb_queries.json'; }; export type QueryIqdbPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type QueryIqdbPostError = QueryIqdbPostErrors[keyof QueryIqdbPostErrors]; export type QueryIqdbPostResponses = { /** * Success */ 200: Array; }; export type QueryIqdbPostResponse = QueryIqdbPostResponses[keyof QueryIqdbPostResponses]; export type SearchMascotsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; }; url: '/mascots.json'; }; export type SearchMascotsResponses = { /** * Success */ 200: Array; }; export type SearchMascotsResponse = SearchMascotsResponses[keyof SearchMascotsResponses]; export type CreateMascotData = { body?: { 'mascot[mascot_file]': Blob | File; 'mascot[display_name]': string; 'mascot[background_color]': string; 'mascot[artist_url]': string; 'mascot[artist_name]': string; /** * Comma separated site names. */ 'mascot[available_on_string]'?: string; 'mascot[active]'?: boolean; 'mascot[hide_anonymous]'?: boolean; }; path?: never; query?: never; url: '/mascots.json'; }; export type CreateMascotErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateMascotError = CreateMascotErrors[keyof CreateMascotErrors]; export type CreateMascotResponses = { /** * Success */ 201: Mascot; }; export type CreateMascotResponse = CreateMascotResponses[keyof CreateMascotResponses]; export type DeleteMascotData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/mascots/{id}.json'; }; export type DeleteMascotErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteMascotError = DeleteMascotErrors[keyof DeleteMascotErrors]; export type DeleteMascotResponses = { /** * Success */ 204: void; }; export type DeleteMascotResponse = DeleteMascotResponses[keyof DeleteMascotResponses]; export type EditMascotData = { body?: { 'mascot[mascot_file]'?: Blob | File; 'mascot[display_name]'?: string; 'mascot[background_color]'?: string; 'mascot[artist_url]'?: string; 'mascot[artist_name]'?: string; /** * Comma separated site names. */ 'mascot[available_on_string]'?: string; 'mascot[active]'?: boolean; 'mascot[hide_anonymous]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/mascots/{id}.json'; }; export type EditMascotErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditMascotError = EditMascotErrors[keyof EditMascotErrors]; export type EditMascotResponses = { /** * Success */ 204: void; }; export type EditMascotResponse = EditMascotResponses[keyof EditMascotResponses]; export type SearchModActionsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc'; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[action]'?: ModActionActions; }; url: '/mod_actions.json'; }; export type SearchModActionsResponses = { /** * Success */ 200: Array; }; export type SearchModActionsResponse = SearchModActionsResponses[keyof SearchModActionsResponses]; export type GetModActionData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/mod_actions/{id}.json'; }; export type GetModActionErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetModActionError = GetModActionErrors[keyof GetModActionErrors]; export type GetModActionResponses = { /** * Success */ 200: ModAction; }; export type GetModActionResponse = GetModActionResponses[keyof GetModActionResponses]; export type ListNewsUpdatesData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; }; url: '/news_updates.json'; }; export type ListNewsUpdatesResponses = { /** * Success */ 200: Array; }; export type ListNewsUpdatesResponse = ListNewsUpdatesResponses[keyof ListNewsUpdatesResponses]; export type CreateNewsUpdateData = { body?: { 'news_update[message]': string; }; path?: never; query?: never; url: '/news_updates.json'; }; export type CreateNewsUpdateErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateNewsUpdateError = CreateNewsUpdateErrors[keyof CreateNewsUpdateErrors]; export type CreateNewsUpdateResponses = { /** * Success */ 201: NewsUpdate; }; export type CreateNewsUpdateResponse = CreateNewsUpdateResponses[keyof CreateNewsUpdateResponses]; export type DeleteNewsUpdateData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/news_updates/{id}.json'; }; export type DeleteNewsUpdateErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteNewsUpdateError = DeleteNewsUpdateErrors[keyof DeleteNewsUpdateErrors]; export type DeleteNewsUpdateResponses = { /** * Success */ 204: void; }; export type DeleteNewsUpdateResponse = DeleteNewsUpdateResponses[keyof DeleteNewsUpdateResponses]; export type EditNewsUpdateData = { body?: { 'news_update[message]': string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/news_updates/{id}.json'; }; export type EditNewsUpdateErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditNewsUpdateError = EditNewsUpdateErrors[keyof EditNewsUpdateErrors]; export type EditNewsUpdateResponses = { /** * Success */ 204: void; }; export type EditNewsUpdateResponse = EditNewsUpdateResponses[keyof EditNewsUpdateResponses]; export type SearchNotesData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[body_matches]'?: string; 'search[is_active]'?: boolean; 'search[post_id]'?: number; 'search[post_tags_match]'?: string; 'search[post_note_updater_id]'?: number; 'search[post_note_updater_name]'?: string; 'search[creator_id]'?: number; 'search[creator_name]'?: string; }; url: '/notes.json'; }; export type SearchNotesResponses = { /** * Success */ 200: Array; }; export type SearchNotesResponse = SearchNotesResponses[keyof SearchNotesResponses]; export type CreateNoteData = { body?: { 'note[post_id]': number; 'note[x]': number; 'note[y]': number; 'note[width]': number; 'note[height]': number; 'note[body]': string; /** * Passthrough, used in frontend. */ 'note[html_id]'?: string; }; path?: never; query?: never; url: '/notes.json'; }; export type CreateNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateNoteError = CreateNoteErrors[keyof CreateNoteErrors]; export type CreateNoteResponses = { /** * Success */ 201: Note & { /** * Passthrough, used in frontend. */ html_id: string; }; }; export type CreateNoteResponse = CreateNoteResponses[keyof CreateNoteResponses]; export type DeleteNoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/notes/{id}.json'; }; export type DeleteNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteNoteError = DeleteNoteErrors[keyof DeleteNoteErrors]; export type DeleteNoteResponses = { /** * Success */ 204: void; }; export type DeleteNoteResponse = DeleteNoteResponses[keyof DeleteNoteResponses]; export type GetNoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/notes/{id}.json'; }; export type GetNoteErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetNoteError = GetNoteErrors[keyof GetNoteErrors]; export type GetNoteResponses = { /** * Success */ 200: Note; }; export type GetNoteResponse = GetNoteResponses[keyof GetNoteResponses]; export type EditNoteData = { body?: { 'note[x]'?: number; 'note[y]'?: number; 'note[width]'?: number; 'note[height]'?: number; 'note[body]'?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/notes/{id}.json'; }; export type EditNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditNoteError = EditNoteErrors[keyof EditNoteErrors]; export type EditNoteResponses = { /** * Success */ 204: void; }; export type EditNoteResponse = EditNoteResponses[keyof EditNoteResponses]; export type RevertNoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query: { /** * The version ID to revert to. */ version_id: number; }; url: '/notes/{id}/revert.json'; }; export type RevertNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RevertNoteError = RevertNoteErrors[keyof RevertNoteErrors]; export type RevertNoteResponses = { /** * Success */ 204: void; }; export type RevertNoteResponse = RevertNoteResponses[keyof RevertNoteResponses]; export type SearchNoteVersionsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[updater_id]'?: number; 'search[updater_name]'?: string; 'search[post_id]'?: number; 'search[note_id]'?: number; 'search[is_active]'?: boolean; 'search[body_matches]'?: string; }; url: '/note_versions.json'; }; export type SearchNoteVersionsResponses = { /** * Success */ 200: Array; }; export type SearchNoteVersionsResponse = SearchNoteVersionsResponses[keyof SearchNoteVersionsResponses]; export type SearchPoolsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'name' | 'created_at' | 'post_count'; 'search[name_matches]'?: string; 'search[description_matches]'?: string; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[category]'?: PoolCategories; 'search[is_active]'?: boolean; }; url: '/pools.json'; }; export type SearchPoolsResponses = { /** * Success */ 200: Array; }; export type SearchPoolsResponse = SearchPoolsResponses[keyof SearchPoolsResponses]; export type CreatePoolData = { body?: { 'pool[name]': string; 'pool[description]'?: string; 'pool[category]'?: PoolCategories; 'pool[is_active]'?: boolean; /** * Space separated list of post IDs. Mutually exclusive with post_ids. */ 'pool[post_ids_string]'?: string; /** * Array of post IDs. Mutually exclusive with post_ids_string. */ 'pool[post_ids]'?: Array; }; path?: never; query?: never; url: '/pools.json'; }; export type CreatePoolErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreatePoolError = CreatePoolErrors[keyof CreatePoolErrors]; export type CreatePoolResponses = { /** * Success */ 201: Pool; }; export type CreatePoolResponse = CreatePoolResponses[keyof CreatePoolResponses]; export type DeletePoolData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/pools/{id}.json'; }; export type DeletePoolErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeletePoolError = DeletePoolErrors[keyof DeletePoolErrors]; export type DeletePoolResponses = { /** * Success */ 204: void; }; export type DeletePoolResponse = DeletePoolResponses[keyof DeletePoolResponses]; export type GetPoolData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/pools/{id}.json'; }; export type GetPoolErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetPoolError = GetPoolErrors[keyof GetPoolErrors]; export type GetPoolResponses = { /** * Success */ 200: Pool; }; export type GetPoolResponse = GetPoolResponses[keyof GetPoolResponses]; export type EditPoolData = { body?: { 'pool[name]'?: string; 'pool[description]'?: string; 'pool[is_active]'?: boolean; 'pool[category]'?: PoolCategories; /** * Space separated list of post IDs. Mutually exclusive with post_ids. */ 'pool[post_ids_string]'?: string; /** * Array of post IDs. Mutually exclusive with post_ids_string. */ 'pool[post_ids]'?: Array; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/pools/{id}.json'; }; export type EditPoolErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditPoolError = EditPoolErrors[keyof EditPoolErrors]; export type EditPoolResponses = { /** * Success */ 204: void; }; export type EditPoolResponse = EditPoolResponses[keyof EditPoolResponses]; export type RevertPoolData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query: { /** * The version ID to revert to. */ version_id: number; }; url: '/pools/{id}/revert.json'; }; export type RevertPoolErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RevertPoolError = RevertPoolErrors[keyof RevertPoolErrors]; export type RevertPoolResponses = { /** * Success */ 204: void; }; export type RevertPoolResponse = RevertPoolResponses[keyof RevertPoolResponses]; export type RemovePostFromPoolData = { body?: { /** * Mutually exclusive with pool_name. */ pool_id?: number; /** * Mutually exclusive with pool_id. The value is not normalized. */ pool_name?: string; post_id: number; }; path?: never; query?: never; url: '/pool_element.json'; }; export type RemovePostFromPoolErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type RemovePostFromPoolError = RemovePostFromPoolErrors[keyof RemovePostFromPoolErrors]; export type RemovePostFromPoolResponses = { /** * Success */ 204: void; }; export type RemovePostFromPoolResponse = RemovePostFromPoolResponses[keyof RemovePostFromPoolResponses]; export type AddPostToPoolData = { body?: { /** * Mutually exclusive with pool_name. */ pool_id?: number; /** * Mutually exclusive with pool_id. */ pool_name?: string; post_id: number; }; path?: never; query?: never; url: '/pool_element.json'; }; export type AddPostToPoolErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type AddPostToPoolError = AddPostToPoolErrors[keyof AddPostToPoolErrors]; export type AddPostToPoolResponses = { /** * Success */ 201: Pool; }; export type AddPostToPoolResponse = AddPostToPoolResponses[keyof AddPostToPoolResponses]; export type GetRecentPoolsData = { body?: { /** * Mutually exclusive with pool_name. */ pool_id?: number; /** * Mutually exclusive with pool_id. The value is not normalized. */ pool_name?: string; post_id: number; }; path?: never; query?: never; url: '/pool_element/recent.json'; }; export type GetRecentPoolsResponses = { /** * Success */ 200: Array<{ id: string; name: string; }>; }; export type GetRecentPoolsResponse = GetRecentPoolsResponses[keyof GetRecentPoolsResponses]; export type SearchPoolVersionsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[updater_id]'?: number; 'search[updater_name]'?: string; 'search[pool_id]'?: number; }; url: '/pool_versions.json'; }; export type SearchPoolVersionsResponses = { /** * Success */ 200: Array; }; export type SearchPoolVersionsResponse = SearchPoolVersionsResponses[keyof SearchPoolVersionsResponses]; export type ListPopularData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The date to list popular uploads for. Only The day, month, and year are considered. */ date?: string; /** * The scale of the results, in relation to `date`. */ scale?: 'month' | 'week' | 'day'; }; url: '/popular.json'; }; export type ListPopularResponses = { /** * Success */ 200: { posts: Array; }; }; export type ListPopularResponse = ListPopularResponses[keyof ListPopularResponses]; export type SearchPostsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; tags?: string; md5?: string; random?: string; }; url: '/posts.json'; }; export type SearchPostsResponses = { /** * Success */ 200: { posts: Array; }; }; export type SearchPostsResponse = SearchPostsResponses[keyof SearchPostsResponses]; export type GetRandomPostData = { body?: never; path?: never; query?: { tags?: string; }; url: '/posts/random.json'; }; export type GetRandomPostErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetRandomPostError = GetRandomPostErrors[keyof GetRandomPostErrors]; export type GetRandomPostResponses = { /** * Success */ 200: { post: Post; }; }; export type GetRandomPostResponse = GetRandomPostResponses[keyof GetRandomPostResponses]; export type GetPostData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/posts/{id}.json'; }; export type GetPostErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetPostError = GetPostErrors[keyof GetPostErrors]; export type GetPostResponses = { /** * Success */ 200: { post: Post; }; }; export type GetPostResponse = GetPostResponses[keyof GetPostResponses]; export type EditPostData = { body?: { /** * Replaces all tags on the post. */ 'post[tag_string]'?: string; /** * The tag string before your edits, used to reconcile conflicts. */ 'post[old_tag_string]'?: string; /** * Tags with a minus are removed, else they are added. Mutually exclusive with tag_string. */ 'post[tag_string_diff]'?: string; /** * Sources with a minus are removed, else they are added. It is not possible to add inactive sources through this. Mutually exclusive with source. */ 'post[source_diff]'?: string; /** * Replaces all sources on the post. */ 'post[source]'?: string; /** * The sources before your edits, used to reconcile conflicts. */ 'post[old_source]'?: string; 'post[parent_id]'?: number; 'post[old_parent_id]'?: number; 'post[description]'?: string; 'post[old_description]'?: string; 'post[rating]'?: Ratings; 'post[old_rating]'?: Ratings; 'post[edit_reason]'?: string; /** * You must be Privileged+. */ 'post[is_rating_locked]'?: boolean; /** * You must be Janitor+. */ 'post[is_note_locked]'?: boolean; /** * You must be Janitor+. */ 'post[bg_colo]r'?: string; /** * You must be Moderator+. */ 'post[is_comment_locked]'?: boolean; /** * You must be Admin+. */ 'post[is_comment_disabled]'?: boolean; /** * You must be Admin+. */ 'post[is_status_locked]'?: boolean; /** * You must be Admin+. */ 'post[locked_tags]'?: string; /** * You must be Admin+. */ 'post[hide_from_anonymous]'?: boolean; /** * You must be Admin+. */ 'post[hide_from_search_engines]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/posts/{id}.json'; }; export type EditPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditPostError = EditPostErrors[keyof EditPostErrors]; export type EditPostResponses = { /** * Success */ 200: Post; }; export type EditPostResponse = EditPostResponses[keyof EditPostResponses]; export type UpdatePostIqdbData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/posts/{id}/update_iqdb.json'; }; export type UpdatePostIqdbErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type UpdatePostIqdbError = UpdatePostIqdbErrors[keyof UpdatePostIqdbErrors]; export type UpdatePostIqdbResponses = { /** * Success */ 200: { post: Post; }; }; export type UpdatePostIqdbResponse = UpdatePostIqdbResponses[keyof UpdatePostIqdbResponses]; export type MarkPostAsTranslatedData = { body?: { translation_check?: boolean; partially_translated?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/posts/{id}/mark_as_translated.json'; }; export type MarkPostAsTranslatedErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type MarkPostAsTranslatedError = MarkPostAsTranslatedErrors[keyof MarkPostAsTranslatedErrors]; export type MarkPostAsTranslatedResponses = { /** * Success */ 200: { post: Post; }; }; export type MarkPostAsTranslatedResponse = MarkPostAsTranslatedResponses[keyof MarkPostAsTranslatedResponses]; export type CopyNotesToPostData = { body?: { other_post_id: number; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/posts/{id}/copy_notes.json'; }; export type CopyNotesToPostErrors = { /** * Error */ 400: MessageErrorResponse; /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type CopyNotesToPostError = CopyNotesToPostErrors[keyof CopyNotesToPostErrors]; export type CopyNotesToPostResponses = { /** * Success */ 204: void; }; export type CopyNotesToPostResponse = CopyNotesToPostResponses[keyof CopyNotesToPostResponses]; export type RevertPostData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query: { /** * The version ID to revert to. */ version_id: number; }; url: '/posts/{id}/revert.json'; }; export type RevertPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RevertPostError = RevertPostErrors[keyof RevertPostErrors]; export type RevertPostResponses = { /** * Success */ 204: void; }; export type RevertPostResponse = RevertPostResponses[keyof RevertPostResponses]; export type GetPostInSequenceData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: { /** * The direction to move in the sequence. */ seq?: 'next' | 'prev'; }; url: '/posts/{id}/show_seq.json'; }; export type GetPostInSequenceErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type GetPostInSequenceError = GetPostInSequenceErrors[keyof GetPostInSequenceErrors]; export type GetPostInSequenceResponses = { /** * Success */ 200: { post: Post; }; }; export type GetPostInSequenceResponse = GetPostInSequenceResponses[keyof GetPostInSequenceResponses]; export type UnflagPostData = { body?: { /** * Approves the post if set to "approve". */ approval?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/posts/{id}/flag.json'; }; export type UnflagPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UnflagPostError = UnflagPostErrors[keyof UnflagPostErrors]; export type UnflagPostResponses = { /** * Success */ 204: void; }; export type UnflagPostResponse = UnflagPostResponses[keyof UnflagPostResponses]; export type ListPostFavoritesData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: { /** * The maximum number of results to return. Between 1 and 100. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; }; url: '/posts/{id}/favorites.json'; }; export type ListPostFavoritesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type ListPostFavoritesError = ListPostFavoritesErrors[keyof ListPostFavoritesErrors]; export type ListPostFavoritesResponses = { /** * Success */ 200: Array; }; export type ListPostFavoritesResponse = ListPostFavoritesResponses[keyof ListPostFavoritesResponses]; export type DeletePostVoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/posts/{id}/votes.json'; }; export type DeletePostVoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type DeletePostVoteError = DeletePostVoteErrors[keyof DeletePostVoteErrors]; export type DeletePostVoteResponses = { /** * Success */ 204: void; }; export type DeletePostVoteResponse = DeletePostVoteResponses[keyof DeletePostVoteResponses]; export type CreatePostVoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query: { score: UpDownVote; no_unvote?: boolean; }; url: '/posts/{id}/votes.json'; }; export type CreatePostVoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreatePostVoteError = CreatePostVoteErrors[keyof CreatePostVoteErrors]; export type CreatePostVoteResponses = { /** * Success */ 200: { score: number; up: number; down: number; our_score: number; }; }; export type CreatePostVoteResponse = CreatePostVoteResponses[keyof CreatePostVoteResponses]; export type GetRecommendedPostsData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; }; url: '/posts/{id}/recommended.json'; }; export type GetRecommendedPostsErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetRecommendedPostsError = GetRecommendedPostsErrors[keyof GetRecommendedPostsErrors]; export type GetRecommendedPostsResponses = { /** * Success */ 200: RecommendedPosts; }; export type GetRecommendedPostsResponse = GetRecommendedPostsResponses[keyof GetRecommendedPostsResponses]; export type SearchPostSetsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'name' | 'shortname' | 'post_count' | 'postcount' | 'created_at' | 'updated_at' | 'update'; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[name]'?: string; 'search[shortname]'?: string; /** * You must be Moderator+. */ 'search[is_public]'?: boolean; 'search[post_id]'?: number; 'search[maintainer_id]'?: number; }; url: '/post_sets.json'; }; export type SearchPostSetsResponses = { /** * Success */ 200: Array; }; export type SearchPostSetsResponse = SearchPostSetsResponses[keyof SearchPostSetsResponses]; export type CreatePostSetData = { body?: { 'post_set[name]': string; 'post_set[shortname]': string; 'post_set[description]'?: string; 'post_set[is_public]'?: boolean; 'post_set[ransfer_on_delete]'?: boolean; }; path?: never; query?: never; url: '/post_sets.json'; }; export type CreatePostSetErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreatePostSetError = CreatePostSetErrors[keyof CreatePostSetErrors]; export type CreatePostSetResponses = { /** * Success */ 201: PostSet; }; export type CreatePostSetResponse = CreatePostSetResponses[keyof CreatePostSetResponses]; export type DeletePostSetData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_sets/{id}.json'; }; export type DeletePostSetErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeletePostSetError = DeletePostSetErrors[keyof DeletePostSetErrors]; export type DeletePostSetResponses = { /** * Success */ 204: void; }; export type DeletePostSetResponse = DeletePostSetResponses[keyof DeletePostSetResponses]; export type GetPostSetData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_sets/{id}.json'; }; export type GetPostSetErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetPostSetError = GetPostSetErrors[keyof GetPostSetErrors]; export type GetPostSetResponses = { /** * Success */ 200: PostSet; }; export type GetPostSetResponse = GetPostSetResponses[keyof GetPostSetResponses]; export type EditPostSetData = { body?: { 'post_set[name]'?: string; 'post_set[shortname]'?: string; 'post_set[description]'?: string; 'post_set[is_public]'?: boolean; 'post_set[transfer_on_delete]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_sets/{id}.json'; }; export type EditPostSetErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditPostSetError = EditPostSetErrors[keyof EditPostSetErrors]; export type EditPostSetResponses = { /** * Success */ 204: void; }; export type EditPostSetResponse = EditPostSetResponses[keyof EditPostSetResponses]; export type UpdatePostSetPostsData = { body?: { 'post_set[post_ids_string]': string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_sets/{id}/update_posts.json'; }; export type UpdatePostSetPostsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type UpdatePostSetPostsError = UpdatePostSetPostsErrors[keyof UpdatePostSetPostsErrors]; export type UpdatePostSetPostsResponses = { /** * Success */ 200: PostSet; }; export type UpdatePostSetPostsResponse = UpdatePostSetPostsResponses[keyof UpdatePostSetPostsResponses]; export type AddPostsToPostSetData = { body?: { /** * post_ids[]=1&post_ids[]=2 */ post_ids: Array; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_sets/{id}/add_posts.json'; }; export type AddPostsToPostSetErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type AddPostsToPostSetError = AddPostsToPostSetErrors[keyof AddPostsToPostSetErrors]; export type AddPostsToPostSetResponses = { /** * Success */ 201: PostSet; }; export type AddPostsToPostSetResponse = AddPostsToPostSetResponses[keyof AddPostsToPostSetResponses]; export type RemovePostsFromPostSetData = { body?: { /** * post_ids[]=1&post_ids[]=2 */ post_ids: Array; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_sets/{id}/remove_posts.json'; }; export type RemovePostsFromPostSetErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RemovePostsFromPostSetError = RemovePostsFromPostSetErrors[keyof RemovePostsFromPostSetErrors]; export type RemovePostsFromPostSetResponses = { /** * Success */ 201: PostSet; }; export type RemovePostsFromPostSetResponse = RemovePostsFromPostSetResponses[keyof RemovePostsFromPostSetResponses]; export type ListPostSetsForSelectData = { body?: never; path?: never; query?: never; url: '/post_sets/for_select.json'; }; export type ListPostSetsForSelectErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type ListPostSetsForSelectError = ListPostSetsForSelectErrors[keyof ListPostSetsForSelectErrors]; export type ListPostSetsForSelectResponses = { /** * Success */ 200: { Owned?: Array; Maintained?: Array; }; }; export type ListPostSetsForSelectResponse = ListPostSetsForSelectResponses[keyof ListPostSetsForSelectResponses]; export type SearchPostApprovalsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[post_tags_match]'?: string; 'search[user_id]'?: number; 'search[user_name]'?: string; 'search[post_id]'?: number; }; url: '/post_approvals.json'; }; export type SearchPostApprovalsResponses = { /** * Success */ 200: Array; }; export type SearchPostApprovalsResponse = SearchPostApprovalsResponses[keyof SearchPostApprovalsResponses]; export type SearchPostEventsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[post_id]'?: number; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[action]'?: PostEventActions; }; url: '/post_events.json'; }; export type SearchPostEventsResponses = { /** * Success */ 200: { post_events: Array; }; }; export type SearchPostEventsResponse = SearchPostEventsResponses[keyof SearchPostEventsResponses]; export type SearchPostFlagsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[reason_matches]'?: string; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[post_id]'?: number; 'search[post_tags_match]'?: string; 'search[type]'?: string; 'search[is_resolved]'?: boolean; }; url: '/post_flags.json'; }; export type SearchPostFlagsResponses = { /** * Success */ 200: Array; }; export type SearchPostFlagsResponse = SearchPostFlagsResponses[keyof SearchPostFlagsResponses]; export type CreatePostFlagData = { body?: { 'post_flag[post_id]': number; 'post_flag[reason_name]': 'uploading_guidelines' | 'young_human' | 'dnp_artist' | 'pay_content' | 'trace' | 'previously_deleted' | 'real_porn' | 'corrupt' | 'inferior'; 'post_flag[parent_id]'?: number; 'post_flag[note]'?: string; }; path?: never; query?: never; url: '/post_flags.json'; }; export type CreatePostFlagErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreatePostFlagError = CreatePostFlagErrors[keyof CreatePostFlagErrors]; export type CreatePostFlagResponses = { /** * Success */ 201: PostFlag; }; export type CreatePostFlagResponse = CreatePostFlagResponses[keyof CreatePostFlagResponses]; export type GetPostFlagData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_flags/{id}.json'; }; export type GetPostFlagErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetPostFlagError = GetPostFlagErrors[keyof GetPostFlagErrors]; export type GetPostFlagResponses = { /** * Success */ 200: PostFlag; }; export type GetPostFlagResponse = GetPostFlagResponses[keyof GetPostFlagResponses]; export type ClearPostFlagNoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_flags/{id}/clear_note.json'; }; export type ClearPostFlagNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type ClearPostFlagNoteError = ClearPostFlagNoteErrors[keyof ClearPostFlagNoteErrors]; export type ClearPostFlagNoteResponses = { /** * Success */ 201: PostFlag; }; export type ClearPostFlagNoteResponse = ClearPostFlagNoteResponses[keyof ClearPostFlagNoteResponses]; export type SearchPostReplacementsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[file_ext]'?: string; 'search[md5]'?: string; 'search[status]'?: string; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[approver_id]'?: number; 'search[approver_name]'?: string; 'search[uploader_name_on_approve]'?: string; 'search[uploader_id_on_approve]'?: number; /** * Allows a comma separated list of up to 100 post IDs. * */ 'search[post_id]'?: string; 'search[reason]'?: string; 'search[penalized]'?: boolean; 'search[source]'?: string; 'search[file_name]'?: string; }; url: '/post_replacements.json'; }; export type SearchPostReplacementsResponses = { /** * Success */ 200: Array; }; export type SearchPostReplacementsResponse = SearchPostReplacementsResponses[keyof SearchPostReplacementsResponses]; export type CreatePostReplacementData = { body?: { /** * Mutually exclusive with replacement_url. */ 'post_replacement[replacement_file]'?: Blob | File; /** * Mutually exclusive with replacement_file. */ 'post_replacement[replacement_url]'?: string; 'post_replacement[reason]': string; 'post_replacement[source]'?: string; /** * You must be Janitor+. */ 'post_replacement[as_pending]'?: boolean; }; path?: never; query?: never; url: '/post_replacements.json'; }; export type CreatePostReplacementErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Error */ 412: MessageErrorResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreatePostReplacementError = CreatePostReplacementErrors[keyof CreatePostReplacementErrors]; export type CreatePostReplacementResponses = { /** * Success */ 200: { success: true; location: string; }; }; export type CreatePostReplacementResponse = CreatePostReplacementResponses[keyof CreatePostReplacementResponses]; export type DeletePostReplacementData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_replacements/{id}.json'; }; export type DeletePostReplacementErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeletePostReplacementError = DeletePostReplacementErrors[keyof DeletePostReplacementErrors]; export type DeletePostReplacementResponses = { /** * Success */ 204: void; }; export type DeletePostReplacementResponse = DeletePostReplacementResponses[keyof DeletePostReplacementResponses]; export type ApprovePostReplacementData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_replacements/{id}/approve.json'; }; export type ApprovePostReplacementErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type ApprovePostReplacementError = ApprovePostReplacementErrors[keyof ApprovePostReplacementErrors]; export type ApprovePostReplacementResponses = { /** * Success */ 204: void; }; export type ApprovePostReplacementResponse = ApprovePostReplacementResponses[keyof ApprovePostReplacementResponses]; export type RejectPostReplacementData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_replacements/{id}/reject.json'; }; export type RejectPostReplacementErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RejectPostReplacementError = RejectPostReplacementErrors[keyof RejectPostReplacementErrors]; export type RejectPostReplacementResponses = { /** * Success */ 204: void; }; export type RejectPostReplacementResponse = RejectPostReplacementResponses[keyof RejectPostReplacementResponses]; export type PromotePostReplacementData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_replacements/{id}/promote.json'; }; export type PromotePostReplacementErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type PromotePostReplacementError = PromotePostReplacementErrors[keyof PromotePostReplacementErrors]; export type PromotePostReplacementResponses = { /** * Success */ 201: { post: Post; }; }; export type PromotePostReplacementResponse = PromotePostReplacementResponses[keyof PromotePostReplacementResponses]; export type TogglePostReplacementPenaltyData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_replacements/{id}/toggle_penalize.json'; }; export type TogglePostReplacementPenaltyErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type TogglePostReplacementPenaltyError = TogglePostReplacementPenaltyErrors[keyof TogglePostReplacementPenaltyErrors]; export type TogglePostReplacementPenaltyResponses = { /** * Success */ 204: void; }; export type TogglePostReplacementPenaltyResponse = TogglePostReplacementPenaltyResponses[keyof TogglePostReplacementPenaltyResponses]; export type SearchPostVersionsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. Note that for post versions specifically, you can only go through the 10,000 most recent results with page numbers. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[updater_name]'?: string; 'search[updater_id]'?: number; 'search[post_id]'?: number; 'search[start_id]'?: number; 'search[rating]'?: Ratings; 'search[rating_changed]'?: 'e' | 'q' | 's' | 'any'; 'search[parent_id]'?: number; 'search[parent_id_changed]'?: boolean; 'search[tags]'?: string; 'search[tags_removed]'?: string; 'search[tags_added]'?: string; 'search[locked_tags]'?: string; 'search[locked_tags_removed]'?: string; 'search[locked_tags_added]'?: string; 'search[reason]'?: string; 'search[description]'?: string; 'search[description_changed]'?: boolean; 'search[source_changed]'?: boolean; 'search[uploads]'?: 'included' | 'excluded' | 'only'; }; url: '/post_versions.json'; }; export type SearchPostVersionsResponses = { /** * Success */ 200: Array; }; export type SearchPostVersionsResponse = SearchPostVersionsResponses[keyof SearchPostVersionsResponses]; export type HidePostVersionData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_versions/{id}/hide.json'; }; export type HidePostVersionErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type HidePostVersionError = HidePostVersionErrors[keyof HidePostVersionErrors]; export type UnhidePostVersionData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_versions/{id}/unhide.json'; }; export type UnhidePostVersionErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UnhidePostVersionError = UnhidePostVersionErrors[keyof UnhidePostVersionErrors]; export type UndoPostVersionData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/post_versions/{id}/undo.json'; }; export type UndoPostVersionErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UndoPostVersionError = UndoPostVersionErrors[keyof UndoPostVersionErrors]; export type UndoPostVersionResponses = { /** * Success */ 204: void; }; export type UndoPostVersionResponse = UndoPostVersionResponses[keyof UndoPostVersionResponses]; export type SearchPostVotesData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. You must be Admin+. */ 'search[order]'?: 'id_asc' | 'id_desc' | 'ip_addr'; 'search[post_id]'?: number; 'search[user_name]'?: string; 'search[user_id]'?: number; /** * Only usable if one of `post_id`, `user_name`, or `user_id` is also provided. */ 'search[post_creator_name]'?: string; /** * Only usable if one of `post_id`, `user_name`, or `user_id` is also provided. */ 'search[post_creator_id]'?: number; /** * You must be Admin+. Only usable if one of `post_id`, `user_name`, or `user_id` is also provided. 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" (`<<=`). */ 'search[user_ip_addr]'?: string; /** * Only usable if one of `post_id`, `user_name`, or `user_id` is also provided. */ 'search[score]'?: UpDownVote; /** * You must be Admin+. Only usable if one of `post_id`, `user_name`, or `user_id` is also provided. */ 'search[duplicates_only]'?: boolean; }; url: '/post_votes.json'; }; export type SearchPostVotesResponses = { /** * Success */ 200: Array; }; export type SearchPostVotesResponse = SearchPostVotesResponses[keyof SearchPostVotesResponses]; export type LockPostVotesData = { body?: never; path?: never; query: { /** * The IDs of the post votes, comma separated. */ ids: string; }; url: '/post_votes/lock.json'; }; export type LockPostVotesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type LockPostVotesError = LockPostVotesErrors[keyof LockPostVotesErrors]; export type LockPostVotesResponses = { /** * Success */ 204: void; }; export type LockPostVotesResponse = LockPostVotesResponses[keyof LockPostVotesResponses]; export type DeletePostVotesData = { body?: never; path?: never; query: { /** * The IDs of the post votes, comma separated. */ ids: string; }; url: '/post_votes/delete.json'; }; export type DeletePostVotesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type DeletePostVotesError = DeletePostVotesErrors[keyof DeletePostVotesErrors]; export type DeletePostVotesResponses = { /** * Success */ 204: void; }; export type DeletePostVotesResponse = DeletePostVotesResponses[keyof DeletePostVotesResponses]; export type SearchTagsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'name' | 'date' | 'count' | 'similarity'; 'search[fuzzy_name_matches]'?: string; 'search[name_matches]'?: string; 'search[name]'?: string; 'search[category]'?: TagCategories; 'search[hide_empty]'?: boolean; 'search[has_wiki]'?: boolean; 'search[has_artist]'?: boolean; }; url: '/tags.json'; }; export type SearchTagsResponses = { /** * Success */ 200: Array; }; export type SearchTagsResponse = SearchTagsResponses[keyof SearchTagsResponses]; export type DeleteTagData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tags/{id}.json'; }; export type DeleteTagErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteTagError = DeleteTagErrors[keyof DeleteTagErrors]; export type DeleteTagResponses = { /** * Success */ 204: void; }; export type DeleteTagResponse = DeleteTagResponses[keyof DeleteTagResponses]; export type GetTagData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tags/{id}.json'; }; export type GetTagErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetTagError = GetTagErrors[keyof GetTagErrors]; export type GetTagResponses = { /** * Success */ 200: Tag; }; export type GetTagResponse = GetTagResponses[keyof GetTagResponses]; export type EditTagData = { body?: { 'tag[category]'?: TagCategories; /** * Must be Admin+. */ 'tag[is_locked]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tags/{id}.json'; }; export type EditTagErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditTagError = EditTagErrors[keyof EditTagErrors]; export type EditTagResponses = { /** * Success */ 204: void; }; export type EditTagResponse = EditTagResponses[keyof EditTagResponses]; export type GetTagCorrectionData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tags/{id}/correction.json'; }; export type GetTagCorrectionErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetTagCorrectionError = GetTagCorrectionErrors[keyof GetTagCorrectionErrors]; export type GetTagCorrectionResponses = { /** * Success */ 200: TagCorrection; }; export type GetTagCorrectionResponse = GetTagCorrectionResponses[keyof GetTagCorrectionResponses]; export type CorrectTagData = { body?: { /** * If not set, nothing will happen. */ commit: 'Fix'; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tags/{id}/correction.json'; }; export type CorrectTagErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type CorrectTagError = CorrectTagErrors[keyof CorrectTagErrors]; export type PreviewTagsData = { body?: { /** * The tags to preview, space separated. */ tags: string; }; path?: never; query?: never; url: '/tags/preview.json'; }; export type PreviewTagsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type PreviewTagsError = PreviewTagsErrors[keyof PreviewTagsErrors]; export type PreviewTagsResponses = { /** * Success */ 200: Array; }; export type PreviewTagsResponse = PreviewTagsResponses[keyof PreviewTagsResponses]; export type SearchTagTypeVersionsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[tag]'?: string; 'search[user_id]'?: string; 'search[user_name]'?: string; }; url: '/tag_type_versions.json'; }; export type SearchTagTypeVersionsResponses = { /** * Success */ 200: Array; }; export type SearchTagTypeVersionsResponse = SearchTagTypeVersionsResponses[keyof SearchTagTypeVersionsResponses]; export type SearchTagAliasesData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'created_at' | 'updated_at' | 'name' | 'tag_count'; 'search[name_matches]'?: string; 'search[antecedent_name]'?: string; 'search[consequent_name]'?: string; 'search[status]'?: TagRequestStatuses; 'search[antecedent_tag_category]'?: TagCategories; 'search[consequent_tag_category]'?: TagCategories; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[approver_id]'?: number; 'search[approver_name]'?: string; }; url: '/tag_aliases.json'; }; export type SearchTagAliasesResponses = { /** * Success */ 200: Array; }; export type SearchTagAliasesResponse = SearchTagAliasesResponses[keyof SearchTagAliasesResponses]; export type RejectTagAliasData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tag_aliases/{id}.json'; }; export type RejectTagAliasErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type RejectTagAliasError = RejectTagAliasErrors[keyof RejectTagAliasErrors]; export type RejectTagAliasResponses = { /** * Success */ 204: void; }; export type RejectTagAliasResponse = RejectTagAliasResponses[keyof RejectTagAliasResponses]; export type GetTagAliasData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tag_aliases/{id}.json'; }; export type GetTagAliasErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetTagAliasError = GetTagAliasErrors[keyof GetTagAliasErrors]; export type GetTagAliasResponses = { /** * Success */ 200: TagAlias; }; export type GetTagAliasResponse = GetTagAliasResponses[keyof GetTagAliasResponses]; export type EditTagAliasData = { body?: { 'tag_alias[antecedent_name]'?: string; 'tag_alias[consequent_name]'?: string; 'tag_alias[forum_topic_id]'?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tag_aliases/{id}.json'; }; export type EditTagAliasErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditTagAliasError = EditTagAliasErrors[keyof EditTagAliasErrors]; export type EditTagAliasResponses = { /** * Success */ 204: void; }; export type EditTagAliasResponse = EditTagAliasResponses[keyof EditTagAliasResponses]; export type ApproveTagAliasData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tag_aliases/{id}/approve.json'; }; export type ApproveTagAliasErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type ApproveTagAliasError = ApproveTagAliasErrors[keyof ApproveTagAliasErrors]; export type ApproveTagAliasResponses = { /** * Success */ 204: void; }; export type ApproveTagAliasResponse = ApproveTagAliasResponses[keyof ApproveTagAliasResponses]; export type CreateTagAliasData = { body?: { 'tag_alias[antecedent_name]': string; 'tag_alias[consequent_name]': string; 'tag_alias[reason]': string; /** * Must be Admin+. */ 'tag_alias[skip_forum]'?: boolean; }; path?: never; query?: never; url: '/tag_alias_requests.json'; }; export type CreateTagAliasErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Failure */ 406: unknown; }; export type CreateTagAliasError = CreateTagAliasErrors[keyof CreateTagAliasErrors]; export type SearchTagImplicationsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'created_at' | 'updated_at' | 'name' | 'tag_count'; 'search[name_matches]'?: string; 'search[antecedent_name]'?: string; 'search[consequent_name]'?: string; 'search[status]'?: TagRequestStatuses; 'search[antecedent_tag_category]'?: TagCategories; 'search[consequent_tag_category]'?: TagCategories; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[approver_id]'?: number; 'search[approver_name]'?: string; }; url: '/tag_implications.json'; }; export type SearchTagImplicationsResponses = { /** * Success */ 200: Array; }; export type SearchTagImplicationsResponse = SearchTagImplicationsResponses[keyof SearchTagImplicationsResponses]; export type RejectTagImplicationData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tag_implications/{id}.json'; }; export type RejectTagImplicationErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type RejectTagImplicationError = RejectTagImplicationErrors[keyof RejectTagImplicationErrors]; export type RejectTagImplicationResponses = { /** * Success */ 204: void; }; export type RejectTagImplicationResponse = RejectTagImplicationResponses[keyof RejectTagImplicationResponses]; export type GetTagImplicationData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tag_implications/{id}.json'; }; export type GetTagImplicationErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetTagImplicationError = GetTagImplicationErrors[keyof GetTagImplicationErrors]; export type GetTagImplicationResponses = { /** * Success */ 200: TagImplication; }; export type GetTagImplicationResponse = GetTagImplicationResponses[keyof GetTagImplicationResponses]; export type EditTagImplicationData = { body?: { 'tag_implication[antecedent_name]'?: string; 'tag_implication[consequent_name]'?: string; 'tag_implication[forum_topic_id]'?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tag_implications/{id}.json'; }; export type EditTagImplicationErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditTagImplicationError = EditTagImplicationErrors[keyof EditTagImplicationErrors]; export type EditTagImplicationResponses = { /** * Success */ 204: void; }; export type EditTagImplicationResponse = EditTagImplicationResponses[keyof EditTagImplicationResponses]; export type ApproveTagImplicationData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tag_implications/{id}/approve.json'; }; export type ApproveTagImplicationErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type ApproveTagImplicationError = ApproveTagImplicationErrors[keyof ApproveTagImplicationErrors]; export type ApproveTagImplicationResponses = { /** * Success */ 204: void; }; export type ApproveTagImplicationResponse = ApproveTagImplicationResponses[keyof ApproveTagImplicationResponses]; export type CreateTagImplicationData = { body?: { 'tag_implication[antecedent_name]': string; 'tag_implication[consequent_name]': string; 'tag_implication[reason]': string; /** * Must be Admin+. */ 'tag_implication[skip_forum]'?: boolean; }; path?: never; query?: never; url: '/tag_implication_requests.json'; }; export type CreateTagImplicationErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Failure */ 406: unknown; }; export type CreateTagImplicationError = CreateTagImplicationErrors[keyof CreateTagImplicationErrors]; export type ListBulkRelatedTagsData = { body?: { query?: string; category_id?: TagCategories; }; path?: never; query?: never; url: '/related_tag/bulk.json'; }; export type ListBulkRelatedTagsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type ListBulkRelatedTagsError = ListBulkRelatedTagsErrors[keyof ListBulkRelatedTagsErrors]; export type ListBulkRelatedTagsResponses = { /** * Success */ 200: BulkRelatedTag; }; export type ListBulkRelatedTagsResponse = ListBulkRelatedTagsResponses[keyof ListBulkRelatedTagsResponses]; export type ListSearchTrendsData = { body?: never; path?: never; query?: { day?: string; /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; }; url: '/search_trends.json'; }; export type ListSearchTrendsResponses = { /** * Success */ 200: Array; }; export type ListSearchTrendsResponse = ListSearchTrendsResponses[keyof ListSearchTrendsResponses]; export type ListRisingSearchTrendsData = { body?: never; path?: never; query?: never; url: '/search_trends/rising.json'; }; export type ListRisingSearchTrendsResponses = { /** * Success */ 200: Array; }; export type ListRisingSearchTrendsResponse = ListRisingSearchTrendsResponses[keyof ListRisingSearchTrendsResponses]; export type ClearSearchTrendsCacheData = { body?: never; path?: never; query?: never; url: '/search_trends/clear_cache.json'; }; export type ClearSearchTrendsCacheErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type ClearSearchTrendsCacheError = ClearSearchTrendsCacheErrors[keyof ClearSearchTrendsCacheErrors]; export type ClearSearchTrendsCacheResponses = { /** * Success */ 200: MessageSuccessResponse; }; export type ClearSearchTrendsCacheResponse = ClearSearchTrendsCacheResponses[keyof ClearSearchTrendsCacheResponses]; export type UpdateSearchTrendsSettingsData = { body?: { trends_enabled?: boolean; trends_displayed?: boolean; trends_min_today?: number; trends_min_dleta?: number; trends_min_ratio?: number; trends_ip_limit?: number; trends_ip_window?: number; trends_tag_limit?: number; trends_tag_window?: number; }; path?: never; query?: never; url: '/search_trends/update_settings.json'; }; export type UpdateSearchTrendsSettingsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type UpdateSearchTrendsSettingsError = UpdateSearchTrendsSettingsErrors[keyof UpdateSearchTrendsSettingsErrors]; export type UpdateSearchTrendsSettingsResponses = { /** * Success */ 200: MessageSuccessResponse; }; export type UpdateSearchTrendsSettingsResponse = UpdateSearchTrendsSettingsResponses[keyof UpdateSearchTrendsSettingsResponses]; export type SearchSearchTrendBlacklistsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; tag?: string; reason?: string; }; url: '/search_trend_blacklists.json'; }; export type SearchSearchTrendBlacklistsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type SearchSearchTrendBlacklistsError = SearchSearchTrendBlacklistsErrors[keyof SearchSearchTrendBlacklistsErrors]; export type SearchSearchTrendBlacklistsResponses = { /** * Success */ 200: Array; }; export type SearchSearchTrendBlacklistsResponse = SearchSearchTrendBlacklistsResponses[keyof SearchSearchTrendBlacklistsResponses]; export type CreateSearchTrendBlacklistData = { body?: { tag: string; reason: string; }; path?: never; query?: never; url: '/search_trend_blacklists.json'; }; export type CreateSearchTrendBlacklistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateSearchTrendBlacklistError = CreateSearchTrendBlacklistErrors[keyof CreateSearchTrendBlacklistErrors]; export type CreateSearchTrendBlacklistResponses = { /** * Success */ 201: SearchTrendBlacklist; }; export type CreateSearchTrendBlacklistResponse = CreateSearchTrendBlacklistResponses[keyof CreateSearchTrendBlacklistResponses]; export type DeleteSearchTrendBlacklistData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/search_trend_blacklists/{id}.json'; }; export type DeleteSearchTrendBlacklistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteSearchTrendBlacklistError = DeleteSearchTrendBlacklistErrors[keyof DeleteSearchTrendBlacklistErrors]; export type DeleteSearchTrendBlacklistResponses = { /** * Success */ 204: void; }; export type DeleteSearchTrendBlacklistResponse = DeleteSearchTrendBlacklistResponses[keyof DeleteSearchTrendBlacklistResponses]; export type PurgeSearchTrendBlacklistData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/search_trend_blacklists/{id}/purge.json'; }; export type PurgeSearchTrendBlacklistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type PurgeSearchTrendBlacklistError = PurgeSearchTrendBlacklistErrors[keyof PurgeSearchTrendBlacklistErrors]; export type PurgeSearchTrendBlacklistResponses = { /** * Success */ 200: { deleted_count: number; }; }; export type PurgeSearchTrendBlacklistResponse = PurgeSearchTrendBlacklistResponses[keyof PurgeSearchTrendBlacklistResponses]; export type LoginData = { body?: { /** * CSRF Token */ authenticity_token: string; /** * Optional relative URL to redirect to after login, defaults to `/posts`. */ 'session[url]'?: string; 'session[name]': string; 'session[password]': string; }; path?: never; query?: never; url: '/session.json'; }; export type LoginErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Failure */ 406: unknown; }; export type LoginError = LoginErrors[keyof LoginErrors]; export type SearchStaffNotesData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[updater_id]'?: number; 'search[updater_name]'?: string; 'search[user_id]'?: number; 'search[user_name]'?: string; 'search[body_matches]'?: string; 'search[without_system_user]'?: boolean; 'search[include_deleted]'?: boolean; }; url: '/staff_notes.json'; }; export type SearchStaffNotesResponses = { /** * Success */ 200: Array; }; export type SearchStaffNotesResponse = SearchStaffNotesResponses[keyof SearchStaffNotesResponses]; export type CreateStaffNoteData = { body?: { 'staff_note[body]': string; }; path?: never; query?: never; url: '/staff_notes.json'; }; export type CreateStaffNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateStaffNoteError = CreateStaffNoteErrors[keyof CreateStaffNoteErrors]; export type CreateStaffNoteResponses = { /** * Success */ 201: StaffNote; }; export type CreateStaffNoteResponse = CreateStaffNoteResponses[keyof CreateStaffNoteResponses]; export type GetStaffNoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/staff_notes/{id}.json'; }; export type GetStaffNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetStaffNoteError = GetStaffNoteErrors[keyof GetStaffNoteErrors]; export type GetStaffNoteResponses = { /** * Success */ 200: StaffNote; }; export type GetStaffNoteResponse = GetStaffNoteResponses[keyof GetStaffNoteResponses]; export type EditStaffNoteData = { body?: { 'staff_note[body]'?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/staff_notes/{id}.json'; }; export type EditStaffNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditStaffNoteError = EditStaffNoteErrors[keyof EditStaffNoteErrors]; export type EditStaffNoteResponses = { /** * Success */ 200: StaffNote; }; export type EditStaffNoteResponse = EditStaffNoteResponses[keyof EditStaffNoteResponses]; export type DeleteStaffNoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/staff_notes/{id}/delete.json'; }; export type DeleteStaffNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteStaffNoteError = DeleteStaffNoteErrors[keyof DeleteStaffNoteErrors]; export type DeleteStaffNoteResponses = { /** * Success */ 201: StaffNote; }; export type DeleteStaffNoteResponse = DeleteStaffNoteResponses[keyof DeleteStaffNoteResponses]; export type UndeleteStaffNoteData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/staff_notes/{id}/undelete.json'; }; export type UndeleteStaffNoteErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UndeleteStaffNoteError = UndeleteStaffNoteErrors[keyof UndeleteStaffNoteErrors]; export type UndeleteStaffNoteResponses = { /** * Success */ 201: StaffNote; }; export type UndeleteStaffNoteResponse = UndeleteStaffNoteResponses[keyof UndeleteStaffNoteResponses]; export type SearchTakedownsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * Must Admin+ to use. */ 'search[order]'?: 'id_asc' | 'id_desc' | 'status' | 'post_count'; 'search[status]'?: string; /** * Must be Moderator+ to use. */ 'search[source]'?: string; /** * Must be Moderator+ to use. */ 'search[reason]'?: string; /** * Must be Moderator+ to use. */ 'search[creator_id]'?: number; /** * Must be Moderator+ to use. */ 'search[creator_name]'?: string; /** * Must be Moderator+ to use. */ 'search[reason_hidden]'?: boolean; /** * Must be Moderator+ to use. */ 'search[instructions]'?: string; /** * Must be Moderator+ to use. */ 'search[post_id]'?: number; /** * Must be Moderator+ to use. */ 'search[notes]'?: string; /** * Must be Moderator+ to use. */ 'search[creator_logged_in]'?: boolean; /** * Must be Admin+ to use. */ 'search[email]'?: string; /** * Must be Admin+ to use. */ 'search[vericode]'?: string; }; url: '/takedowns.json'; }; export type SearchTakedownsResponses = { /** * Success */ 200: Array; }; export type SearchTakedownsResponse = SearchTakedownsResponses[keyof SearchTakedownsResponses]; export type CreateTakedownData = { body?: { 'takedown[email]': string; 'takedown[source]'?: string; 'takedown[instructions]'?: string; 'takedown[reason]': string; /** * takedown[post_ids][]=1&takedown[post_ids][]=2 */ 'takedown[post_ids]'?: Array; 'takedown[reason_hidden]'?: boolean; /** * Must have the bd staff user flag to use. */ 'takedown[notes]'?: string; /** * Must have the bd staff user flag to use. * takedown[del_post_ids][]=1&takedown[del_post_ids][]=2 * */ 'takedown[del_post_ids]'?: Array; /** * Must have the bd staff user flag to use. */ 'takedown[status]'?: string; }; path?: never; query?: never; url: '/takedowns.json'; }; export type CreateTakedownErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateTakedownError = CreateTakedownErrors[keyof CreateTakedownErrors]; export type CreateTakedownResponses = { /** * Success */ 201: Takedown; }; export type CreateTakedownResponse = CreateTakedownResponses[keyof CreateTakedownResponses]; export type DeleteTakedownData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/takedowns/{id}.json'; }; export type DeleteTakedownErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteTakedownError = DeleteTakedownErrors[keyof DeleteTakedownErrors]; export type DeleteTakedownResponses = { /** * Success */ 204: void; }; export type DeleteTakedownResponse = DeleteTakedownResponses[keyof DeleteTakedownResponses]; export type GetTakedownData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/takedowns/{id}.json'; }; export type GetTakedownErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetTakedownError = GetTakedownErrors[keyof GetTakedownErrors]; export type GetTakedownResponses = { /** * Success */ 200: Takedown; }; export type GetTakedownResponse = GetTakedownResponses[keyof GetTakedownResponses]; export type EditTakedownData = { body?: { 'takedown[notes]'?: string; 'takedown[reason_hidden]'?: boolean; takedown_posts?: string; /** * If not truthy, the takedown will be denied. */ process_takedown?: boolean; delete_reason?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/takedowns/{id}.json'; }; export type EditTakedownErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditTakedownError = EditTakedownErrors[keyof EditTakedownErrors]; export type EditTakedownResponses = { /** * Success */ 204: void; }; export type EditTakedownResponse = EditTakedownResponses[keyof EditTakedownResponses]; export type AddPostsToTakedownByIdsData = { body?: { post_ids: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/takedowns/{id}/add_by_ids.json'; }; export type AddPostsToTakedownByIdsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type AddPostsToTakedownByIdsError = AddPostsToTakedownByIdsErrors[keyof AddPostsToTakedownByIdsErrors]; export type AddPostsToTakedownByIdsResponses = { /** * Success */ 200: { added_count: number; added_post_ids: Array; }; }; export type AddPostsToTakedownByIdsResponse = AddPostsToTakedownByIdsResponses[keyof AddPostsToTakedownByIdsResponses]; export type AddPostsToTakedownByTagsData = { body?: { post_tags: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/takedowns/{id}/add_by_tags.json'; }; export type AddPostsToTakedownByTagsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type AddPostsToTakedownByTagsError = AddPostsToTakedownByTagsErrors[keyof AddPostsToTakedownByTagsErrors]; export type AddPostsToTakedownByTagsResponses = { /** * Success */ 200: { added_count: number; added_post_ids: Array; }; }; export type AddPostsToTakedownByTagsResponse = AddPostsToTakedownByTagsResponses[keyof AddPostsToTakedownByTagsResponses]; export type CountMatchingPostsData = { body?: { post_tags: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/takedowns/{id}/count_matching_posts.json'; }; export type CountMatchingPostsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type CountMatchingPostsError = CountMatchingPostsErrors[keyof CountMatchingPostsErrors]; export type CountMatchingPostsResponses = { /** * Success */ 200: { matched_post_count: number; }; }; export type CountMatchingPostsResponse = CountMatchingPostsResponses[keyof CountMatchingPostsResponses]; export type RemovePostsFromTakedownByIdsData = { body?: { post_ids: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/takedowns/{id}/remove_by_ids.json'; }; export type RemovePostsFromTakedownByIdsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type RemovePostsFromTakedownByIdsError = RemovePostsFromTakedownByIdsErrors[keyof RemovePostsFromTakedownByIdsErrors]; export type RemovePostsFromTakedownByIdsResponses = { /** * Success */ 204: void; }; export type RemovePostsFromTakedownByIdsResponse = RemovePostsFromTakedownByIdsResponses[keyof RemovePostsFromTakedownByIdsResponses]; export type SearchTicketsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * You must be Janitor+. */ 'search[creator_name]'?: string; /** * You must be Janitor+ unless providing your own id. */ 'search[creator_id]'?: number; /** * You must be Janitor+. */ 'search[claimant_name]'?: string; /** * You must be Janitor+. */ 'search[claimant_id]'?: number; /** * You must be Janitor+. */ 'search[accused_name]'?: string; /** * You must be Janitor+. */ 'search[accused_id]'?: number; /** * You must be Janitor+. */ 'search[disp_id]'?: number; 'search[qtype]'?: TicketTypes; /** * You must be Janitor+. */ 'search[reason]'?: string; 'search[status]'?: 'pending' | 'partial' | 'approved' | 'pending_claimed' | 'pending_unclaimed'; }; url: '/tickets.json'; }; export type SearchTicketsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type SearchTicketsError = SearchTicketsErrors[keyof SearchTicketsErrors]; export type SearchTicketsResponses = { /** * Success */ 200: Array; }; export type SearchTicketsResponse = SearchTicketsResponses[keyof SearchTicketsResponses]; export type GetTicketData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tickets/{id}.json'; }; export type GetTicketErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetTicketError = GetTicketErrors[keyof GetTicketErrors]; export type GetTicketResponses = { /** * Success */ 200: Ticket; }; export type GetTicketResponse = GetTicketResponses[keyof GetTicketResponses]; export type EditTicketData = { body?: { 'ticket[status]'?: 'partial' | 'approved'; 'ticket[response]': string; 'ticket[record_type]'?: WarningTypes; /** * An update dmail will always be sent when the status is changed. */ 'ticket[send_update_dmail]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tickets/{id}.json'; }; export type EditTicketErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type EditTicketError = EditTicketErrors[keyof EditTicketErrors]; export type EditTicketResponses = { /** * Success */ 204: void; }; export type EditTicketResponse = EditTicketResponses[keyof EditTicketResponses]; export type ClaimTicketData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tickets/{id}/claim.json'; }; export type ClaimTicketErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type ClaimTicketError = ClaimTicketErrors[keyof ClaimTicketErrors]; export type ClaimTicketResponses = { /** * Success */ 201: Ticket; }; export type ClaimTicketResponse = ClaimTicketResponses[keyof ClaimTicketResponses]; export type UnclaimTicketData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/tickets/{id}/unclaim.json'; }; export type UnclaimTicketErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UnclaimTicketError = UnclaimTicketErrors[keyof UnclaimTicketErrors]; export type UnclaimTicketResponses = { /** * Success */ 201: Ticket; }; export type UnclaimTicketResponse = UnclaimTicketResponses[keyof UnclaimTicketResponses]; export type SearchUploadsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[uploader_id]'?: number; 'search[uploader_name]'?: string; 'search[source]'?: string; 'search[source_matches]'?: string; 'search[rating]'?: Ratings; 'search[parent_id]'?: number; 'search[post_id]'?: number; 'search[has_post]'?: boolean; 'search[post_tags_match]'?: string; /** * Note: The "error" status will be proceeded by an error, ex: "error: RuntimeError - No file or source URL provided" * */ 'search[status]'?: 'completed' | 'processing' | 'pending' | 'error'; 'search[backtrace]'?: string; 'search[tag_string]'?: string; }; url: '/uploads.json'; }; export type SearchUploadsResponses = { /** * Success */ 200: Array; }; export type SearchUploadsResponse = SearchUploadsResponses[keyof SearchUploadsResponses]; export type UploadPostData = { body?: { /** * Mutually exclusive with direct_url. */ 'upload[file]'?: Blob | File; /** * Mutually exclusive with file. */ 'upload[direct_url]'?: string; 'upload[source]'?: string; 'upload[tag_string]': string; 'upload[rating]': Ratings; 'upload[parent_id]'?: number; 'upload[description]'?: string; /** * Must have the "Unrestricted Uploads" permission. */ 'upload[as_pending]'?: boolean; /** * Must be Privileged+ to use. */ 'upload[locked_rating]'?: boolean; /** * Must be Admin+ to use. */ 'upload[locked_tags]'?: string; }; path?: never; query?: never; url: '/uploads.json'; }; export type UploadPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Error */ 412: MessageErrorResponse; }; export type UploadPostError = UploadPostErrors[keyof UploadPostErrors]; export type UploadPostResponses = { /** * Success */ 200: { success: true; location: string; post_id: number; }; }; export type UploadPostResponse = UploadPostResponses[keyof UploadPostResponses]; export type GetUploadData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/uploads/{id}.json'; }; export type GetUploadErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetUploadError = GetUploadErrors[keyof GetUploadErrors]; export type GetUploadResponses = { /** * Success */ 200: Upload; }; export type GetUploadResponse = GetUploadResponses[keyof GetUploadResponses]; export type SearchUploadWhitelistsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'domain' | 'path' | 'updated_at' | 'created_at'; 'search[domain]'?: string; 'search[path]'?: string; 'search[note]'?: string; 'search[reason]'?: string; }; url: '/upload_whitelists.json'; }; export type SearchUploadWhitelistsResponses = { /** * Success */ 200: Array; }; export type SearchUploadWhitelistsResponse = SearchUploadWhitelistsResponses[keyof SearchUploadWhitelistsResponses]; export type CreateUploadWhitelistData = { body?: { 'upload_whitelist[allowed]': string; 'upload_whitelist[domain]': string; 'upload_whitelist[path]': string; 'upload_whitelist[reason]'?: string; 'upload_whitelist[note]'?: string; 'upload_whitelist[hidden]'?: boolean; }; path?: never; query?: never; url: '/upload_whitelists.json'; }; export type CreateUploadWhitelistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateUploadWhitelistError = CreateUploadWhitelistErrors[keyof CreateUploadWhitelistErrors]; export type CreateUploadWhitelistResponses = { /** * Success */ 201: UploadWhitelist; }; export type CreateUploadWhitelistResponse = CreateUploadWhitelistResponses[keyof CreateUploadWhitelistResponses]; export type DeleteUploadWhitelistData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/upload_whitelists/{id}.json'; }; export type DeleteUploadWhitelistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteUploadWhitelistError = DeleteUploadWhitelistErrors[keyof DeleteUploadWhitelistErrors]; export type DeleteUploadWhitelistResponses = { /** * Success */ 204: void; }; export type DeleteUploadWhitelistResponse = DeleteUploadWhitelistResponses[keyof DeleteUploadWhitelistResponses]; export type EditUploadWhitelistData = { body?: { 'upload_whitelist[allowed]'?: string; 'upload_whitelist[pattern]'?: string; 'upload_whitelist[reason]'?: string; 'upload_whitelist[note]'?: string; 'upload_whitelist[hidden]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/upload_whitelists/{id}.json'; }; export type EditUploadWhitelistErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditUploadWhitelistError = EditUploadWhitelistErrors[keyof EditUploadWhitelistErrors]; export type EditUploadWhitelistResponses = { /** * Success */ 204: void; }; export type EditUploadWhitelistResponse = EditUploadWhitelistResponses[keyof EditUploadWhitelistResponses]; export type CheckIfUrlIsAllowedData = { body?: never; path?: never; query?: { url?: string; }; url: '/upload_whitelists/is_allowed.json'; }; export type CheckIfUrlIsAllowedErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CheckIfUrlIsAllowedError = CheckIfUrlIsAllowedErrors[keyof CheckIfUrlIsAllowedErrors]; export type CheckIfUrlIsAllowedResponses = { /** * Success */ 200: { url: string; domain: string; is_allowed: boolean; reason: string; }; }; export type CheckIfUrlIsAllowedResponse = CheckIfUrlIsAllowedResponses[keyof CheckIfUrlIsAllowedResponses]; export type SearchUsersData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; 'search[order]'?: 'id_asc' | 'id_desc' | 'name' | 'post_upload_count' | 'note_count' | 'post_update_count'; 'search[name_matches]'?: string; 'search[about_me]'?: string; 'search[avatar_id]'?: number; 'search[level]'?: number; 'search[min_level]'?: number; 'search[max_level]'?: number; 'search[can_upload_free]'?: boolean; 'search[can_approve_posts]'?: boolean; /** * You must be Admin+. */ 'search[email_matches]'?: string; }; url: '/users.json'; }; export type SearchUsersResponses = { /** * Success */ 200: Array; }; export type SearchUsersResponse = SearchUsersResponses[keyof SearchUsersResponses]; export type GetMeData = { body?: never; path?: never; query?: never; url: '/users/me.json'; }; export type GetMeResponses = { /** * Success */ 200: FullCurrentUser; }; export type GetMeResponse = GetMeResponses[keyof GetMeResponses]; export type GetAvatarMenuData = { body?: never; path?: never; query?: never; url: '/users/avatar_menu.json'; }; export type GetAvatarMenuErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type GetAvatarMenuError = GetAvatarMenuErrors[keyof GetAvatarMenuErrors]; export type GetAvatarMenuResponses = { /** * Success */ 200: UserAvatarMenu; }; export type GetAvatarMenuResponse = GetAvatarMenuResponses[keyof GetAvatarMenuResponses]; export type GetUserData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/users/{idOrName}.json'; }; export type GetUserErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetUserError = GetUserErrors[keyof GetUserErrors]; export type GetUserResponses = { /** * Success */ 200: FullUser | FullCurrentUser; }; export type GetUserResponse = GetUserResponses[keyof GetUserResponses]; export type EditCurrentUserData = { body?: { 'user[comment_threshold]'?: number; 'user[default_image_size]'?: 'large' | 'fit' | 'fitv' | 'original'; 'user[favorite_tags]'?: string; 'user[blacklisted_tags]'?: string; /** * https://en.wikipedia.org/wiki/List_of_tz_database_time_zones */ 'user[time_zone]'?: string; 'user[per_page]'?: number; 'user[custom_style]'?: string; 'user[description_collapsed_initially]'?: boolean; 'user[hide_comments]'?: boolean; 'user[receive_email_notifications]'?: boolean; 'user[enable_keyboard_navigation]'?: boolean; 'user[enable_privacy_mode]'?: boolean; 'user[disable_user_dmails]'?: boolean; 'user[blacklist_users]'?: boolean; 'user[show_post_statistics]'?: boolean; 'user[style_usernames]'?: boolean; 'user[show_hidden_comments]'?: boolean; 'user[enable_autocomplete]'?: boolean; 'user[disable_cropped_thumbnails]'?: boolean; 'user[enable_safe_mode]'?: boolean; 'user[disable_responsive_mode]'?: boolean; 'user[dmail_filter_attributes][id]'?: number; 'user[dmail_filter_attributes][words]'?: string; 'user[profile_about]'?: string; 'user[profile_artinfo]'?: string; 'user[avatar_id]'?: number; /** * You must have uploaded at least 10 posts. */ 'user[enable_compact_uploader]'?: boolean; 'user[forum_notification_dot]'?: boolean; }; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/users/{idOrName}.json'; }; export type EditCurrentUserErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditCurrentUserError = EditCurrentUserErrors[keyof EditCurrentUserErrors]; export type EditCurrentUserResponses = { /** * Success */ 204: void; }; export type EditCurrentUserResponse = EditCurrentUserResponses[keyof EditCurrentUserResponses]; export type GetUserUploadLimitData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/users/{idOrName}/upload_limit.json'; }; export type GetUserUploadLimitErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type GetUserUploadLimitError = GetUserUploadLimitErrors[keyof GetUserUploadLimitErrors]; export type GetUserUploadLimitResponses = { /** * Success */ 200: FullUser | FullCurrentUser; }; export type GetUserUploadLimitResponse = GetUserUploadLimitResponses[keyof GetUserUploadLimitResponses]; export type ClearUserFavoritesData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/users/{idOrName}/flush_favorites.json'; }; export type ClearUserFavoritesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type ClearUserFavoritesError = ClearUserFavoritesErrors[keyof ClearUserFavoritesErrors]; export type StaffFixUserCountsData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/users/{idOrName}/fix_counts.json'; }; export type StaffFixUserCountsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type StaffFixUserCountsError = StaffFixUserCountsErrors[keyof StaffFixUserCountsErrors]; export type ToggleUserUploadsData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/users/{idOrName}/toggle_uploads.json'; }; export type ToggleUserUploadsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type ToggleUserUploadsError = ToggleUserUploadsErrors[keyof ToggleUserUploadsErrors]; export type DisableUserUploadsData = { body?: { 'staff_note[body]': string; }; path: { /** * An ID that can be either an integer or a name. */ idOrName: number | string; }; query?: never; url: '/users/{idOrName}/disable_uploads.json'; }; export type DisableUserUploadsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DisableUserUploadsError = DisableUserUploadsErrors[keyof DisableUserUploadsErrors]; export type AuditUserDMailsData = { body?: never; path: { /** * The ID of the user. */ user_id: number; }; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; }; url: '/users/{user_id}/dmails.json'; }; export type AuditUserDMailsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type AuditUserDMailsError = AuditUserDMailsErrors[keyof AuditUserDMailsErrors]; export type AuditUserDMailsResponses = { /** * Success */ 200: Array; }; export type AuditUserDMailsResponse = AuditUserDMailsResponses[keyof AuditUserDMailsResponses]; export type AuditUserDMailData = { body?: never; path: { /** * The ID of the user. */ user_id: number; /** * The ID of the item. */ id: number; }; query?: never; url: '/users/{user_id}/dmails/{id}.json'; }; export type AuditUserDMailErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type AuditUserDMailError = AuditUserDMailErrors[keyof AuditUserDMailErrors]; export type AuditUserDMailResponses = { /** * Success */ 200: DMail; }; export type AuditUserDMailResponse = AuditUserDMailResponses[keyof AuditUserDMailResponses]; export type FixUserCountsData = { body?: never; path?: never; query?: never; url: '/maintenance/user/count_fixes.json'; }; export type FixUserCountsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type FixUserCountsError = FixUserCountsErrors[keyof FixUserCountsErrors]; export type UpdateUserDmailFilterData = { body?: { 'dmail_filter[words]': string; }; path?: never; query: { /** * Due to the odd way this route works, a dmail is REQUIRED to edit your dmail filter. You must be the owner of the dmail. */ dmail_id: number; }; url: '/maintenance/user/dmail_filter.json'; }; export type UpdateUserDmailFilterErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type UpdateUserDmailFilterError = UpdateUserDmailFilterErrors[keyof UpdateUserDmailFilterErrors]; export type UpdateUserDmailFilterResponses = { /** * Success */ 204: void; }; export type UpdateUserDmailFilterResponse = UpdateUserDmailFilterResponses[keyof UpdateUserDmailFilterResponses]; export type SearchUserFeedbacksData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; /** * You must be Janitor+. */ 'search[deleted]'?: 'included' | 'excluded' | 'only'; 'search[body_matches]'?: string; 'search[user_id]'?: number; 'search[user_name]'?: string; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[category]'?: FeedbackCategories; }; url: '/user_feedbacks.json'; }; export type SearchUserFeedbacksResponses = { /** * Success */ 200: Array; }; export type SearchUserFeedbacksResponse = SearchUserFeedbacksResponses[keyof SearchUserFeedbacksResponses]; export type CreateUserFeedbackData = { body?: { 'user_feedback[user_id]'?: number; 'user_feedback[user_name]'?: string; 'user_feedback[body]': string; 'user_feedback[category]': FeedbackCategories; }; path?: never; query?: never; url: '/user_feedbacks.json'; }; export type CreateUserFeedbackErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateUserFeedbackError = CreateUserFeedbackErrors[keyof CreateUserFeedbackErrors]; export type CreateUserFeedbackResponses = { /** * Success */ 201: UserFeedback; }; export type CreateUserFeedbackResponse = CreateUserFeedbackResponses[keyof CreateUserFeedbackResponses]; export type DestroyUserFeedbackData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/user_feedbacks/{id}.json'; }; export type DestroyUserFeedbackErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DestroyUserFeedbackError = DestroyUserFeedbackErrors[keyof DestroyUserFeedbackErrors]; export type DestroyUserFeedbackResponses = { /** * Success */ 204: void; }; export type DestroyUserFeedbackResponse = DestroyUserFeedbackResponses[keyof DestroyUserFeedbackResponses]; export type GetUserFeedbackData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/user_feedbacks/{id}.json'; }; export type GetUserFeedbackErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetUserFeedbackError = GetUserFeedbackErrors[keyof GetUserFeedbackErrors]; export type GetUserFeedbackResponses = { /** * Success */ 200: UserFeedback; }; export type GetUserFeedbackResponse = GetUserFeedbackResponses[keyof GetUserFeedbackResponses]; export type EditUserFeedbackData = { body?: { 'user_feedback[body]'?: string; 'user_feedback[category]'?: FeedbackCategories; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/user_feedbacks/{id}.json'; }; export type EditUserFeedbackErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditUserFeedbackError = EditUserFeedbackErrors[keyof EditUserFeedbackErrors]; export type EditUserFeedbackResponses = { /** * Success */ 204: void; }; export type EditUserFeedbackResponse = EditUserFeedbackResponses[keyof EditUserFeedbackResponses]; export type DeleteUserFeedbackData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/user_feedbacks/{id}/delete.json'; }; export type DeleteUserFeedbackErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteUserFeedbackError = DeleteUserFeedbackErrors[keyof DeleteUserFeedbackErrors]; export type DeleteUserFeedbackResponses = { /** * Success */ 204: void; }; export type DeleteUserFeedbackResponse = DeleteUserFeedbackResponses[keyof DeleteUserFeedbackResponses]; export type UndeleteUserFeedbackData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/user_feedbacks/{id}/undelete.json'; }; export type UndeleteUserFeedbackErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UndeleteUserFeedbackError = UndeleteUserFeedbackErrors[keyof UndeleteUserFeedbackErrors]; export type UndeleteUserFeedbackResponses = { /** * Success */ 204: void; }; export type UndeleteUserFeedbackResponse = UndeleteUserFeedbackResponses[keyof UndeleteUserFeedbackResponses]; export type SearchUserNameChangeRequestsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[current_id]'?: number; 'search[current_name]'?: string; 'search[original_name]'?: string; 'search[desired_name]'?: string; }; url: '/user_name_change_requests.json'; }; export type SearchUserNameChangeRequestsResponses = { /** * Success */ 200: Array; }; export type SearchUserNameChangeRequestsResponse = SearchUserNameChangeRequestsResponses[keyof SearchUserNameChangeRequestsResponses]; export type CreateUserNameChangeRequestData = { body?: { 'user_name_change_request[desired_name]': string; 'user_name_change_request[change_reason]'?: string; }; path?: never; query?: never; url: '/user_name_change_requests.json'; }; export type CreateUserNameChangeRequestErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateUserNameChangeRequestError = CreateUserNameChangeRequestErrors[keyof CreateUserNameChangeRequestErrors]; export type DeleteUserNameChangeRequestData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/user_name_change_requests/{id}.json'; }; export type DeleteUserNameChangeRequestErrors = { /** * Access Denied */ 403: AccessDeniedResponse; }; export type DeleteUserNameChangeRequestError = DeleteUserNameChangeRequestErrors[keyof DeleteUserNameChangeRequestErrors]; export type GetUserNameChangeRequestData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/user_name_change_requests/{id}.json'; }; export type GetUserNameChangeRequestErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type GetUserNameChangeRequestError = GetUserNameChangeRequestErrors[keyof GetUserNameChangeRequestErrors]; export type GetUserNameChangeRequestResponses = { /** * Success */ 200: UserNameChangeRequest; }; export type GetUserNameChangeRequestResponse = GetUserNameChangeRequestResponses[keyof GetUserNameChangeRequestResponses]; export type SearchWikiPagesData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'title' | 'post_count'; 'search[title]'?: string; 'search[title_matches]'?: string; 'search[body_matches]'?: string; 'search[other_names_match]'?: string; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[parent]'?: string; 'search[other_names_present]'?: boolean; 'search[is_locked]'?: boolean; 'search[is_deleted]'?: boolean; }; url: '/wiki_pages.json'; }; export type SearchWikiPagesResponses = { /** * Success */ 200: Array; }; export type SearchWikiPagesResponse = SearchWikiPagesResponses[keyof SearchWikiPagesResponses]; export type CreateWikiPageData = { body?: { 'wiki_page[title]': string; 'wiki_page[body]': string; 'wiki_page[edit_reason]'?: string; /** * Must be Privileged+ to use. */ 'wiki_page[parent]'?: string; /** * Must be Janitor+ to use. */ 'wiki_page[is_locked]'?: boolean; /** * Must be Janitor+ to use. */ 'wiki_page[is_deleted]'?: boolean; /** * Must be Janitor+ to use. */ 'wiki_page[skip_secondary_validations]'?: boolean; }; path?: never; query?: never; url: '/wiki_pages.json'; }; export type CreateWikiPageErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreateWikiPageError = CreateWikiPageErrors[keyof CreateWikiPageErrors]; export type CreateWikiPageResponses = { /** * Success */ 201: WikiPage; }; export type CreateWikiPageResponse = CreateWikiPageResponses[keyof CreateWikiPageResponses]; export type DeleteWikiPageData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/wiki_pages/{id}.json'; }; export type DeleteWikiPageErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type DeleteWikiPageError = DeleteWikiPageErrors[keyof DeleteWikiPageErrors]; export type DeleteWikiPageResponses = { /** * Success */ 204: void; }; export type DeleteWikiPageResponse = DeleteWikiPageResponses[keyof DeleteWikiPageResponses]; export type GetWikiPageData = { body?: never; path: { /** * An ID that can be either an integer or a name. */ id: number | string; }; query?: never; url: '/wiki_pages/{id}.json'; }; export type GetWikiPageErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetWikiPageError = GetWikiPageErrors[keyof GetWikiPageErrors]; export type GetWikiPageResponses = { /** * Success */ 200: WikiPage; }; export type GetWikiPageResponse = GetWikiPageResponses[keyof GetWikiPageResponses]; export type EditWikiPageData = { body?: { 'wiki_page[body]'?: string; 'wiki_page[edit_reason]'?: string; /** * Must be Privileged+ to use. */ 'wiki_page[parent]'?: string; /** * Must be Janitor+ to use. */ 'wiki_page[title]'?: string; /** * Must be Janitor+ to use. */ 'wiki_page[is_locked]'?: boolean; /** * Must be Janitor+ to use. */ 'wiki_page[is_deleted]'?: boolean; /** * Must be Janitor+ to use. */ 'wiki_page[skip_secondary_validations]'?: boolean; 'wiki_page[category_id]'?: TagCategories; /** * Must be Admin+ to use. */ 'wiki_page[category_is_locked]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/wiki_pages/{id}.json'; }; export type EditWikiPageErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type EditWikiPageError = EditWikiPageErrors[keyof EditWikiPageErrors]; export type EditWikiPageResponses = { /** * Success */ 204: void; }; export type EditWikiPageResponse = EditWikiPageResponses[keyof EditWikiPageResponses]; export type RevertWikiPageData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query: { /** * The version ID to revert to. */ version_id: number; }; url: '/wiki_pages/{id}/revert.json'; }; export type RevertWikiPageErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RevertWikiPageError = RevertWikiPageErrors[keyof RevertWikiPageErrors]; export type RevertWikiPageResponses = { /** * Success */ 204: void; }; export type RevertWikiPageResponse = RevertWikiPageResponses[keyof RevertWikiPageResponses]; export type SearchWikiPageVersionsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; /** * 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" (`<<=`). */ 'search[ip_addr]'?: string; /** * The order of the results. */ 'search[order]'?: 'id_asc' | 'id_desc'; 'search[updater_id]'?: number; 'search[updater_name]'?: string; 'search[wiki_page_id]'?: number; 'search[title]'?: string; 'search[body]'?: string; 'search[is_locked]'?: boolean; 'search[is_deleted]'?: boolean; }; url: '/wiki_page_versions.json'; }; export type SearchWikiPageVersionsResponses = { /** * Success */ 200: Array; }; export type SearchWikiPageVersionsResponse = SearchWikiPageVersionsResponses[keyof SearchWikiPageVersionsResponses]; export type GetWikiPageVersionData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/wiki_page_versions/{id}.json'; }; export type GetWikiPageVersionErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type GetWikiPageVersionError = GetWikiPageVersionErrors[keyof GetWikiPageVersionErrors]; export type GetWikiPageVersionResponses = { /** * Success */ 200: WikiPageVersion; }; export type GetWikiPageVersionResponse = GetWikiPageVersionResponses[keyof GetWikiPageVersionResponses]; export type GetAltListData = { body?: never; path?: never; query?: { /** * The page number of results to get. Between 1 and 9999. */ page?: number; }; url: '/admin/users/alt_list.json'; }; export type GetAltListResponses = { /** * Success */ 200: Array>; }; export type GetAltListResponse = GetAltListResponses[keyof GetAltListResponses]; export type AdminEditUserData = { body?: { /** * Must have the bd staff user flag to use. */ 'user[verified]'?: boolean; /** * Must have the bd staff user flag to promote to Admin+. */ 'user[level]'?: number; 'user[name]'?: string; 'user[profile_about]'?: string; 'user[profile_artinfo]'?: string; 'user[base_upload_limit]'?: number; 'user[enable_privacy_mode]'?: boolean; /** * Must have the bd staff user flag to use. */ 'user[email]'?: string; 'user[can_approve_posts]'?: boolean; 'user[can_upload_free]'?: boolean; 'user[no_flagging]'?: boolean; 'user[replacements_beta]'?: boolean; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/admin/users/{id}.json'; }; export type AdminEditUserErrors = { /** * Error */ 400: MessageErrorResponse; /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type AdminEditUserError = AdminEditUserErrors[keyof AdminEditUserErrors]; export type AdminEditUserResponses = { /** * Success */ 204: void; }; export type AdminEditUserResponse = AdminEditUserResponses[keyof AdminEditUserResponses]; export type AdminAnonymizeUserData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/admin/users/{id}/anonymize.json'; }; export type AdminAnonymizeUserErrors = { /** * Not Found */ 404: NotFoundResponse; }; export type AdminAnonymizeUserError = AdminAnonymizeUserErrors[keyof AdminAnonymizeUserErrors]; export type DeletePostData = { body?: { /** * If the post does not have an active flag, this is required. */ reason?: string; /** * Move favorites to parent. */ move_favorites?: boolean; /** * Copy sources to parent. */ copy_sources?: boolean; /** * Copy tags to parent. */ copy_tags?: boolean; /** * If not set, nothing will happen. */ commit?: 'Delete'; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/moderator/post/posts/{id}/delete.json'; }; export type DeletePostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type DeletePostError = DeletePostErrors[keyof DeletePostErrors]; export type UndeletePostData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/moderator/post/posts/{id}/undelete.json'; }; export type UndeletePostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type UndeletePostError = UndeletePostErrors[keyof UndeletePostErrors]; export type UndeletePostResponses = { /** * Success */ 201: { post: Post; }; }; export type UndeletePostResponse = UndeletePostResponses[keyof UndeletePostResponses]; export type RegeneratePostThumbnailsData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/moderator/post/posts/{id}/regenerate_thumbnails.json'; }; export type RegeneratePostThumbnailsErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RegeneratePostThumbnailsError = RegeneratePostThumbnailsErrors[keyof RegeneratePostThumbnailsErrors]; export type RegeneratePostThumbnailsResponses = { /** * Success */ 201: { post: Post; }; }; export type RegeneratePostThumbnailsResponse = RegeneratePostThumbnailsResponses[keyof RegeneratePostThumbnailsResponses]; export type RegeneratePostVideosData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/moderator/post/posts/{id}/regenerate_videos.json'; }; export type RegeneratePostVideosErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type RegeneratePostVideosError = RegeneratePostVideosErrors[keyof RegeneratePostVideosErrors]; export type RegeneratePostVideosResponses = { /** * Success */ 204: void; }; export type RegeneratePostVideosResponse = RegeneratePostVideosResponses[keyof RegeneratePostVideosResponses]; export type ExpungePostData = { body?: { reason?: string; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/moderator/post/posts/{id}/expunge.json'; }; export type ExpungePostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type ExpungePostError = ExpungePostErrors[keyof ExpungePostErrors]; export type ExpungePostResponses = { /** * Success */ 201: { post: Post; }; }; export type ExpungePostResponse = ExpungePostResponses[keyof ExpungePostResponses]; export type MovePostFavoritesData = { body?: { /** * If not set, nothing will happen. */ commit: 'Submit'; }; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/moderator/post/posts/{id}/move_favorites.json'; }; export type MovePostFavoritesErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type MovePostFavoritesError = MovePostFavoritesErrors[keyof MovePostFavoritesErrors]; export type AiCheckPostData = { body?: never; path: { /** * The ID of the item. */ id: number; }; query?: never; url: '/moderator/post/posts/{id}/ai_check.json'; }; export type AiCheckPostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type AiCheckPostError = AiCheckPostErrors[keyof AiCheckPostErrors]; export type UnapprovePostData = { body?: { post_id: number; }; path?: never; query?: never; url: '/moderator/post/approval.json'; }; export type UnapprovePostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type UnapprovePostError = UnapprovePostErrors[keyof UnapprovePostErrors]; export type UnapprovePostResponses = { /** * Success/Failure */ 204: void; }; export type UnapprovePostResponse = UnapprovePostResponses[keyof UnapprovePostResponses]; export type ApprovePostData = { body?: { post_id: number; }; path?: never; query?: never; url: '/moderator/post/approval.json'; }; export type ApprovePostErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Not Found */ 404: NotFoundResponse; }; export type ApprovePostError = ApprovePostErrors[keyof ApprovePostErrors]; export type ApprovePostResponses = { /** * Success */ 201: { [key: string]: never; }; /** * Failure */ 204: void; }; export type ApprovePostResponse = ApprovePostResponses[keyof ApprovePostResponses]; export type SearchPostDisapprovalsData = { body?: never; path?: never; query?: { /** * The maximum number of results to return. Between 0 and 320. */ limit?: number; /** * The page number of results to get. Between 1 and 750. */ page?: number; /** * Search for a specific id. Multiple can be separated by commas, up to 100. */ 'search[id]'?: number | string; 'search[order]'?: 'id_asc' | 'id_desc' | 'post_id' | 'post_id_desc'; 'search[creator_id]'?: number; 'search[creator_name]'?: string; 'search[post_id]'?: number; 'search[message]'?: string; 'search[post_tags_match]'?: string; 'search[reason]'?: string; 'search[has_message]'?: boolean; }; url: '/moderator/post/disapprovals.json'; }; export type SearchPostDisapprovalsResponses = { /** * Success */ 200: Array; }; export type SearchPostDisapprovalsResponse = SearchPostDisapprovalsResponses[keyof SearchPostDisapprovalsResponses]; export type CreatePostDisapprovalData = { body?: { 'post_disapproval[post_id]': number; 'post_disapproval[reason]': 'borderline_quality' | 'borderline_relevancy' | 'other'; 'post_disapproval[message]'?: string; }; path?: never; query?: never; url: '/moderator/post/disapprovals.json'; }; export type CreatePostDisapprovalErrors = { /** * Access Denied */ 403: AccessDeniedResponse; /** * Invalid Input Data */ 422: { errors: Array; }; }; export type CreatePostDisapprovalError = CreatePostDisapprovalErrors[keyof CreatePostDisapprovalErrors]; export type CreatePostDisapprovalResponses = { /** * Success */ 201: PostDisapproval; }; export type CreatePostDisapprovalResponse = CreatePostDisapprovalResponses[keyof CreatePostDisapprovalResponses];