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, sub-pages 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 sub-page 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 sub-page of Planets to a sub-page 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).

