Jump to content

API:Alldeletedrevisions

From mediawiki.org
MediaWiki version:
1.25

GET request to list all deleted revisions by a user or in a namespace.

API documentation

[edit]

list=alldeletedrevisions (adr)

(main | query | alldeletedrevisions)
  • This module requires read rights.
  • This module can be used as a generator.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

List all deleted revisions by a user or in a namespace.

Specific parameters:
Other general parameters are available.
adrprop

Which properties to get for each revision:

ids
The ID of the revision.
flags
Revision flags (minor).
timestamp
The timestamp of the revision.
user
User that made the revision. If the user has been revision deleted, a userhidden property will be returned.
userid
User ID of the revision creator. If the user has been revision deleted, a userhidden property will be returned.
size
Length (bytes) of the revision.
slotsize
Length (bytes) of each revision slot.
sha1
SHA-1 (base 16) of the revision. If the content has been revision deleted, a sha1hidden property will be returned.
slotsha1
SHA-1 (base 16) of each revision slot. If the content has been revision deleted, a sha1hidden property will be returned.
contentmodel
Content model ID of each revision slot.
comment
Comment by the user for the revision. If the comment has been revision deleted, a commenthidden property will be returned.
parsedcomment
Parsed comment by the user for the revision. If the comment has been revision deleted, a commenthidden property will be returned.
content
Content of each revision slot. If the content has been revision deleted, a texthidden property will be returned. For performance reasons, if this option is used, adrlimit is enforced to 50.
tags
Tags for the revision.
roles
List content slot roles that exist in the revision.
parsetree
Deprecated. Use action=expandtemplates or action=parse instead. The XML parse tree of revision content (requires content model wikitext). For performance reasons, if this option is used, adrlimit is enforced to 50.
Values (separate with | or alternative): comment, content, contentmodel, flags, ids, parsedcomment, roles, sha1, size, slotsha1, slotsize, tags, timestamp, user, userid, parsetree
Default: ids|timestamp|flags|comment|user
adrslots

Which revision slots to return data for, when slot-related properties are included in adrprops. If omitted, data from the main slot will be returned in a backwards-compatible format.

Values (separate with | or alternative): main
To specify all values, use *.
adrcontentformat-{slot}

Content serialization format used for output of content.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of adrslots.
One of the following values: application/json, application/octet-stream, application/unknown, application/x-binary, text/css, text/javascript, text/plain, text/unknown, text/x-wiki, unknown/unknown
adrlimit

Limit how many revisions will be returned. If adrprop=content, adrprop=parsetree, adrdiffto or adrdifftotext is used, the limit is 50. If adrparse is used, the limit is 1.

Type: integer or max
The value must be between 1 and 500.
adrexpandtemplates
Deprecated.

Use action=expandtemplates instead. Expand templates in revision content (requires adrprop=content).

Type: boolean (details)
adrgeneratexml
Deprecated.

Use action=expandtemplates or action=parse instead. Generate XML parse tree for revision content (requires adrprop=content).

Type: boolean (details)
adrparse
Deprecated.

Use action=parse instead. Parse revision content (requires adrprop=content). For performance reasons, if this option is used, adrlimit is enforced to 1.

Type: boolean (details)
adrsection

Only retrieve the content of the section with this identifier.

adrdiffto
Deprecated.

Use action=compare instead. Revision ID to diff each revision to. Use prev, next and cur for the previous, next and current revision respectively. For performance reasons, if this option is used, adrlimit is enforced to 50.

adrdifftotext
Deprecated.

Use action=compare instead. Text to diff each revision to. Only diffs a limited number of revisions. Overrides adrdiffto. If adrsection is set, only that section will be diffed against this text. For performance reasons, if this option is used, adrlimit is enforced to 50.

adrdifftotextpst
Deprecated.

Use action=compare instead. Perform a pre-save transform on the text before diffing it. Only valid when used with adrdifftotext.

Type: boolean (details)
adrcontentformat
Deprecated.

Serialization format used for adrdifftotext and expected for output of content.

One of the following values: application/json, application/octet-stream, application/unknown, application/x-binary, text/css, text/javascript, text/plain, text/unknown, text/x-wiki, unknown/unknown
adruser

Only list revisions by this user.

Note: Due to miser mode, using adruser and adrnamespace together may result in fewer than adrlimit results returned before continuing; in extreme cases, zero results may be returned.

Type: user, by any of username, IP, Temporary user, interwiki name (e.g. "prefix>ExampleName") and user ID (e.g. "#12345")
adrnamespace

Only list pages in this namespace.

Note: Due to miser mode, using adruser and adrnamespace together may result in fewer than adrlimit results returned before continuing; in extreme cases, zero results may be returned.

Values (separate with | or alternative): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 90, 91, 92, 93, 100, 101, 102, 103, 104, 105, 106, 107, 486, 487, 710, 711, 828, 829, 1198, 1199, 2600, 5500, 5501
To specify all values, use *.
adrstart

The timestamp to start enumerating from.

May only be used with adruser.
Type: timestamp (allowed formats)
adrend

The timestamp to stop enumerating at.

May only be used with adruser.
Type: timestamp (allowed formats)
adrdir

In which direction to enumerate:

newer
List oldest first. Note: adrstart has to be before adrend.
older
List newest first (default). Note: adrstart has to be later than adrend.
One of the following values: newer, older
Default: older
adrfrom

Start listing at this title.

Cannot be used with adruser.
adrto

Stop listing at this title.

Cannot be used with adruser.
adrprefix

Search for all page titles that begin with this value.

Cannot be used with adruser.
adrexcludeuser

Don't list revisions by this user.

Cannot be used with adruser.
Type: user, by any of username, IP, Temporary user, interwiki name (e.g. "prefix>ExampleName") and user ID (e.g. "#12345")
adrtag

Only list revisions tagged with this tag.

adrcontinue

When more results are available, use this to continue. More detailed information on how to continue queries can be found on mediawiki.org.

adrgeneratetitles

When being used as a generator, generate titles rather than revision IDs.

Type: boolean (details)


Example

[edit]

GET request

[edit]
Get a list of deleted revisions in the main namespace.

Response

[edit]
{
    "query": {
        "alldeletedrevisions": [
            {
                "pageid": 0,
                "revisions": [
                    {
                        "user": "Mahesh",
                        "comment": "Test for my all deleted revisions",
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "content": "Page for alldeletedrevisions"
                    }
                ],
                "ns": 0,
                "title": "ADR Page"
            }
        ]
    }
}

Sample code

[edit]

Python

[edit]
#!/usr/bin/python3

"""
    get_all_deleted_revisions.py

    MediaWiki API Demos
    Demo of `alldeletedrevisions` module: List all deleted revisions from a User.

    MIT License
"""
import requests

S = requests.Session()

URL = "https://en.wikipedia.org/w/api.php"
# Step1: Retrieve login token
PARAMS_0 = {
    'action':"query",
    'meta':"tokens",
    'type':"login",
    'format':"json"
}

R = S.get(url=URL, params=PARAMS_0)
DATA = R.json()

LOGIN_TOKEN = DATA['query']['tokens']['logintoken']

# Step2: Send a post request to login. Use of main account for login is not
# supported. Obtain credentials via Special:BotPasswords
# (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
PARAMS_1 = {
    'action':"login",
    'lgname':"your_bot_username",
    'lgpassword':"your_bot_password",
    'lgtoken':LOGIN_TOKEN,
    'format':"json"
}

R = S.post(URL, data=PARAMS_1)

# Step 3: Send a get request to get all the deleted revisions

PARAMS_2 = {
    "action": "query",
    "list": "alldeletedrevisions",
    "adruser": "Mahesh",
    "adrprop": "ids|user|comment",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS_2)
DATA = R.json()

PAGES = DATA['query']['alldeletedrevisions']

for p in PAGES:
    print("Revision for Page " + p["title"])
    for adrev in p["revisions"]:
        print(adrev)


PHP

[edit]
<?php

/*
    get_all_deleted_revisions.php

    MediaWiki API Demos
    Demo of `alldeletedrevisions` module: List all the deleted revisions from a user.

    MIT License
*/

$endPoint ="https://en.wikipedia.org/w/api.php"

$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
all_deleted_revisions(); // Step 3

// 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 get all the deleted revisions
function all_deleted_revisions() {
	global $endPoint;

    $params3 = [
        "action" => "query",
        "list" => "alldeletedrevisions",
        "adruser" => "mahesh",
        "adrprop" => "ids|user|comment",

        "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 );

	foreach( $result["query"]["alldeletedrevisions"] as $page ){
        echo( "Revision for page " . $page["title"] . "\n" );
        foreach( $page["revisions"] as $adrev ){
            var_dump( $adrev );
        }
    }
}

JavaScript

[edit]
/*
    get_all_deleted_revisions.js

    MediaWiki API Demos
    Demo of `alldeletedrevisions` module: List all the deleted revisions from a User.

    MIT License
*/

var request = require('request').defaults({jar: true}),
    url = "https://en.wikipedia.org/w/api.php";

// Step 1: GET request to fetch login token
function getLoginToken() {
    var params_0 = {
        action: "query",
        meta: "tokens",
        type: "login",
        format: "json"
    };

    request.get({ url: url, qs: params_0 }, function (error, res, body) {
        if (error) {
            return;
        }
        var data = 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
function loginRequest(login_token) {
    var params_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;
        }
        all_deleted_revisions();
    });
}

// Step 3: GET request to get the deleted revisions
function all_deleted_revisions() {
    var params_2 = {
        action: "query",
        list: "alldeletedrevisions",
        adruser: "Mahesh",
        adrprop: "ids|user|comment",
        format: "json"
    };

    request.get({ url: url, qs: params_2 }, function(error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        var pages = data.query.alldeletedrevisions;
        for (var p in pages) {
            console.log("Revision for Page " + pages[p].title);
            for (var adrev in pages[p].revisions) {
                console.log(pages[p].revisions[adrev]);
            }
        }
    });
}

// Start From Step 1
getLoginToken();

Possible errors

[edit]
Code Info
adrdiffto adrdiffto must be set to a non-negative number, "prev", "next" or "cur"
adrnosuchrevid There is no revision with ID ID
adrnosuchsection There is no section section in rID
adrpermissiondenied You don't have permission to view deleted comments.
adrpermissiondenied You don't have permission to view content of deleted revisions.
adrbadparams The adrfrom/adrto/adrprefix/adrexcludeuser parameter cannot be used with adruser
adrbadparams The adrstart/adrend parameter may only be used with adruser

Additional notes

[edit]

See also

[edit]