pages/{pageid}/tags (PUT)
Overview
Sets the tags on a page.
- REST Method: PUT
- 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) |
| redirects | int? | If zero, do not follow page redirects. |
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 | The requested page could not be found |
Message Format
Input:
<tags>
<tag value="{text}" />
...
</tags>
Output:
<tags count="{int}" href="{uri}">
<tag value="{text}">
<type>{text|date|define}</type>
<uri>{text}</uri>
<title>{text}</title>
<related count="{int}">
<page id="{int}" href="{uri}">
<title>{text}</title>
<path>{text}</path>
</page>
</related>
</tag>
...
</tags>
C# Sample: Set Tags
The following code example sets the tags on the page called "Page Title". A tag of each type is used (date, define, and text):
Sample Code
Plug p = Plug.New("http://deki-hayes/@api/deki");
p.At("users", "authenticate").WithCredentials("admin", "password").Get();
XDoc tagsDoc = new XDoc("tags")
.Start("tag").Attr("value", "date:2007-08-29").End()
.Start("tag").Attr("value", "define:this tag is a define").End();
.Start("tag").Attr("value", "text tag").End()
p.At("pages", "=Page_Title", "tags").Put(tagsDoc);
Sample Response from executing Code
<tags count="3" href="http://deki-hayes/@api/deki/pages/31/tags">
<tag value="text tag">
<type>text</type>
<uri>http://deki-hayes/Special:Tags?tag=text+tag</uri>
<title>text tag</title>
</tag>
<tag value="date:2007-08-29">
<type>date</type>
<uri>http://deki-hayes/Special:Events?from=2007-08-29</uri>
<title>Wednesday, August 29, 2007</title>
</tag>
<tag value="define:this tag is a define">
<type>define</type>
<uri>http://deki-hayes/Page_Title</uri>
<title>this tag is a define</title>
<related count="1">
<page id="29" href="http://deki-hayes/@api/deki/pages/29">
<title>DekiWiki (Hayes)</title>
<path />
</page>
</related>
</tag>
</tags>
Curl Sample: Set Tags
The following command attaches the list of tags defined in "tags.xml" to page "test".
Sample Code
curl -u username:password -H "Content-Type: application/xml" -T tags.xml -i http://mindtouch.address/@api/deki/pages/=test/tags
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.
- -T
- Sends a file using the PUT command.
- -H
- Overwrites or appends to HTTP header. In this case, the Content-Type needs to be set to "application/xml" for the server to process the request.
- -i
- Includes the HTTP response header in the output. Useful for debugging.
Example
We want to attach some tags of popular memes to page "Meme". The file memes.xml contains a list of meme tags.
memes.xml
Content-Type: application/xml
<tags> <tag value="rick roll"/> <tag value="star wars kid"/> <tag value="chocolate rain"/> </tags>
Sample Code
curl -u username:password -H "Content-Type: text/xml" -T memes.xml -i http://192.168.168.110/@api/deki/pages/=Meme/tags
HTTP Response Headers
HTTP/1.1 200 OK Date: Mon, 11 Jan 2010 21:47:29 GMT Server: Dream-HTTPAPI/1.7.2.17433 X-Deki-Site: id="default" Content-Type: application/xml; charset=utf-8 Content-Length: 671 Via: 1.1 dekiwiki
HTTP Response Body
Content-Type: application/xml
<?xml version="1.0"?>
<tags count="3" href="http://192.168.168.110/@api/deki/pages/68/tags">
<tag value="chocolate rain" id="4" href="http://192.168.168.110/@api/deki/site/tags/4">
<type>text</type>
<uri>http://192.168.168.110/Special:Tags?tag=chocolate+rain</uri>
<title>chocolate rain</title>
</tag>
<tag value="rick roll" id="5" href="http://192.168.168.110/@api/deki/site/tags/5">
<type>text</type>
<uri>http://192.168.168.110/Special:Tags?tag=rick+roll</uri>
<title>rick roll</title>
</tag>
<tag value="star wars kid" id="6" href="http://192.168.168.110/@api/deki/site/tags/6">
<type>text</type>
<uri>http://192.168.168.110/Special:Tags?tag=star+wars+kid</uri>
<title>star wars kid</title>
</tag>
</tags>
Notes
- Running the curl command again with a different list of tags will overwrite the existing list.

