MediaWiki version:
1.8

GET request to obtain revision information of page(s).

API documentation


Special:ApiHelp/query+revisions

Example 1: Get revision data of several pages

GET request

Request above is to obtain revision data of pages with titles {{ll|API:Main page|API}} and {{ll|MediaWiki|Main Page}}

Response

Response
{
    "batchcomplete": true,
    "query": {
        "pages": [
            {
                "pageid": 1423,
                "ns": 0,
                "title": "Main Page",
                "revisions": [
                    {
                        "user": "Bdk",
                        "timestamp": "2005-09-16T01:14:43Z",
                        "comment": "Reverted edit of 82.36.210.14, changed back to last version by Brion VIBBER"
                    }
                ]
            },
            {
                "pageid": 55332,
                "ns": 0,
                "title": "API",
                "revisions": [
                    {
                        "user": "Mainframe98",
                        "timestamp": "2017-08-19T18:23:42Z",
                        "comment": "Reverted edits by [[Special:Contributions/Sankaran kumar|Sankaran kumar]] ([[User talk:Sankaran kumar|talk]]) to last revision by [[User:Shirayuki|Shirayuki]]"
                    }
                ]
            }
        ]
    }
}

Sample Code

Python

#!/usr/bin/python3

"""
    get_pages_revisions.py

    MediaWiki API Demos
    Demo of `Revisions` module: Get revision data with content for pages
    with titles [[API]] and [[Main Page]]

    MIT License
"""

import requests

S = requests.Session()

URL = "https://www.mediawiki.org/w/api.php"

PARAMS = {
    "action": "query",
    "prop": "revisions",
    "titles": "API|Main Page",
    "rvprop": "timestamp|user|comment|content",
    "rvslots": "main",
    "formatversion": "2",
    "format": "json"
}

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

PAGES = DATA["query"]["pages"]

for page in PAGES:
    print(page["revisions"])

PHP

<?php
/*
    get_pages_revisions.php

    MediaWiki API Demos
    Demo of `Revisions` module: Get revision data with content for pages with titles [[API]] and [[Main Page]]

    MIT License
*/

$endPoint = "https://www.mediawiki.org/w/api.php";
$params = [
    "action" => "query",
    "prop" => "revisions",
    "titles" => "API|Main Page",
    "rvprop" => "timestamp|user|comment|content",
    "rvslots" => "main",
    "formatversion" => "2",
    "format" => "json"
];

$url = $endPoint . "?" . http_build_query( $params );

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec( $ch );
curl_close( $ch );

$result = json_decode( $output, true );

foreach( $result["query"]["pages"] as $k => $v ) {
    var_dump( $v["revisions"] );
}

JavaScript

/*
    get_pages_revisions.js

    MediaWiki API Demos
    Demo of `Revisions` module: Get revision data with content for pages with titles [[API]] and [[Main Page]]

    MIT License
*/

var url = "https://www.mediawiki.org/w/api.php";

var params = {
    action: "query",
    prop: "revisions",
    titles: "API|Main Page",
    rvprop: "timestamp|user|comment|content",
    rvslots: "main",
    formatversion: "2",
    format: "json"
};

url = url + "?origin=*";
Object.keys(params).forEach(function(key){url += "&" + key + "=" + params[key];});

fetch(url)
    .then(function(response){return response.json();})
    .then(function(response) {
        var pages = response.query.pages;
        for (var p in pages) {
            console.log(pages[p].revisions);
        }
    })
    .catch(function(error){console.log(error);});

MediaWiki JS

/*
	get_pages_revisions.js

	MediaWiki API Demos
	Demo of `Revisions` module: Get revision data with content for pages with
	titles [[API]] and [[Main Page]]

	MIT License
*/

var params = {
		action: 'query',
		prop: 'revisions',
		titles: 'API|Main Page',
		rvprop: 'timestamp|user|comment|content',
		rvslots: 'main',
		formatversion: '2',
		format: 'json'
	},
	api = new mw.Api();

api.get( params ).done( function ( data ) {
	var pages = data.query.pages,
		p;
	for ( p in pages ) {
		console.log( pages[ p ].revisions );
	}
} );

Example 2: Get last five revisions of a page filtered by date and user

GET request

Request above is to obtain data for the last five revisions of the page API:Geosearch made after the 1st of July 2018, i.e. 2018-07-01 excluding changes made by the user SSethi (WMF)

Response

Response
{
    "batchcomplete": "",
    "query": {
        "pages": {
            "812323": {
                "pageid": 812323,
                "ns": 104,
                "title": "API:Geosearch",
                "revisions": [
                    {
                        "user": "Shirayuki",
                        "timestamp": "2018-11-04T05:25:34Z",
                        "comment": "translation tweaks"
                    },
                    {
                        "user": "Shirayuki",
                        "timestamp": "2018-11-25T06:06:50Z",
                        "comment": "translation tweaks"
                    }
                ]
            }
        }
    }
}

Sample Code

get_filtered_page_revisions.py

Python

#!/usr/bin/python3

"""
    get_filtered_page_revisions.py

    MediaWiki API Demos
    Demo of `Revisions` module: Get data including content of last 5 revisions
    of the title [[API:Geosearch]] made after the 1st of July 2018 i.e 2018-07-01
    excluding changes made by the user SSethi (WMF)

    MIT License
"""

import requests

S = requests.Session()

URL = "https://www.mediawiki.org/w/api.php"

PARAMS = {
    "action": "query",
    "prop": "revisions",
    "titles": "API:Geosearch",
    "rvlimit": "5",
    "rvprop": "timestamp|user|comment|content",
    "rvdir": "newer",
    "rvstart": "2018-07-01T00:00:00Z",
    "rvexcludeuser": "SSethi (WMF)",
    "rvslots": "main",
    "formatversion": "2",
    "format": "json"
}

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

PAGES = DATA["query"]["pages"]

for page in PAGES:
    print(page["revisions"])

PHP

<?php
/*
    get_filtered_page_revisions.php

    MediaWiki API Demos
    Demo of `Revisions` module: Get data including content of last 5 revisions of the title [[API:Geosearch]] made after July 1st 2018 excluding changes made by the user SSethi (WMF)

    MIT License
*/

$endPoint = "https://www.mediawiki.org/w/api.php";
$params = [
    "action" => "query",
    "prop" => "revisions",
    "titles" => "API:Geosearch",
    "rvlimit" => "5",
    "rvprop" => "timestamp|user|comment|content",
    "rvdir" => "newer",
    "rvstart" => "2018-07-01T00:00:00Z",
    "rvexcludeuser" => "SSethi (WMF)",
    "rvslots" => "main",
    "formatversion" => "2",
    "format" => "json"
];

$url = $endPoint . "?" . http_build_query( $params );

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec( $ch );
curl_close( $ch );

$result = json_decode( $output, true );

foreach( $result["query"]["pages"] as $k => $v ) {
    var_dump( $v["revisions"] );
}

JavaScript

/*
    get_filtered_page_revisions.js

    MediaWiki API Demos
    Demo of `Revisions` module: Get data including content of last 5 revisions of the title [[API:Geosearch]] made after July 1st 2018 excluding changes made by the user SSethi (WMF)

    MIT License
*/

var url = "https://www.mediawiki.org/w/api.php";

var params = {
    action: "query",
    prop: "revisions",
    titles: "API:Geosearch",
    rvlimit: "5",
    rvprop: "timestamp|user|comment|content",
    rvdir: "newer",
    rvstart: "2018-07-01T00:00:00Z",
    rvexcludeuser: "SSethi (WMF)",
    rvslots: "main",
    formatversion: "2",
    format: "json"
};

url = url + "?origin=*";
Object.keys(params).forEach(function(key){url += "&" + key + "=" + params[key];});

fetch(url)
    .then(function(response){return response.json();})
    .then(function(response) {
        var pages = response.query.pages;
        for (var p in pages) {
            console.log(pages[p].revisions);
        }
    })
    .catch(function(error){console.log(error);});

MediaWiki JS

/*
	get_filtered_page_revisions.js

	MediaWiki API Demos
	Demo of `Revisions` module: Get data including content of last 5 revisions of the
	title [[API:Geosearch]] made after July 1st 2018 excluding changes made by the user SSethi (WMF)

	MIT License
*/

var params = {
		action: 'query',
		prop: 'revisions',
		titles: 'API:Geosearch',
		rvlimit: '5',
		rvprop: 'timestamp|user|comment|content',
		rvdir: 'newer',
		rvstart: '2018-07-01T00:00:00Z',
		rvexcludeuser: 'SSethi (WMF)',
		rvslots: 'main',
		formatversion: '2',
		format: 'json'
	},
	api = new mw.Api();

api.get( params ).done( function ( data ) {
	var pages = data.query.pages,
		p;
	for ( p in pages ) {
		console.log( pages[ p ].revisions );
	}
} );

Example 3: Get last revision of a page, following any redirects

GET request

Request above is to obtain revision data of the page AntiSpoof, following any redirects. Since AntiSpoof redirects to Extension:AntiSpoof, it will actually return revision data for Extension:AntiSpoof.

Response

Response
{
    "batchcomplete": true,
    "query": {
        "redirects": [
            {
                "from": "AntiSpoof",
                "to": "Extension:AntiSpoof"
            }
        ],
        "pages": [
            {
                "pageid": 8993,
                "ns": 102,
                "title": "Extension:AntiSpoof",
                "revisions": [
                    {
                        "revid": 3419761,
                        "parentid": 3053177,
                        "minor": true,
                        "user": "Shirayuki",
                        "timestamp": "2019-09-22T05:14:46Z",
                        "comment": ""
                    }
                ]
            }
        ]
    }
}

Possible errors

Code Info
rvdiffto rvdiffto must be set to "prev", "next", "cur" or a non-negative number.
rvnosuchrevid There is no revision with ID ID.
rvnosuchsection There is no section section in rID
rvrevids The revids parameter may not be used with the list options (rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart, and rvend).
rvmultpages titles, pageids or a generator was used to supply multiple pages, but the rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart, and rvend parameters may only be used on a single page.
rvaccessdenied The current user is not allowed to read title
rvbadparams start and startid cannot be used together
rvbadparams end and endid cannot be used together
rvbadparams user and excludeuser cannot be used together
invalidparammix titles, pageids or a generator was used to supply multiple pages, but the rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart, and rvend parameters may only be used on a single page.
accessdenied You are not allowed to view title.
badid_startid No revision was found for parameter startid.
badid_endid No revision was found for parameter endid.

Additional notes

  • Pages are specified either by pageids or titles parameter. Individual revisions are specified by revids parameter. See API:Query.
  • {{ll|Manual:Slot|Slots}} can be specified with the rvslots parameter. When the parameter is not present, the API will only return information about the main slot.
  • When using parameters marked as (enum), titles= must have only one title listed.
  • This module couldn't be used as a generator prior to version 1.25.
  • Diff functionality of this module was deprecated in version 1.30 and got moved to API:Compare.

Parameter history

  • v1.32: Introduced rvslots,roles Deprecated rvcontentformat
  • v1.30: Deprecated parsetree,rvprop,rvexpandtemplates,rvparse,rvdiffto,rvdifftotext,rvdifftotextpst
  • v1.27: Introduced rvdifftotextpst
  • v1.26: Introduced parsetree Deprecated rvgeneratexml
  • v1.24: Deprecated rvtoken
  • v1.21: Introduced contentmodel,rvcontentformat
  • v1.19: Introduced sha1,rvparse
  • v1.17: Introduced userid,rvparse
  • v1.16: Introduced parsedcomment,tags,rvdifftotext,rvtag
  • v1.15: Introduced rvdiffto,rvcontinue
  • v1.14: Introduced rvgeneratexml
  • v1.13: Introduced rvsection
  • v1.12: Introduced rvexpandtemplates,rvtoken
  • v1.11: Introduced ids,flags,size,rvuser,rvexcludeuser

See also

  • API:Allrevisions
  • API:Deletedrevisions
  • API:Alldeletedrevisions
This article is issued from Mediawiki. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.