help:api
Danbooru offers a REST-like API to make scripting easy. All you need is a way to GET, POST, PUT and DELETE to URLs. Responses are given in either XML or JSON format.
Testing
API calls can be tested on https://testbooru.donmai.us. Scripts should be tested there before using them on the main site.
Basics
HTTP defines four basic request methods: GET, POST, PUT and DELETE. You'll be using these methods to interact with the Danbooru API. Most API calls that change the state of the database (like creating, updating, or deleting something) require an HTTP POST, PUT or DELETE call. API calls that only retrieve data can typically be done with an HTTP GET call.
A URL is considered a resource and the HTTP methods are actions you perform on the resource. For example, GET /posts/23.json returns a JSON representation of post #23. GET /posts/23.xml returns an XML representation. POST /posts/6.json would update the resource, for example changing its tags.
Some resources require parameters. For example, you can find tags that start with the letter 'a' by calling GET /tags.json?search[name_matches]=a*. This will give you a JSON listing of all tags with names starting with an a.
For POST, PUT and DELETE requests you must pass these parameters along in the body instead of the query parameters. Body parameters may be encoded in one of two ways. The usual way is with key-values pairs using "Content-Type: application/x-www-form-urlencoded":
curl -u "$login:$api_key" -X PUT "https://testbooru.donmai.us/posts/6.json" -d 'post[rating]=s&post[tag_string]=danboo'
Parameters may also be encoded as JSON using "Content-Type: application/json":
curl -u "$login:$api_key" -X PUT "https://testbooru.donmai.us/posts/6.json" -d '{ "post": { "rating": "s", "tag_string": "danboo" } }' -H "Content-Type: application/json"
Responses
All API calls that change state will return a single element response (for XML calls). They are formatted like this:
<?xml version="1.0" encoding="UTF-8"?> <response success="false" reason="duplicate"/>
For JSON responses, they'll look like this:
{ "success": false, "reason": "duplicate" }
While you can usually determine success or failure based on the response object, you can also figure out what happened based on the HTTP status code. In addition to the standard ones, Danbooru uses some custom status codes in the 4xx and 5xx range.
- 200 OK: Request was successful
- 204 No Content: Request was successful (returned by create actions)
- 400 Bad Request: The given parameters could not be parsed
- 401 Unauthorized: Authentication failed
- 403 Forbidden: Access denied (see help:users for permissions information)
- 404 Not Found: Not found
- 410 Gone: Pagination limit (see help:users for pagination limits)
- 420 Invalid Record: Record could not be saved
- 422 Locked: The resource is locked and cannot be modified
- 423 Already Exists: Resource already exists
- 424 Invalid Parameters: The given parameters were invalid
- 429 User Throttled: User is throttled, try again later (see help:users for API limits)
- 500 Internal Server Error: A database timeout, or some unknown error occurred on the server
- 502 Bad Gateway: Server cannot currently handle the request, try again later (returned during heavy load)
- 503 Service Unavailable: Server cannot currently handle the request, try again later (returned during downbooru)
Authentication
You will need an API key if you need to login using the API. You can generate an API key by visiting your user profile and clicking the Generate API key button.
To authenticate with the API, pass the login
and api_key
URL parameters, where login
is your username and api_key
is your API key:
/profile.json?login=your_username&api_key=your_api_key
You can also authenticate using HTTP Basic Authentication:
curl https://$username:[email protected]/profile.json curl --user $username:$api_key /profile.json
Most HTTP libraries support HTTP basic authentication out of the box. If yours doesn't, you can generate the authentication header manually. The format is Authentication: Basic $secret
where $secret = base64($username + ":" + $api_key)
. In other words, concatenate your username and API key together, separated by a colon, then Base64 encode the result:
curl --header "Authorization: Basic $(echo $username:$api_key | base64)" /profile.json
If you are writing a user script for a browser, you do not need to embed an API key. You can rely on the user's session.
⚠️ Keep your API key secret. Treat it like a password. Gaining access to it allows full access to your account. Do not publicly post your API key or distribute it in scripts.
Rate Limits
As per topic #13628, API reads are not limited, but most kinds of update actions are rate-limited according to user level:
- Basic users: 1 update/second
- Gold users w/API key: 2 updates/second
- Platinum/Builder/Mod w/API key: 4 updates/second
In addition, users have a burst pool where they can make several consecutive updates before being rate limited. This is again dependent on user level:
- Basic users: 10 updates at once
- Gold users w/API key: 30 updates at once
- Platinum/Builder/Mod w/API key: 60 updates at once
This pool is regenerated according to the rate limiting rules mentioned above.
Queries
Common Search Parameters
All search endpoints support a common set of parameters:
-
page Returns the given page. Subject to maximum page limits (see help:users).
You can also useb<id>
anda<id>
to request results before <id> or after <id>, respectively.
E.g. to get a page of posts before post #999999, you'd make a request to/posts.json?page=b999999
. - limit The number of results to return per page. The maximum limit is 200 for /posts.json and 1000 for everything else.
- search[id]
- search[created_at]
- search[updated_at]
-
search[order]=custom Returns results in the same order as given by
search[id]=3,2,1
.
Parameter Parsing
Numeric search parameters support ranges:
100
>100
>=100
<100
<=100
100,200,300
-
100..200
(inclusive)
Date parameters also support ranges:
2012-01-01
>2012-01-01
>=2012-01-01
<2012-01-01
<=2012-01-01
2012-01-01,2012-01-02
-
2012-01-01..2013-01-01
(inclusive)
Boolean parameters accept any of the following values for true or false:
- True: true, t, yes, y, on, 1
- False: false, f, no, n, off, 0
Most string parameters support using asterisks (*) as wildcards. Wildcards can be escaped with \*
. Literal backslashes can be escaped with \\
.
Versioned Types
Listing
The base URL is GET /artists.json.
- search[id] The artist id.
- search[name] Search for artists with an exact match for this name.
- search[group_name] Search for artists with an exact match for this group name.
- search[any_other_name_like] Search for artists that have an other name matching this value. Supports wildcards.
- search[any_name_matches] Search for artists that have a matching name, group name, or other name. Supports wildcards and regexes.
- search[url_matches] Search for artists with a matching URL:
-
*pixiv*
Search for URLs matching a wildcard expression. -
/pixiv|twitter/
Search for URLs matching a regular expression. -
https://www.pixiv.net/member.php?id=9948
Search for artists with the given profile URL. -
https://www.pixiv.net/member_illust.php?mode=medium&illust_id=615946
Search for artists given a link to one of their works. - search[creator_name]
- search[creator_id]
- search[is_active] Search for artists that are active (not deleted).
- search[is_banned] Search for artists that are banned.
- search[has_tag] Search for artists that have a non-empty tag.
- search[order] Can be: name, updated_at, post_count (Defaults to ID).
Show
The base URL is GET /artists/$id.json where $id is the artist id.
Create
The base URL is POST /artists.json.
- artist[name] The artist tag name.
- artist[other_names] List of alternative names for this artist, space delimited. Replace spaces within names with underscores.
- artist[group_name] The name of the group this artist belongs to.
- artist[url_string] List of URLs associated with this artist, whitespace or newline delimited.
- artist[notes] DText that will be used to create a wiki entry at the same time.
- artist[is_active] False to mark the artist entry as deleted. True to undelete the artist entry. Builder only.
Update
The base URL is PUT /artists/$id.json where $id is the artist id.
Accepts the same parameters as the create artist action.
Delete (Builder+)
The base URL is DELETE /artists/$id.json where $id is the artist id.
Undelete (Builder+)
The base URL is POST /artists/$id/undelete.json where $id is the artist id.
Banned
The base URL is GET /artists/banned.json. This is a shortcut for an artist listing search with is_banned=true.
Revert
The base URL is PUT /artists/$id/revert.json where $id is the artist id.
- version_id REQUIRED The artist version id to revert to.
Listing
The base URL is GET /artist_commentaries.json.
- search[text_matches]
- search[post_id]
- search[post_tags_match] The commentary's post's tags match the given terms. Meta-tags not supported.
- search[original_present] Can be: yes, no
- search[translated_present] Can be: yes, no
Create or Update
The base URL is PUT /artist_commentaries/create_or_update.json
- artist_commentary[post_id] REQUIRED
- artist_commentary[original_title]
- artist_commentary[original_description]
- artist_commentary[translated_title]
- artist_commentary[translated_description]
- artist_commentary[add_commentary_tag]
- artist_commentary[add_commentary_request_tag]
- artist_commentary[add_commentary_check_tag]
- artist_commentary[add_partial_commentary_tag]
- artist_commentary[remove_commentary_tag]
- artist_commentary[remove_commentary_request_tag]
- artist_commentary[remove_commentary_check_tag]
- artist_commentary[remove_partial_commentary_tag]
Revert
The base URL is PUT /artist_commentaries/$id/revert.json where $id is the post id (not the artist commentary id).
- version_id REQUIRED The artist commentary version id to revert to.
Listing
The base URL is GET /notes.json.
- search[body_matches] The note's body matches the given terms. Use a * in the search terms to search for raw strings.
- search[post_id]
- search[post_tags_match] The note's post's tags match the given terms. Meta-tags are not supported.
- search[creator_name] The creator's name. Exact match.
- search[creator_id] The creator's user id.
- search[is_active] Can be: true, false
Use /notes.json?group_by=note&search[post_id]=$id to get notes from $id.
Show
The base URL is GET /notes/$id.json where $id is the note id.
Create
- note[post_id] REQUIRED
- note[x] REQUIRED The x coordinates of the note in pixels, with respect to the top-left corner of the image.
- note[y] REQUIRED The y coordinates of the note in pixels, with respect to the top-left corner of the image.
- note[width] REQUIRED The width of the note in pixels.
- note[height] REQUIRED The height of the note in pixels.
- note[body] REQUIRED The body of the note.
Update
The base URL is PUT /notes/$id.json where $id is the note id.
- note[x] The x coordinates of the note in pixels, with respect to the top-left corner of the image.
- note[y] The y coordinates of the note in pixels, with respect to the top-left corner of the image.
- note[width] The width of the note in pixels.
- note[height] The height of the note in pixels.
- note[body] The body of the note.
Delete
The base URL is DELETE /notes/$id.json where $id is the note id.
Revert
The base URL is PUT /notes/$id/revert.json where $id is the note id.
- version_id REQUIRED The note version id to revert to.
Listing
The base URL is GET /pools.json.
- search[name_matches] Supports patterns.
- search[id] Can search for multiple ID's at once, separated by commas.
- search[description_matches]
- search[creator_name]
- search[creator_id]
- search[is_active] Can be: true, false
- search[is_deleted] Can be: true, false
- search[category] Can be: series, collection
- search[order] Can be: name, created_at, post_count, date (Defaults to updated at)
Show
The base URL is GET /pools/$id.json where $id is the pool id.
Create
The base URL is POST /pools.json.
- pool[name] REQUIRED
- pool[description] REQUIRED
- pool[category] Can be: series, collection
Update
The base URL is PUT /pools/$id.json where $id is the pool id.
- pool[name]
- pool[description]
- pool[post_ids] List of space delimited post ids.
- pool[is_active] Can be: 1, 0
- pool[category] Can be: series, collection
Delete (Moderator+)
The base URL is DELETE /pools/$id.json where $id is the pool id.
Undelete (Moderator+)
The base URL is POST /pools/$id/undelete.json where $id is the pool id.
Revert
The base URL is PUT /pools/$id/revert.json where $id is the pool id.
-
version_id REQUIRED
Listing
The base URL is GET /posts.json.
- limit How many posts you want to retrieve.
- page The page number.
- tags The tags to search for. Any tag combination that works on the web site will work here. This includes all the meta-tags.
- md5 The md5 of the image to search for.
- random Can be: true, false
- raw When this parameter is set the tags parameter will not be parsed for aliased tags, metatags or multiple tags, and will instead be parsed as a single literal tag.
Show
The base URL is GET /posts/$id.json where $id is the post id.
Create
You cannot directly create posts. You must create an upload, which is then converted into a post.
Update
The base URL is PUT /posts/$id.json where $id is the post id.
- Member+
- post[tag_string] A space delimited list of tags.
- post[rating] The rating for the post. Can be: safe, questionable, or explicit.
- post[source] If this is a URL, Danbooru will download the file.
- post[parent_id] The ID of the parent post.
- post[has_embedded_notes] Can be: 0, 1
- Builder+
- post[is_rating_locked] Can be: 0, 1
- post[is_note_locked] Can be: 0, 1
- Admin
- post[is_status_locked] Can be: 0, 1
Delete
You cannot delete posts. You can only flag them for deletion (see PostFlag resource).
Revert
The base URL is PUT /posts/$id/revert.json where $id is the post id.
- version_id REQUIRED The post version id to revert to.
Copy notes
The base URL is PUT /posts/$id/copy_notes.json where $id is the post id.
- other_post_id REQUIRED The id of the post to copy notes to.
Mark as translated
The base URL is PUT /posts/$id/mark_as_translated.json where $id is the post id.
- post[check_translation]
- post[partially_translated]
Vote
The base URL is POST /posts/$post_id/votes.json where $post_id is the post id.
- score REQUIRED Can be: up, down.
Unvote
The base URL is DELETE /posts/$post_id/votes.json where $post_id is the post id.
Listing
The base URL is GET /wiki_pages.json.
- search[title]
- search[creator_id]
- search[body_matches]
- search[other_names_match]
- search[creator_name]
- search[hide_deleted] Can be: y
- search[other_names_present] Can be: yes, no
- search[order] Can be: date (or time), title (or name).
Show
The base URL is GET /wiki_pages/$id.json where $id is the wiki page id.
Create
The base URL is POST /wiki_pages.json.
- wiki_page[title] REQUIRED
- wiki_page[body] REQUIRED
- wiki_page[other_names]
Update
The base URL is PUT /wiki_pages/$id.json where $id is the wiki page id.
- wiki_page[title]
- wiki_page[body]
- wiki_page[other_names]
- wiki_page[is_locked] Can be: 0,1 (Builder+)
- wiki_page[is_deleted] Can be: 0,1 (Builder+)
Delete (Builder+)
The base URL is DELETE /wiki_pages/$id.json where $id is the pool id.
Revert
The base URL is PUT /wiki_pages/$id/revert.json where $id is the wiki page id.
- version_id REQUIRED
Type Versions
Listing
The base URL is GET /artist_versions.json.
- search[name]
- search[updater_name]
- search[updater_id]
- search[artist_id]
- search[is_active] Can be: true, false
- search[is_banned] Can be: true, false
- search[order] Can be: name (Defaults to ID)
Listing
The base URL is GET /artist_commentary_versions.json.
- search[updater_id]
- search[post_id]
Listing
The base URL is GET /note_versions.json.
- search[updater_id]
- search[post_id]
- search[note_id]
Listing
The base URL is GET /pool_versions.json.
- search[updater_id]
- search[updater_name]
- search[pool_id]
Listing
The base URL is GET /post_versions.json.
- search[updater_name]
- search[updater_id]
- search[post_id]
- search[start_id]
Show
The base URL is GET /post_versions/$id.json where $id is the post version id.
Undo
The base URL is PUT /post_versions/$id/undo.json where $id is the post version id.
Listing
The base URL is GET /wiki_page_versions.json.
- search[updater_id]
- search[wiki_page_id]
Show
The base URL is GET /wiki_page_versions/$id.json where $id is the wiki page version id.
Non-versioned Types
Listing
The base URL is GET /comments.json.
- limit How many posts you want to retrieve.
- page The page number.
- group_by Must be: comment, else it will return posts.
- search[body_matches] Body contains the given terms.
- search[post_id]
- search[post_tags_match] The comment's post's tags match the given terms. Meta-tags not supported.
- search[creator_name] The name of the creator (exact match)
- search[creator_id] The user id of the creator
- search[is_deleted] Can be: true,false
Create
The base URL is POST /comments.json
- comment[post_id] REQUIRED
- comment[body] REQUIRED
- comment[do_not_bump_post] Set to 1 if you do not want the post to be bumped to the top of the comment listing
Update
The base URL is PUT /comments/$id.json where $id is the comment id.
- comment[body] REQUIRED
Show
The base URL is GET /comments/$id.json where $id is the comment id.
Delete
The base URL is DELETE /comments/$id.json where $id is the comment id.
Undelete
The base URL is POST /comments/$id/undelete.json where $id is the comment id.
Vote
The base URL is POST /comments/$id/votes.json where $id is the comment id.
- score REQUIRED Can be: up, down.
Unvote
The base URL is POST /posts/$id/unvote.json where $id is the comment id.
Listing
The base URL is GET /dmails.json. You can only view dmails you own.
- search[message_matches] The message body contains the given terms.
- search[to_name] The recipient's name.
- search[to_id] The recipient's user id.
- search[from_name] The sender's name.
- search[from_id] The sender's user id.
- search[read] Can be: true, false
Show
The base URL is GET /dmails/$id.json where $id is the dmail id. You can only view dmails you own.
Create
The base URL is POST /dmails.json.
- dmail[to_name] The recipient's name.
- dmail[title] The title of the message.
- dmail[body] The body of the message.
Delete
The base URL is DELETE /dmails/$id.json where $id is the dmail id. You can only delete dmails you own.
Listing
The base URL is GET /forum_posts.json.
- search[creator_id]
- search[creator_name]
- search[topic_id]
- search[topic_title_matches]
- search[topic_category_id] Can be: 0, 1, 2 (General, Tags, Bugs & Features respectively)
- search[body_matches]
Create
The base URL is POST /forum_posts.json.
forum_post[topic_id]
forum_post[body]
Update (Moderator+)
The base URL is PUT /forum_posts/$id.json where $id is the forum post id.
- forum_post[body]
Delete (Moderator+)
The base URL is DELETE /forum_posts/$id.json where $id is the forum post id.
Undelete (Moderator+)
The base URL is POST /forum_posts/$id/undelete.json where $id is the forum post id.
Listing
The base URL is GET /forum_topics.json.
- search[title_matches] Search body for the given terms.
- search[title] Exact title match.
- search[category_id] Can be: 0, 1, 2 (General, Tags, Bugs & Features respectively)
Show
The base URL is GET /forum_topics/$id.json where $id is the forum topic id.
Create
The base URL is POST /forum_topics.json.
- forum_topic[title]
- forum_topic[original_post_attributes][body] Message of the initial post.
- forum_topic[category_id] Can be: 0, 1, 2 (General, Tags, Bugs & Features respectively)
Update
The base URL is PUT /forum_topics/$id.json where $id is the forum topic id.
- forum_topic[title]
- forum_topic[category_id] Can be: 0, 1, 2 (General, Tags, Bugs & Features respectively)
Delete (Moderator+)
The base URL is DELETE /forum_topics/$id.json where $id is the forum topic id.
Undelete (Moderator+)
The base URL is POST /forum_topics/$id/undelete.json where $id is the forum topic id.
Listing
The base URL is GET /post_flags.json.
- search[creator_id] The user id of the flag's creator.
- search[creator_name] The name of the flag's creator.
- search[post_id] The post id if the flag.
Show
The base URL is GET /post_flags/$post_flag_id.json where $post_flag_id is the post flag id.
Create
The base URL is POST /post_flags.json.
- post_flag[post_id] REQUIRED The id of the flagged post.
- post_flag[reason] REQUIRED The reason of the flagging.
Listing
The base URL is GET /post_appeals.json.
- search[creator_id] The user id of the appeal's creator.
- search[creator_name] The name of the appeal's creator.
- search[post_id] The post id if the appeal.
Show
The base URL is GET /post_appeals/$post_appeal_id.json where $post_appeal_id is the post appeal id.
Create
The base URL is POST /post_appeals.json.
- post_appeal[post_id] REQUIRED The id of the appealed post.
- post_appeal[reason] REQUIRED The reason of the appeal.
Listing
The base URL is GET /tags.json.
- search[name_matches] Supports patterns.
- search[name] Allows searching for single tag with exact given name.
- search[name_comma] Allows searching for multiple tags with exact given names, separated by commas. e.g. search[name_comma]=touhou,original,k-on! would return the three listed tags.
- search[category] Can be: 0, 1, 3, 4 (general, artist, copyright, character respectively)
- search[hide_empty] Can be: yes, no. Excludes tags with 0 posts when "yes".
- search[has_wiki] Can be: yes, no
- search[has_artist] Can be: yes, no
- search[order] Can be: name, date, count (Default is date)
Show
The base URL is GET /pools/$id.json where $id is the pool id.
Update
The base URL is PUT /pools/$id.json where $id is the pool id.
-
pool[category] Can be: 0, 1, 3, 4 (general, artist, copyright, character respectively)
Listing
The base URL is GET /tag_aliases.json.
- search[name_matches] Match antecedent or consequent name.
- search[antecedent_name] Match antecedent name (exact match).
- search[id] The tag alias id.
Listing
The base URL is GET /tag_implications.json.
- search[name_matches] Match antecedent or consequent name.
- search[antecedent_name] Match antecedent name (exact match).
- search[id] The tag implication id.
Listing
The base URL is GET /uploads.json.
- search[uploader_id] The id of the uploader.
- search[uploader_name] The name of the uploader.
- search[source] The source of the upload (exact string match).
Show
The base URL is GET /uploads/$id.json where $id is the upload id.
Create
The base URL is POST /uploads.json.
- upload[file] The file data encoded as a multipart form.
- upload[source] The source URL.
-
upload[rating] REQUIRED Can be:
s
,q
, ore
. Alternatively, you can specifyrating:safe
,rating:questionable
, orrating:explicit
in the tag string. - upload[parent_id] The parent post id.
- upload[tag_string] REQUIRED The tags.
Either the file or the source must be provided.
Levels
Users have a number attribute called level representing their role. The current levels are:
- Member: 20
- Gold: 30
- Platinum: 31
- Builder: 32
- Janitor: 35
- Moderator: 40
- Admin: 50
Listing
The base URL is GET /users.json.
- search[name] Supports patterns.
- search[name_matches] Same functionality as name.
- search[min_level] Minimum level (see section on levels).
- search[max_level] Maximum level (see section on levels).
- search[level] Current level (see section on levels).
- search[id] The user id.
- search[order] Can be: name, post_upload_count, note_count, post_update_count, date.
Show
The base URL is GET /users/$id.json where $id is the user id.
Other Functions
Show
The base URL is GET /related_tag.json.
- query REQUIRED The tag to find the related tags for.
- category If specified, show only tags of a specific category. Can be: general, artist, copyright, character
List of API endpoints
GET / posts#index POST /admin/alias_and_implication_import(.:format) admin/alias_and_implication_imports#create GET /admin/alias_and_implication_import/new(.:format) admin/alias_and_implication_imports#new GET /admin/dashboard(.:format) admin/dashboards#show PATCH /admin/users/:id(.:format) admin/users#update PUT /admin/users/:id(.:format) admin/users#update GET /admin/users/:id/edit(.:format) admin/users#edit GET /advertisements(.:format) advertisements#index POST /advertisements(.:format) advertisements#create POST /advertisements/:advertisement_id/hits(.:format) advertisement_hits#create GET /advertisements/:id(.:format) advertisements#show PATCH /advertisements/:id(.:format) advertisements#update PUT /advertisements/:id(.:format) advertisements#update DELETE /advertisements/:id(.:format) advertisements#destroy GET /advertisements/:id/edit(.:format) advertisements#edit GET /advertisements/new(.:format) advertisements#new POST /api_keys(.:format) api_keys#create GET /api_keys/new(.:format) api_keys#new GET /artist(.:format) redirect(301) GET /artist/history/:id(.:format) redirect(301, /artist_versions?search[artist_id]=%{id}) GET /artist/index(.:format) redirect(301) GET /artist/index.json(.:format) legacy#artists {:format=>/json/} GET /artist/index.xml(.:format) legacy#artists {:format=>/xml/} GET /artist/recent_changes(.:format) redirect(301, /artist_versions) GET /artist/show(.:format) redirect(301) GET /artist/show/:id(.:format) redirect(301, /artists/%{id}) GET /artist_commentaries(.:format) artist_commentaries#index POST /artist_commentaries(.:format) artist_commentaries#create GET /artist_commentaries/:id(.:format) artist_commentaries#show PATCH /artist_commentaries/:id(.:format) artist_commentaries#update PUT /artist_commentaries/:id(.:format) artist_commentaries#update DELETE /artist_commentaries/:id(.:format) artist_commentaries#destroy GET /artist_commentaries/:id/edit(.:format) artist_commentaries#edit PUT /artist_commentaries/:id/revert(.:format) artist_commentaries#revert PUT /artist_commentaries/create_or_update(.:format) artist_commentaries#create_or_update GET /artist_commentaries/new(.:format) artist_commentaries#new GET /artist_commentaries/search(.:format) artist_commentaries#search GET /artist_commentary_versions(.:format) artist_commentary_versions#index GET /artist_versions(.:format) artist_versions#index GET /artist_versions/search(.:format) artist_versions#search GET /artists(.:format) artists#index POST /artists(.:format) artists#create GET /artists/:id(.:format) artists#show PATCH /artists/:id(.:format) artists#update PUT /artists/:id(.:format) artists#update DELETE /artists/:id(.:format) artists#destroy PUT /artists/:id/ban(.:format) artists#ban GET /artists/:id/edit(.:format) artists#edit PUT /artists/:id/revert(.:format) artists#revert PUT /artists/:id/unban(.:format) artists#unban POST /artists/:id/undelete(.:format) artists#undelete GET /artists/banned(.:format) artists#banned GET /artists/finder(.:format) artists#finder GET /artists/new(.:format) artists#new GET /artists/show_or_new(.:format) artists#show_or_new GET /bans(.:format) bans#index POST /bans(.:format) bans#create GET /bans/:id(.:format) bans#show PATCH /bans/:id(.:format) bans#update PUT /bans/:id(.:format) bans#update DELETE /bans/:id(.:format) bans#destroy GET /bans/:id/edit(.:format) bans#edit GET /bans/new(.:format) bans#new GET /bulk_update_requests(.:format) bulk_update_requests#index POST /bulk_update_requests(.:format) bulk_update_requests#create GET /bulk_update_requests/:id(.:format) bulk_update_requests#show PATCH /bulk_update_requests/:id(.:format) bulk_update_requests#update PUT /bulk_update_requests/:id(.:format) bulk_update_requests#update DELETE /bulk_update_requests/:id(.:format) bulk_update_requests#destroy POST /bulk_update_requests/:id/approve(.:format) bulk_update_requests#approve GET /bulk_update_requests/:id/edit(.:format) bulk_update_requests#edit GET /bulk_update_requests/new(.:format) bulk_update_requests#new GET /comment(.:format) redirect(301) GET /comment/index(.:format) redirect(301) GET /comment/new(.:format) redirect(301, /comments) GET /comment/search(.:format) redirect(301) GET /comment/show/:id(.:format) redirect(301, /comments/%{id}) GET /comments(.:format) comments#index POST /comments(.:format) comments#create POST /comments/:comment_id/votes(.:format) comment_votes#create DELETE /comments/:comment_id/votes/:id(.:format) comment_votes#destroy GET /comments/:id(.:format) comments#show PATCH /comments/:id(.:format) comments#update PUT /comments/:id(.:format) comments#update DELETE /comments/:id(.:format) comments#destroy GET /comments/:id/edit(.:format) comments#edit POST /comments/:id/undelete(.:format) comments#undelete PUT /comments/:id/unvote(.:format) comments#unvote GET /comments/index_all(.:format) comments#index_all GET /comments/new(.:format) comments#new GET /comments/search(.:format) comments#search GET /counts(.:format) counts#index POST /counts(.:format) counts#create GET /counts/:id(.:format) counts#show PATCH /counts/:id(.:format) counts#update PUT /counts/:id(.:format) counts#update DELETE /counts/:id(.:format) counts#destroy GET /counts/:id/edit(.:format) counts#edit GET /counts/new(.:format) counts#new GET /counts/posts(.:format) counts#posts GET /delayed_jobs(.:format) delayed_jobs#index GET /dmails(.:format) dmails#index POST /dmails(.:format) dmails#create GET /dmails/:id(.:format) dmails#show PATCH /dmails/:id(.:format) dmails#update PUT /dmails/:id(.:format) dmails#update DELETE /dmails/:id(.:format) dmails#destroy GET /dmails/:id/edit(.:format) dmails#edit POST /dmails/mark_all_as_read(.:format) dmails#mark_all_as_read GET /dmails/new(.:format) dmails#new GET /dmails/search(.:format) dmails#search POST /dtext_preview(.:format) dtext_previews#create GET /explore/posts(.:format) explore/posts#index POST /explore/posts(.:format) explore/posts#create GET /explore/posts/:id(.:format) explore/posts#show PATCH /explore/posts/:id(.:format) explore/posts#update PUT /explore/posts/:id(.:format) explore/posts#update DELETE /explore/posts/:id(.:format) explore/posts#destroy GET /explore/posts/:id/edit(.:format) explore/posts#edit GET /explore/posts/hot(.:format) explore/posts#hot GET /explore/posts/intro(.:format) explore/posts#intro GET /explore/posts/missed_searches(.:format) explore/posts#missed_searches GET /explore/posts/new(.:format) explore/posts#new GET /explore/posts/popular(.:format) explore/posts#popular GET /explore/posts/searches(.:format) explore/posts#searches GET /favorite(.:format) redirect(301) GET /favorite/index(.:format) redirect(301) GET /favorite/list_users.json(.:format) legacy#unavailable GET /favorite_groups(.:format) favorite_groups#index POST /favorite_groups(.:format) favorite_groups#create GET /favorite_groups/:favorite_group_id/order/edit(.:format) favorite_group_orders#edit GET /favorite_groups/:id(.:format) favorite_groups#show PATCH /favorite_groups/:id(.:format) favorite_groups#update PUT /favorite_groups/:id(.:format) favorite_groups#update DELETE /favorite_groups/:id(.:format) favorite_groups#destroy PUT /favorite_groups/:id/add_post(.:format) favorite_groups#add_post GET /favorite_groups/:id/edit(.:format) favorite_groups#edit GET /favorite_groups/new(.:format) favorite_groups#new GET /favorites(.:format) favorites#index POST /favorites(.:format) favorites#create GET /favorites/:id(.:format) favorites#show PATCH /favorites/:id(.:format) favorites#update PUT /favorites/:id(.:format) favorites#update DELETE /favorites/:id(.:format) favorites#destroy GET /favorites/:id/edit(.:format) favorites#edit GET /favorites/new(.:format) favorites#new GET /forum(.:format) redirect(301) GET /forum/index(.:format) redirect(301) GET /forum/search(.:format) redirect(301, /forum_posts/search) GET /forum/show/:id(.:format) redirect(301) GET /forum_posts(.:format) forum_posts#index POST /forum_posts(.:format) forum_posts#create GET /forum_posts/:id(.:format) forum_posts#show PATCH /forum_posts/:id(.:format) forum_posts#update PUT /forum_posts/:id(.:format) forum_posts#update DELETE /forum_posts/:id(.:format) forum_posts#destroy GET /forum_posts/:id/edit(.:format) forum_posts#edit POST /forum_posts/:id/undelete(.:format) forum_posts#undelete GET /forum_posts/new(.:format) forum_posts#new GET /forum_posts/search(.:format) forum_posts#search GET /forum_topics(.:format) forum_topics#index POST /forum_topics(.:format) forum_topics#create POST /forum_topics/:forum_topic_id/visit(.:format) forum_topic_visits#create GET /forum_topics/:forum_topic_id/visit(.:format) forum_topic_visits#show PATCH /forum_topics/:forum_topic_id/visit(.:format) forum_topic_visits#update PUT /forum_topics/:forum_topic_id/visit(.:format) forum_topic_visits#update DELETE /forum_topics/:forum_topic_id/visit(.:format) forum_topic_visits#destroy GET /forum_topics/:forum_topic_id/visit/edit(.:format) forum_topic_visits#edit GET /forum_topics/:forum_topic_id/visit/new(.:format) forum_topic_visits#new GET /forum_topics/:id(.:format) forum_topics#show PATCH /forum_topics/:id(.:format) forum_topics#update PUT /forum_topics/:id(.:format) forum_topics#update DELETE /forum_topics/:id(.:format) forum_topics#destroy POST /forum_topics/:id/create_merge(.:format) forum_topics#create_merge GET /forum_topics/:id/edit(.:format) forum_topics#edit GET /forum_topics/:id/new_merge(.:format) forum_topics#new_merge POST /forum_topics/:id/subscribe(.:format) forum_topics#subscribe POST /forum_topics/:id/undelete(.:format) forum_topics#undelete POST /forum_topics/:id/unsubscribe(.:format) forum_topics#unsubscribe POST /forum_topics/mark_all_as_read(.:format) forum_topics#mark_all_as_read GET /forum_topics/new(.:format) forum_topics#new GET /fposts(.:format) forum_posts#index POST /fposts(.:format) forum_posts#create GET /fposts/:id(.:format) forum_posts#show PATCH /fposts/:id(.:format) forum_posts#update PUT /fposts/:id(.:format) forum_posts#update DELETE /fposts/:id(.:format) forum_posts#destroy GET /fposts/:id/edit(.:format) forum_posts#edit GET /fposts/new(.:format) forum_posts#new GET /ftopics(.:format) forum_topics#index POST /ftopics(.:format) forum_topics#create GET /ftopics/:id(.:format) forum_topics#show PATCH /ftopics/:id(.:format) forum_topics#update PUT /ftopics/:id(.:format) forum_topics#update DELETE /ftopics/:id(.:format) forum_topics#destroy GET /ftopics/:id/edit(.:format) forum_topics#edit GET /ftopics/new(.:format) forum_topics#new GET /help/:title(.:format) redirect(301) GET /intro(.:format) redirect(301, /explore/posts/intro) GET /ip_bans(.:format) ip_bans#index POST /ip_bans(.:format) ip_bans#create GET /ip_bans/:id(.:format) ip_bans#show PATCH /ip_bans/:id(.:format) ip_bans#update PUT /ip_bans/:id(.:format) ip_bans#update DELETE /ip_bans/:id(.:format) ip_bans#destroy GET /ip_bans/:id/edit(.:format) ip_bans#edit GET /ip_bans/new(.:format) ip_bans#new POST /iqdb_queries(.:format) iqdb_queries#create GET /janitor_trials(.:format) janitor_trials#index POST /janitor_trials(.:format) janitor_trials#create GET /janitor_trials/:id(.:format) janitor_trials#show PATCH /janitor_trials/:id(.:format) janitor_trials#update PUT /janitor_trials/:id(.:format) janitor_trials#update DELETE /janitor_trials/:id(.:format) janitor_trials#destroy PUT /janitor_trials/:id/demote(.:format) janitor_trials#demote GET /janitor_trials/:id/edit(.:format) janitor_trials#edit PUT /janitor_trials/:id/promote(.:format) janitor_trials#promote GET /janitor_trials/new(.:format) janitor_trials#new GET /janitor_trials/test(.:format) janitor_trials#test GET /jobs(.:format) jobs#index POST /jobs(.:format) jobs#create GET /jobs/:id(.:format) jobs#show PATCH /jobs/:id(.:format) jobs#update PUT /jobs/:id(.:format) jobs#update DELETE /jobs/:id(.:format) jobs#destroy GET /jobs/:id/edit(.:format) jobs#edit GET /jobs/new(.:format) jobs#new POST /landing(.:format) landings#create GET /landing(.:format) landings#show PATCH /landing(.:format) landings#update PUT /landing(.:format) landings#update DELETE /landing(.:format) landings#destroy GET /landing/edit(.:format) landings#edit GET /landing/new(.:format) landings#new GET /m/posts(.:format) mobile/posts#index GET /m/posts/:id(.:format) mobile/posts#show GET /maintenance/user/deletion(.:format) maintenance/user/deletions#show DELETE /maintenance/user/deletion(.:format) maintenance/user/deletions#destroy PATCH /maintenance/user/dmail_filter(.:format) maintenance/user/dmail_filters#update PUT /maintenance/user/dmail_filter(.:format) maintenance/user/dmail_filters#update GET /maintenance/user/dmail_filter/edit(.:format) maintenance/user/dmail_filters#edit POST /maintenance/user/email_change(.:format) maintenance/user/email_changes#create GET /maintenance/user/email_change/new(.:format) maintenance/user/email_changes#new GET /maintenance/user/email_notification(.:format) maintenance/user/email_notifications#show DELETE /maintenance/user/email_notification(.:format) maintenance/user/email_notifications#destroy POST /maintenance/user/login_reminder(.:format) maintenance/user/login_reminders#create GET /maintenance/user/login_reminder/new(.:format) maintenance/user/login_reminders#new POST /maintenance/user/password_reset(.:format) maintenance/user/password_resets#create PATCH /maintenance/user/password_reset(.:format) maintenance/user/password_resets#update PUT /maintenance/user/password_reset(.:format) maintenance/user/password_resets#update GET /maintenance/user/password_reset/edit(.:format) maintenance/user/password_resets#edit GET /maintenance/user/password_reset/new(.:format) maintenance/user/password_resets#new GET /meta_searches/tags(.:format) meta_searches#tags GET /mobile/posts(.:format) mobile/posts#index GET /mobile/posts/:id(.:format) mobile/posts#show GET /mod_actions(.:format) mod_actions#index POST /mod_actions(.:format) mod_actions#create GET /mod_actions/:id(.:format) mod_actions#show PATCH /mod_actions/:id(.:format) mod_actions#update PUT /mod_actions/:id(.:format) mod_actions#update DELETE /mod_actions/:id(.:format) mod_actions#destroy GET /mod_actions/:id/edit(.:format) mod_actions#edit GET /mod_actions/new(.:format) mod_actions#new GET /moderator/dashboard(.:format) moderator/dashboards#show GET /moderator/invitations(.:format) moderator/invitations#index POST /moderator/invitations(.:format) moderator/invitations#create GET /moderator/invitations(.:format) moderator/invitations#index POST /moderator/invitations(.:format) moderator/invitations#create GET /moderator/invitations/:id(.:format) moderator/invitations#show GET /moderator/invitations/new(.:format) moderator/invitations#new GET /moderator/invitations/new(.:format) moderator/invitations#new GET /moderator/ip_addrs(.:format) moderator/ip_addrs#index GET /moderator/ip_addrs(.:format) moderator/ip_addrs#index GET /moderator/ip_addrs/search(.:format) moderator/ip_addrs#search GET /moderator/ip_addrs/search(.:format) moderator/ip_addrs#search POST /moderator/post/approval(.:format) moderator/post/approvals#create POST /moderator/post/disapproval(.:format) moderator/post/disapprovals#create POST /moderator/post/posts/:id/ban(.:format) moderator/post/posts#ban GET /moderator/post/posts/:id/confirm_ban(.:format) moderator/post/posts#confirm_ban GET /moderator/post/posts/:id/confirm_delete(.:format) moderator/post/posts#confirm_delete GET /moderator/post/posts/:id/confirm_move_favorites(.:format) moderator/post/posts#confirm_move_favorites POST /moderator/post/posts/:id/delete(.:format) moderator/post/posts#delete POST /moderator/post/posts/:id/expunge(.:format) moderator/post/posts#expunge POST /moderator/post/posts/:id/move_favorites(.:format) moderator/post/posts#move_favorites POST /moderator/post/posts/:id/unban(.:format) moderator/post/posts#unban POST /moderator/post/posts/:id/undelete(.:format) moderator/post/posts#undelete GET /moderator/post/queue(.:format) moderator/post/queues#show GET /moderator/post/queue/random(.:format) moderator/post/queues#random PATCH /moderator/tag(.:format) moderator/tags#update PUT /moderator/tag(.:format) moderator/tags#update GET /moderator/tag/edit(.:format) moderator/tags#edit GET /news_updates(.:format) news_updates#index POST /news_updates(.:format) news_updates#create GET /news_updates/:id(.:format) news_updates#show PATCH /news_updates/:id(.:format) news_updates#update PUT /news_updates/:id(.:format) news_updates#update DELETE /news_updates/:id(.:format) news_updates#destroy GET /news_updates/:id/edit(.:format) news_updates#edit GET /news_updates/new(.:format) news_updates#new GET /note(.:format) redirect(301) GET /note/history(.:format) redirect(301) GET /note/index(.:format) redirect(301) GET /note_previews(.:format) note_previews#show GET /note_versions(.:format) note_versions#index GET /notes(.:format) notes#index POST /notes(.:format) notes#create GET /notes/:id(.:format) notes#show PATCH /notes/:id(.:format) notes#update PUT /notes/:id(.:format) notes#update DELETE /notes/:id(.:format) notes#destroy GET /notes/:id/edit(.:format) notes#edit PUT /notes/:id/revert(.:format) notes#revert GET /notes/new(.:format) notes#new GET /notes/search(.:format) notes#search GET /pool(.:format) redirect(301) GET /pool/history/:id(.:format) redirect(301, /pool_versions?search[pool_id]=%{id}) GET /pool/index(.:format) redirect(301) GET /pool/recent_changes(.:format) redirect(301, /pool_versions) GET /pool/show/:id(.:format) redirect(301, /pools/%{id}) POST /pool_element(.:format) pool_elements#create DELETE /pool_element(.:format) pool_elements#destroy GET /pool_element/all_select(.:format) pool_elements#all_select GET /pool_versions(.:format) pool_versions#index GET /pools(.:format) pools#index POST /pools(.:format) pools#create GET /pools/:id(.:format) pools#show PATCH /pools/:id(.:format) pools#update PUT /pools/:id(.:format) pools#update DELETE /pools/:id(.:format) pools#destroy GET /pools/:id/edit(.:format) pools#edit PUT /pools/:id/revert(.:format) pools#revert POST /pools/:id/undelete(.:format) pools#undelete GET /pools/:pool_id/order/edit(.:format) pool_orders#edit GET /pools/gallery(.:format) pools#gallery GET /pools/new(.:format) pools#new GET /post(.:format) redirect(301) GET /post/atom(.:format) redirect(301) GET /post/atom.feed(.:format) redirect(301) GET /post/create.xml(.:format) legacy#create_post {:format=>/xml/} GET /post/flag/:id(.:format) redirect(301, /posts/%{id}) GET /post/index(.:format) redirect(301) GET /post/index.json(.:format) legacy#posts {:format=>/json/} GET /post/index.xml(.:format) legacy#posts {:format=>/xml/} GET /post/moderate(.:format) redirect(301, /moderator/post/queue) GET /post/piclens(.:format) legacy#unavailable GET /post/popular_by_day(.:format) redirect(301, /explore/posts/popular) GET /post/popular_by_month(.:format) redirect(301, /explore/posts/popular) GET /post/popular_by_week(.:format) redirect(301, /explore/posts/popular) GET /post/show(.:format) redirect(301) GET /post/show/:id(.:format) redirect(301, /posts/%{id}) GET /post/show/:id/:tag_title(.:format) redirect(301, /posts/%{id}) GET /post/upload(.:format) redirect(301, /uploads/new) GET /post/view/:id(.:format) redirect(301, /posts/%{id}) GET /post/view/:id/:tag_title(.:format) redirect(301, /posts/%{id}) GET /post_appeals(.:format) post_appeals#index POST /post_appeals(.:format) post_appeals#create GET /post_appeals/:id(.:format) post_appeals#show PATCH /post_appeals/:id(.:format) post_appeals#update PUT /post_appeals/:id(.:format) post_appeals#update DELETE /post_appeals/:id(.:format) post_appeals#destroy GET /post_appeals/:id/edit(.:format) post_appeals#edit GET /post_appeals/new(.:format) post_appeals#new GET /post_flags(.:format) post_flags#index POST /post_flags(.:format) post_flags#create GET /post_flags/:id(.:format) post_flags#show PATCH /post_flags/:id(.:format) post_flags#update PUT /post_flags/:id(.:format) post_flags#update DELETE /post_flags/:id(.:format) post_flags#destroy GET /post_flags/:id/edit(.:format) post_flags#edit GET /post_flags/new(.:format) post_flags#new GET /post_tag_history(.:format) redirect(301) GET /post_tag_history/index(.:format) redirect(301) GET /post_versions(.:format) post_versions#index PUT /post_versions/:id/undo(.:format) post_versions#undo GET /post_versions/search(.:format) post_versions#search GET /posts(.:format) posts#index POST /posts(.:format) posts#create GET /posts/:id(.:format) posts#show PATCH /posts/:id(.:format) posts#update PUT /posts/:id(.:format) posts#update DELETE /posts/:id(.:format) posts#destroy PUT /posts/:id/copy_notes(.:format) posts#copy_notes GET /posts/:id/edit(.:format) posts#edit PUT /posts/:id/mark_as_translated(.:format) posts#mark_as_translated PUT /posts/:id/revert(.:format) posts#revert GET /posts/:id/show_seq(.:format) posts#show_seq PUT /posts/:id/unvote(.:format) posts#unvote GET /posts/:post_id/events(.:format) post_events#index POST /posts/:post_id/votes(.:format) post_votes#create DELETE /posts/:post_id/votes/:id(.:format) post_votes#destroy GET /posts/home(.:format) posts#home GET /posts/new(.:format) posts#new GET /posts/random(.:format) posts#random GET /related_tag(.:format) related_tags#show PATCH /related_tag(.:format) related_tags#update PUT /related_tag(.:format) related_tags#update GET /reports/contributors(.:format) reports#contributors GET /reports/janitor_trials(.:format) reports#janitor_trials GET /reports/post_versions(.:format) reports#post_versions POST /reports/post_versions_create(.:format) reports#post_versions_create GET /reports/similar_users(.:format) reports#similar_users GET /reports/uploads(.:format) reports#uploads GET /reports/user_promotions(.:format) reports#user_promotions POST /saved_search_category_change(.:format) saved_search_category_changes#create GET /saved_search_category_change/new(.:format) saved_search_category_changes#new GET /saved_searches(.:format) saved_searches#index POST /saved_searches(.:format) saved_searches#create PATCH /saved_searches/:id(.:format) saved_searches#update PUT /saved_searches/:id(.:format) saved_searches#update DELETE /saved_searches/:id(.:format) saved_searches#destroy GET /saved_searches/:id/edit(.:format) saved_searches#edit GET /saved_searches/categories(.:format) saved_searches#categories GET /saved_searches/new(.:format) saved_searches#new POST /session(.:format) sessions#create GET /session(.:format) sessions#show PATCH /session(.:format) sessions#update PUT /session(.:format) sessions#update DELETE /session(.:format) sessions#destroy GET /session/edit(.:format) sessions#edit GET /session/new(.:format) sessions#new GET /session/sign_out(.:format) sessions#sign_out GET /source(.:format) sources#show POST /static/accept_terms_of_service(.:format) static#accept_terms_of_service GET /static/benchmark(.:format) static#benchmark GET /static/bookmarklet(.:format) static#bookmarklet GET /static/contact(.:format) static#contact GET /static/keyboard_shortcuts(.:format) static#keyboard_shortcuts GET /static/mrtg(.:format) static#mrtg GET /static/name_change(.:format) static#name_change GET /static/site_map(.:format) static#site_map GET /static/terms_of_service(.:format) static#terms_of_service GET /super_voters(.:format) super_voters#index GET /tag(.:format) redirect(301) GET /tag/index(.:format) redirect(301) GET /tag/index.json(.:format) legacy#tags {:format=>/json/} GET /tag/index.xml(.:format) legacy#tags {:format=>/xml/} POST /tag_alias_request(.:format) tag_alias_requests#create GET /tag_alias_request/new(.:format) tag_alias_requests#new GET /tag_aliases(.:format) tag_aliases#index POST /tag_aliases(.:format) tag_aliases#create GET /tag_aliases/:id(.:format) tag_aliases#show PATCH /tag_aliases/:id(.:format) tag_aliases#update PUT /tag_aliases/:id(.:format) tag_aliases#update DELETE /tag_aliases/:id(.:format) tag_aliases#destroy POST /tag_aliases/:id/approve(.:format) tag_aliases#approve GET /tag_aliases/:id/edit(.:format) tag_aliases#edit POST /tag_aliases/:tag_alias_id/correction(.:format) tag_alias_corrections#create GET /tag_aliases/:tag_alias_id/correction(.:format) tag_alias_corrections#show PATCH /tag_aliases/:tag_alias_id/correction(.:format) tag_alias_corrections#update PUT /tag_aliases/:tag_alias_id/correction(.:format) tag_alias_corrections#update DELETE /tag_aliases/:tag_alias_id/correction(.:format) tag_alias_corrections#destroy GET /tag_aliases/:tag_alias_id/correction/edit(.:format) tag_alias_corrections#edit GET /tag_aliases/:tag_alias_id/correction/new(.:format) tag_alias_corrections#new GET /tag_aliases/new(.:format) tag_aliases#new GET /tag_implication(.:format) redirect(301) POST /tag_implication_request(.:format) tag_implication_requests#create GET /tag_implication_request/new(.:format) tag_implication_requests#new GET /tag_implications(.:format) tag_implications#index POST /tag_implications(.:format) tag_implications#create GET /tag_implications/:id(.:format) tag_implications#show PATCH /tag_implications/:id(.:format) tag_implications#update PUT /tag_implications/:id(.:format) tag_implications#update DELETE /tag_implications/:id(.:format) tag_implications#destroy POST /tag_implications/:id/approve(.:format) tag_implications#approve GET /tag_implications/:id/edit(.:format) tag_implications#edit GET /tag_implications/new(.:format) tag_implications#new GET /tag_subscriptions(.:format) tag_subscriptions#index POST /tag_subscriptions(.:format) tag_subscriptions#create GET /tag_subscriptions/:id(.:format) tag_subscriptions#show PATCH /tag_subscriptions/:id(.:format) tag_subscriptions#update PUT /tag_subscriptions/:id(.:format) tag_subscriptions#update DELETE /tag_subscriptions/:id(.:format) tag_subscriptions#destroy GET /tag_subscriptions/:id/edit(.:format) tag_subscriptions#edit POST /tag_subscriptions/:id/migrate(.:format) tag_subscriptions#migrate GET /tag_subscriptions/:id/posts(.:format) tag_subscriptions#posts GET /tag_subscriptions/new(.:format) tag_subscriptions#new GET /tags(.:format) tags#index POST /tags(.:format) tags#create GET /tags/:id(.:format) tags#show PATCH /tags/:id(.:format) tags#update PUT /tags/:id(.:format) tags#update DELETE /tags/:id(.:format) tags#destroy GET /tags/:id/edit(.:format) tags#edit POST /tags/:tag_id/correction(.:format) tag_corrections#create GET /tags/:tag_id/correction(.:format) tag_corrections#show GET /tags/:tag_id/correction/new(.:format) tag_corrections#new GET /tags/autocomplete(.:format) tags#autocomplete GET /tags/new(.:format) tags#new GET /uploads(.:format) uploads#index POST /uploads(.:format) uploads#create GET /uploads/:id(.:format) uploads#show PATCH /uploads/:id(.:format) uploads#update PUT /uploads/:id(.:format) uploads#update DELETE /uploads/:id(.:format) uploads#destroy GET /uploads/:id/edit(.:format) uploads#edit GET /uploads/batch(.:format) uploads#batch GET /uploads/image_proxy(.:format) uploads#image_proxy GET /uploads/new(.:format) uploads#new GET /user(.:format) redirect(301) GET /user/index(.:format) redirect(301) GET /user/index.json(.:format) legacy#users {:format=>/json/} GET /user/index.xml(.:format) legacy#users {:format=>/xml/} GET /user/login(.:format) redirect(301, /sessions/new) GET /user/show/:id(.:format) redirect(301, /users/%{id}) GET /user_feedbacks(.:format) user_feedbacks#index POST /user_feedbacks(.:format) user_feedbacks#create GET /user_feedbacks/:id(.:format) user_feedbacks#show PATCH /user_feedbacks/:id(.:format) user_feedbacks#update PUT /user_feedbacks/:id(.:format) user_feedbacks#update DELETE /user_feedbacks/:id(.:format) user_feedbacks#destroy GET /user_feedbacks/:id/edit(.:format) user_feedbacks#edit GET /user_feedbacks/new(.:format) user_feedbacks#new GET /user_feedbacks/search(.:format) user_feedbacks#search GET /user_name_change_requests(.:format) user_name_change_requests#index POST /user_name_change_requests(.:format) user_name_change_requests#create GET /user_name_change_requests/:id(.:format) user_name_change_requests#show PATCH /user_name_change_requests/:id(.:format) user_name_change_requests#update PUT /user_name_change_requests/:id(.:format) user_name_change_requests#update DELETE /user_name_change_requests/:id(.:format) user_name_change_requests#destroy POST /user_name_change_requests/:id/approve(.:format) user_name_change_requests#approve GET /user_name_change_requests/:id/edit(.:format) user_name_change_requests#edit POST /user_name_change_requests/:id/reject(.:format) user_name_change_requests#reject GET /user_name_change_requests/new(.:format) user_name_change_requests#new GET /user_record(.:format) redirect(301) POST /user_revert(.:format) user_reverts#create GET /user_revert/new(.:format) user_reverts#new POST /user_upgrade(.:format) user_upgrades#create GET /user_upgrade(.:format) user_upgrades#show GET /user_upgrade/new(.:format) user_upgrades#new GET /users(.:format) users#index POST /users(.:format) users#create GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy DELETE /users/:id/cache(.:format) users#cache GET /users/:id/edit(.:format) users#edit GET /users/:user_id/password/edit(.:format) maintenance/user/passwords#edit GET /users/custom_style(.:format) users#custom_style GET /users/new(.:format) users#new GET /users/search(.:format) users#search GET /wiki(.:format) redirect(301) GET /wiki/history/:title(.:format) redirect(301, /wiki_page_versions?title=%{title}) GET /wiki/index(.:format) redirect(301) GET /wiki/recent_changes(.:format) redirect(301) GET /wiki/rename(.:format) redirect(301, /wiki_pages) GET /wiki/show(.:format) redirect(301) GET /wiki_page_versions(.:format) wiki_page_versions#index GET /wiki_page_versions/:id(.:format) wiki_page_versions#show GET /wiki_page_versions/diff(.:format) wiki_page_versions#diff GET /wiki_pages(.:format) wiki_pages#index POST /wiki_pages(.:format) wiki_pages#create GET /wiki_pages/:id(.:format) wiki_pages#show PATCH /wiki_pages/:id(.:format) wiki_pages#update PUT /wiki_pages/:id(.:format) wiki_pages#update DELETE /wiki_pages/:id(.:format) wiki_pages#destroy GET /wiki_pages/:id/edit(.:format) wiki_pages#edit PUT /wiki_pages/:id/revert(.:format) wiki_pages#revert GET /wiki_pages/new(.:format) wiki_pages#new GET /wiki_pages/search(.:format) wiki_pages#search GET /wiki_pages/show_or_new(.:format) wiki_pages#show_or_new GET /wpages(.:format) wiki_pages#index POST /wpages(.:format) wiki_pages#create GET /wpages/:id(.:format) wiki_pages#show PATCH /wpages/:id(.:format) wiki_pages#update PUT /wpages/:id(.:format) wiki_pages#update DELETE /wpages/:id(.:format) wiki_pages#destroy GET /wpages/:id/edit(.:format) wiki_pages#edit GET /wpages/new(.:format) wiki_pages#new