User:Hexmode
<languages/> Template:API Template:MW 1.12 <translate> POST request to move a page.
Contents
API documentation
</translate>
Template:Api help |
<translate>
Example
Making any POST request is a multi-step process: </translate>
- <translate> Log in, via one of the methods described on <tvar|1>Template:Ll</>.</translate>
- <translate> GET a {{<tvar|1>ll|Manual:Edit token</>|CSRF token}}.</translate>
- <translate> Send a POST request, with the CSRF token, to take action on a page.</translate>
<translate> The sample code below covers the final step in detail.
POST request
</translate> Template:ApiEx
<translate>
Response
</translate>
<syntaxhighlight lang="json"> {
"move": { "from": "CurrentTitle", "to": "Page with new title", "reason": "wrong title", "talkfrom": "Talk:CurrentTitle", "talkto": "Talk:Page with new title" }
} </syntaxhighlight>
<translate>
Sample code
</translate> move.py
<syntaxhighlight lang="python3">
- !/usr/bin/python3
"""
move.py MediaWiki Action API Code Samples Demo of `Move` module: Move a page with its talk page, without a redirect. MIT license
"""
import requests
S = requests.Session()
URL = "https://test.wikipedia.org/w/api.php"
- Step 1: Retrieve a login token
PARAMS_1 = {
"action": "query", "meta": "tokens", "type": "login", "format": "json"
}
R = S.get(url=URL, params=PARAMS_1) DATA = R.json()
LOGIN_TOKEN = DATA['query']['tokens']['logintoken']
- Step 2: Send a POST request to log in. For this login
- method, obtain credentials by first visiting
- https://www.test.wikipedia.org/wiki/Manual:Bot_passwords
- See https://www.mediawiki.org/wiki/API:Login for more
- information on log in methods.
PARAMS_2 = {
"action": "login", "lgname": "user_name", "lgpassword": "password", "format": "json", "lgtoken": LOGIN_TOKEN
}
R = S.post(URL, data=PARAMS_2) DATA = R.json()
- Step 3: While logged in, retrieve a CSRF token
PARAMS_3 = {
"action": "query", "meta": "tokens", "format": "json"
}
R = S.get(url=URL, params=PARAMS_3) DATA = R.json()
CSRF_TOKEN = DATA["query"]["tokens"]["csrftoken"]
- Step 4: Send a POST request to move the page
PARAMS_4 = {
"action": "move", "format": "json", "from": "Current title", "to": "Page with new title", "reason": "wrong title", "movetalk": "1", "noredirect": "1", "token": CSRF_TOKEN
}
R = S.post(url=URL, data=PARAMS_4) DATA = R.text
print(DATA)
</syntaxhighlight>
<translate>
Possible errors
</translate>
<translate> Code</translate> | <translate> Info</translate> |
---|---|
nofrom | Template:Int |
noto | Template:Int |
notoken | Template:Int |
cantmove-anon | Anonymous users can't move pages |
cantmove | Template:Int |
cantmovefile | Template:Int Template:Note |
selfmove | Can't move a page to itself |
immobilenamespace | You tried to move pages from or to a namespace that is protected from moving |
articleexists | The destination article already exists and is not a redirect to the source article |
protectedpage | You don't have permission to perform this move |
protectedtitle | The destination article has been protected from creation |
nonfilenamespace | Template:Int |
filetypemismatch | Template:Int |
mustbeposted | Template:Int |
<translate>
Parameter history
</translate>
- v1.29: <translate> Introduced <tvar|1>
tags
</></translate> - v1.17: <translate> Deprecated <tvar|1>
watch
,unwatch
</></translate> - v1.17: <translate> Introduced <tvar|1>
watchlist
</></translate>
<translate>
Additional notes
- Successful use of the <tvar|1>
noredirect
</> parameter requires the <tvar|2>Template:Ll
</> right, which is granted to bots and sysops, not ordinary users.</translate>
<translate>
- Creating a redirect is the API's default behavior.</translate> <translate> If you do not have the <tvar|1>
Template:Ll
</> right, the API will not return an error; it will simply create a redirect.</translate>
<translate>
- The Move API uses two additional error handling methods when the page move succeeded, but the talk page or subpage move failed:
</translate>
- Template:Ll - <translate> The relevant error will be returned in the <tvar|1>
talkmove-error-code
</> and <tvar|2>talkmove-error-info
</> fields.</translate> - Template:Ll - <translate>
- Template:Ll - <translate> The relevant error will be returned in the <tvar|1>
The relevant error will be returned as a standard <tvar|1>code
/info
</> structure under the <tvar|2>subpages
</> key.
See also
</translate>
- Template:Ll - <translate> interwiki imports allow for an alternate way to move pages around a wiki.</translate>