Skip to content

Instantly share code, notes, and snippets.

@DonovanDMC
Created May 11, 2024 07:21
Show Gist options
  • Save DonovanDMC/9ff1c09cc9531536b90114deab5baf0b to your computer and use it in GitHub Desktop.
Save DonovanDMC/9ff1c09cc9531536b90114deab5baf0b to your computer and use it in GitHub Desktop.
openapi: "3.1.0"
info:
title: "SomeSite"
version: "1"
x-constants:
- &modaction-actions
- artist_lock
- artist_rename
- artist_unlock
- artist_user_link
- artist_user_unlink
- ban_create
- ban_delete
- ban_update
- comment_delete
- comment_hide
- comment_unhide
- comment_update
- post_deletion_reason_create
- post_deletion_reason_delete
- post_deletion_reasons_reorder
- post_deletion_reason_update
- post_replacement_rejection_reason_create
- post_replacement_rejection_reason_delete
- post_replacement_rejection_reasons_reorder
- forum_topic_stick
- forum_topic_update
- forum_topic_unhide
- forum_topic_unlock
- forum_topic_unstick
- help_create
- help_delete
- help_update
- mascot_create
- mascot_delete
- mascot_update
- mass_update
- nuke_tag
- pool_delete
- set_change_visibility
- set_delete
- set_update
- tag_alias_create
- tag_alias_update
- tag_implication_create
- tag_implication_update
- takedown_process
- takedown_delete
- ticket_claim
- ticket_unclaim
- ticket_update
- upload_whitelist_create
- upload_whitelist_delete
- upload_whitelist_update
- user_blacklist_change
- user_delete
- user_flags_change
- user_level_change
- user_name_change
- user_text_change
- user_upload_limit_change
- user_feedback_create
- user_feedback_delete
- user_feedback_update
- wiki_page_delete
- wiki_page_lock
- wiki_page_rename
- wiki_page_unlock
- rule_create
- rule_delete
- rules_reorder
- rule_update
- rule_category_create
- rule_category_delete
- rule_categories_reorder
- rule_category_update
- quick_rule_create
- quick_rule_delete
- quick_rules_reorder
- quick_rule_update
- avoid_posting_create
- avoid_posting_deactivate
- avoid_posting_delete
- avoid_posting_reactivate
- avoid_posting_update
- &modaction-classes
- Artist
- AvoidPosting
- Ban
- BulkUpdateRequest
- Comment
- ForumCategory
- ForumPost
- ForumTopic
- Help
- Mascot
- Pool
- PostDeletionReason
- PostReplacementRejectionReason
- PostSet
- QuickRule
- RuleCategory
- Rule
- TagAlias
- TagImplication
- Takedown
- Ticket
- UploadWhitelist
- UserFeedback
- User
- WikiPage
- &auditlog-actions
- force_name_change
- min_upload_level_change
- post_owner_reassign
- stuck_dnp
- user_title_change
- ip_ban_create
- ip_ban_delete
- staff_note_create
- staff_note_update
- staff_note_delete
- staff_note_undelete
- comment_vote_delete
- comment_vote_lock
- post_vote_delete
- post_vote_lock
- forum_post_vote_delete
- &post-event-actions
- deleted
- undeleted
- approved
- unapproved
- flag_created
- flag_removed
- favorites_moved
- favorites_received
- rating_locked
- rating_unlocked
- status_locked
- status_unlocked
- note_locked
- note_unlocked
- replacement_accepted
- replacement_rejected
- replacement_promoted
- replacement_deleted
- expunged
- comment_disabled
- comment_enabled
- comment_locked
- comment_unlocked
- changed_bg_color
- &ratings
- s
- q
- e
- &tag-categories
- 0 #general
- 1 # artist
- 2 # voice actor
- 3 # copyright
- 4 # character
- 5 # species
- 6 # invalid
- 7 # meta
- 8 # lore
- &feedback-categories
- negative
- neutral
- positive
- &tag-request-statuses
- active
- deleted
- processing
- queued
- retired
- error
- pending
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
parameters:
id:
name: search[id]
in: query
description: Search for a specific id.
schema:
type: number
limit:
name: limit
in: query
description: The maximum number of results to return. Between 0 and 500.
schema:
type: number
minimum: 0
maximum: 500
page:
name: page
in: query
description: The page number of results to get. Between 1 and 1000.
schema:
type: number
minimum: 1
maximum: 1000
ip_addr:
name: search[ip_addr]
in: query
description: Must be Admin+ to use. See [postgres' documentation](https://www.postgresql.org/docs/9.3/functions-net.html) for information on how this is parsed. Specifically, "is contained within or equals" (`<<=`).
schema:
type: string
schemas:
Artist:
type: object
required:
- created_at
- creator_id
- id
- is_locked
- linked_user_id
- name
- notes
- other_names
- updated_at
properties:
created_at:
type: string
format: date-time
creator_id:
type: number
id:
type: number
is_locked:
type: boolean
linked_user_id:
type: ["number", "null"]
name:
type: string
notes:
type: ["string", "null"]
other_names:
type: array
items:
type: string
updated_at:
type: string
format: date-time
ArtistURL:
type: object
required:
- artist_id
- created_at
- id
- is_active
- updated_at
- url
- normalized_url
properties:
artist_id:
type: number
created_at:
type: string
format: date-time
id:
type: number
is_active:
type: boolean
updated_at:
type: string
format: date-time
url:
type: string
format: "uri"
normalized_url:
type: string
format: "uri"
ArtistVersion:
type: object
required:
- id
- artist_id
- name
- updater_id
- created_at
- updated_at
- other_names
- urls
- notes_changed
properties:
id:
type: number
artist_id:
type: number
name:
type: string
updater_id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
other_names:
type: array
items:
type: string
urls:
type: array
items:
type: string
format: uri
notes_changed:
type: boolean
AvoidPosting:
type: object
required:
- id
- creator_id
- updater_id
- artist_name
- details
- is_active
- created_at
- updated_at
properties:
id:
type: number
creator_id:
type: number
updater_id:
type: number
artist_name:
type: string
staff_notes:
type: string
description: Only visible to Janitor+
details:
type: string
is_active:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
AvoidPostingVersion:
type: object
required:
- id
- updater_id
- avoid_posting_id
- artist_name
- details
- is_active
- updated_at
properties:
id:
type: number
updater_id:
type: number
avoid_posting_id:
type: number
artist_name:
type: string
details:
type: string
staff_notes:
type: string
description: Only visible to Janitor+
is_active:
type: boolean
updated_at:
type: string
format: date-time
Ban:
type: object
required:
- id
- user_id
- reason
- banner_id
- expires_at
- created_at
- updated_at
properties:
id:
type: number
user_id:
type: number
reason:
type: string
banner_id:
type: number
expires_at:
type: ["string", "null"]
format: date-time
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
BulkRelatedTag:
allOf:
- $ref: "#/components/schemas/RelatedTag"
- type: object
required:
- count
properties:
count:
type: number
BulkUpdateRequest:
type: object
required:
- id
- creator_id
- forum_topic_id
- forum_post_id
- script
- status
- created_at
- updated_at
- approver_id
- title
properties:
id:
type: number
creator_id:
type: number
forum_topic_id:
type: ["number", "null"]
forum_post_id:
type: ["number", "null"]
script:
type: string
examples:
- "alias a -> b"
status:
type: string
enum:
- approved
- rejected
- pending
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
approver_id:
type: ["number", "null"]
title:
type: string
Comment:
type: object
required:
- id
- post_id
- creator_id
- body
- score
- created_at
- updated_at
- updater_id
- do_not_bump_post
- is_hidden
- is_sticky
- warning_type
- warning_user_id
- creator_name
- updater_name
properties:
id:
type: number
post_id:
type: number
creator_id:
type: number
body:
type: string
score:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
updater_id:
type: number
do_not_bump_post:
type: boolean
deprecated: true
is_hidden:
type: boolean
is_sticky:
type: boolean
warning_type:
type: ["string", "null"]
enum:
- warning
- record
- ban
warning_user_id:
type: ["number", "null"]
creator_name:
type: string
updater_name:
type: string
CommentVote:
allOf:
- $ref: "#/components/schemas/LockableUserVote"
- type: object
required:
- comment_id
properties:
comment_id:
type: number
CurrentUser:
allOf:
- $ref: "#/components/schemas/FullUser"
- type: object
required:
- recent_tags
- last_logged_in_at
- last_forum_read_at
- email
- comment_threshold
- default_image_size
- favorite_tags
- blacklisted_tags
- time_zone
- per_page
- custom_style
- api_regen_multiplier
- api_burst_limit
- remaining_api_limit
- statement_timeout
- favorite_limit
- tag_query_limit
- has_mail
- description_collapsed_initially
- hide_comments
- show_hidden_comments
- receive_email_notifications
- enable_keyboard_navigation
- enable_privacy_mode
- style_usernames
- enable_autocomplete
- disable_cropped_thumbnails
- enable_safe_mode
- disable_responsive_mode
- enable_compact_uploader
- move_related_thumbnails
- enable_hover_zoom
- hover_zoom_shift
- hover_zoom_sticky_shift
- hover_zoom_play_audio
- show_post_uploader
- go_to_recent_forum_post
properties:
recent_tags:
type: ["string", "null"]
last_logged_in_at:
type: string
format: date-time
last_forum_read_at:
type: string
format: date-time
email:
type: string
comment_threshold:
type: number
default_image_size:
type: string
favorite_tags:
type: string
blacklisted_tags:
type: string
time_zone:
type: string
per_page:
type: number
custom_style:
type: string
api_regen_multiplier:
type: number
api_burst_limit:
type: number
remaining_api_limit:
type: number
statement_timeout:
type: number
favorite_limit:
type: number
tag_query_limit:
type: number
has_mail:
type: boolean
description_collapsed_initially:
type: boolean
hide_comments:
type: boolean
show_hidden_comments:
type: boolean
receive_email_notifications:
type: boolean
enable_keyboard_navigation:
type: boolean
enable_privacy_mode:
type: boolean
style_usernames:
type: boolean
enable_autocomplete:
type: boolean
disable_cropped_thumbnails:
type: boolean
enable_safe_mode:
type: boolean
disable_responsive_mode:
type: boolean
enable_compact_uploader:
type: boolean
move_related_thumbnails:
type: boolean
enable_hover_zoom:
type: boolean
hover_zoom_shift:
type: boolean
hover_zoom_sticky_shift:
type: boolean
hover_zoom_play_audio:
type: boolean
show_post_uploader:
type: boolean
go_to_recent_forum_post:
type: boolean
DMail:
type: object
required:
- id
- owner_id
- from_id
- to_id
- title
- body
- is_read
- is_deleted
- created_at
- updated_at
properties:
id:
type: number
owner_id:
type: number
from_id:
type: number
to_id:
type: number
title:
type: string
body:
type: string
is_read:
type: boolean
is_deleted:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
DMailFilter:
type: object
required:
- id
- user_id
- words
- created_at
- updated_at
properties:
id:
type: number
user_id:
type: number
words:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
DeferredPost:
type: object
required:
- created_ago
- created_at
- down_score
- file_ext
- file_size
- flags
- height
- id
- preview_height
- preview_width
- rating
- score
- status
- tags
- up_score
- uploader
- uploader_id
- width
properties:
created_ago:
type: string
created_at:
type: string
down_score:
type: number
file_ext:
type: string
file_size:
type: number
flags:
type: string
height:
type: number
id:
type: number
preview_height:
type: number
preview_width:
type: number
rating:
type: string
enum: *ratings
score:
type: number
status:
type: string
enum:
- active
- deleted
- flagged
- pending
tags:
type: string
up_score:
type: number
uploader:
type: string
uploader_id:
type: number
width:
type: number
md5:
type: string
preview_file_url:
type: string
large_file_url:
type: string
cropped_file_url:
type: string
file_url:
type: string
DTextResponse:
type: object
required:
- html
- posts
properties:
html:
type: string
posts:
type: object
patternProperties:
"^0-9+$":
$ref: "#/components/schemas/DeferredPost"
EmailBlacklist:
type: object
reequired:
- id
- created_at
- updated_at
- domain
- creator_id
- reason
properties:
id:
type: number
created_at:
type: string
updated_at:
type: string
domain:
type: string
creator_id:
type: string
reason:
type: string
ForumCategory:
type: object
required:
- id
- name
- order
- can_view
- can_create
properties:
id:
type: number
name:
type: string
order:
type: number
can_view:
type: number
can_create:
type: number
ForumPost:
type: object
required:
- id
- topic_id
- creator_id
- updater_id
- body
- is_hidden
- created_at
- updated_at
- warning_type
- warning_user_id
- tag_change_request_id
- tag_change_request_type
properties:
id:
type: number
topic:
type: number
creator_id:
type: number
updater_id:
type: number
body:
type: string
is_hidden:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
warning_type:
type: ["string", "null"]
enum:
- warning
- record
- ban
warning_user_id:
type: ["number", "null"]
tag_change_request_id:
type: ["number", "null"]
tag_change_request_type:
type: ["string", "null"]
enum:
- BulkUpdateRequest
- TagAlias
- TagImplication
ForumPostVote:
allOf:
- $ref: "#/components/schemas/UserVote"
- type: object
required:
- forum_post_id
properties:
forum_post_id:
type: number
ForumTopic:
type: object
required:
- id
- creator_id
- updater_id
- title
- response_count
- is_sticky
- is_locked
- is_hidden
- created_at
- updated_at
- category_id
properties:
id:
type: number
creator_id:
type: number
updater_id:
type: number
title:
type: string
response_count:
type: number
is_sticky:
type: boolean
is_locked:
type: boolean
is_hidden:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
category_id:
type: number
FullUser:
allOf:
- $ref: "#/components/schemas/User"
- type: object
required:
- wiki_page_version_count
- artist_version_count
- pool_version_count
- forum_post_count
- comment_count
- flag_count
- favorite_count
- positive_feedback_count
- neutral_feedback_count
- negative_feedback_count
- upload_limit
- profile_about
- profile_artinfo
properties:
wiki_page_version_count:
type: number
artist_version_count:
type: number
pool_version_count:
type: number
forum_post_count:
type: number
comment_count:
type: number
flag_count:
type: number
favorite_count:
type: number
positive_feedback_count:
type: number
neutral_feedback_count:
type: number
negative_feedback_count:
type: number
upload_limit:
type: number
profile_about:
type: string
profile_artinfo:
type: string
Help:
type: object
required:
- id
- created_at
- updated_at
- name
- wiki_page
- related
- title
properties:
id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
name:
type: string
wiki_page:
type: string
related:
type: string
title:
type: string
IPBan:
type: object
required:
- id
- creator_id
- ip_addr
- reason
- created_at
- updated_at
properties:
id:
type: number
creator_id:
type: number
ip_addr:
type: string
reason:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
IQDBResponse:
type: object
required:
- hash
- post_id
- score
- post
properties:
hash:
type: string
post_id:
type: number
score:
type: number
post:
$ref: "#/components/schemas/Post"
LockableUserVote:
allOf:
- $ref: "#/components/schemas/UserVote"
- type: object
required:
- is_locked
properties:
is_locked:
type: boolean
Mascot:
type: object
required:
- id
- creator_id
- display_name
- md5
- file_ext
- background_color
- artist_url
- artist_name
- active
- created_at
- updated_at
- available_on
- url_path
properties:
id:
type: number
creator_id:
type: number
display_name:
type: string
md5:
type: string
file_ext:
type: string
background_color:
type: string
artist_url:
type: string
format: uri
artist_name:
type: string
active:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
available_on:
type: array
items:
type: string
url_path:
type: string
format: uri
ModAction:
type: object
required:
- id
- creator_id
- created_at
- updated_at
- action
- subject_id
- subject_type
properties:
id:
type: number
creator_id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
action:
type: string
enum: *modaction-actions
subject_id:
type: ["number", "null"]
subject_type:
type: ["string", "null"]
enum: *modaction-classes
user_id:
type: number
description: |
Valid for: `artist_user_link`, `artist_user_unlink`, `ban_create`, `ban_delete`, `ban_update`, `comment_delete`, `comment_hide`, `comment_unhide`, `comment_update`, `post_deletion_reason_delete`, `post_replacement_rejection_reason_delete`, `forum_post_delete`, `forum_post_hide`, `forum_post_unhide`, `forum_post_update`, `forum_topic_delete`, `forum_topic_hide`, `forum_topic_lock`, `forum_topic_move`, `forum_topic_stick`, `forum_topic_update`, `forum_topic_unhide`, `forum_topic_unlock`, `forum_topic_unstick`, `pool_delete`, `set_change_visibility`, `set_delete`, `set_update`, `user_feedback_create`, `user_feedback_delete`, `user_feedback_update`
name:
type: string
description: |
Valid for: `help_create`, `help_delete`, `help_update`, `rule_create`, `rule_delete`, `rule_update`, `rule_category_create`, `rule_category_delete`, `rule_category_update`
total:
type: number
description: |
Valid for: `post_deletion_reasons_reorder`, `post_replacement_rejection_reasons_reorder`, `rules_reorder`, `rule_categories_reorder`, `quick_rules_reorder`
tag_name:
type: string
description: |
Valid for: `nuke_tag`
change_desc:
type: string
description: |
Valid for: `tag_alias_update`, `tag_implication_update`
reason:
type: string
description: |
Valid for: `ban_update`, `post_deletion_reason_create`, `post_deletion_reason_delete`, `post_deletion_reason_update`, `post_replacement_rejection_reason_create`, `post_replacement_rejection_reason_delete`, `post_replacement_rejection_reason_update`, `user_feedback_create`, `user_feedback_delete`, `user_feedback_update`, `quick_rule_create`, `quick_rule_delete`, `quick_rule_update`
old_reason:
type: string
description: |
Valid for: `ban_update`, `post_deletion_reason_update`, `post_replacement_rejection_reason_update`, `user_feedback_update`, `quick_rule_update`
header:
type: string
description: |
Valid for: `quick_rule_create`, `quick_rule_delete`, `quick_rule_update`
old_header:
type: string
description: |
Valid for: `quick_rule_update`
description:
type: string
description: |
Valid for: `rule_create`, `rule_update`
old_description:
type: string
description: |
Valid for: `rule_update`
antecedent:
type: string
description: |
Valid for: `mass_update`
consequent:
type: string
description: |
Valid for: `consequent`
alias_desc:
type: string
description: |
Valid for: `tag_alias_create`, `tag_alias_update`
implication_desc:
type: string
description: |
Valid for: `tag_implication_create`, `tag_implication_update`
is_public:
type: boolean
description: |
Valid for: `set_change_visibility`
added:
type: array
description: |
Valid for: `user_flags_change`
items:
type: string
removed:
type: array
description: |
Valid for: `user_flags_change`
items:
type: string
level:
type: number
description: |
Valid for: `user_level_change`
old_level:
type: number
description: |
Valid for: `user_level_change`
upload_limit:
type: number
description: |
Valid for: `user_upload_limit_change`
old_upload_limit:
type: number
description: |
Valid for: `user_upload_limit_change`
new_name:
type: string
description: |
Valid for: `artist_rename`
old_name:
type: string
description: |
Valid for: `artist_rename`, `rule_update`, `rule_category_update`
duration:
type: string
description: |
Valid for: `ban_create`
expires_at:
type: string
description: |
Valid for: `ban_update`
format: date-time
old_expires_at:
type: string
description: |
Valid for: `ban_update`
format: date-time
forum_category_id:
type: number
description: |
Valid for: `forum_topic_move`
old_forum_category_id:
type: number
description: |
Valid for: `forum_topic_move`
forum_category_name:
type: string
description: |
Valid for: `forum_topic_move`, `forum_category_create`, `forum_category_delete`, `forum_category_update`
old_forum_category_name:
type: string
description: |
Valid for: `forum_topic_move`, `forum_category_update`
can_view:
type: number
description: |
Valid for: `forum_category_create`, `forum_category_delete`, `forum_category_update`
old_can_view:
type: number
description: |
Valid for: `forum_category_update`
can_create:
type: number
description: |
Valid for: `forum_category_create`, `forum_category_delete`, `forum_category_update`
old_can_create:
type: number
description: |
Valid for: `forum_category_update`
forum_topic_id:
type: number
description: |
Valid for: `forum_post_delete`, `forum_post_hide`, `forum_post_unhide`, `forum_post_update`
forum_topic_title:
type: string
description: |
Valid for: `forum_topic_delete`, `forum_topic_hide`, `forum_topic_lock`, `forum_topic_move`, `forum_topic_stick`, `forum_topic_update`, `forum_topic_update`, `forum_topic_unhide`, `forum_topic_unlock`, `forum_topic_unstick`
pool_name:
type: string
description: |
Valid for: `pool_delete`
pattern:
type: string
description: |
Valid for: `upload_whitelist_create`, `upload_whitelist_delete`, `upload_whitelist_update`
old_pattern:
type: string
description: |
Valid for: `upload_whitelist_update`
note:
type: string
description: |
Valid for: `upload_whitelist_create`, `upload_whitelist_delete`, `upload_whitelist_update`
hidden:
type: boolean
description: |
Valid for: `upload_whitelist_create`, `upload_whitelist_delete`, `upload_whitelist_update`
type:
type: string
description: |
Valid for: `user_feedback_create`, `user_feedback_delete`, `user_feedback_update`
enum: *feedback-categories
old_type:
type: string
description: |
Valid for: `user_feedback_update`
enum: *feedback-categories
wiki_page:
type: string
description: |
Valid for: `help_create`, `help_delete`, `help_update`
wiki_page_title:
type: string
description: |
Valid for: `wiki_page_delete`, `wiki_page_lock`, `wiki_page_rename`, `wiki_page_unlock`
old_title:
type: string
description: |
Valid for: `post_deletion_reason_update`, `wiki_page_rename`
category_name:
type: string
description: |
Valid for: `rule_create`, `rule_delete`, `rule_update`
old_category_name:
type: string
description: |
Valid for: `rule_update`
prompt:
type: string
description: |
Valid for: `post_deletion_reason_update`
old_prompt:
type: string
description: |
Valid for: `post_deletion_reason_update`
title:
type: string
description: |
Valid for: `post_deletion_reason_update`
artist_name:
type: string
description: |
Valid for: `avoid_posting_create`, `avoid_posting_deactivate`, `avoid_posting_delete`, `avoid_posting_reactivate`, `avoid_posting_update`
NewsUpdate:
type: object
required:
- id
- message
- creator_id
- updater_id
- created_at
- updated_at
properties:
id:
type: number
message:
type: string
creator_id:
type: number
updater_id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
Note:
type: object
required:
- id
- creator_id
- post_id
- x
- y
- width
- height
- is_active
- body
- created_at
- updated_at
- version
- creator_name
properties:
id:
type: number
creator_id:
type: number
post_id:
type: number
x:
type: number
y:
type: number
width:
type: number
height:
type: number
is_active:
type: boolean
body:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
version:
type: number
creator_name:
type: string
NoteVersion:
type: object
required:
- id
- note_id
- post_id
- updater_id
- x
- y
- width
- height
- is_active
- body
- created_at
- updated_at
- version
properties:
id:
type: number
note_id:
type: number
post_id:
type: number
updater_id:
type: number
x:
type: number
y:
type: number
width:
type: number
height:
type: number
is_active:
type: boolean
body:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
version:
type: number
Pool:
type: object
required:
- id
- name
- creator_id
- description
- is_active
- post_ids
- created_at
- updated_at
- artists
- creator_name
- post_count
properties:
id:
type: number
name:
type: string
creator_id:
type: number
description:
type: string
is_active:
type: boolean
post_ids:
type: array
items:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
artists:
type: array
items:
type: string
creator_name:
type: string
post_count:
type: number
PoolVersion:
type: object
required:
- id
- pool_id
- post_ids
- added_post_ids
- removed_post_ids
- updater_id
- description
- description_changed
- name
- name_changed
- created_at
- updated_at
- is_active
- version
properties:
id:
type: number
pool_id:
type: number
post_ids:
type: array
items:
type: number
added_post_ids:
type: array
items:
type: number
removed_post_ids:
type: array
items:
type: number
updater_id:
type: number
description:
type: string
description_changed:
type: boolean
name:
type: string
name_changed:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
is_active:
type: boolean
version:
type: number
PopularSearch:
type: object
required:
- tag
- count
properties:
tag:
type: string
count:
type: number
Post:
type: object
required:
- id
- created_at
- updated_at
- file
- preview
- sample
- score
- views
- tags
- locked_tags
- change_seq
- flags
- rating
- fav_count
- sources
- pools
- relationships
- approver_id
- uploader_id
- description
- comment_count
- is_favorited
- own_vote
- has_notes
- duration
properties:
id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
file:
type: object
required:
- width
- height
- ext
- size
- md5
- url
properties:
width:
type: number
height:
type: number
ext:
type: string
size:
type: number
md5:
type: string
url:
type: ["string", "null"]
preview:
type: object
required:
- width
- height
- url
properties:
width:
type: number
height:
type: number
url:
type: ["string", "null"]
sample:
type: object
required:
- has
- height
- width
- url
- alternates
properties:
has:
type: boolean
height:
type: ["number", "null"]
width:
type: ["number", "null"]
url:
type: ["string", "null"]
alternates:
type: object
properties:
480p:
$ref: "#/components/schemas/PostSampleAlternate"
720p:
$ref: "#/components/schemas/PostSampleAlternate"
original:
$ref: "#/components/schemas/PostSampleAlternate"
score:
type: object
required:
- up
- down
- total
properties:
up:
type: number
down:
type: number
total:
type: number
views:
type: object
required:
- daily
- total
properties:
daily:
type: number
total:
type: number
tags:
type: object
required:
- general
- artist
- voice_actor
- copyright
- character
- species
- invalid
- meta
- lore
properties:
general:
type: array
items:
type: string
artist:
type: array
items:
type: string
voice_actor:
type: array
items:
type: string
copyright:
type: array
items:
type: string
character:
type: array
items:
type: string
species:
type: array
items:
type: string
invalid:
type: array
items:
type: string
meta:
type: array
items:
type: string
lore:
type: array
items:
type: string
locked_tags:
type: ["array", "null"]
items:
type: string
change_seq:
type: number
flags:
type: object
required:
- pending
- flagged
- note_locked
- status_locked
- rating_locked
- deleted
properties:
pending:
type: boolean
flagged:
type: boolean
note_locked:
type: boolean
status_locked:
type: boolean
rating_locked:
type: boolean
deleted:
type: boolean
rating:
type: string
enum: *ratings
fav_count:
type: number
sources:
type: array
items:
type: string
pools:
type: array
items:
type: number
relationships:
type: object
required:
- parent_id
- has_children
- has_active_children
- children
properties:
parent_id:
type: ["number", "null"]
has_children:
type: boolean
has_active_children:
type: boolean
children:
type: array
items:
type: number
approver_id:
type: ["number", "null"]
uploader_id:
type: number
description:
type: string
comment_count:
type: number
is_favorited:
type: boolean
own_vote:
type: ["number", "null"]
enum:
- -1
- 0
- 1
has_notes:
type: boolean
duration:
type: ["number", "null"]
PostApproval:
type: object
required:
- id
- user_id
- post_id
- created_at
- updated_at
properties:
id:
type: number
user_id:
type: number
post_id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
PostDeletionReason:
type: object
required:
- id
- creator_id
- reason
- title
- prompt
- order
- created_at
- updated_at
properties:
id:
type: number
creator_id:
type: number
reason:
type: ["string", "null"]
title:
type: ["string", "null"]
prompt:
type: ["string", "null"]
order:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
PostDisapproval:
type: object
required:
- id
- user_id
- post_id
- reason
- message
- created_at
- updated_at
properties:
id:
type: number
user_id:
type: number
post_id:
type: number
reason:
type: string
enum:
- borderline_quality
- borderline_relevancy
- other
message:
type: ["string", "null"]
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
PostEvents:
type: object
required:
- id
- creator_id
- post_id
- action
- created_at
properties:
id:
type: number
creator_id:
type: ["number", "null"]
post_id:
type: number
action:
type: string
enum: *post-event-actions
created_at:
type: string
format: date-time
reason:
type: string
description: |
Valid for: `deleted`, `flag_created`
parent_id:
type: number
description: |
Valid for: `favorites_moved`
child_id:
type: number
description: |
Valid for: `favorites_received`
source_post_id:
type: number
description: |
Valid for: `replacement_promoted`
bg_color:
type: string
description: |
Valid for: `changed_background_color`
PostFlag:
type: object
required:
- id
- post_id
- creator_id
- reason
- is_resolved
- created_at
- updated_at
- is_deletion
- type
properties:
id:
type: number
post_id:
type: number
creator_id:
type: ["number", "null"]
reason:
type: string
is_resolved:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
is_deletion:
type: boolean
type:
type: string
enum:
- flag
- deletion
PostRecommendation:
type: object
required:
- score
- post
properties:
score:
type: number
post:
$ref: "#/components/schemas/Post"
PostReplacementRejectionReason:
type: object
required:
- id
- creator_id
- reason
- order
- created_at
- updated_at
properties:
id:
type: number
creator_id:
type: number
reason:
type: string
order:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
PostReplacement:
type: object
required:
- id
- created_at
- updated_at
- post_id
- creator_id
- approver_id
- file_ext
- file_size
- image_height
- image_width
- md5
- source
- file_name
- status
- reason
- rejector_id
- rejection_reason
- file_url
properties:
id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
post_id:
type: number
creator_id:
type: number
approver_id:
type: ["number", "null"]
file_ext:
type: string
file_size:
type: number
image_height:
type: number
image_width:
type: number
md5:
type: string
source:
type: string
file_name:
type: string
status:
type: string
enum:
- prompted
- approved
- rejected
- pending
reason:
type: string
rejector_id:
type: ["number", "null"]
rejection_reason:
type: string
file_url:
type: ["string", "null"]
PostSampleAlternate:
type: object
required:
- type
- height
- width
- urls
properties:
type:
type: string
enum:
video
height:
type: number
width:
type: number
urls:
type: array
items:
- type: ["string", "null"]
format: "uri"
- type: ["string", "null"]
format: "uri"
PostSet:
type: object
required:
- id
- name
- shortname
- description
- is_public
- transfer_on_delete
- creator_id
- post_ids
- post_count
- created_at
- updated_at
properties:
id:
type: number
name:
type: string
shortname:
type: string
description:
type: string
is_public:
type: boolean
transfer_on_delete:
type: boolean
creator_id:
type: number
post_ids:
type: array
items:
type: number
post_count:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
PostVersion:
type: object
required:
- id
- post_id
- tags
- added_tags
- removed_tags
- locked_tags
- added_locked_tags
- removed_locked_tags
- updater_id
- updated_at
- rating
- rating_changed
- parent_id
- parent_changed
- source
- source_changed
- description
- description_changed
- version
- reason
- original_tags
- obsolete_added_tags
- obsolete_removed_tags
- unchanged_tags
- updater_name
properties:
id:
type: number
post_id:
type: number
tags:
type: string
added_tags:
type: array
items:
type: string
removed_tags:
type: array
items:
type: string
locked_tags:
type: ["string", "null"]
added_locked_tags:
type: array
items:
type: string
removed_locked_tags:
type: array
items:
type: string
updater_id:
type: number
updated_at:
type: string
format: date-time
rating:
type: string
enum: *ratings
rating_changed:
type: boolean
parent_id:
type: ["number", "null"]
parent_changed:
type: boolean
source:
type: string
source_changed:
type: boolean
description:
type: string
description_changed:
type: boolean
version:
type: number
reason:
type: ["string", "null"]
original_tags:
type: string
obsolete_added_tags:
type: string
obsolete_removed_tags:
type: string
unchanged_tags:
type: string
updater_name:
type: string
PostVote:
allOf:
- $ref: "#/components/schemas/LockableUserVote"
- type: object
required:
- post_id
properties:
post_id:
type: number
UserVote:
type: object
required:
- id
- user_id
- score
- created_at
- updated_at
properties:
id:
type: number
user_id:
type: number
score:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
QuickRule:
type: object
required:
- id
- rule_id
- reason
- header
- order
- created_at
- updated_at
properties:
id:
type: number
rule_id:
type: number
reason:
type: string
header:
type: string
order:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
RelatedTag:
type: object
required:
- name
- category_id
properties:
name:
type: string
category_id:
type: number
enum: *tag-categories
RecordBuilder:
type: object
required:
- section
- quick_mod
- rules
properties:
section:
type: string
quick_mod:
type: array
items:
type: object
required:
- reason
- header
- rule
properties:
reason:
type: string
header:
type: string
rule:
type: string
rules:
type: object
patternProperties:
"^[a-zA-Z0-9]+$":
type: object
required:
- name
- description
properties:
name:
type: string
description:
type: string
Rule:
type: object
required:
- id
- creator_id
- updater_id
- category_id
- name
- description
- order
- anchor
- created_at
- updated_at
properties:
id:
type: number
creator_id:
type: number
updater_id:
type: number
category_id:
type: number
name:
type: string
description:
type: string
order:
type: number
anchor:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
RuleCategory:
type: object
required:
- id
- creator_id
- updater_id
- name
- order
- anchor
- created_at
- updated_at
properties:
id:
type: number
creator_id:
type: number
updater_id:
type: number
name:
type: string
order:
type: number
anchor:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
StaffAuditLog:
type: object
required:
- id
- created_at
- updated_at
- user_id
- action
properties:
id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
user_id:
type: number
action:
type: string
enum: *auditlog-actions
reason:
type: string
description: |
Valid for: `ip_ban_create`, `ip_ban_delete`
title:
type: string
description: |
Valid for: `user_title_change`
target_id:
type: number
description: |
Valid for: `staff_note_create`, `staff_note_update`, `staff_note_delete`, `staff_note_undelete`
query:
type: string
description: |
Valid for: `post_owner_reassign`, `stuck_dnp`
post_ids:
type: array
description: |
Valid for: `post_owner_reassign`, `stuck_dnp`
items:
type: number
new_level:
type: number
description: |
Valid for: `min_upload_level_change`
old_level:
type: number
description: |
Valid for: `min_upload_level_change`
new_user_id:
type: number
description: |
Valid for: ` post_owner_reassign`
old_user_id:
type: number
description: |
Valid for: `post_owner_reassign`
staff_note_id:
type: number
description: |
Valid for: `staff_note_create`, `staff_note_update`, `staff_note_delete`, `staff_note_undelete`
body:
type: string
description: |
Valid for: `staff_note_create`, `staff_note_update`
old_body:
type: string
description: |
Valid for: `staff_note_update`
ip_addr:
type: string
description: |
Valid for: `ip_ban_create`, `ip_ban_delete`
comment_id:
type: number
description: |
Valid for: `comment_vote_delete`, `comment_vote_lock`
post_id:
type: number
description: |
Valid for: `post_vote_delete`, `post_vote_lock`
forum_post_id:
type: number
description: |
Valid for: `forum_post_vote_delete`
vote:
type: number
description: |
Valid for: `comment_vote_delete`, `comment_vote_lock`, `post_vote_delete`, `post_vote_lock`, `forum_post_vote_delete`
voter_id:
type: number
description: |
Valid for: `comment_vote_delete`, `comment_vote_lock`, `post_vote_delete`, `post_vote_lock`, `forum_post_vote_delete`
StaffNote:
type: object
required:
- id
- created_at
- updated_at
- user_id
- creator_id
- body
- is_deleted
- updater_id
properties:
id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
user_id:
type: number
creator_id:
type: number
body:
type: string
is_deleted:
type: boolean
updater_id:
type: number
Stats:
type: object
required:
- started
- total_posts
- active_posts
- deleted_posts
- existing_posts
- destroyed_posts
- total_votes
- total_notes
- total_favorites
- total_pools
- public_sets
- private_sets
- total_sets
- average_posts_per_pool
- average_posts_per_set
- safe_posts
- questionable_posts
- explicit_posts
- jpg_posts
- png_posts
- gif_posts
- webp_posts
- webm_posts
- average_file_size
- total_file_size
- average_posts_per_day
- total_users
- anonymous_users
- banned_users
- restricted_users
- member_users
- trusted_users
- former_staff_users
- janitor_users
- moderator_users
- system_users
- admin_users
- owner_users
- unactivated_users
- total_dmails
- average_registrations_per_day
- total_comments
- active_comments
- hidden_comments
- deleted_comments
- average_comments_per_day
- total_forum_threads
- total_forum_posts
- average_posts_per_thread
- average_forum_posts_per_day
- total_tags
- general_tags
- artist_tags
- voice_actor_tags
- copyright_tags
- character_tags
- species_tags
- invalid_tags
- meta_tags
- lore_tags
properties:
started:
type: string
format: date-time
total_posts:
type: number
active_posts:
type: number
deleted_posts:
type: number
existing_posts:
type: number
destroyed_posts:
type: number
total_votes:
type: number
total_notes:
type: number
total_favorites:
type: number
total_pools:
type: number
public_sets:
type: number
private_sets:
type: number
total_sets:
type: number
average_posts_per_pool:
type: string
average_posts_per_set:
type: string
safe_posts:
type: number
questionable_posts:
type: number
explicit_posts:
type: number
jpg_posts:
type: number
png_posts:
type: number
gif_posts:
type: number
webp_posts:
type: number
webm_posts:
type: number
average_file_size:
type: string
total_file_size:
type: number
average_posts_per_day:
type: number
total_users:
type: number
anonymous_users:
type: number
banned_users:
type: number
restricted_users:
type: number
member_users:
type: number
trusted_users:
type: number
former_staff_users:
type: number
janitor_users:
type: number
moderator_users:
type: number
system_users:
type: number
admin_users:
type: number
owner_users:
type: number
unactivated_users:
type: number
total_dmails:
type: number
average_registrations_per_day:
type: number
total_comments:
type: number
active_comments:
type: number
hidden_comments:
type: number
deleted_comments:
type: number
average_comments_per_day:
type: number
total_forum_threads:
type: number
total_forum_posts:
type: number
average_posts_per_thread:
type: number
average_forum_posts_per_day:
type: number
total_tags:
type: number
general_tags:
type: number
artist_tags:
type: number
voice_actor_tags:
type: number
copyright_tags:
type: number
character_tags:
type: number
species_tags:
type: number
invalid_tags:
type: number
meta_tags:
type: number
lore_tags:
type: number
Tag:
type: object
required:
- id
- name
- post_count
- category
- related_tags
- related_tags_updated_at
- created_at
- updated_at
- is_locked
properties:
id:
type: number
name:
type: string
post_count:
type: number
category:
type: number
enum: *tag-categories
related_tags:
type: array
items:
type: string
related_tags_updated_at:
type: ["string", "null"]
format: date-time
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
is_locked:
type: string
format: date-time
TagAlias:
type: object
required:
- id
- antecedent_name
- consequent_name
- creator_id
- forum_topic_id
- forum_post_id
- status
- created_at
- updated_at
- post_count
- approver_id
- reason
properties:
id:
type: number
antecedent_name:
type: string
consequent_name:
type: string
creator_id:
type: number
forum_topic_id:
type: ["number", "null"]
forum_post_id:
type: ["number", "null"]
status:
type: string
description: |
Note: The "error" status will be proceeded by an error, ex: "error: Validation failed: A tag alias for tag_name already exists"
enum: *tag-request-statuses
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
post_count:
type: number
approver_id:
type: ["number", "null"]
reason:
type: string
TagImplication:
type: object
required:
- id
- antecedent_name
- consequent_name
- creator_id
- forum_topic_id
- forum_post_id
- status
- created_at
- updated_at
- post_count
- approver_id
- descendant_names
- reason
properties:
id:
type: number
antecedent_name:
type: string
consequent_name:
type: string
creator_id:
type: number
forum_topic_id:
type: ["number", "null"]
forum_post_id:
type: ["number", "null"]
status:
type: string
description: |
Note: The "error" status will be proceeded by an error, ex: "error: Validation failed: A tag alias for tag_name already exists"
enum: *tag-request-statuses
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
post_count:
type: number
approver_id:
type: ["number", "null"]
descendant_names:
type: array
items:
type: string
reason:
type: string
TagPreview:
type: object
required:
- a
- type
- tagTypeA
properties:
a:
type: string
description: The name if type=tag, else the antecedent.
b:
type: string
description: The consequent, only present if type=alias or type=implication.
type:
type: string
enum:
- tag
- implication
- alias
tagTypeA:
type: ["number", "null"]
enum: *tag-categories
tagTypeB:
type: ["number", "null"]
enum: *tag-categories
TagVersion:
type: object
required:
- id
- created_at
- updated_at
- category
- is_locked
- tag_id
- updater_id
- reason
properties:
id:
type: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
category:
type: number
enum: *tag-categories
is_locked:
type: boolean
tag_id:
type: number
updater_id:
type: number
reason:
type: string
Takedown:
type: object
required:
- id
- created_at
- updated_at
- approver_id
- status
- reason_hidden
- post_count
properties:
id:
tpe: number
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
approver_id:
type: ["number", "null"]
status:
type: string
enum:
- approved
- denied
- partial
- pending
reason_hidden:
type: boolean
post_count:
type: number
UploadWhitelist:
type: object
required:
- id
- pattern
- note
- reason
- allowed
- hidden
- created_at
- updated_at
properties:
id:
type: number
pattern:
type: string
note:
type: string
reason:
type: string
allowed:
type: boolean
hidden:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
Upload:
type: object
required:
- io
- source
- rating
- uploader_id
- tag_string
- status
- backtrace
- post_id
- created_at
- updated_at
- parent_id
- md5
- file_ext
- file_size
- image_width
- image_height
- description
- uploader_name
properties:
id:
type: number
source:
type: string
rating:
type: string
enum: *ratings
uploader_id:
type: number
tag_string:
type: string
status:
type: string
description: |
Note: The "error" status will be proceeded by an error, ex: "error: RuntimeError - No file or source URL provided"
enum:
- completed
- duplicate
- error
- processing
- pending
backtrace:
type: ["string", "null"]
post_id:
type: ["number", "null"]
deprecated: true
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
parent_id:
type: ["null", "number"]
md5:
type: ["string", "null"]
file_ext:
type: ["string", "number"]
file_size:
type: ["null", "number"]
image_width:
type: ["null", "number"]
image_height:
type: ["null", "number"]
description:
type: string
uploader_name:
type: string
User:
type: object
required:
- id
- created_at
- name
- level
- base_upload_limit
- post_upload_count
- post_update_count
- note_update_count
- level_string
- avatar_id
- can_approve_posts
- unrestricted_uploads
- disable_user_dmails
- can_manage_aibur
properties:
id:
type: number
created_at:
type: string
format: date-time
name:
type: string
level:
type: number
base_upload_limit:
type: number
post_upload_count:
type: number
post_update_count:
type: number
note_update_count:
type: number
level_string:
type: string
avatar_id:
type: ["number", "null"]
can_approve_posts:
type: boolean
unrestricted_uploads:
type: boolean
disable_user_dmails:
type: boolean
can_manage_aibur:
type: boolean
UserBlock:
type: object
required:
- id
- user_id
- target_id
- hide_uploads
- hide_comments
- hide_forum_topics
- hide_forum_posts
- disable_messages
- created_at
- updated_at
properties:
id:
type: number
user_id:
type: number
target_id:
type: number
hide_uploads:
type: boolean
hide_comments:
type: boolean
hide_forum_topics:
type: boolean
hide_forum_posts:
type: boolean
disable_messages:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
UserFeedback:
type: object
required:
- id
- user_id
- creator_id
- category
- body
- created_at
- updated_at
- updater_id
properties:
id:
type: number
user_id:
type: number
creator_id:
type: number
category:
type: string
enum: *feedback-categories
body:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
updater_id:
type: number
UserNameChangeRequest:
type: object
required:
- id
- status
- user_id
- approver_id
- original_name
- desired_name
- change_reason
- rejection_reason
- created_at
- updated_at
properties:
id:
type: number
status:
type: string
enum:
- approved
user_id:
type: number
approver_id:
type: number
original_name:
type: string
desired_name:
type: string
change_reason:
type: string
rejection_reason:
type: "null"
deprecated: true
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
WikiPage:
type: object
required:
- id
- creator_id
- title
- body
- is_locked
- created_at
- updated_at
- updater_id
- parent
- creator_name
- category_id
properties:
id:
type: number
creator_id:
type: number
title:
type: string
body:
type: string
is_locked:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
updater_id:
type: number
parent:
type: ["string", "null"]
creator_name:
type: string
category_id:
type: number
enum: *tag-categories
WikiPageVersion:
type: object
required:
- id
- wiki_page_id
- updater_id
- title
- body
- is_locked
- created_at
- updated_at
- reason
- parent
properties:
id:
type: number
wiki_page_id:
type: number
updater_id:
type: number
title:
type: string
body:
type: string
is_locked:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
reason:
type: ["string", "null"]
parent:
type: ["string", "null"]
responses:
NotFound:
description: Not Found
content:
application/json:
schema:
type: object
required:
- success
- reason
properties:
success:
type: boolean
enum:
- false
reason:
type: string
enum:
- "not found"
AccessDenied:
description: Access Denied
content:
application/json:
schema:
type: object
required:
- success
- reason
properties:
success:
type: boolean
enum:
- false
reason:
type: string
enum:
- "Access Denied"
ExpectedError:
description: Invalid Input Data
content:
application/json:
schema:
type: object
required:
- errors
examples:
- { "errors": { "key": [ "the error" ] } }
properties:
errors:
type: object
patternProperties:
"^[a-z]+$":
type: array
items:
type: string
MessageError:
description: Error
content:
application/json:
schema:
type: object
required:
- success
- message
- code
properties:
success:
type: boolean
enum:
- false
message:
type: string
code:
type: ["string", "null"]
requestBodies:
reorder:
content:
application/json:
schema:
type: array
items:
type: object
required:
- id
- order
properties:
id:
type: number
order:
type: number
warning:
content:
application/json:
type: object
required:
- record_type
properties:
record_type:
type: string
enum:
- unmark
- ban
- record
- warning
paths:
# Artists
/artists.json:
get:
summary: Search Artists
tags:
- Artists
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- updated_at
- name
- post_count
- name: search[name]
in: query
schema:
type: string
- name: search[any_other_name_like]
in: query
schema:
type: string
- name: search[any_name_matches]
in: query
schema:
type: string
- name: search[any_name_or_url_matches]
in: query
schema:
type: string
- name: search[url_matches]
in: query
schema:
type: string
- name: search[creator_name]
in: query
schema:
type: string
- name: search[creator_id]
in: query
schema:
type: string
- name: search[has_tag]
in: query
schema:
type: string
- name: search[is_linked]
in: query
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
allOf:
- $ref: "#/components/schemas/Artist"
- type: object
properties:
urls:
type: array
items:
$ref: "#/components/schemas/ArtistURL"
post:
summary: Create Artist
tags:
- Artists
security:
- basicAuth: []
description: |
`other_names` & `urls` are silently truncated to 25 entries.
`notes` is silently truncated to the wiki page limit (250,000).
Individual `other_names` are silently truncated to 100 characters.
requestBody:
content:
application/json:
schema:
type: object
required:
- name
properties:
name:
type: string
other_names:
type: array
items:
type: string
other_names_string:
type: string
url_string:
type: string
notes:
type: string
linked_user_id:
type: ["number", "null"]
description: Only usable for Janitor+
is_locked:
type: boolean
description: Only usable for Janitor+
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Artist"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/artists/{idOrName}.json:
get:
summary: Get Artist
tags:
- Artists
parameters:
- name: idOrName
in: path
required: true
description: The ID or name of the artist to get.
schema:
type: ["number", "string"]
responses:
200:
description: Success
content:
application/json:
schema:
allOf:
- $ref: "#/components/schemas/Artist"
- type: object
properties:
urls:
type: array
items:
$ref: "#/components/schemas/ArtistURL"
domains:
type: array
items:
type: array
items:
- type: string
- type: number
examples:
- [["pawsmov.in", 1], ["furaffinity.net", 1]]
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Artist
tags:
- Artists
security:
- basicAuth: []
description: |
If an artist is locked, you must be Janitor+ to edit them.
`other_names` & `urls` are silently truncated to 25 entries.
`notes` is silently truncated to the wiki page limit (250,000).
Individual `other_names` are silently truncated to 100 characters.
parameters:
- name: idOrName
in: path
required: true
description: The ID or name of the artist to edit.
schema:
type: ["number", "string"]
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Only usable for Janitor+
other_names:
type: array
items:
type: string
other_names_string:
type: string
url_string:
type: string
notes:
type: string
linked_user_id:
type: ["number", "null"]
description: Only usable for Janitor+
is_locked:
type: boolean
description: Only usable for Janitor+
rename_dnp:
type: boolean
description: Only usable for Owner+
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Artist
tags:
- Artists
security:
- basicAuth: []
description: |
You must be an Admin or higher to delete an artist.
parameters:
- name: idOrName
in: path
required: true
description: The ID or name of the artist to edit.
schema:
type: ["number", "string"]
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/artists/{idOrName}/revert.json:
put:
summary: Revert Artist
tags:
- Artists
security:
- basicAuth: []
description: |
If an artist is locked, you must be Janitor+ to revert them.
parameters:
- name: idOrName
in: path
required: true
description: The ID or name of the artist to revert.
schema:
type: ["number", "string"]
- name: version_id
in: query
required: true
description: The version ID to revert to.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Artist Versions
/artists/versions.json:
get:
summary: Search Artist Versions
tags:
- Artist Versions
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
description: The order of the results.
schema:
type: string
enum:
- id_asc
- id_desc
- name
- name: search[artist_name]
in: query
description: The name of the artist.
schema:
type: string
- name: search[artist_id]
in: query
description: The id of the artist.
schema:
type: string
- name: search[updater_name]
in: query
description: The name of the user that updated the artist.
schema:
type: string
- name: search[updater_id]
in: query
description: The id of the user that updated the artist.
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ArtistVersion"
# Artist URLs
/artists/urls.json:
get:
summary: Search Artist URLs
tags:
- Artist URLs
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
description: The order of the results.
schema:
type: string
enum:
- 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
- name: search[artist_name]
in: query
description: The name of the artist.
schema:
type: string
- name: search[artist_id]
in: query
description: The id of the artist.
schema:
type: string
- name: search[is_active]
in: query
description: If the artist url is active.
schema:
type: boolean
- name: search[url]
in: query
description: The url.
schema:
type: string
- name: search[normalized_url]
in: query
description: The normalized url. (http:, trailing `/`)
schema:
type: string
- name: search[artist]
in: query
description: Legacy name for `search[artist_name]`.
deprecated: true
schema:
type: string
- name: search[url_matches]
in: query
description: Legacy name for `search[url]`.
deprecated: true
schema:
type: string
- name: search[normalized_url_matches]
in: query
description: Legacy name for `search[normalized_url]`.
deprecated: true
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ArtistURL"
# Avoid Posting Entries
/avoid_postings.json:
get:
summary: Search Avoid Posting Entries
tags:
- Avoid Posting Entries
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- name: search[creator_name]
in: query
schema:
type: string
- name: search[creator_id]
in: query
schema:
type: string
- name: search[any_name_matches]
in: query
description: Any name matching.
schema:
type: string
- name: search[artist_name]
in: query
description: The artist name of the avoid posting entry.
schema:
type: string
- name: search[artist_id]
in: query
description: The artist id for the avoid posting entry.
schema:
type: string
- name: search[any_other_name_matches]
in: query
description: Any other name matching.
schema:
type: string
- name: search[details]
in: query
description: The details of the avoid posting entry.
schema:
type: string
- name: search[staff_notes]
in: query
description: The staff notes on the avoid posting entry. Must be Janitor+ to use.
schema:
type: string
- name: search[is_active]
in: query
description: If the avoid posting entry is active.
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/AvoidPosting"
post:
summary: Create Avoid Posting Entry
tags:
- Avoid Posting Entries
security:
- basicAuth: []
description: Must be Owner+.
requestBody:
content:
application/json:
schema:
type: object
required:
- artist_name
properties:
artist_name:
type: string
details:
type: string
staff_notes:
type: string
is_active:
type: boolean
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/AvoidPosting"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/avoid_postings/{idOrArtistName}.json:
get:
summary: Get Avoid Posting Entry
tags:
- Avoid Posting Entries
parameters:
- name: idOrArtistName
in: path
required: true
description: The ID of the avoid posting entry, or the name of the artist.
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/AvoidPosting"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Avoid Posting Entry
tags:
- Avoid Posting Entries
security:
- basicAuth: []
description: Must be Owner+.
parameters:
- name: idOrArtistName
in: path
required: true
description: The ID of the avoid posting entry, or the name of the artist.
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
artist_name:
type: string
details:
type: string
staff_notes:
type: string
is_active:
type: boolean
rename_artist:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/AvoidPosting"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Avoid Posting Entry
tags:
- Avoid Posting Entries
security:
- basicAuth: []
description: Must be Owner+.
parameters:
- name: idOrArtistName
in: path
required: true
description: The ID of the avoid posting entry, or the name of the artist.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/avoid_postings/{idOrArtistName}/deactivate.json:
put:
summary: Deactivate Avoid Posting Entry
tags:
- Avoid Posting Entries
security:
- basicAuth: []
description: Must be Owner+.
parameters:
- name: idOrArtistName
in: path
required: true
description: The ID of the avoid posting entry, or the name of the artist.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/avoid_postings/{idOrArtistName}/reactivate.json:
put:
summary: Reactivate Avoid Posting Entry
tags:
- Avoid Posting Entries
security:
- basicAuth: []
description: Must be Owner+.
parameters:
- name: idOrArtistName
in: path
required: true
description: The ID of the avoid posting entry, or the name of the artist.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Avoid Posting Versions
/avoid_postings/versions.json:
get:
summary: Search Avoid Posting Versions
tags:
- Avoid Posting Versions
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[updater_ip_addr]
in: query
description: Must be Admin+ to use. See [postgres' documentation](https://www.postgresql.org/docs/9.3/functions-net.html) for information on how this is parsed. Specifically, "is contained within or equals" (`<<=`).
schema:
type: string
- name: search[order]
in: query
description: The order of the results.
schema:
type: string
enum:
- id_asc
- id_desc
- name: search[updater_name]
in: query
description: The name of the updater of the avoid posting entry.
schema:
type: string
- name: search[updater_id]
in: query
description: The ID of the updater of the avoid posting entry.
schema:
type: string
- name: search[any_name_matches]
in: query
description: Any name matching.
schema:
type: string
- name: search[artist_name]
in: query
description: The artist name of the avoid posting entry.
schema:
type: string
- name: search[artist_id]
in: query
description: The artist id for the avoid posting entry.
schema:
type: string
- name: search[any_other_name_matches]
in: query
description: Any other name matching.
schema:
type: string
- name: search[is_active]
in: query
description: If the avoid posting entry is active.
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/AvoidPostingVersion"
# Bans
/bans.json:
get:
summary: Search Bans
tags:
- Bans
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
description: The order of the results.
schema:
type: string
enum:
- id_asc
- id_desc
- expires_at_desc
- name: search[banner_id]
in: query
description: The ID of the banner.
schema:
type: string
- name: search[banner_name]
in: query
description: The name of banner.
schema:
type: string
- name: search[user_id]
in: query
description: The ID of the banned user.
schema:
type: string
- name: search[user_name]
in: query
description: The name of the banned user.
schema:
type: string
- name: search[reason_matches]
in: query
description: The reason of the ban.
schema:
type: string
- name: search[expired]
in: query
description: If the ban is expired.
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Ban"
/bans/{id}.json:
get:
summary: Get Ban
tags:
- Bans
parameters:
- name: id
in: path
description: The ID of the ban to get.
required: true
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Ban"
404:
$ref: "#/components/responses/NotFound"
# Bulk Update Requests
/bulk_update_requests.json:
get:
summary: Search Bulk Update Requests
tags:
- Bulk Update Requests
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- status_desc
- updated_at_asc
- name: search[creator_id]
in: query
schema:
type: number
- name: search[creator_name]
in: query
schema:
type: string
- name: search[approver_id]
in: query
schema:
type: number
- name: search[approver_name]
in: query
schema:
type: string
- name: search[forum_topic_id]
in: query
schema:
type: number
- name: search[status]
in: query
schema:
type: string
enum:
- approved
- rejected
- pending
- name: search[title_matches]
in: query
schema:
type: string
- name: search[script_matches]
in: query
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/BulkUpdateRequest"
post:
summary: Create Bulk Update Request
tags:
- Bulk Update Requests
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- script
- title
- reason
properties:
script:
type: string
title:
type: string
reason:
type: string
forum_topic_id:
type: number
skip_forum:
type: boolean
description: Only usable for Admin+
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/BulkUpdateRequest"
422:
$ref: "#/components/responses/ExpectedError"
/bulk_update_request/{id}.json:
get:
summary: Get Bulk Update Request
tags:
- Bulk Update Request
parameters:
- name: id
in: path
required: true
description: The ID of the bulk update request.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/BulkUpdateRequest"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Bulk Update Request
tags:
- Bulk Update Request
security:
- basicAuth: []
description: You must be the creator of the BUR, or an have the "Manage Tag Change Requests" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the bulk update request.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
script:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Reject Bulk Update Request
tags:
- Bulk Update Request
security:
- basicAuth: []
description: You must be the creator of the BUR, or an have the "Manage Tag Change Requests" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the bulk update request.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/bulk_update_request/{id}/approve.json:
post:
summary: Approve Bulk Update Request
tags:
- Bulk Update Request
description: Must have the "Manage Tag Change Requests" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the bulk update request.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Comments
/comments.json:
get:
summary: Search Comments
tags:
- Comments
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- status
- status_desc
- updated_at_desc
- in: query
name: search[body_matches]
schema:
type: string
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[post_tags_match]
schema:
type: string
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[post_note_updater_name]
schema:
type: string
- in: query
name: search[post_note_updater_id]
schema:
type: number
- in: query
name: search[poster_id]
schema:
type: number
- in: query
name: search[poster_name]
schema:
type: string
- in: query
name: search[is_sticky]
schema:
type: boolean
- in: query
name: search[is_hidden]
description: Only usable by Moderator+
schema:
type: boolean
- in: query
name: search[ip_addr]
description: Only usable by Admin+
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Comment"
post:
summary: Create Comment
tags:
- Comments
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- body
- post_id
properties:
body:
type: string
post_id:
type: number
is_sticky:
type: boolean
description: Only usable for Moderator+
is_hidden:
type: boolean
description: Only usable for Moderator+
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/comments/{id}.json:
get:
summary: Get Comment
tags:
- Comments
description: If the comment is hidden, you must be the creator or Moderator+ to see it.
parameters:
- name: id
in: path
required: true
description: The ID of the comment.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Comment"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Comment
tags:
- Comments
security:
- basicAuth: []
description: |
You must be the creator of the comment, or Admin+ to edit. Marked comments cannot be edited.
parameters:
- name: id
in: path
required: true
description: The ID of the comment.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
body:
type: string
is_sticky:
type: boolean
description: Only usable for Moderator+
is_hidden:
type: boolean
description: Only usable for Moderator+
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Comment
tags:
- Comments
security:
- basicAuth: []
description: |
You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the comment.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/comments/{id}/hide.json:
put:
summary: Hide Comment
tags:
- Comments
security:
- basicAuth: []
description: |
You must be the creator or Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the comment.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/comments/{id}/unhide.json:
put:
summary: Unhide Comment
tags:
- Comments
security:
- basicAuth: []
description: |
You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the comment.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/comments/{id}/warning.json:
put:
summary: Mark Comment
tags:
- Comments
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the comment.
schema:
type: number
requestBody:
$ref: "#/components/requestBodies/warning"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/DTextResponse"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Comment Votes
/comments/{id}/votes.json:
post:
summary: Create Comment Vote
tags:
- Comment Votes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the comment.
schema:
type: string
- name: score
in: query
required: true
schema:
type: number
enum:
- -1
- 1
- name: no_unvote
in: query
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: object
required:
- score
- our_score
properties:
score:
type: number
our_score:
type: number
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Comment Vote
tags:
- Comment Votes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the comment.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/comments/votes.json:
get:
summary: Search Comment Votes
tags:
- Comment Votes
security:
- basicAuth: []
description: |
If you are not Moderator+, you can only see your own votes.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
description: Must be Admin+ to use.
schema:
type: string
enum:
- id_asc
- id_desc
- ip_addr
- in: query
name: search[user_id]
schema:
type: number
- in: query
name: search[user_name]
schema:
type: string
- in: query
name: search[comment_id]
schema:
type: number
- in: query
name: search[comment_creator_id]
schema:
type: number
- in: query
name: search[comment_creator_name]
schema:
type: string
- in: query
name: search[timeframe]
schema:
type: number
description: Number of days.
- in: query
name: search[score]
description: -1 for down, 1 for up
schema:
type: number
- in: query
name: search[is_locked]
schema:
type: boolean
- in: query
name: search[duplicates_only]
description: Must be Admin+ to use.
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/CommentVote"
/comments/votes/lock.json:
put:
summary: Lock Comment Vote
tags:
- Comment Votes
security:
- basicAuth: []
description: |
You must be Moderator+.
parameters:
- name: ids
in: query
required: true
description: The IDs of the comment votes, comma separated.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/comments/votes/delete.json:
put:
summary: Delete Comment Vote
tags:
- Comment Votes
security:
- basicAuth: []
description: |
You must be Admin+.
parameters:
- name: ids
in: query
required: true
description: The IDs of the comment votes, comma separated.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
# DMails
/dmails.json:
get:
summary: Search DMails
tags:
- DMails
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- in: query
name: search[title_matches]
schema:
type: string
- in: query
name: search[message_matches]
schema:
type: string
- in: query
name: search[to_name]
schema:
type: string
- in: query
name: search[to_id]
schema:
type: number
- in: query
name: search[from_name]
schema:
type: string
- in: query
name: search[from_id]
schema:
type: number
- in: query
name: search[is_read]
schema:
type: boolean
- in: query
name: search[is_deleted]
schema:
type: boolean
- in: query
name: search[read]
schema:
type: boolean
- in: query
name: search[owner_id]
schema:
type: number
- in: query
name: search[owner_name]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DMail"
/dmails/{id}.json:
get:
summary: Get DMail
tags:
- DMails
description: Fetching a dmail will not mark it as read.
parameters:
- name: id
in: path
required: true
description: The ID of the dmail.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/DMail"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
delete:
summary: Delete DMail
tags:
- DMails
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the dmail.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/dmails/{id}/mark_as_read.json:
put:
summary: Mark DMail As Read
tags:
- DMails
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the dmail.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/dmails/{id}/mark_as_unread.json:
put:
summary: Mark DMail As Unread
tags:
- DMails
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the dmail.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/dmails/mark_all_as_unread.json:
put:
summary: Mark All DMail As Unread
tags:
- DMails
security:
- basicAuth: []
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# DText Preview
/dtext_preview.json:
post:
summary: Preview DText
tags:
- DText
requestBody:
content:
application/json:
schema:
type: object
required:
- body
properties:
body:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/DTextResponse"
# Email Blacklists
/email_blacklists.json:
get:
summary: Search Email Blacklists
tags:
- Email Blacklists
description: You must be Admin+.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- reason
- domain
- in: query
name: search[domain]
schema:
type: string
- in: query
name: search[reason]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/EmailBlacklist"
post:
summary: Create Email Blacklist
tags:
- Email Blacklists
description: You must be Admin+.
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- domain
- reason
properties:
domain:
type: string
reason:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/EmailBlacklist"
422:
$ref: "#/components/responses/ExpectedError"
/email_blacklists/{id}.json:
delete:
summary: Delete Email Blacklist
tags:
- Email Blacklists
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the email blacklist.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Favorites
/favorites.json:
get:
summary: List Favorites
tags:
- Favorites
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- in: query
name: user_id
description: You must be the user or Moderator+ if the user has their favorites hidden.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Post"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
post:
summary: Create Favorite
tags:
- Favorites
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- post_id
properties:
post_ud:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/favorites/{id}.json:
delete:
summary: Delete Favorite
tags:
- Favorites
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
schema:
type: number
responses:
204:
description: Success
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Forum Categories
/forum_categories.json:
get:
summary: List Forum Categories
tags:
- Forum Categories
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ForumCategory"
post:
summary: Create Forum Category
tags:
- Forum Categories
description: You must be Admin+.
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- name
- can_create
- can_reply
properties:
name:
type: string
can_create:
type: number
description: user level
can_view:
type: number
description: user level
order:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ForumCategory"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/forum_categories/{id}.json:
patch:
summary: Edit Forum Category
tags:
- Forum Categories
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum category.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
can_create:
type: number
description: user level
can_view:
type: number
description: user level
order:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Forum Category
tags:
- Forum Categories
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum category.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_categories/reorder.json:
post:
summary: Reorder Forum Categories
tags:
- Forum Categories
description: You must be Admin+. No IDs can be omitted, no extra IDs can be present, and no duplicate IDs can be present.
security:
- basicAuth: []
requestBody:
$ref: "#/components/requestBodies/reorder"
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
# Forum Post
/forum_posts.json:
get:
summary: Search Forum Posts
tags:
- Forum Posts
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[topic_id]
schema:
type: number
- in: query
name: search[topic_title_matches]
schema:
type: string
- in: query
name: search[body_matches]
schema:
type: string
- in: query
name: search[topic_category_id]
schema:
type: number
- in: query
name: search[is_hidden]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ForumPost"
post:
summary: Create Forum Post
tags:
- Forum Posts
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- body
- topic_id
properties:
body:
type: string
topic_id:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ForumPost"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/forum_posts/{id}.json:
get:
summary: Get Forum Post
tags:
- Forum Posts
description: If the forum post is hidden, you must be the creator or Moderator+ to see it.
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ForumPost"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Forum Post
tags:
- Forum Posts
security:
- basicAuth: []
description: You must be the creator of the forum post, or Admin+ to edit. Marked comments cannot be edited.
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
required:
- body
properties:
body:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Forum Post
tags:
- Forum Posts
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_posts/{id}/hide.json:
put:
summary: Hide Forum Post
tags:
- Forum Post
security:
- basicAuth: []
description: You must be the creator or Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_posts/{id}/unhide.json:
put:
summary: Unhide Forum Post
tags:
- Forum Post
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_posts/{id}/warning.json:
put:
summary: Mark Forum Post
tags:
- Forum Posts
security:
- basicAuth: []
description: |
You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: number
requestBody:
$ref: "#/components/requestBodies/warning"
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/DTextResponse"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Forum Post Votes
/forum_posts/{id}/votes.json:
post:
summary: Create Forum Post Vote
tags:
- Forum Post Votes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: string
- name: score
in: query
required: true
schema:
type: number
enum:
- -1
- 0
- 1
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ForumPostVote"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Forum Post Vote
tags:
- Forum Post Votes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/forum_posts/votes.json:
get:
summary: Search Forum Post Votes
tags:
- Forum Post Votes
security:
- basicAuth: []
description: If you are not Moderator+, you can only see your own votes.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
description: Must be Admin+ to use.
schema:
type: string
enum:
- id_asc
- id_desc
- ip_addr
- in: query
name: search[user_id]
schema:
type: number
- in: query
name: search[user_name]
schema:
type: string
- in: query
name: search[forum_post_id]
schema:
type: number
- in: query
name: search[forum_post_creator_id]
schema:
type: number
- in: query
name: search[forum_post_creator_name]
schema:
type: string
- in: query
name: search[timeframe]
schema:
type: number
description: Number of days.
- in: query
name: search[score]
description: -1 for down, 0 for meh, 1 for up
schema:
type: number
- in: query
name: search[duplicates_only]
description: Must be Admin+ to use.
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ForumPostVote"
/forum_posts/votes/delete.json:
put:
summary: Delete Forum Post Vote
tags:
- Forum Post Votes
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: ids
in: query
required: true
description: The IDs of the forum post votes, comma separated.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
# Forum Topics
/forum_topics.json:
get:
summary: Search Forum Topics
tags:
- Forum Topics
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- sticky
- in: query
name: search[title]
schema:
type: string
- in: query
name: search[title_matches]
schema:
type: string
- in: query
name: search[category_id]
schema:
type: number
- in: query
name: search[is_sticky]
schema:
type: boolean
- in: query
name: search[is_locked]
schema:
type: boolean
- in: query
name: search[is_hidden]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ForumTopic"
post:
summary: Create Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- title
- category_id
- original_post_attributes
properties:
title:
type: string
category_id:
type: number
original_post_attributes:
type: object
description: Mutually exclusive, at least one must be provided.
properties:
id:
type: number
description: Forum post ID.
body:
type: string
description: First forum post body.
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ForumTopic"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/forum_topics/{id}.json:
get:
summary: Get Forum Forum Topic
tags:
- Forum Topics
description: If the forum topic is hidden, you must be the creator or Moderator+ to see it.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topics.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ForumTopic"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be the creator of the forum topic, or Admin+ to edit. Marked comments cannot be edited.
parameters:
- name: id
in: path
required: true
description: The ID of the forum post.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
title:
type: string
category_id:
type: number
original_post_attributes:
type: object
description: Mutually exclusive.
properties:
id:
type: number
description: Forum post ID.
body:
type: string
description: First forum post body.
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/hide.json:
put:
summary: Hide Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be the creator or Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/unhide.json:
put:
summary: Unhide Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/lock.json:
put:
summary: Lock Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/unlock.json:
put:
summary: Unlock Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/sticky.json:
put:
summary: Sticky Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/unsticky.json:
put:
summary: Unsticky Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/subscribe.json:
put:
summary: Subscribe To Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/unsubscribe.json:
put:
summary: Unsubscrbibe From Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/mute.json:
put:
summary: Mute Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/unmute.json:
put:
summary: Unmute Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/{id}/move.json:
put:
summary: Move Forum Topic
tags:
- Forum Topics
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the forum topic.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
required:
- category_id
properties:
category_id:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/forum_topics/mark_all_as_read.json:
put:
summary: Mark All Forum Topics As Read
tags:
- Forum Topics
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- category_id
properties:
category_id:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
# Help Pages
/help.json:
get:
summary: List Help Pages
tags:
- Help Pages
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Help"
post:
summary: Create Help Page
tags:
- Help Pages
security:
- basicAuth: []
description: You must be Admin+.
requestBody:
content:
application/json:
schema:
type: object
required:
- name
- wiki_page
properties:
name:
type: string
wiki_page:
type: string
related:
type: string
description: Separate with a comma followed by a space.
title:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Help"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/help/{id}.json:
get:
summary: Get Help Page
tags:
- Help Pages
parameters:
- name: id
in: path
required: true
description: The ID or name of the help page.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Help"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Help Page
tags:
- Help Pages
security:
- basicAuth: []
description: You must be Admin+
parameters:
- name: id
in: path
required: true
description: The ID of the help page.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
wiki_page:
type: string
related:
type: string
description: Separate with a comma followed by a space.
title:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Help Page
tags:
- Help Page
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the help page.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# IP Bans
/ip_bans.json:
get:
summary: List IP Bans
tags:
- IP Bans
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[banner_id]
schema:
type: number
- in: query
name: search[banner_name]
schema:
type: string
- in: query
name: search[reason]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/IPBan"
post:
summary: Create IP Ban
tags:
- IP Bans
security:
- basicAuth: []
description: You must be Admin+.
requestBody:
content:
application/json:
schema:
type: object
required:
- ip_addr
- reason
properties:
ip_addr:
type: string
reason:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/IPBan"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/ip_bans/{id}.json:
delete:
summary: Delete IP Ban
tags:
- IP Bans
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the ip ban.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Mascots
/mascots.json:
get:
summary: Search Mascots
tags:
- Mascots
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- sticky
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Mascot"
post:
summary: Create Mascot
tags:
- Mascots
security:
- basicAuth: []
description: You must be Admin+.
requestBody:
content:
multipart/form-data:
schema:
type: object
required:
- mascot[mascot_file]
- mascot[display_name]
- mascot[background_color]
- mascot[artist_url]
- mascot[artist_name]
properties:
mascot[mascot_file]:
type: binary
mascot[display_name]:
type: string
mascot[background_color]:
type: string
mascot[artist_url]:
type: string
mascot[artist_name]:
type: string
mascot[available_on_string]:
type: string
description: Comma separated site names.
mascot[active]:
type: boolean
mascot[hide_anonymous]:
type: boolean
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Mascot"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/mascots/{id}.json:
patch:
summary: Edit Mascot
tags:
- Mascots
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the mascot.
schema:
type: number
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
mascot[mascot_file]:
type: binary
mascot[display_name]:
type: string
mascot[background_color]:
type: string
mascot[artist_url]:
type: string
mascot[artist_name]:
type: string
mascot[available_on_string]:
type: string
description: Comma separated site names.
mascot[active]:
type: boolean
mascot[hide_anonymous]:
type: boolean
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Mascot
tags:
- Mascots
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the mascot.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Mod Actions
/mod_actions.json:
get:
summary: Search Mod Actions
tags:
- Mod Actions
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[action]
schema:
type: string
enum: *modaction-actions
- in: query
name: search[subject_type]
schema:
type: string
enum: *modaction-classes
- in: query
name: search[subject_id]
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ModAction"
# News Updates
/news_updates.json:
get:
summary: List News Updates
tags:
- News Updates
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/NewsUpdate"
post:
summary: Create News Update
tags:
- News Updates
security:
- basicAuth: []
description: You must be Admin+.
requestBody:
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/NewsUpdate"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/news_updates/{id}.json:
patch:
summary: Edit News Updates
tags:
- Help Pages
security:
- basicAuth: []
description: You must be Admin+
parameters:
- name: id
in: path
required: true
description: The ID of the news update.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
required:
- message
properties:
message:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete News Update
tags:
- News Update
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the news update.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Notes
/notes.json:
get:
summary: Search Notes
tags:
- Notes
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[body_matches]
schema:
type: string
- in: query
name: search[is_active]
schema:
type: boolean
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[post_tags_match]
schema:
type: string
- in: query
name: search[post_note_updater_id]
schema:
type: number
- in: query
name: search[post_note_updater_name]
schema:
type: string
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Note"
post:
summary: Create Note
tags:
- Notes
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- post_id
- x
- y
- width
- height
- body
properties:
post_id:
type: number
x:
type: number
y:
type: number
width:
type: number
height:
type: number
body:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Note"
422:
$ref: "#/components/responses/ExpectedError"
/notes/{id}.json:
get:
summary: Get Note
tags:
- Notes
parameters:
- name: id
in: path
required: true
description: The ID of the note.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Note"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Note
tags:
- Notes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the note.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
x:
type: number
y:
type: number
width:
type: number
height:
type: number
body:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Note
tags:
- Notes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the note.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/notes/{id}/revert.json:
post:
summary: Revert Note
tags:
- Notes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the note.
schema:
type: number
- name: version_id
in: query
required: true
description: The version ID to revert to.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Note Versions
/notes/versions.json:
put:
summary: Search Note Versions
tags:
- Note Versions
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
description: The order of the results.
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[updater_id]
schema:
type: number
- in: query
name: search[updater_name]
schema:
type: string
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[note_id]
schema:
type: number
- in: query
name: search[is_active]
schema:
type: boolean
- in: query
name: search[body_matches]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/NoteVersion"
# Pools
/pools.json:
get:
summary: Search Pools
tags:
- Pools
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- name
- created_at
- post_count
- in: query
name: search[name_matches]
schema:
type: string
- in: query
name: search[description_matches]
schema:
type: string
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[category]
schema:
type: string
- in: query
name: search[is_active]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Pool"
post:
summary: Create Pool
tags:
- Pools
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- name
properties:
name:
type: string
description:
type: string
is_active:
type: boolean
post_ids_string:
type: string
description: Space separated list of post IDs. Mutually exclusive with post_ids.
post_ids:
type: array
description: Array of post IDs. Mutually exclusive with post_ids_string.
items:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Pool"
422:
$ref: "#/components/responses/ExpectedError"
/pools/{id}.json:
get:
summary: Get Pool
tags:
- Pools
parameters:
- name: id
in: path
required: true
description: The ID of the pool.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Pool"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Pool
tags:
- Pools
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the pool.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description:
type: string
is_active:
type: boolean
post_ids_string:
type: string
description: Space separated list of post IDs. Mutually exclusive with post_ids.
post_ids:
type: array
description: Array of post IDs. Mutually exclusive with post_ids_string.
items:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Pool
tags:
- Pools
description: You must be Janitor+.
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the pool.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/pools/{id}/revert.json:
put:
summary: Revert Pool
tags:
- Pools
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the pool.
schema:
type: number
- name: version_id
in: query
required: true
description: The version ID to revert to.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Pool Versions
/pools/versions.json:
get:
summary: Search Pool Versions
tags:
- Pool Versions
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
description: The order of the results.
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[updater_id]
schema:
type: number
- in: query
name: search[updater_name]
schema:
type: string
- in: query
name: search[pool_id]
schema:
type: number
- in: query
name: search[is_active]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PoolVersion"
# Popular
/popular/uploads.json:
get:
summary: List Most Upvoted Posts
tags:
- Popular
parameters:
- $ref: "#/components/parameters/limit"
- name: date
in: query
description: The date to list popular uploads for. Only The day, month, and year are considered.
schema:
type: string
format: date
- name: scale
in: query
description: The scale of the results, in relation to `date`.
schema:
type: string
enum:
- month
- week
- day
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Post"
/popular/views.json:
get:
summary: List Most Viewed Posts
tags:
- Popular
parameters:
- $ref: "#/components/parameters/limit"
- name: date
in: query
description: The date to list popular uploads for. Only The day, month, and year are considered.
schema:
type: string
format: date
- name: scale
in: query
description: The scale of the results, in relation to `date`.
schema:
type: string
enum:
- day
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Post"
/popular/searches.json:
get:
summary: List Most Used Searches
tags:
- Popular
parameters:
- $ref: "#/components/parameters/limit"
- name: date
in: query
description: The date to list popular uploads for. Only The day, month, and year are considered.
schema:
type: string
format: date
- name: scale
in: query
description: The scale of the results, in relation to `date`.
schema:
type: string
enum:
- day
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PopularSearch"
/popular/searches/missed.json:
get:
summary: List Most Missed Searches
tags:
- Popular
parameters:
- $ref: "#/components/parameters/limit"
- name: date
in: query
description: The date to list popular uploads for. Only The day, month, and year are considered.
schema:
type: string
format: date
- name: scale
in: query
description: The scale of the results, in relation to `date`.
schema:
type: string
enum:
- day
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PopularSearch"
# Post Sets
/post_sets.json:
get:
summary: Search Post Sets
tags:
- Post Sets
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- name
- shortname
- post_count
- postcount
- created_at
- updated_at
- update
- in: query
name: search[name_matches]
schema:
type: string
- in: query
name: search[description_matches]
schema:
type: string
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[category]
schema:
type: string
- in: query
name: search[is_active]
schema:
type: boolean
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[maintainer_id]
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostSet"
post:
summary: Create Post Set
tags:
- Post Sets
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- name
- shortname
properties:
name:
type: string
shortname:
type: string
description:
type: string
is_public:
type: boolean
transfer_on_delete:
type: boolean
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostSet"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/post_sets/{id}.json:
get:
summary: Get Post Set
tags:
- Post Sets
parameters:
- name: id
in: path
required: true
description: The ID of the post set.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostSet"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Post Set
tags:
- Post Sets
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post sets.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
shortname:
type: string
description:
type: string
is_public:
type: boolean
transfer_on_delete:
type: boolean
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Post Set
tags:
- Post Sets
security:
- basicAuth: []
description: You must be the owner of the set, or Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the post set.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/post_sets/{id}/update_posts.json:
post:
summary: Update Post Set Posts
tags:
- Post Sets
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- post_ids_string
properties:
post_ids_string:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostSet"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/post_sets/{id}/add_posts.json:
post:
summary: Add Posts To Post Set
tags:
- Post Sets
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- post_ids
properties:
post_ids:
type: array
items:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostSet"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/post_sets/{id}/remove_posts.json:
post:
summary: Remove Posts From Post Set
tags:
- Post Sets
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- post_ids
properties:
post_ids:
type: array
items:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostSet"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/post_sets/for_select.json:
get:
summary: List Post Sets For Select
tags:
- Post Sets
security:
- basicAuth: []
responses:
200:
description: Success
content:
application/json:
schema:
type: object
properties:
Owned:
type: array
items:
- type: string
- type: number
Maintained:
type: array
items:
- type: string
- type: number
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
# Posts
/posts.json:
get:
summary: Search Posts
tags:
- Posts
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- in: query
name: md5
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Post"
/posts/{id}.json:
get:
summary: Get Post
tags:
- Posts
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Post
tags:
- Posts
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
tag_string:
type: string
description: Replaces all tags on the post.
old_tag_string:
type: string
description: The tag string before your edits, used to reconcile conflicts.
tag_string_diff:
type: string
description: Tags with a minus are removed, else they are added. Mutually exclusive with tag_string.
source_diff:
type: string
description: Sources with a minus are removed, else they are added. It is not possible to add inactive sources through this. Mutually exclusive with source.
source:
type: string
description: Replaces all sources on the post.
old_source:
type: string
description: The sources before your edits, used to reconcile conflicts.
parent_id:
type: number
old_parent_id:
type: number
description:
type: string
old_description:
type: string
rating:
type: string
enum: *ratings
old_rating:
type: string
enum: *ratings
edit_reason:
type: string
is_rating_locked:
type: boolean
description: You must be Trusted+.
is_note_locked:
type: boolean
description: You must be Janitor+.
bg_color:
type: string
description: You must be Janitor+.
is_comment_locked:
type: boolean
description: You must be Moderator+.
is_status_locked:
type: boolean
description: You must be Admin+.
is_comment_disabled:
type: boolean
description: You must be Admin+.
locked_tags:
type: string
description: You must be Admin+.
hide_from_anonymous:
type: boolean
description: You must be Admin+.
hide_from_search_engines:
type: boolean
description: You must be Admin+.
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Post
tags:
- Posts
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
requestBody:
content:
application/json:
type: object
properties:
reason:
type: string
description: If the post does not have an active flag, this is required.
move_favorites:
type: boolean
description: Move favorites to parent.
copy_sources:
type: boolean
description: Copy sources to parent.
copy_tags:
type: boolean
description: Copy tags to parent.
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/undelete.json:
post:
summary: Undelete Post
tags:
- Posts
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/regenerate_thumbnails.json:
put:
summary: Regenerate Post Thumbnails
tags:
- Posts
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/regenerate_videos.json:
put:
summary: Regenerate Post Videos
tags:
- Posts
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/expunge.json:
put:
summary: Expunge Post
tags:
- Posts
security:
- basicAuth: []
description: You must have the "Approve Posts" permission and be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/update_iqdb.json:
put:
summary: Update Post IQDB
tags:
- Posts
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/mark_as_translated.json:
post:
summary: Mark Post As Translated
tags:
- Posts
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
translation_check:
type: boolean
partially_translated:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/add_to_pool.json:
put:
summary: Add Post To Pool
tags:
- Posts
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
- name: pool_id
in: query
description: The ID of the pool to add the post to. Mutually exclusive with pool_name.
schema:
type: number
- name: pool_name
in: query
description: The name of the pool to add the post to. Mutually exclusive with pool_id.
schema:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Pool"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/{id}/remove_from_pool.json:
put:
summary: Remove Post From Pool
tags:
- Posts
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
- name: pool_id
in: query
description: The ID of the pool to remove the post from. Mutually exclusive with pool_name.
schema:
type: number
- name: pool_name
in: query
description: The name of the pool to remove the post from. Mutually exclusive with pool_id.
schema:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Pool"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/{id}/copy_notes.json:
put:
summary: Copy Notes To Post
tags:
- Posts
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- other_post_id
properties:
other_post_id:
type: number
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/{id}/revert.json:
post:
summary: Revert Post
tags:
- Posts
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
- name: version_id
in: query
required: true
description: The version ID to revert to.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/show_seq.json:
get:
summary: Get Post Sequence
tags:
- Posts
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
- name: seq
in: query
description: The direction to move in the sequence.
schema:
type: string
enum:
- next
- prev
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/{id}/flag.json:
delete:
summary: Unflag Post
tags:
- Posts
description: You must have the "Approve Posts" permission.
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
approval:
type: string
description: Approves the post if set to "approve".
schema:
- approve
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/random.json:
put:
summary: Get Random Post
tags:
- Posts
parameters:
- name: tags
in: query
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
404:
$ref: "#/components/responses/NotFound"
# Post Approvals
/posts/approvals.json:
get:
summary: Search Post Approvals
tags:
- Post Approvals
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostApproval"
post:
summary: Approve Post
tags:
- Post Approvals
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
required:
- post_id
properties:
post_id:
type: number
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/approvals/{id}.json:
delete:
summary: Unapprove Post
tags:
- Post Approvals
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/{id}/move_favorites.json:
put:
summary: Move Post Favorites
tags:
- Posts
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Deleted Posts
/posts/deleted.json:
get:
summary: Search Deleted Posts
tags:
- Post Approvals
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- name: user_id
in: query
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Post"
# Post Deletion Reasons
/posts/deletion_reeasons.json:
get:
summary: List Post Deletion Reasons
tags:
- Post Deletion Reasons
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostDeletionReason"
post:
summary: Create Post Deletion Reason
tags:
- Post Deletion Reasons
security:
- basicAuth: []
description: You must have the "Approve Posts" permission and be Admin+.
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: The reason used when deleting the post. %PARENT_ID% & %OTHER_ID% placeholders.
title:
type: string
description: The title shown in the quickmod menu. If specified, prompt is also required.
prompt:
type: string
description: The prompt text in confirmation for the quickmod menu. If specified, title is also required.
order:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostDeletionReason"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/posts/deletion_reasons/{id}.json:
patch:
summary: Edit Post Deletion Reason
tags:
- Post Deletion Reasons
security:
- basicAuth: []
description: You must have the "Approve Posts" permission and be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the post deletion reason.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: The reason used when deleting the post. %PARENT_ID% & %OTHER_ID% placeholders.
title:
type: string
description: The title shown in the quickmod menu. If specified, prompt is also required.
prompt:
type: string
description: The prompt text in confirmation for the quickmod menu. If specified, title is also required.
order:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Post Deletion Reason
tags:
- Post Deletion Reasons
security:
- basicAuth: []
description: You must have the "Approve Posts" permission and be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the post deletion reason.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/deletion_reasons/reorder.json:
post:
summary: Reorder Post Deletion Reasons
tags:
- Post Deletion Reasons
description: You must have the "Approve Posts" permission and be Admin+. No IDs can be omitted, no extra IDs can be present, and no duplicate IDs can be present.
security:
- basicAuth: []
requestBody:
$ref: "#/components/requestBodies/reorder"
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
# Post Disapprovals
/posts/disapprovals.json:
get:
summary: Search Post Disapprovals
tags:
- Post Disapprovals
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- post_id
- post_id_desc
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[message]
schema:
type: string
- in: query
name: search[post_tags_match]
schema:
type: string
- in: query
name: search[reason]
schema:
type: string
- in: query
name: search[has_message]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostDisapproval"
post:
summary: Create Post Disapproval
tags:
- Post Disapprovals
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
requestBody:
content:
application/json:
schema:
type: object
required:
- post_id
- reason
properties:
post_id:
type: number
reason:
type: string
enum:
- borderline_quality
- borderline_relevancy
- other
message:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostDisapproval"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
# Post Events
/posts/events.json:
get:
summary: Search Post Events
tags:
- Post Events
security:
- basicAuth: []
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[action]
schema:
type: string
enum: *post-event-actions
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostDisapproval"
post:
summary: Create Post Disapproval
tags:
- Post Disapprovals
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
requestBody:
content:
application/json:
schema:
type: object
required:
- post_id
- reason
properties:
post_id:
type: number
reason:
type: string
enum:
- borderline_quality
- borderline_relevancy
- other
message:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostDisapproval"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
# Post Flags
/posts/flags.json:
get:
summary: Search Post Flags
tags:
- Post Flags
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[reason_matches]
schema:
type: string
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[post_tags_match]
schema:
type: string
- in: query
name: search[type]
schema:
type: string
- in: query
name: search[is_resolved]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostFlag"
post:
summary: Create Post Flag
tags:
- Post Flags
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- post_id
- reason_name
properties:
post_id:
type: number
reason_name:
type: string
enum:
- uploading_guidelines
- dnp_artist
- pay_content
- trace
- previously_deleted
- real_porn
- corrupt
- inferior
parent_id:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostFlag"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/posts/flags/{id}.json:
get:
summary: Get Post Flag
tags:
- Post Flags
parameters:
- name: id
in: path
required: true
description: The ID of the post flag.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostFlag"
404:
$ref: "#/components/responses/NotFound"
# IQDB
/posts/iqdb.json:
get:
summary: Query IQDB
tags:
- IQDB
parameters:
- name: search[score_cutoff]
in: query
schema:
type: number
- name: search[url]
in: query
schema:
type: string
- name: search[post_id]
in: query
schema:
type: number
- name: search[hash]
in: query
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/IQDBResponse"
403:
$ref: "#/components/responses/AccessDenied"
post:
summary: Query IQDB
tags:
- IQDB
requestBody:
content:
multipart/form-data:
schema:
type: object
properties:
search[file]:
type: binary
search[score_cutoff]:
type: number
search[url]:
type: string
search[post_id]:
type: string
search[hash]:
type: string
application/json:
schema:
type: object
properties:
score_cutoff:
type: number
url:
type: string
post_id:
type: string
hash:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/IQDBResponse"
403:
$ref: "#/components/responses/AccessDenied"
# Post Recommendations
/posts/recommendations.json:
get:
summary: Get Post Recommendations
tags:
- Post Recommendations
parameters:
- $ref: "#/components/parameters/limit"
- name: search[post_id]
in: query
schema:
type: number
- name: search[user_id]
in: query
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostRecommendation"
403:
$ref: "#/components/responses/AccessDenied"
# Post Replacement Rejection Reasons
/posts/replacement_rejection_reasons.json:
get:
summary: List Post Replacement Rejection Reasons
tags:
- Post Replacement Rejection Reasons
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostReplacementRejectionReason"
post:
summary: Create Post Replacement Rejection Reason
tags:
- Post Replacement Rejection Reasons
security:
- basicAuth: []
description: You must have the "Approve Posts" permission and be Admin+.
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: The reason used when rejecting the replacement.
order:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostReplacementRejectionReason"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/posts/replacement_rejection_reasons/{id}.json:
patch:
summary: Edit Post Replacement Rejection Reason
tags:
- Post Replacement Rejection Reasons
security:
- basicAuth: []
description: You must have the "Approve Posts" permission and be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the post replacement rejection reason.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: The reason used when rejecting the replacement.
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Post Replacement Rejection Reason
tags:
- Post Replacement Rejection Reasons
security:
- basicAuth: []
description: You must have the "Approve Posts" permission and be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the post replacement rejection reason.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/replacement_rejection_reasons/reorder.json:
post:
summary: Reorder Post Replacement Rejection Reasons
tags:
- Post Replacement Rejection Reasons
description: You must have the "Approve Posts" permission and be Admin+. No IDs can be omitted, no extra IDs can be present, and no duplicate IDs can be present.
security:
- basicAuth: []
requestBody:
$ref: "#/components/requestBodies/reorder"
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
# Post Replacements
/posts/replacements.json:
get:
summary: Search Post Replacements
tags:
- Post Replacements
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- in: query
name: search[file_ext]
schema:
type: string
- in: query
name: search[md5]
schema:
type: string
- in: query
name: search[status]
schema:
type: string
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[approver_id]
schema:
type: number
- in: query
name: search[approver_name]
schema:
type: string
- in: query
name: search[rejector_id]
schema:
type: number
- in: query
name: search[rejector_name]
schema:
type: string
- in: query
name: search[uploader_name_on_approve]
schema:
type: string
- in: query
name: search[uploader_id_on_approve]
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostReplacement"
post:
summary: Create Post Replacement
tags:
- Post Replacements
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- replacement_url
- reason
properties:
replacement_url:
type: string
reason:
type: string
source:
type: string
multipart/form-data:
schema:
type: object
required:
- reason
properties:
replacement[replacement_file]:
type: string
replacement[replacement_url]:
type: string
replacement[reason]:
type: string
replacement[source]:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/PostReplacement"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/posts/replacements/{id}.json:
delete:
summary: Delete Post Replacement
tags:
- Post Replacements
description: You must be Admin+.
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post replacement.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/posts/replacements/{id}/approve.json:
put:
summary: Approve Post Replacement
tags:
- Post Replacements
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/replacements/{id}/reject.json:
put:
summary: Reject Post Replacement
tags:
- Post Replacements
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/replacements/{id}/promote.json:
post:
summary: Promote Post Replacement
tags:
- Post Replacements
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Post"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/replacements/{id}/toggle_penalize.json:
put:
summary: Toggle Post Replacement Penalty
tags:
- Post Replacements
security:
- basicAuth: []
description: You must have the "Approve Posts" permission.
requestBody:
content:
application/json:
schema:
type: object
properties:
reason:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Post Versions
/posts/versions.json:
get:
summary: Search Post Versions
tags:
- Post Versions
parameters:
- $ref: "#/components/parameters/limit"
- name: page
in: query
description: The page number of results to get. Between 1 and 1000. Note that for post versions specifically, you can only go through the 10,000 most recent results with page numbers.
schema:
type: number
minimum: 1
maximum: 1000
- $ref: "#/components/parameters/id"
- in: query
name: search[updater_name]
schema:
type: string
- in: query
name: search[updater_id]
schema:
type: number
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[start_id]
schema:
type: number
- in: query
name: search[rating]
schema:
type: string
enum: *ratings
- in: query
name: search[rating_changed]
schema:
type: string
enum:
- e
- q
- s
- any
- in: query
name: search[parent_id]
schema:
type: number
- in: query
name: search[parent_id_changed]
schema:
type: boolean
- in: query
name: search[tags]
schema:
type: string
- in: query
name: search[tags_removed]
schema:
type: string
- in: query
name: search[tags_added]
schema:
type: string
- in: query
name: search[locked_tags]
schema:
type: string
- in: query
name: search[locked_tags_removed]
schema:
type: string
- in: query
name: search[locked_tags_added]
schema:
type: string
- in: query
name: search[reason]
schema:
type: string
- in: query
name: search[description]
schema:
type: string
- in: query
name: search[description_changed]
schema:
type: boolean
- in: query
name: search[source_changed]
schema:
type: boolean
- in: query
name: search[uploads]
schema:
type: string
enum:
- included
- excluded
- only
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostVersion"
# Post Votes
/posts/{id}/votes.json:
post:
summary: Create Post Vote
tags:
- Post Votes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: string
- name: score
in: query
required: true
schema:
type: number
enum:
- -1
- 1
- name: no_unvote
in: query
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: object
required:
- score
- up
- down
- our_score
properties:
score:
type: number
up:
type: number
down:
type: number
our_score:
type: number
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Post Vote
tags:
- Post Votes
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the post.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/votes.json:
get:
summary: Search Post Votes
tags:
- Post Votes
security:
- basicAuth: []
description: If you are not Moderator+, you can only see your own votes.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
description: Must be Admin+ to use.
schema:
type: string
enum:
- id_asc
- id_desc
- ip_addr
- in: query
name: search[user_id]
schema:
type: number
- in: query
name: search[user_name]
schema:
type: string
- in: query
name: search[comment_id]
schema:
type: number
- in: query
name: search[comment_creator_id]
schema:
type: number
- in: query
name: search[comment_creator_name]
schema:
type: string
- in: query
name: search[timeframe]
schema:
type: number
description: Number of days.
- in: query
name: search[score]
description: -1 for down, 1 for up
schema:
type: number
- in: query
name: search[is_locked]
schema:
type: boolean
- in: query
name: search[duplicates_only]
description: Must be Admin+ to use.
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PostVote"
/posts/votes/lock.json:
put:
summary: Lock Post Vote
tags:
- Post Votes
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: ids
in: query
required: true
description: The IDs of the post votes, comma separated.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/posts/votes/delete.json:
put:
summary: Delete Post Vote
tags:
- Post Votes
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: ids
in: query
required: true
description: The IDs of the post votes, comma separated.
schema:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
# Rules
/rules.json:
get:
summary: List Rules
tags:
- Rules
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Rule"
post:
summary: Create Rule
tags:
- Rules
description: You must be Admin+.
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- name
- description
- category_id
properties:
name:
type: string
description:
type: string
category_id:
type: number
anchor:
type: string
order:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Rule"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/rules/{id}.json:
patch:
summary: Edit Rule
tags:
- Rules
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the rule.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description:
type: string
category_id:
type: number
anchor:
type: string
order:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Rule
tags:
- Rules
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the rule.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/rules/reorder.json:
post:
summary: Reorder Rules
tags:
- Rules
description: You must be Admin+. No IDs can be omitted, no extra IDs can be present, and no duplicate IDs can be present.
security:
- basicAuth: []
requestBody:
$ref: "#/components/requestBodies/reorder"
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
/rules/builder.json:
get:
summary: Get Record Builder
tags:
- Rules
security:
- basicAuth: []
description: You must be Moderator+.
responses:
200:
description: Success
content:
application/json:
$ref: "#/components/schemas/RecordBuilder"
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
# Rule Categories
/rules/categories.json:
get:
summary: List Rule Categories
tags:
- Rule Categories
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/RuleCategory"
post:
summary: Create Rule Category
tags:
- Rule Categories
description: You must be Admin+.
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- name
properties:
name:
type: string
anchor:
type: string
order:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/RuleCategory"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/rules/categories/{id}.json:
patch:
summary: Edit Rule Category
tags:
- Rule Categories
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the rule category.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
anchor:
type: string
order:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Rule Category
tags:
- Rule Categories
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the rule category.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/rules/categories/reorder.json:
post:
summary: Reorder Rule Categories
tags:
- Rule Categories
description: You must be Admin+. No IDs can be omitted, no extra IDs can be present, and no duplicate IDs can be present.
security:
- basicAuth: []
requestBody:
$ref: "#/components/requestBodies/reorder"
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
# Quick Rules
/rules/quick.json:
get:
summary: List Quick Rules
tags:
- Quick Rules
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/QuickRule"
post:
summary: Create Quick Rule
tags:
- Quick Rules
description: You must be Admin+.
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- header
- reason
- rule_id
properties:
header:
type: string
reason:
type: string
rule_id:
type: number
order:
type: number
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/QuickRule"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/rules/quick/{id}.json:
patch:
summary: Edit Quick Rule
tags:
- Quick Rules
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the quick rule.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
header:
type: string
reason:
type: string
rule_id:
type: number
order:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Quick Rule
tags:
- Quick Rules
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the quick rule.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/rules/quick/reorder.json:
post:
summary: Reorder Quick Rules
tags:
- Quick Rules
description: You must be Admin+. No IDs can be omitted, no extra IDs can be present, and no duplicate IDs can be present.
security:
- basicAuth: []
requestBody:
$ref: "#/components/requestBodies/reorder"
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
# Stats
/stats.json:
get:
summary: Get Stats
tags:
- Stats
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Stats"
# Tags
/tags.json:
get:
summary: Search Tags
tags:
- Tags
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- name
- date
- count
- similarity
- in: query
name: search[fuzzy_name_matches]
schema:
type: string
- in: query
name: search[name_matches]
schema:
type: string
- in: query
name: search[name]
schema:
type: string
- in: query
name: search[category]
schema:
type: number
enum: *tag-categories
- in: query
name: search[hide_empty]
schema:
type: boolean
- in: query
name: search[has_wiki]
schema:
type: boolean
- in: query
name: search[has_artist]
schema:
type: boolean
- in: query
name: search[is_locked]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Tag"
/tags/{id}.json:
get:
summary: Get Tag
tags:
- Tags
parameters:
- name: id
in: path
required: true
description: The ID or name of the tag.
schema:
type: ["number", "string"]
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Tag"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Tag
tags:
- Tags
security:
- basicAuth: []
description: Must be Admin+ if the tag is locked or post count is >100.
parameters:
- name: id
in: path
required: true
description: The ID of the tag.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
category:
type: number
enum: *tag-categories
reason:
type: string
is_locked:
type: boolean
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/tags/{id}/correct.json:
put:
summary: Correct Tag
tags:
- Tags
security:
- basicAuth: []
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/tags/meta_search.json:
get:
summary: Tag Meta Search
tags:
- Tags
responses:
200:
description: Success
content:
application/json:
schema:
type: object
properties:
required:
- search
- tags
search:
type: string
tags:
$ref: "#/components/schemas/Tag"
/tags/correct.json:
put:
summary: Correct Tag
tags:
- Tags
security:
- basicAuth: []
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/tags/preview.json:
get:
summary: Preview Tags
tags:
- Tags
parameters:
- name: tags
in: query
required: true
description: The tags to preview, space separated.
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/TagPreview"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Tag Versions
/tags/versions.json:
get:
summary: Search Tag Versions
tags:
- Tag Versions
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
description: The order of the results.
schema:
type: string
enum:
- id_asc
- id_desc
- name: search[tag]
in: query
schema:
type: string
- name: search[updater_id]
in: query
schema:
type: string
- name: search[updater_name]
in: query
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/TagVersion"
# Tag Aliases
/tags/aliases.json:
get:
summary: Search Tag Aliases
tags:
- Tag Aliases
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- created_at
- updated_at
- name
- tag_count
- in: query
name: search[name_matches]
schema:
type: string
- in: query
name: search[antecedent_name]
schema:
type: string
- in: query
name: search[consequent_name]
schema:
type: string
- in: query
name: search[status]
schema:
type: string
enum: *tag-request-statuses
- in: query
name: search[antecedent_tag_category]
schema:
type: number
enum: *tag-categories
- in: query
name: search[consequent_tag_category]
schema:
type: number
enum: *tag-categories
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[approver_id]
schema:
type: number
- in: query
name: search[approver_name]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/TagAlias"
post:
summary: Create Tag Alias
tags:
- Tag Aliases
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- antecedent_name
- consequent_name
- forum_topic_id
properties:
antecedent_name:
type: string
consequent_name:
type: string
forum_topic_id:
type: number
reason:
type: string
skip_forum:
type: boolean
description: Must be Admin+.
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/TagAlias"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/tags/aliases/{id}.json:
get:
summary: Get Tag Alias
tags:
- Tag Aliases
parameters:
- name: id
in: path
required: true
description: The ID of the tag alias.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/TagAlias"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Tag Alias
tags:
- Tag Aliases
security:
- basicAuth: []
description: You must have the "Manage Tag Change Requests" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the tag alias.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
antecedent_name:
type: string
consequent_name:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Reject Tag Alias
tags:
- Tag Aliases
description: You must be the creator of the request (if pending), or have the "Manage Tag Change Requests" permission.
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the tag alias.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/tags/aliases/{id}/approve.json:
post:
summary: Approve Tag Alias
tags:
- Tag Aliases
security:
- basicAuth: []
description: You must have the "Manage Tag Change Requests" permission.
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Tag Implications
/tags/implications.json:
get:
summary: Search Tag Implications
tags:
- Tag Implications
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- created_at
- updated_at
- name
- tag_count
- in: query
name: search[name_matches]
schema:
type: string
- in: query
name: search[antecedent_name]
schema:
type: string
- in: query
name: search[consequent_name]
schema:
type: string
- in: query
name: search[status]
schema:
type: string
enum: *tag-request-statuses
- in: query
name: search[antecedent_tag_category]
schema:
type: number
enum: *tag-categories
- in: query
name: search[consequent_tag_category]
schema:
type: number
enum: *tag-categories
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[approver_id]
schema:
type: number
- in: query
name: search[approver_name]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/TagImplication"
post:
summary: Create Tag Implication
tags:
- Tag Implications
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- antecedent_name
- consequent_name
- forum_topic_id
properties:
antecedent_name:
type: string
consequent_name:
type: string
forum_topic_id:
type: number
reason:
type: string
skip_forum:
type: boolean
description: Must be Admin+.
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/TagImplication"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/tags/implications/{id}.json:
get:
summary: Get Tag Implication
tags:
- Tag Implications
parameters:
- name: id
in: path
required: true
description: The ID of the tag implication.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/TagImplication"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Tag Implication
tags:
- Tag Implications
security:
- basicAuth: []
description: You must have the "Manage Tag Change Requests" permission.
parameters:
- name: id
in: path
required: true
description: The ID of the tag implication.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
antecedent_name:
type: string
consequent_name:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Reject Tag Implication
tags:
- Tag Implications
description: You must be the creator of the request (if pending), or have the "Manage Tag Change Requests" permission.
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the tag implication.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/tags/implications/{id}/approve.json:
post:
summary: Approve Tag Implication
tags:
- Tag Implications
security:
- basicAuth: []
description: You must have the "Manage Tag Change Requests" permission.
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Related Tags
/tags/related.json:
get:
summary: List Related Tags
tags:
- Related Tags
security:
- basicAuth: []
parameters:
- name: search[query]
in: query
schema:
type: string
- name: search[category_id]
in: query
schema:
type: number
enum: *tag-categories
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/RelatedTag"
403:
$ref: "#/components/responses/AccessDenied"
# Bulk Related Tags
/tags/related/bulk.json:
post:
summary: List Bulk Related Tags
tags:
- Related Tags
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
properties:
query:
type: string
category_id:
type: number
enum: *tag-categories
responses:
200:
description: Success
content:
application/json:
schema:
type: object
examples:
- {"male":[{"name":"male","count":0,"category_id":0}]}
patternProperties:
"^.+$":
type: array
items:
$ref: "#/components/schemas/BulkRelatedTag"
403:
$ref: "#/components/responses/AccessDenied"
# Takedowns
/takedowns.json:
get:
summary: Search Takedowns
tags:
- Takedowns
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[ip_addr]
- in: query
description: Must be Owner+ to use. See [postgres' documentation](https://www.postgresql.org/docs/9.3/functions-net.html) for information on how this is parsed. Specifically, "is contained within or equals" (`<<=`).
schema:
type: string
- in: query
name: search[order]
schema:
type: string
description: Must be Owner+ to use.
enum:
- id_asc
- id_desc
- status
- post_count
- in: query
name: search[status]
schema:
type: string
- in: query
name: search[source]
description: Must be Janitor+ to use.
schema:
type: string
- in: query
name: search[reason]
description: Must be Janitor+ to use.
schema:
type: string
- in: query
name: search[creator_id]
description: Must be Janitor+ to use.
schema:
type: number
- in: query
name: search[creator_name]
description: Must be Janitor+ to use.
schema:
type: string
- in: query
name: search[reason_hidden]
description: Must be Janitor+ to use.
schema:
type: boolean
- in: query
name: search[instructions]
description: Must be Janitor+ to use.
schema:
type: string
- in: query
description: Must be Janitor+ to use.
name: search[post_id]
schema:
type: number
- in: query
description: Must be Janitor+ to use.
name: search[notes]
schema:
type: string
- in: query
description: Must be Owner+ to use.
name: search[email]
schema:
type: string
- in: query
name: search[vericode]
description: Must be Owner+ to use.
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Takedown"
post:
summary: Create Takedown
tags:
- Takedowns
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- email
- reason
properties:
email:
type: string
source:
type: string
instructions:
type: string
reason:
type: string
post_ids:
type: array
items:
type: number
reason_hidden:
type: boolean
notes:
type: string
description: Must be Owner+ to use.
del_post_ids:
type: array
description: Must be Owner+ to use.
items:
type: number
status:
type: string
description: Must be Owner+ to use.
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Takedown"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/takedowns/{id}.json:
get:
summary: Get Takedown
tags:
- Takedowns
parameters:
- name: id
in: path
required: true
description: The ID of the takedown.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Takedown"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Takedown
tags:
- Takedowns
security:
- basicAuth: []
description: You must be Owner+.
parameters:
- name: id
in: path
required: true
description: The ID of the takedown.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
takedown:
type: object
properties:
notes:
type: string
reason_hidden:
type: boolean
takedown_posts:
type: object
patternProperties:
"^(0-9)+$":
type: number
description: 0 to keep, 1 to delete
process_takedown:
type: boolean
delete_reason:
type: boolean
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Takedown
tags:
- Takedowns
security:
- basicAuth: []
description: You must be Owner+.
parameters:
- name: id
in: path
required: true
description: The ID of the takedown.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/takedowns/{id}/add_by_ids.json:
post:
summary: Add Posts To Takedown By IDs
tags:
- Takedowns
security:
- basicAuth: []
description: You must be Owner+.
requestBody:
content:
application/json:
schema:
type: object
required:
- post_ids
properties:
post_ids:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: object
required:
- added_count
- added_post_ids
properties:
added_count:
type: number
added_post_ids:
type: array
items:
type: number
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/takedowns/{id}/add_by_tags.json:
post:
summary: Add Posts To Takedown By Tags
tags:
- Takedowns
security:
- basicAuth: []
description: You must be Owner+.
requestBody:
content:
application/json:
schema:
type: object
required:
- post_tags
properties:
post_tags:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: object
required:
- added_count
- added_post_ids
properties:
added_count:
type: number
added_post_ids:
type: array
items:
type: number
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/takedowns/{id}/count_matching_posts.json:
post:
summary: Count Matching Posts
tags:
- Takedowns
security:
- basicAuth: []
description: You must be Owner+.
requestBody:
content:
application/json:
schema:
type: object
required:
- post_tags
properties:
post_tags:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: object
required:
- matched_post_count
properties:
matched_post_count:
type: number
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/takedowns/{id}/remove_by_ids.json:
post:
summary: Remove Posts From Takedown By IDs
tags:
- Takedowns
security:
- basicAuth: []
description: You must be Owner+.
requestBody:
content:
application/json:
schema:
type: object
required:
- post_ids
properties:
post_ids:
type: string
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# Uploads
/uploads.json:
get:
summary: Search Uploads
tags:
- Uploads
description: You must be Janitor+.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[uploader_id]
schema:
type: number
- in: query
name: search[uploader_name]
schema:
type: string
- in: query
name: search[source]
schema:
type: string
- in: query
name: search[source_matches]
schema:
type: string
- in: query
name: search[rating]
schema:
type: string
enum: *ratings
- in: query
name: search[parent_id]
schema:
type: number
- in: query
name: search[post_id]
schema:
type: number
- in: query
name: search[has_post]
schema:
type: boolean
- in: query
name: search[post_tags_match]
schema:
type: string
- in: query
name: search[status]
schema:
type: string
enum:
- completed
- processing
- pending
- error
- in: query
name: search[backtrace]
schema:
type: string
- in: query
name: search[tag_string]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Upload"
post:
summary: Upload Post
tags:
- Uploads
- Posts
security:
- basicAuth: []
requestBody:
content:
multipart/form-data:
schema:
type: object
required:
- source
- tag_string
- rating
properties:
upload[file]:
type: binary
description: Mutually exclusive with direct_url.
upload[direct_url]:
type: string
description: Mutually exclusive with file.
upload[source]:
type: string
upload[tag_string]:
type: string
upload[rating]:
type: string
enum: *ratings
upload[parent_id]:
type: number
upload[description]:
type: string
upload[as_pending]:
type: boolean
description: Must have the "Unrestricted Uploads" permission.
upload[locked_rating]:
type: boolean
description: Must be Trusted+ to use.
upload[locked_tags]:
type: string
description: Must be Admin+ to use.
responses:
200:
description: Success
content:
application/json:
schema:
type: object
required:
- success
- location
- post_id
properties:
success:
type: boolean
enum:
- true
location:
type: string
post_id:
type: number
403:
$ref: "#/components/responses/AccessDenied"
412:
content:
application/json:
type: object
properties:
success:
type: boolean
enum:
- false
reason:
type: string
message:
type: string
# Upload Whitelists
/upload_whitelists.json:
get:
summary: Search Upload Whitelists
tags:
- Upload Whitelists
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- pattern
- updated_at
- created_at
- in: query
name: search[allowed]
schema:
type: boolean
- in: query
name: search[pattern]
schema:
type: string
- in: query
name: search[note]
schema:
type: string
- in: query
name: search[reason]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/UploadWhitelist"
post:
summary: Create Upload Whitelist
tags:
- Upload Whitelists
security:
- basicAuth: []
description: You must be Admin+.
requestBody:
content:
application/json:
schema:
type: object
required:
- allowed
- pattern
properties:
a
/upload_whitelists/{id}.json:
patch:
summary: Edit Upload Whitelist
tags:
- Upload Whitelists
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the upload whitelist.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
allowed:
type: string
pattern:
type: string
reason:
type: string
note:
type: string
hidden:
type: boolean
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Upload Whitelist
tags:
- Upload Whitelists
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the upload whitelist.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/upload_whitelists/{id}/is_allowed.json:
get:
summary: Check If URL Is Allowed
tags:
- Upload Whitelists
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the upload whitelist.
schema:
type: number
- name: url
in: query
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: object
required:
- url
- domain
- is_allowed
- reason
properties:
url:
type: string
domain:
type: string
is_allowed:
type: boolean
reason:
type: string
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Users
/users.json:
get:
summary: Search Users
tags:
- Upload Whitelists
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- name
- post_upload_count
- note_count
- post_update_count
- in: query
name: search[name_matches]
schema:
type: string
- in: query
name: search[about_me]
schema:
type: string
- in: query
name: search[avatar_id]
schema:
type: number
- in: query
name: search[level]
schema:
type: number
- in: query
name: search[min_level]
schema:
type: number
- in: query
name: search[max_level]
schema:
type: number
- in: query
name: search[unrestricted_uploads]
schema:
type: boolean
- in: query
name: search[can_approve_posts]
schema:
type: boolean
- in: query
name: search[email_matches]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/User"
/users/{id}.json:
get:
summary: Get User
tags:
- Users
parameters:
- name: id
in: path
required: true
description: The ID of the user.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/FullUser"
404:
$ref: "#/components/responses/NotFound"
/users/update.json:
post:
summary: Edit Current User
tags:
- Users
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
properties:
comment_threshold:
type: number
default_image_size:
type: string
enum:
- large
- fit
- fitv
- original
favorite_tags:
type: string
blacklisted_tags:
type: string
time_zone:
type: string
description: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
per_page:
type: number
custom_style:
type: string
dmail_filter_attributes:
type: object
properties:
id:
type: number
words:
type: string
enable_hover_zoom_form:
type: string
enum:
- shift
- true
- false
profile_about:
type: string
profile_artinfo:
type: string
avatar_id:
type: number
enable_compact_uploader:
type: boolean
description: You must have uploaded at least 10 posts.
description_collapsed_initially:
type: boolean
hide_comments:
type: boolean
show_hidden_comments:
type: boolean
receive_email_notifications:
type: boolean
enable_keyboard_navigation:
type: boolean
enable_privacy_mode:
type: boolean
style_usernames:
type: boolean
enable_autocomplete:
type: boolean
disable_cropped_thumbnails:
type: boolean
enable_safe_mode:
type: boolean
disable_responsive_mode:
type: boolean
disable_user_dmails:
type: boolean
move_related_thumbnails:
type: boolean
enable_hover_zoom:
type: boolean
hover_zoom_shift:
type: boolean
hover_zoom_sticky_shift:
type: boolean
hover_zoom_play_audio:
type: boolean
show_post_uploader:
type: boolean
go_to_recent_forum_post:
type: boolean
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/CurrentUser"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/users/me.json:
get:
summary: Get Current User
tags:
- Users
security:
- basicAuth: []
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/CurrentUser"
403:
$ref: "#/components/responses/AccessDenied"
# User Blocks
/users/{id}/blocks.json:
get:
summary: Get Blocked Users
tags:
- Users Blocks
security:
- basicAuth: []
description: You must be the user or Admin+.
parameters:
- name: id
in: path
required: true
description: The ID of the user.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/UserBlock"
404:
$ref: "#/components/responses/NotFound"
post:
summary: Block User
tags:
- User Blocks
security:
- basicAuth: []
description: You must be the user.
parameters:
- name: id
in: path
required: true
description: The ID of the user.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
target_id:
type: number
target_name:
type: string
hide_uploads:
type: boolean
hide_comments:
type: boolean
hide_forum_topics:
type: boolean
hide_forum_posts:
type: boolean
disable_messages:
type: boolean
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/UserBlock"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
/blocks/{id}/users/{blockID}.json:
patch:
summary: Edit User Block
tags:
- Blocked Users
security:
- basicAuth: []
description: You must be the user.
parameters:
- name: id
in: path
required: true
description: The ID of the user.
schema:
type: number
- name: blockID
in: path
required: true
description: The ID of the block.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
hide_uploads:
type: boolean
hide_comments:
type: boolean
hide_forum_topics:
type: boolean
hide_forum_posts:
type: boolean
disable_messages:
type: boolean
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete User Block
tags:
- User Blocks
security:
- basicAuth: []
description: You must be the user.
parameters:
- name: id
in: path
required: true
description: The ID of the user.
schema:
type: number
- name: blockID
in: path
required: true
description: The ID of the block.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/users/count_fixes.json:
post:
summary: Fix User Stat Counts
tags:
- Users
security:
- basicAuth: []
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
/users/dmail_filter.json:
get:
summary: Get user Dmail Filter
tags:
- DMail Filter
security:
- basicAuth: []
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/DMailFilter"
403:
$ref: "#/components/responses/AccessDenied"
patch:
summary: Update user Dmail Filter
tags:
- DMail Filter
security:
- basicAuth: []
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
# User Feedbacks
/users/feedbacks.json:
get:
summary: Search User Feedbacks
tags:
- User Feedbacks
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[body_matches]
schema:
type: string
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[user_id]
schema:
type: number
- in: query
name: search[user_name]
schema:
type: string
- in: query
name: search[category]
schema:
type: string
enum: *feedback-categories
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/UserFeedback"
post:
summary: Create User Feedback
tags:
- User Feedbacks
security:
- basicAuth: []
description: You must be Moderator+.
requestBody:
content:
application/json:
schema:
type: object
required:
- body
- category
properties:
user_id:
type: number
user_name:
type: string
body:
type: string
category:
type: string
enum: *feedback-categories
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/UserFeedback"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/users/feedbacks/{id}.json:
get:
summary: Get User Feedback
tags:
- User Feedbacks
parameters:
- name: id
in: path
required: true
description: The ID of the feedback.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/UserFeedback"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit User Feedback
tags:
- User Feedbacks
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the post feedback.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
body:
type: string
category:
type: string
enum: *feedback-categories
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete User Feedback
tags:
- User Feedbacks
security:
- basicAuth: []
description: You must be Moderator+
parameters:
- name: id
in: path
required: true
description: The ID of the feedback.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
# User Name Change Requests
/users/name_change_requests.json:
get:
summary: Search User Name Change Requests
tags:
- User Name Change Requests
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[user_id]
schema:
type: number
- in: query
name: search[user_name]
schema:
type: string
- in: query
name: search[original_name]
schema:
type: string
- in: query
name: search[desired_name]
schema:
type: string
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/UserFeedback"
post:
summary: Create User Name Change Request
tags:
- User Name Change Requests
security:
- basicAuth: []
description: You must be Moderator+.
requestBody:
content:
application/json:
schema:
type: object
required:
- body
- category
properties:
user_id:
type: number
user_name:
type: string
body:
type: string
category:
type: string
enum: *feedback-categories
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/UserNameChangeRequest"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/users/name_change_request/{id}.json:
get:
summary: Get User Name Change Request
tags:
- User Name Change Requests
security:
- basicAuth: []
description: You must be the creator of the request or Moderator+.
parameters:
- name: id
in: path
required: true
description: The ID of the name change request.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/UserNameChangeRequest"
404:
$ref: "#/components/responses/NotFound"
/users/revert.json:
get:
summary: Revert User
tags:
- Users
security:
- basicAuth: []
description: You must be Moderator+.
requestBody:
content:
application/json:
schema:
type: object
required:
- user_id
properties:
user_id:
type: number
responses:
204:
description: Success
404:
$ref: "#/components/responses/NotFound"
# Wiki Pages
/wiki_pages.json:
get:
summary: Search Wiki Pages
tags:
- Wiki Pages
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- title
- post_count
- in: query
name: search[title]
schema:
type: string
- in: query
name: search[title_matches]
schema:
type: string
- in: query
name: search[body_matches]
schema:
type: string
- in: query
name: search[creator_id]
schema:
type: number
- in: query
name: search[creator_name]
schema:
type: string
- in: query
name: search[is_locked]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/WikiPage"
post:
summary: Create Wiki Page
tags:
- Wiki Pages
security:
- basicAuth: []
requestBody:
content:
application/json:
schema:
type: object
required:
- title
- body
properties:
title:
type: string
body:
type: string
edit_reason:
type: string
parent:
type: string
description: Must be Trusted+ to use.
is_locked:
type: boolean
description: Must be Janitor+ to use.
responses:
201:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/WikiPage"
403:
$ref: "#/components/responses/AccessDenied"
422:
$ref: "#/components/responses/ExpectedError"
/wiki_pages/{id}.json:
get:
summary: Get Wiki Page
tags:
- Wiki Pages
parameters:
- name: id
in: path
required: true
description: The ID or name of the wiki page.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/WikiPage"
404:
$ref: "#/components/responses/NotFound"
patch:
summary: Edit Wiki Page
tags:
- Wiki Pages
security:
- basicAuth: []
description: You must be Janitor+ if the wiki page is locked.
parameters:
- name: id
in: path
required: true
description: The ID of the wiki page.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
body:
type: string
skip_post_count_rename_check:
type: boolean
edit_reason:
type: string
parent:
type: string
description: Must be Trusted+ to use.
title:
type: string
description: Must be Janitor+ to use.
is_locked:
type: boolean
description: Must be Janitor+ to use.
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
delete:
summary: Delete Wiki Page
tags:
- Wiki Pages
security:
- basicAuth: []
description: You must be Admin+
parameters:
- name: id
in: path
required: true
description: The ID of the wiki page-.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
/wiki_page/{id}/revert.json:
post:
summary: Revert Wiki Page
tags:
- Wiki Pages
security:
- basicAuth: []
parameters:
- name: id
in: path
required: true
description: The ID of the wiki page.
schema:
type: number
- name: version_id
in: query
required: true
description: The version ID to revert to.
schema:
type: number
responses:
204:
description: Success
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
# Wiki Page Versions
/wiki_pages/versions.json:
get:
summary: Search Wiki Page Versions
tags:
- Wiki Page Versions
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- $ref: "#/components/parameters/ip_addr"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[updater_id]
schema:
type: number
- in: query
name: search[updater_name]
schema:
type: string
- in: query
name: search[wiki_page_id]
schema:
type: number
- in: query
name: search[title]
schema:
type: string
- in: query
name: search[body]
schema:
type: string
- in: query
name: search[is_locked]
schema:
type: boolean
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/WikiPageVersion"
/wiki_pages/versions/{id}.json:
get:
summary: Get Wiki Page Version
tags:
- Wiki Page Versions
parameters:
- name: id
in: path
required: true
description: The ID of the wiki page version.
schema:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/WikiPageVersion"
404:
$ref: "#/components/responses/NotFound"
# Staff Audit Logs
/admin/audit_logs.json:
get:
summary: Search Audit Logs
tags:
- Audit Logs
security:
- basicAuth: []
description: You must be Moderator+.
parameters:
- $ref: "#/components/parameters/limit"
- $ref: "#/components/parameters/page"
- $ref: "#/components/parameters/id"
- name: search[order]
in: query
schema:
type: string
enum:
- id_asc
- id_desc
- in: query
name: search[user_id]
schema:
type: number
- in: query
name: search[user_name]
schema:
type: string
- in: query
name: search[action]
schema:
type: string
enum: *auditlog-actions
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/StaffAuditLog"
# Bulk Update Request Import
/admin/bulk_update_request_imports.json:
post:
summary: Import Bulk Update Request
tags:
- Bulk Update Request Import
security:
- basicAuth: []
description: You must be Owner+.
requestBody:
content:
application/json:
schema:
type: object
required:
- script
properties:
script:
type: string
forum_id:
type: number
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/StaffAuditLog"
# Admin Users
/admin/users/alt_list.json:
get:
summary: Get Alt List
tags:
- Admin Users
security:
- basicAuth: []
description: You must be Admin+.
parameters:
- name: page
in: query
description: The page number of results to get. Between 1 and 9999.
schema:
type: number
minimum: 1
maximum: 9999
responses:
200:
description: Success
content:
application/json:
schema:
type: array
items:
- type: number
description: ID of concerned user.
- type: array
items:
type: number
description: ID of suspected alt.
examples:
- [[1,[2]],[2,[1]]]
/admins/users/{id}.json:
patch:
summary: Admin Edit User
tags:
- Admin Users
security:
- basicAuth: []
description: You must be Admin+. If editing an Admin+, you must be Owner+.
parameters:
- name: id
in: path
required: true
description: The ID of the user.
schema:
type: number
requestBody:
content:
application/json:
schema:
type: object
properties:
verified:
type: boolean
description: Must be Owner+ to use.
level:
type: number
description: Must be Owner+ to promote to Admin+.
name:
type: string
profile_about:
type: string
profile_artinfo:
type: string
base_upload_limit:
type: number
enable_privacy_mode:
type: boolean
force_name_change:
type: boolean
email:
type: string
description: Must be Owner+ to use.
title:
type: string
description: Must be Owner+ to use.
responses:
204:
description: Success
400:
$ref: "#/components/responses/MessageError"
403:
$ref: "#/components/responses/AccessDenied"
404:
$ref: "#/components/responses/NotFound"
422:
$ref: "#/components/responses/ExpectedError"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment