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:
1 | < pages.moved count = "{int}" > |
2 | < page id = "{int}" href = "{uri}" > |
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
2 | p.At( "users" , "authenticate" ).WithCredentials( "admin" , "password" ).Get(); |
3 | p.At( "pages" , "=Page_Title%252fSubpage_1" , "move" ).With( "to" , "Page_Title/New_Subpage_1" ).Post(); |
Sample Response from executing Code
3 | < title >New Subpage 1</ title > |
4 | < path >Page_Title/New_Subpage_1</ path > |
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.
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
6 | < path >Floating_Rocks/Pluto</ path > |
7 | < namespace >main</ namespace > |
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).