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.
autopatrolrights are required in order to use this module.revidandrcidmay be obtained through API:Recentchanges .
Retrieved from "https://www.mediawiki.org/w/index.php?title=API:Patrol&oldid=7670218"