User:Hexmode

From Virtuverse Wiki
Jump to navigation Jump to search

<languages/> Template:API Template:MW 1.12 <translate> POST request to move a page.

API documentation

</translate>

Template:Api help

<translate>

Example

Making any POST request is a multi-step process: </translate>

  1. <translate> Log in, via one of the methods described on <tvar|1>Template:Ll</>.</translate>
  2. <translate> GET a {{<tvar|1>ll|Manual:Edit token</>|CSRF token}}.</translate>
    Template:ApiEx
  3. <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">

  1. !/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"

  1. 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']

  1. Step 2: Send a POST request to log in. For this login
  2. method, obtain credentials by first visiting
  3. https://www.test.wikipedia.org/wiki/Manual:Bot_passwords
  4. See https://www.mediawiki.org/wiki/API:Login for more
  5. 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()

  1. 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"]

  1. 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>

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>