API:Patrol
Appearance
From mediawiki.org
Languages:
This page is part of the MediaWiki Action API documentation.
MediaWiki Action API |
---|
Basics |
Authentication |
Accounts and Users |
Page Operations |
|
Search |
Developer Utilities |
Tutorials |
v · d · e |
MediaWiki version:
≥ 1.14
POST request to patrol a page or a revision.
API documentation
[edit ] The following documentation is the output of Special: ApiHelp/ patrol, automatically generated by the pre-release version of MediaWiki that is running on this site (MediaWiki.org).
action=patrol
(main | patrol)
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Patrol a page or revision.
Specific parameters:
Other general parameters are available.
- rcid
Recentchanges ID to patrol.
- Type: integer
- revid
Revision ID to patrol.
- Type: integer
Change tags to apply to the entry in the patrol log.
- Values (separate with | or alternative): AWB, convenient-discussions
- token
A "patrol" token retrieved from action=query&meta=tokens
- This parameter is required.
Examples:
- Patrol a recent change.
- api.php?action=patrol&token=123ABC&rcid=230672766 [open in sandbox]
- Patrol a revision.
- api.php?action=patrol&token=123ABC&revid=230672766 [open in sandbox]
Example
[edit ]Patrolling a request is a multi-step process:
- Log in, via one of the methods described on API:Login .
- GET a patrol token . This token is the same for all pages, but changes at every login.
- Send a POST request, with the patrol token, to patrol a request.
The sample code below covers the final step in detail.
POST request
[edit ]Patrolling a recent change of
rcid
437659.Response
[edit ]{ "patrol":{ "rcid":437659, "ns":0, "title":"Sandbox" } }
Sample code
[edit ]Python
[edit ]#!/usr/bin/python3 """ patrol.py MediaWiki API Demos Demo of `Patrol` module: Patrol a recent change MIT license """ importrequests 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 bot 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": "username", "lgpassword": "password", "format": "json", "lgtoken": LOGIN_TOKEN } R = S.post(URL, data=PARAMS_2) DATA = R.json() # Step 3: While logged in, retrieve a patrol token PARAMS_3 = { "action": "query", "meta": "tokens", "type":"patrol", "format": "json" } R = S.get(url=URL, params=PARAMS_3) DATA = R.json() PATROL_TOKEN = DATA["query"]["tokens"]["patroltoken"] # Step 4: Send a POST request to patrol a recent change PARAMS_4 = { "action": "patrol", "format": "json", "rcid":"437659", "token": PATROL_TOKEN } R = S.post(url=URL, data=PARAMS_4) DATA = R.json() print(DATA)
PHP
[edit ]<?php /* patrol.php MediaWiki API Demos Demo of `Patrol` module: Patrol a recent change MIT license */ $endPoint = "https://test.wikipedia.org/w/api.php"; $login_Token = getLoginToken(); // Step 1 loginRequest( $login_Token ); // Step 2 $patrol_Token = getPatrolToken(); // Step 3 patrol( $patrol_Token ); // Step 4 // Step 1: GET request to fetch login token function getLoginToken() { global $endPoint; $params1 = [ "action" => "query", "meta" => "tokens", "type" => "login", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params1 ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); return $result["query"]["tokens"]["logintoken"]; } // Step 2: POST request to log in. Use of main account for login is not // supported. Obtain credentials via Special:BotPasswords // (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword function loginRequest( $logintoken ) { global $endPoint; $params2 = [ "action" => "login", "lgname" => "bot_user_name", "lgpassword" => "bot_password", "lgtoken" => $logintoken, "format" => "json" ]; $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $endPoint ); curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); } // Step 3: GET request to fetch Patrol token function getPatrolToken() { global $endPoint; $params3 = [ "action" => "query", "meta" => "tokens", "type" => "patrol", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params3 ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); return $result["query"]["tokens"]["patroltoken"]; } // Step 4: POST request to patrol a recent change function patrol( $patroltoken ) { global $endPoint; $params4 = [ "action" => "patrol", "rcid" => "91", "token" => $patroltoken, "format" => "json" ]; $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $endPoint ); curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" ); curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" ); $output = curl_exec( $ch ); curl_close( $ch ); echo ( $output ); }
JavaScript
[edit ]/* patrol.js MediaWiki API Demos Demo of `Patrol` module: Patrol a recent change MIT license */ varrequest=require('request').defaults({jar:true}), url="http://dev.wiki.local.wmftest.net:8080/w/api.php"; // Step 1: GET request to fetch login token functiongetLoginToken(){ varparams_0={ action:"query", meta:"tokens", type:"login", format:"json" }; request.get({url:url,qs:params_0},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); loginRequest(data.query.tokens.logintoken); }); } // Step 2: POST request to log in. // Use of main account for login is not // supported. Obtain credentials via Special:BotPasswords // (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword functionloginRequest(login_token){ varparams_1={ action:"login", lgname:"bot_username", lgpassword:"bot_password", lgtoken:login_token, format:"json" }; request.post({url:url,form:params_1},function(error,res,body){ if(error){ return; } getPatrolToken(); }); } // Step 3: GET request to fetch Patrol token functiongetPatrolToken(){ varparams_2={ action:"query", meta:"tokens", type:"patrol", format:"json" }; request.get({url:url,qs:params_2},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); patrol(data.query.tokens.patroltoken); }); } // Step 4: POST request to patrol a recent change functionpatrol(patrol_token){ varparams_3={ action:"patrol", rcid:"104", token:patrol_token, format:"json" }; request.post({url:url,form:params_3},function(error,res,body){ if(error){ return; } console.log(body); }); } // Start From Step 1 getLoginToken();
MediaWiki JS
[edit ]/* patrol.js MediaWiki API Demos Demo of `Patrol` module: Patrol a recent change MIT License */ varparams={ action:'patrol', revid:'77', format:'json' }, api=newmw.Api(); api.postWithToken('patrol',params).done(function(data){ console.log(data); });
Possible errors
[edit ]In addition to the standard error messages :
Code | Info |
---|---|
patroldisabled | Patrolling is disabled on this wiki |
noautopatrol | You are not allowed to mark your own changes as patrolled. Only users with the
autopatrol right can do this |
notpatrollable | The revision rid can't be patrolled as it's too old. |
nosuchrcid | There is no recent change with ID rcid. |
nosuchrevid | There is no revision with ID revid. |
Parameter history
[edit ]- v1.27: Introduced
tags
- v1.22: Introduced
revid
Additional notes
[edit ]- For MediaWiki versions earlier than 1.17, the patrol token is the same the edit token.
autopatrol
rights are required in order to use this module.revid
andrcid
may be obtained through API:Recentchanges .
Retrieved from "https://www.mediawiki.org/w/index.php?title=API:Patrol&oldid=7670218"