pages/{pageid}/revisions (GET)
Overview
Retrieve revision history of a given title
- REST Method: GET
- Method Access: public
Uri Parameters
| Name | Type | Description |
| pageid | string | either an integer page ID, "home", or "=" followed by a double uri-encoded page path |
Query Parameters
| Name | Type | Description |
| authenticate | bool? | Force authentication for request (default: false) |
| offset | int? | Number of items to skip. Must be a positive number or 0 to not skip any. (default: 0) |
| revision | string? | Page revision to retrieve. Positive integer or a GUID will retrieve the specific revision |
| redirects | int? | If zero, do not follow page redirects. |
| deleted | bool? | Include deleted revisions (default: true) |
| limit | string? | Maximum number of items to retrieve. Must be a positive number or 'all' to retrieve all items. (default: 50) |
Return Codes
| Name | Value | Description |
| OK | 200 | The request completed successfully |
| Bad Request | 400 | Invalid input parameter or request body |
| Forbidden | 403 | Read access to the page is required |
| Not Found | 404 | Requested page could not be found |
Message Format
Output:
<pages>
<page id="{int}" revision="{int}" href="{uri}">
<title>{text}</title>
<path>{text}</path>
<date.edited>{date}</date.edited>
<user.author id="{int}" href="{uri}">
<nick>{text}</nick>
<username>{text}</username>
<email>{text}</email>
</user.author>
<description>{text}</description>
<contents type="{contenttype}" href="{uri}" />
</page>
...
</pages>
Implementation Notes
A new page revision is created whenever the page is modified.
Use GET:pages/{pageid}/contents with the revision parameter to retrieve the contents of a page from a specified revision. It is also possible to compare the contents of two revisions with GET:pages/{pageid}/diff.
C# Code Sample: Retrieve Page Revisions
The following code example retrieves the revisions of the page called "Page Title":
Sample Code
Plug p = Plug.New("http://deki-hayes/@api/deki");
p.At("users", "authenticate").WithCredentials("admin", "password").Get();
p.At("pages", "=Page_Title", "revisions").Get();
Sample Response from executing Code
Sample response indicating that there is one revision:
<pages>
<page id="31" revision="1" href="http://deki-hayes/@api/deki/pages/31/revisions?revision=1&redirects=0">
<title>Page Title</title>
<path>Page_Title</path>
<date.edited>2007-08-29T23:03:18Z</date.edited>
<user.author id="1" href="http://deki-hayes/@api/deki/users/1">
<nick>Admin</nick>
<username>Admin</username>
<email>admin@mindtouch.com</email>
</user.author>
<description>2 words added</description>
<contents type="application/x.deki0702+xml" href="http://deki-hayes/@api/deki/pages/31/revisions/contents?revision=1&redirects=0" />
</page>
</pages>
Curl Code Sample: Retrieve Page Revisions
The following command retrieves a list of all revisions made on page "foo":
Sample Code
curl -u username:password -i http://mindtouch.address/@api/deki/pages/=foo/revisions
Sample Response from executing Code
Here is an example revision metadata of a page that has gone through 2 edits (creating 3 versions and revisions).
Content-Type: application/xml
<pages>
<page id="567" revision="3" href="http://192.168.59.128/@api/deki/pages/567/revisions?revision=3&redirects=0">
<uri.ui>http://192.168.59.128/FUBAR</uri.ui>
<title>FUBAR</title>
<path>FUBAR</path>
<namespace>main</namespace>
<date.edited>2010-01-29T18:41:40Z</date.edited>
<user.author id="1" href="http://192.168.59.128/@api/deki/users/1">
<nick>Admin</nick>
<username>Admin</username>
<email hidden="true"/>
<hash.email>64e1b8d34f425d19e1ee2ea7236d3028</hash.email>
<uri.gravatar>http://www.gravatar.com/avatar/64e1b8d34f425d19e1ee2ea7236d3028</uri.gravatar>
</user.author>
<description>1 words added, 6 words removed</description>
<contents type="application/x.deki0805+xml" href="http://192.168.59.128/@api/deki/pages/567/contents?revision=3&redirects=0"/>
</page>
<page id="567" hidden="true" revision="2" href="http://192.168.59.128/@api/deki/pages/567/revisions?revision=2&redirects=0">
<uri.ui>http://192.168.59.128/FUBAR</uri.ui>
<title hidden="true">FUBAR</title>
<path>FUBAR</path>
<namespace>main</namespace>
<date.edited>2010-01-21T01:45:58Z</date.edited>
<user.author id="1" href="http://192.168.59.128/@api/deki/users/1">
<nick>Admin</nick>
<username>Admin</username>
<email hidden="true"/>
<hash.email>64e1b8d34f425d19e1ee2ea7236d3028</hash.email>
<uri.gravatar>http://www.gravatar.com/avata
r/64e1b8d34f425d19e1ee2ea7236d3028</uri.gravatar>
</user.author>
<description hidden="true"/>
<contents type="application/x.deki0805+xml" href="http://192.168.59.128/@api/deki/pages/567/contents?revision=2&redirects=0"/>
<user.hiddenby id="88" href="http://192.168.59.128/@api/deki/users/88">
<nick>test6</nick>
<username>test6</username>
<email hidden="true"/>
<hash.email>989d7c3b24422e0f2ab2da41e3a91434</hash.email>
<uri.gravatar>http://www.gravatar.com/avatar/989d7c3b24422e0f2ab2da41e3a91434</uri.gravatar>
</user.hiddenby>
<date.hidden>2010-01-29T21:06:11Z</date.hidden>
<description.hidden/>
</page>
<page id="567" revision="1" href="http://192.168.59.128/@api/deki/pages/567/revisions?revision=1&redirects=0">
<uri.ui>http://192.168.59.128/FUBAR</uri.ui>
<title>FUBAR</title>
<path>FUBAR</path>
<namespace>main</namespace>
<date.edited>2010-01-19T19:24:52Z</date.edited>
<user.author id="1" href="http://192.168.59.128/@api/deki/users/1">
<nick>Admin</nick>
<username>Admin</username>
<email hidden="true"/>
<hash.email>64e1b8d34f425d19e1ee2ea7236d3028</hash.email>
<uri.gravatar>http://www.gravatar.com/avatar/64e1b8d34f425d19e1ee2ea7236d3028</uri.gravatar>
</user.author>
<description>page created, 9 words added</description>
<contents type="application/x.deki0805+xml" href="http://192.168.59.128/@api/deki/pages/567/contents?revision=1&redirects=0"/>
</page>
</pages>
Implementation notes
curl flags
- -u
- Provides external user authentication. Note that if anonymous access is available and authentication is not forced, this flag may be omitted.
- -i
- Outputs the HTTP response headers. Useful for debugging.
Pages
- To view a list of all pages, follow the instructions here.

