API:Revisiondelete
Appearance
From mediawiki.org
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 |
POST request to delete and undelete revisions.
MediaWiki version:
≥ 1.23
API documentation
[edit ] The following documentation is the output of Special: ApiHelp/ revisiondelete, automatically generated by the pre-release version of MediaWiki that is running on this site (MediaWiki.org).
action=revisiondelete
(main | revisiondelete)
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Delete and undelete revisions.
Specific parameters:
Other general parameters are available.
- type
Type of revision deletion being performed.
- This parameter is required.
- One of the following values: archive, filearchive, logging, oldimage, revision
- target
Page title for the revision deletion, if required for the type.
- ids
Identifiers for the revisions to be deleted.
- This parameter is required.
- Separate values with | or alternative.
- Maximum number of values is 50 (500 for clients that are allowed higher limits).
- hide
What to hide for each revision.
- Values (separate with | or alternative): comment, content, user
- show
What to unhide for each revision.
- Values (separate with | or alternative): comment, content, user
- suppress
Whether to suppress data from administrators as well as others.
- One of the following values: no, nochange, yes
- Default: nochange
- reason
Reason for the deletion or undeletion.
Tags to apply to the entry in the deletion log.
- Values (separate with | or alternative): AWB, convenient-discussions
- token
A "csrf" token retrieved from action=query&meta=tokens
- This parameter is required.
Examples:
- Hide content for revision 12345 on the page MediaWiki.
- api.php?action=revisiondelete&target=MediaWiki&type=revision&ids=12345&hide=content&token=123ABC [open in sandbox]
- Hide all data on log entry 67890 with the reason BLP violation.
- api.php?action=revisiondelete&type=logging&ids=67890&hide=content|comment|user&reason=BLP%20violation&token=123ABC [open in sandbox]
Example
[edit ]Making any POST request is a multi-step process:
- Log in, via one of the methods described on API:Login .
- GET an edit/CSRF token as shown here API:Tokens
- Send a POST request, with the CSRF token, to delete and undelete revisions.
The sample codes below cover these steps.
POST request
[edit ]Hide all information about a certain revision ID. (The target, Sample Page, is unnecessary in this case.)
api.php? action=revisiondelete& type=revision& ids=71& hide=content|comment|user& reason=Because& token=feef47c29c326a3449f573576056b72d5e2159ea%2B%5C [try in ApiSandbox]
Response
[edit ]{ "revisiondelete":{ "status":"Success", "target":"Sample Page", "items":[ { "status":"Success", "id":71, "timestamp":"2016年12月17日T03:16:23Z", "userhidden":"", "commenthidden":"", "texthidden":"", "userid":4, "user":"Test User", "comment":"This should get revdel'd" } ] }
Sample code
[edit ]Python
[edit ]#!/usr/bin/python3 """ revision_delete.py MediaWiki API Demos Demo of `Revisiondelete` module: Hide all information about a certain revision ID. 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 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 hide all information about a certain revision ID. PARAMS_4 = { "action":"revisiondelete", "type":"revision", "ids":"71", "format":"json", "hide":"content|comment|user", "reason":"Because", "token" : CSRF_TOKEN } R = S.post(URL, data=PARAMS_4) DATA = R.text print(DATA)
PHP
[edit ]<?php /* revision_delete.php MediaWiki API Demos Demo of `Revisiondelete` module: Hide all information about a certain revision ID. MIT license */ $endPoint = "https://test.wikipedia.org/w/api.php"; $login_Token = getLoginToken(); // Step 1 loginRequest( $login_Token ); // Step 2 $csrf_Token = getCSRFToken(); // Step 3 mergehistory( $csrf_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: 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. 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 CSRF token function getCSRFToken() { global $endPoint; $params3 = [ "action" => "query", "meta" => "tokens", "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"]["csrftoken"]; } # Step 4: Send a POST request to hide all information about a certain revision ID. function mergeHistory( $csrftoken ) { global $endPoint; $params4 = [ "action" => "revisiondelete", "type" => "revision", "ids" => "71", "format" => "json", "hide" => "content|comment|user", "reason" => "Because", "token" => $csrftoken ]; $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" ); $response = curl_exec($ch); curl_close($ch); echo ($response); }
JavaScript
[edit ]/* revision_delete.js MediaWiki API Demos Demo of `Revisiondelete` module: Hide all information about a certain revision ID. MIT license */ varrequest=require("request").defaults({jar:true}), url="https://test.wikipedia.org/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: 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. 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; } getCsrfToken(); }); } // Step 3: GET request to fetch CSRF token functiongetCsrfToken(){ varparams_2={ action:"query", meta:"tokens", format:"json" }; request.get({url:url,qs:params_2},function(error,res,body){ if(error){ return; } vardata=JSON.parse(body); mergeHistory(data.query.tokens.csrftoken); }); } // Step 4: Send a POST request to hide all information about a certain revision ID. functionmergeHistory(csrf_token){ varparams_3={ action:"revisiondelete", type:"revision", ids:"71", format:"json", hide:"content|comment|user", reason:"Because", token:csrf_token }; 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 ]/* revision_delete.js MediaWiki API Demos Demo of `Revisiondelete` module: Hide all information about a certain revision ID. MIT license */ varparams={ action:'revisiondelete', type:'revision', ids:'71', format:'json', hide:'content|comment|user', reason:'Because', }, api=newmw.Api(); api.postWithToken('csrf',params).done(function(data){ console.log(data); });
Possible errors
[edit ]Code | Info |
---|---|
badtoken | Invalid CSRF token. |
permissiondenied | You don't have permission to delete revisions |
paramempty | The parameter ids may not be empty. |
revdel-mutuallyexclusive | The same field cannot be used in both hide and show. |
revdel-paramneeded | At least one value is required for hide and/or show. |
revdel-needtarget | A target title is required for this RevDel type. |
Parameter history
[edit ]- v1.29: Introduced
tags
See also
[edit ]- Manual:RevisionDelete - To show and hide individual page revisions.
- Help:RevisionDelete - To hide individual entries in a page history or log.
- API:Deletedrevs - API parameters used for listing deleted revisions.
- API:Deletedrevisions - To get deleted revision information.