pages/{pageid}/move (POST)
Overview
Move page to a new location
- REST Method: POST
- 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 |
parentid | int? | Relocate the page under a given parent page |
name | string? | Move the page to the given name while keeping it under the same parent page |
authenticate | bool? | Force authentication for request (default: false) |
title | string? | Set the title of the page. The name of a page is also modified unless it's provided |
to | string? | new page location including the path and name of the page |
Return Codes
Name | Value | Description |
OK | 200 | The request completed successfully |
Bad Request | 400 | Invalid input parameter or request body |
Forbidden | 403 | Update access to the page is required |
Not Found | 404 | Requested page could not be found |
Conflict | 409 | Page move would conflict with an existing page |
Message Format
Output:
<pages.moved count="{int}"> <page id="{int}" href="{uri}"> <title>{text}</title> <path>{text}</path> </page> ... </pages.moved>
Implementation Notes
A page cannot be moved to a destination that already exists, is a descendant, or has a protected title (ex. Special:xxx, User:, Template:).
When a page is moved, subpages under the specified page are also moved. For each moved page, the system automatically creates an alias page that redirects from the old to the new destination.
C# Code Sample: Rename a Page
The following code example renames "Subpage 1" to "New Subpage 1":
Sample Code
Plug p = Plug.New("http://deki-hayes/@api/deki"); p.At("users", "authenticate").WithCredentials("admin", "password").Get(); p.At("pages", "=Page_Title%252fSubpage_1", "move").With("to", "Page_Title/New_Subpage_1").Post();
Sample Response from executing Code
<pages.moved count="1"> <page id="83" href="http://deki-hayes/@api/deki/pages/83"> <title>New Subpage 1</title> <path>Page_Title/New_Subpage_1</path> </page> </pages.moved>
Curl Code Sample: Move/Rename a Page
The first of the two commands moves page "foo" to page "bar" as indicated by the "?to=" parameter. It is important to note that since the page is in the same path directory, it is essentially renamed. In the second code sample, page "foo" is moved to a subpage of page "bar".
Sample Code (Rename)
curl -u username:password -d "" -i http://mindtouch.address/@api/deki/pages/=foo/move?to=bar
Sample Code (Move)
curl -u username:password -d "" -i http://mindtouch.address/@api/deki/pages/=foo/move?to=bar%252ffoo
Implementation notes
curl flags
- -u:
- Basic HTTP authentication. Sends a username and password to server so it can verify whether a user is of privilege to perform specific operation.
- -d
- Specifies a POST request. The parentheses ("") imply no data, since no external data is required to complete the operation.
- -i
- Includes the HTTP response header in the output. Useful for debugging.
Example
In this example we will move Pluto from a subpage of Planets to a subpage of Floating Rocks (Planets/Pluto -> Floating_Rocks/Pluto). The parent pages are assumed to have already been created. To learn how to create new pages, click here.
Sample Code
curl -u admin:password -d "" -i http://192.168.168.110/@api/deki/pages/=Planets%252fPluto/move?to=Floating%2520Rocks%252fPluto
HTTP Response Headers
HTTP/1.1 200 OK Date: Sat, 09 Jan 2010 00:44:00 GMT Server: Dream-HTTPAPI/1.7.2.17433 X-Deki-Site: id="default" Content-Type: application/xml; charset=utf-8 Content-Length: 259 Via: 1.1 dekiwiki
HTTP Response Body
Content-Type: application/xml
<?xml version="1.0"?> <pages.moved count="1"> <page id="64" href="http://192.168.168.110/@api/deki/pages/64?redirects=0"> <uri.ui>http://192.168.168.110/Floating_Rocks/Pluto</uri.ui> <title>Pluto</title> <path>Floating_Rocks/Pluto</path> <namespace>main</namespace> </page> </pages.moved>
Notes
- The page path is double encoded. In the above example, spaces in "Floating rocks" are replaced with %2520. Likewise, forward slashes (/) are replaced with %252f.
- Attempting to move a page to a location where a page with the same name already exists will result in a 409 HTTP response (Conflict).