You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wookie.apache.org by bu...@apache.org on 2012/11/27 10:54:47 UTC

svn commit: r839743 [1/6] - in /websites/staging/wookie/trunk/content: ./ css/ docs/ docs/developer/ docs/developer/features/ docs/releases/ docs/tutorial/ docs/tutorial/lib/ docs/tutorial/lib/s5/ docs/tutorial/lib/s5/ui/ docs/tutorial/lib/s5/ui/defaul...

Author: buildbot
Date: Tue Nov 27 09:54:44 2012
New Revision: 839743

Log:
Staging update by buildbot for wookie

Added:
    websites/staging/wookie/trunk/content/css/
    websites/staging/wookie/trunk/content/css/code.css
    websites/staging/wookie/trunk/content/css/wookie.css
    websites/staging/wookie/trunk/content/docs/
    websites/staging/wookie/trunk/content/docs/admin.html
    websites/staging/wookie/trunk/content/docs/admin_9.html
    websites/staging/wookie/trunk/content/docs/api.html
    websites/staging/wookie/trunk/content/docs/api_9.html
    websites/staging/wookie/trunk/content/docs/demo.html
    websites/staging/wookie/trunk/content/docs/demoadmin.html
    websites/staging/wookie/trunk/content/docs/develop.html
    websites/staging/wookie/trunk/content/docs/developer/
    websites/staging/wookie/trunk/content/docs/developer/features/
    websites/staging/wookie/trunk/content/docs/developer/features.html
    websites/staging/wookie/trunk/content/docs/developer/features/oauth.html
    websites/staging/wookie/trunk/content/docs/developer/index.html
    websites/staging/wookie/trunk/content/docs/developer/issues.html
    websites/staging/wookie/trunk/content/docs/developer/parser.html
    websites/staging/wookie/trunk/content/docs/developer/release-configuration.html
    websites/staging/wookie/trunk/content/docs/developer/release-discuss.txt
    websites/staging/wookie/trunk/content/docs/developer/release-management.html
    websites/staging/wookie/trunk/content/docs/developer/release-overview.html
    websites/staging/wookie/trunk/content/docs/developer/release-process.html
    websites/staging/wookie/trunk/content/docs/developer/release-testing.html
    websites/staging/wookie/trunk/content/docs/developer/release-vote-general.txt
    websites/staging/wookie/trunk/content/docs/developer/release-vote.txt
    websites/staging/wookie/trunk/content/docs/developer/running.html
    websites/staging/wookie/trunk/content/docs/developer/widgets.html
    websites/staging/wookie/trunk/content/docs/download.html
    websites/staging/wookie/trunk/content/docs/embedding.html
    websites/staging/wookie/trunk/content/docs/faq.html
    websites/staging/wookie/trunk/content/docs/portable.html
    websites/staging/wookie/trunk/content/docs/releases/
    websites/staging/wookie/trunk/content/docs/releases/0p10p0.html
    websites/staging/wookie/trunk/content/docs/releases/0p11p0.html
    websites/staging/wookie/trunk/content/docs/releases/0p9p1.html
    websites/staging/wookie/trunk/content/docs/releases/0p9p2.html
    websites/staging/wookie/trunk/content/docs/shindig.html
    websites/staging/wookie/trunk/content/docs/source.html
    websites/staging/wookie/trunk/content/docs/templates.html
    websites/staging/wookie/trunk/content/docs/tutorial/
    websites/staging/wookie/trunk/content/docs/tutorial/installation.html
    websites/staging/wookie/trunk/content/docs/tutorial/lib/
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/blank.gif   (with props)
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/bodybg.gif   (with props)
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/framing.css
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/iepngfix.htc
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/opera.css
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/outline.css
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/pretty.css
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/print.css
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/s5-core.css
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/slides.css
    websites/staging/wookie/trunk/content/docs/tutorial/lib/s5/ui/default/slides.js
    websites/staging/wookie/trunk/content/docs/widgets.html
    websites/staging/wookie/trunk/content/get-involved.html
    websites/staging/wookie/trunk/content/images/
    websites/staging/wookie/trunk/content/images/apache-incubator-logo.png   (with props)
    websites/staging/wookie/trunk/content/images/logo.png   (with props)
    websites/staging/wookie/trunk/content/index.html
    websites/staging/wookie/trunk/content/mailing-lists.html
    websites/staging/wookie/trunk/content/news.html
    websites/staging/wookie/trunk/content/people.html
    websites/staging/wookie/trunk/content/siteMigration.html
Removed:
    websites/staging/wookie/trunk/content/wookie/css/
    websites/staging/wookie/trunk/content/wookie/docs/
    websites/staging/wookie/trunk/content/wookie/get-involved.html
    websites/staging/wookie/trunk/content/wookie/images/
    websites/staging/wookie/trunk/content/wookie/index.html
    websites/staging/wookie/trunk/content/wookie/mailing-lists.html
    websites/staging/wookie/trunk/content/wookie/news.html
    websites/staging/wookie/trunk/content/wookie/people.html
    websites/staging/wookie/trunk/content/wookie/siteMigration.html
Modified:
    websites/staging/wookie/trunk/content/   (props changed)

Propchange: websites/staging/wookie/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Nov 27 09:54:44 2012
@@ -1 +1 @@
-1388388
+1414048

Added: websites/staging/wookie/trunk/content/css/code.css
==============================================================================
--- websites/staging/wookie/trunk/content/css/code.css (added)
+++ websites/staging/wookie/trunk/content/css/code.css Tue Nov 27 09:54:44 2012
@@ -0,0 +1,62 @@
+.codehilite .hll { background-color: #ffffcc }
+.codehilite  { background: #f0f0f0; }
+.codehilite .c { color: #60a0b0; font-style: italic } /* Comment */
+.codehilite .err { border: 1px solid #FF0000 } /* Error */
+.codehilite .k { color: #007020; font-weight: bold } /* Keyword */
+.codehilite .o { color: #666666 } /* Operator */
+.codehilite .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.codehilite .cp { color: #007020 } /* Comment.Preproc */
+.codehilite .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.codehilite .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.codehilite .gd { color: #A00000 } /* Generic.Deleted */
+.codehilite .ge { font-style: italic } /* Generic.Emph */
+.codehilite .gr { color: #FF0000 } /* Generic.Error */
+.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.codehilite .gi { color: #00A000 } /* Generic.Inserted */
+.codehilite .go { color: #808080 } /* Generic.Output */
+.codehilite .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.codehilite .gs { font-weight: bold } /* Generic.Strong */
+.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.codehilite .gt { color: #0040D0 } /* Generic.Traceback */
+.codehilite .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.codehilite .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.codehilite .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.codehilite .kp { color: #007020 } /* Keyword.Pseudo */
+.codehilite .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.codehilite .kt { color: #902000 } /* Keyword.Type */
+.codehilite .m { color: #40a070 } /* Literal.Number */
+.codehilite .s { color: #4070a0 } /* Literal.String */
+.codehilite .na { color: #4070a0 } /* Name.Attribute */
+.codehilite .nb { color: #007020 } /* Name.Builtin */
+.codehilite .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.codehilite .no { color: #60add5 } /* Name.Constant */
+.codehilite .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.codehilite .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.codehilite .ne { color: #007020 } /* Name.Exception */
+.codehilite .nf { color: #06287e } /* Name.Function */
+.codehilite .nl { color: #002070; font-weight: bold } /* Name.Label */
+.codehilite .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.codehilite .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.codehilite .nv { color: #bb60d5 } /* Name.Variable */
+.codehilite .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
+.codehilite .mf { color: #40a070 } /* Literal.Number.Float */
+.codehilite .mh { color: #40a070 } /* Literal.Number.Hex */
+.codehilite .mi { color: #40a070 } /* Literal.Number.Integer */
+.codehilite .mo { color: #40a070 } /* Literal.Number.Oct */
+.codehilite .sb { color: #4070a0 } /* Literal.String.Backtick */
+.codehilite .sc { color: #4070a0 } /* Literal.String.Char */
+.codehilite .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.codehilite .s2 { color: #4070a0 } /* Literal.String.Double */
+.codehilite .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.codehilite .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.codehilite .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.codehilite .sx { color: #c65d09 } /* Literal.String.Other */
+.codehilite .sr { color: #235388 } /* Literal.String.Regex */
+.codehilite .s1 { color: #4070a0 } /* Literal.String.Single */
+.codehilite .ss { color: #517918 } /* Literal.String.Symbol */
+.codehilite .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.codehilite .vc { color: #bb60d5 } /* Name.Variable.Class */
+.codehilite .vg { color: #bb60d5 } /* Name.Variable.Global */
+.codehilite .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.codehilite .il { color: #40a070 } /* Literal.Number.Integer.Long */

Added: websites/staging/wookie/trunk/content/css/wookie.css
==============================================================================
--- websites/staging/wookie/trunk/content/css/wookie.css (added)
+++ websites/staging/wookie/trunk/content/css/wookie.css Tue Nov 27 09:54:44 2012
@@ -0,0 +1,157 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements.  See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License.  You may obtain a copy of the License at
+*
+*     http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+body {
+  color: white;
+  font-family: Arial,Helvetica,sans-serif;
+  font-size: 11pt;
+  margin: 0;
+}
+
+a {
+  color: #339;
+  text-decoration: none;
+}
+
+a:visited {
+ color: #369;
+}
+
+a:hover {
+ color: #ddf;
+ background-color: #6badff;
+}
+
+.title {
+  float:right;
+}
+
+h1,h2,h3,h4,h5,h6 {
+  color: #6f3f00;
+}
+
+#content {
+ margin-top: 15px;
+ margin-left: 200px;
+ margin-right: 200px;
+ padding: 0 8px 40px;
+ color: black;
+ background: white;
+}
+
+#content h1,h2,h3,h4,h5,h6 {
+  color: #955500;
+  border-bottom: 1px solid #ffdaae;
+  font-weight: normal;
+  margin: 10px 0 15px;
+  padding: 5px 0;
+}
+
+#content h1 {
+  font-size: 18pt;
+  border: 1px solid #ffdaae;
+  -moz-border-radius: 10px;
+  border-radius: 10px;
+  padding: 15px;
+}
+
+#content h2 {
+  font-size: 16pt;
+}
+
+#content h3,h4,h5,h6 {
+  border-bottom: none;
+  color: #688a6f;
+  font-size: 14pt;
+  margin-bottom: 0;
+}
+
+#navigation {
+  border: 1px solid #ffdaae;
+  -moz-border-radius: 10px;
+  border-radius: 10px;
+  font-size: 85%;
+  color: #003;
+  float: left;
+  padding: 8px;
+  width: 160px;
+  background: white;
+  margin-left: 10px;
+  margin-right: 10px;
+}
+
+#navigation img {
+  padding-bottom: 15px;
+  margin-left: auto;
+  margin-right: auto;
+  display: block;
+}
+
+#navigation h1 {
+  color: #000;
+  font-size: 1.1em;
+  padding: 0;
+  margin-top: 0.8em;
+  margin-bottom: 0.5em;
+  border-bottom: 1px dotted #3487ef;
+}
+
+#navigation ul {
+  margin: 0 0;
+  padding: 0;
+  list-style: none;
+}
+
+#navigation li {
+  margin: 0;
+  padding: 0;
+}
+
+#navigation li a {
+  margin: 0;
+  color: #003;
+  text-decoration:none;
+}
+
+#navigation li a:visited {
+  color: #226;
+}
+
+#navigation li a:hover {
+  background-color: #6badff;
+  color: #000;
+}
+
+#footer {
+ margin-top: 15px;
+ margin-left: 200px;
+ margin-right: 200px;
+ border: 1px solid #ffdaae;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+ background-color:#b0b0b0;
+  color:#336;
+  font-size: 80%;
+  padding: 0 8px;
+}
+
+/* definition lists */
+dd {}
+dl {}
+dt {
+  display: inline;
+  float: left;
+}
\ No newline at end of file

Added: websites/staging/wookie/trunk/content/docs/admin.html
==============================================================================
--- websites/staging/wookie/trunk/content/docs/admin.html (added)
+++ websites/staging/wookie/trunk/content/docs/admin.html Tue Nov 27 09:54:44 2012
@@ -0,0 +1,176 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/wookie/css/wookie.css" rel="stylesheet" type="text/css">
+  <link href="/wookie/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache Wookie (Incubating) - Server Administration</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="banner">
+    <img alt="Apache Wookie (Incubating)" src="/wookie/images/logo.png"/>
+    <h1 class="title">Server Administration</h1>
+  </div>
+  
+  <div id="navigation">
+  <h1 id="general">General</h1>
+<ul>
+<li><a href="/wookie/index.html">Home</a></li>
+<li><a href="/wookie/news.html">News</a></li>
+<li><a href="/wookie/docs/download.html">Download</a></li>
+<li><a href="http://incubator.apache.org/projects/wookie.html">Incubator page</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+</ul>
+<h1 id="documentation">Documentation</h1>
+<ul>
+<li><a href="/wookie/docs/download.html">Download and Quickstart</a></li>
+<li><a href="/wookie/docs/admin.html">Server Admin</a></li>
+<li><a href="/wookie/docs/embedding.html">Embedding</a></li>
+<li><a href="/wookie/docs/shindig.html">Integrating with Shindig</a></li>
+<li><a href="/wookie/docs/widgets.html">Building widgets</a></li>
+<li><a href="/wookie/docs/faq.html">FAQ</a></li>
+<li><a href="/wookie/docs/api.html">API Reference</a></li>
+</ul>
+<h1 id="community">Community</h1>
+<ul>
+<li><a href="/wookie/get-involved.html">Get Involved</a></li>
+<li><a href="/wookie/mailing-lists.html">Mailing Lists</a></li>
+<li><a href="/wookie/people.html">People</a></li>
+</ul>
+<h1 id="development">Development</h1>
+<ul>
+<li><a href="/wookie/docs/source.html">Getting Started</a></li>
+<li><a href="/wookie/docs/developer/running.html">Running</a></li>
+<li><a href="/wookie/docs/templates.html">Widget Templates</a></li>
+<li><a href="/wookie/docs/developer/features.html">Extension Features</a></li>
+<li><a href="/wookie/docs/developer/widgets.html">Deploying Widgets</a></li>
+<li><a href="/wookie/docs/develop.html">Environment</a></li>
+<li><a href="/wookie/docs/developer/release-management.html">Release Management</a></li>
+<li><a href="/wookie/docs/developer/issues.html">Issue Tracker</a></li>
+<li><a href="/wookie/docs/developer/index.html">Management</a></li>
+<li><a href="/wookie/docs/developer/parser.html">W3C Widget Parser</a></li>
+</ul>
+<h1 id="asf">ASF</h1>
+<ul>
+<li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+<li><a href="http://www.apache.org/security/">Security</a></li>
+</ul>
+  </div>
+
+  <div id="content">
+    <p>This is the administration guide for Wookie 0.10 and later. For earlier versions, see the <a href="/wookie/docs/admin_9.html">Wookie 0.9.x Server Administration Guide</a>.</p>
+<p>From 0.10.0, most Wookie admin functionality is provided either by editing text configuration files, or via the REST API. There is no longer a default web admin user interface.</p>
+<p>NOTE: This documentation is still in the process of being written. If you have an questions about the Wookie administration interface, please ask on the mailing list.</p>
+<h1 id="downloading-and-installing-wookie">Downloading and installing Wookie</h1>
+<p>See <a href="/wookie/docs/download.html">Downloading and Installing Wookie</a></p>
+<h1 id="initial-configuration">Initial configuration</h1>
+<p>Wookie is designed to be easy to set up and run without additional configuration in "standalone" mode for testing and evaluation. </p>
+<p>However, before putting Wookie live you need to perform some basic configuration tasks to make your server more secure. These are:</p>
+<ol>
+<li>Create at least one new API key for each application that is allowed to request widget instances from Wookie, and delete the "TEST" API key that is included by default.</li>
+<li>Configure a user account with the "widgetadmin" role (or you may want to simply disable access to the REST API for admin functions)</li>
+<li>Review the default access policies for the built-in proxy service, and adjust as required</li>
+</ol>
+<h1 id="api-keys">API Keys</h1>
+<p>Wookie operates as a multi-tenancy server, with each tenant application identified by its API Key; this is a shared secret between the Wookie server and the application. Even if Wookie is used solely with one application, it still must provide an API key for use by that application.</p>
+<p>API keys are found in a text configuration file usually located in <code>WEB-INF/classes/keys</code>. This file contains further instructions on how to create, remove and modify entries. </p>
+<p>Like other aspects of Wookie, API keys can also be managed via the REST API (e.g. from an admin client.)</p>
+<p><strong>By default an API Key called "TEST" is included in the <code>keys</code> file of a new Wookie installation that is used by the widget demo page; this MUST be changed or deleted when configuring a new server.</strong> </p>
+<p>Note that API keys are used in URLs, and so must not contain any characters that are invalid in URLs. </p>
+<h1 id="access-control-for-the-rest-api-and-admin-functions">Access control for the REST API and admin functions</h1>
+<p>Authentication and access rights for the REST API is defined in the roles.properties and users.properties files located in WEB-INF/classes. These can be removed in a standard application server environment.</p>
+<p>By default, a user added to "widgetadmin" role has access to REST API functions such as installing and deleting widgets, managing API keys and managing proxy access policies. If functions such as these will not be conducted via REST API, but just managed using the configuration files and deploy folder, then you SHOULD disable access to these services.</p>
+<p>Login configuration settings can be found in the web.xml file located in wookie/WEB-INF. </p>
+<p><strong>Wookie by default comes with a built-in user called "java" with password "java" linked to the "widgetadmin" role; this MUST be changed from these defaults when configuring a new server.</strong></p>
+<h1 id="managing-widgets">Managing Widgets</h1>
+<p>Wookie supports the "hot deployment" of widgets by adding .wgt files to a watched folder. The location of the folder is determined by the widget.deployfolder property. Hot-deploy functionality is enabled by default; you can disable it if desired by setting widget.hot_deploy=false. Note that only widgets that have a .wgt file extension will be deployed automatically.</p>
+<p>Widgets can also be added using the REST API. Deleting widgets is also managed using the REST API. Note that deleting a widget also deletes all instances and data associated with the widget by all users.</p>
+<h1 id="access-policies-and-proxy-configuration">Access Policies and Proxy Configuration</h1>
+<p>When a Widget tries to access a third-party website or service, this is usually prevented by the browser's
+ same-origin policy. This is to prevent cross-site scripting hacks and unauthorized sharing of personal data. 
+However, there are many instances where a Widget may legitimately want to make a call to a third party service
+ or site using AJAX, and to support this Wookie provides a server-side proxy that the Widget can use to 
+tunnel requests through Wookie. </p>
+<p>To use the proxy, the widget author simply needs to call "widget.proxify(myurl)" to change their service URL to one that makes use of the proxy. However, Wookie will not make the HTTP request to take place unless the requested URL is permitted using either the global whitelist or by an enabled Widget Access Request Policy.</p>
+<p>The proxy servlet is configured by default to operate in a whitelist mode, and is configured using the policies text configuration file (usually found at WEB-INF/classes/policies). There is additional documentation in the policies file itself on how to manage access policies.<br />
+</p>
+<p>By default, Wookie automatically adds policies specified in widget <access> element when installing a new Widget, and notifies the Administrator with a message in the Wookie log file.</p>
+<p>Policies can also be set and managed via the REST API.</p>
+<h1 id="proxy-configuration">Proxy configuration</h1>
+<p>In order for widgets running in Wookie to communicate with external web services using Ajax, requests must be redirected through a server-side proxy. The proxy configuration is located in WEB-INF/classes/widgetserver.properties.</p>
+<p>The following parameters can be set:</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">usewhitelist</span><span class="o">=</span><span class="n">true</span><span class="o">|</span><span class="n">false</span>
+</pre></div>
+
+
+<p>Set this to true to enable a whitelist; this only works with the Wookie built-in proxy service.</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">checkdomain</span><span class="o">=</span><span class="n">false</span><span class="o">|</span><span class="n">true</span>
+</pre></div>
+
+
+<p>If this is set to true, the Wookie built-in proxy will only handle requests where the requesting domain is the same as the proxy server domain.</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">scheme</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">hostname</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">port</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">path</span><span class="o">=</span>
+</pre></div>
+
+
+<p>These allow you to set a custom proxy server location. To use the Wookie built-in proxy service, you only need to set widget.proxy.path=/wookie/proxy. To use instead the proxy service bundled with Apache Shindig, you need to set widget.proxy.path=/gadgets/proxy</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">username</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">password</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">usentlmauthentication</span><span class="o">=</span><span class="n">false</span><span class="o">|</span><span class="n">true</span>
+</pre></div>
+
+
+<p>Use these settings to configure access control for the proxy. By default no authentication is set.</p>
+<h1 id="mail-setup">Mail setup</h1>
+<p>Wookie enables users to request API keys for their applications; these are then sent to their email address. The email service is configured as follows:</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">server</span><span class="o">=</span><span class="n">your_mail_server</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">port</span><span class="o">=</span><span class="mi">25</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">username</span><span class="o">=</span><span class="n">username</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">password</span><span class="o">=</span><span class="n">password</span>
+</pre></div>
+
+
+<p>Username and password are optional. You can use localhost if your server is set up to send email, e.g. using PostFix.</p>
+<h1 id="virtual-host-configuration">Virtual host configuration</h1>
+<p>See <a href="/wookie/docs/developer/running.html">Running Wookie</a></p>
+<h1 id="integration-with-shindig">Integration with Shindig</h1>
+<p>See <a href="/wookie/docs/shindig.html">Integrating Wookie With Shindig</a></p>
+  </div>
+
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011-2012 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+
+</body>
+</html>

Added: websites/staging/wookie/trunk/content/docs/admin_9.html
==============================================================================
--- websites/staging/wookie/trunk/content/docs/admin_9.html (added)
+++ websites/staging/wookie/trunk/content/docs/admin_9.html Tue Nov 27 09:54:44 2012
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/wookie/css/wookie.css" rel="stylesheet" type="text/css">
+  <link href="/wookie/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache Wookie (Incubating) - </title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="banner">
+    <img alt="Apache Wookie (Incubating)" src="/wookie/images/logo.png"/>
+    <h1 class="title"></h1>
+  </div>
+  
+  <div id="navigation">
+  <h1 id="general">General</h1>
+<ul>
+<li><a href="/wookie/index.html">Home</a></li>
+<li><a href="/wookie/news.html">News</a></li>
+<li><a href="/wookie/docs/download.html">Download</a></li>
+<li><a href="http://incubator.apache.org/projects/wookie.html">Incubator page</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+</ul>
+<h1 id="documentation">Documentation</h1>
+<ul>
+<li><a href="/wookie/docs/download.html">Download and Quickstart</a></li>
+<li><a href="/wookie/docs/admin.html">Server Admin</a></li>
+<li><a href="/wookie/docs/embedding.html">Embedding</a></li>
+<li><a href="/wookie/docs/shindig.html">Integrating with Shindig</a></li>
+<li><a href="/wookie/docs/widgets.html">Building widgets</a></li>
+<li><a href="/wookie/docs/faq.html">FAQ</a></li>
+<li><a href="/wookie/docs/api.html">API Reference</a></li>
+</ul>
+<h1 id="community">Community</h1>
+<ul>
+<li><a href="/wookie/get-involved.html">Get Involved</a></li>
+<li><a href="/wookie/mailing-lists.html">Mailing Lists</a></li>
+<li><a href="/wookie/people.html">People</a></li>
+</ul>
+<h1 id="development">Development</h1>
+<ul>
+<li><a href="/wookie/docs/source.html">Getting Started</a></li>
+<li><a href="/wookie/docs/developer/running.html">Running</a></li>
+<li><a href="/wookie/docs/templates.html">Widget Templates</a></li>
+<li><a href="/wookie/docs/developer/features.html">Extension Features</a></li>
+<li><a href="/wookie/docs/developer/widgets.html">Deploying Widgets</a></li>
+<li><a href="/wookie/docs/develop.html">Environment</a></li>
+<li><a href="/wookie/docs/developer/release-management.html">Release Management</a></li>
+<li><a href="/wookie/docs/developer/issues.html">Issue Tracker</a></li>
+<li><a href="/wookie/docs/developer/index.html">Management</a></li>
+<li><a href="/wookie/docs/developer/parser.html">W3C Widget Parser</a></li>
+</ul>
+<h1 id="asf">ASF</h1>
+<ul>
+<li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+<li><a href="http://www.apache.org/security/">Security</a></li>
+</ul>
+  </div>
+
+  <div id="content">
+    <p>This is the admin documentation for Wookie 0.9.x. For information on later versions of Wookie see the current <a href="/wookie/docs/admin.html">Server Administration Guide</a>.</p>
+<p>NOTE: This documentation is still in the process of being written. If you have an questions about the Wookie administration interface, please ask on the mailing list.</p>
+<h1 id="downloading-and-installing-wookie">Downloading and installing Wookie</h1>
+<p>See <a href="/wookie/docs/download.html">Downloading and Installing Wookie</a></p>
+<h1 id="using-the-administration-web-interface">Using the Administration web interface</h1>
+<p>To access the administrators interface in the development server, go to</p>
+<div class="codehilite"><pre><span class="p">[</span><span class="n">http:</span><span class="sr">//</span><span class="p">]{</span><span class="n">your</span> <span class="n">server</span><span class="p">}</span><span class="sr">/wookie/</span><span class="n">admin</span>
+</pre></div>
+
+
+<p>By default, and when Wookie is running in "standalone" mode, the Wookie server admin username and password are both "java".</p>
+<h1 id="adding-and-removing-widgets">Adding and removing widgets</h1>
+<h2 id="adding-widgets-using-the-admin-interface">Adding widgets using the admin interface</h2>
+<p>On the admin page, click "add new widget". A page containing an upload form will be displayed. Select the widget file you wish to deploy
+and click the "publish" button  to upload it.</p>
+<h2 id="adding-widgets-using-a-watched-folder">Adding widgets using a watched folder</h2>
+<p>Wookie supports the "hot deployment" of widgets by adding .wgt files to a watched folder. The location of the folder is determined by the widget.deployfolder property. Hot-deploy functionality is enabled by default; you can disable it if desired by setting widget.hot_deploy=false. Note that only widgets that have a .wgt file extension will be deployed automatically.</p>
+<h1 id="removing-widgets">Removing widgets</h1>
+<p>To remove a widget, from the admin page click "Remove widget from system". This will show a list of all widgets currently deployed with
+a link to delete widgets.</p>
+<p>Note that deleting a widget also deletes all instances and data associated with the widget by all users.</p>
+<h1 id="widget-services-categories">Widget services (categories)</h1>
+<p>Services are deprecated.</p>
+<h1 id="whitelist-and-access-policies">Whitelist and Access Policies</h1>
+<p>When a Widget tries to access a third-party website or service, this is usually prevented by the browser's
+ same-origin policy. This is to prevent cross-site scripting hacks and unauthorized sharing of personal data. 
+However, there are many instances where a Widget may legitimately want to make a call to a third party service
+ or site using AJAX, and to support this Wookie provides a server-side proxy that the Widget can use to 
+tunnel requests through Wookie. </p>
+<p>To use the proxy, the widget author simply needs to call "widget.proxify(myurl)" to change their service URL to one that makes use of the proxy. However, Wookie will not make the HTTP request to take place unless the requested URL is permitted using either the global whitelist or by an enabled Widget Access Request Policy.</p>
+<h2 id="global-whitelist">Global Whitelist</h2>
+<p>The global whitelist is accessed from the White list section of the Administrator Menu page. From here you can view the white list, and add and remove entries. Each whitelist entry allows ANY widget to invoke the URL you've added.</p>
+<h2 id="widget-access-request-policies">Widget Access Request Policies</h2>
+<p>Widget Access Request Policies (also known as W3C WARP; see <a href="http://www.w3.org/TR/widgets-access/">http://www.w3.org/TR/widgets-access/</a>) is a W3C specification that allows Widgets to specify origins they wish to access in the Widget's config.xml file.</p>
+<p>When you add a Widget to Wookie, any <code>&lt;access&gt;</code> elements are turned into access policies that can be viewed in the Admininstrator interface.</p>
+<p>To manage WARPs, go to the White list section of the Administrator Menu page, and select Manage widget access request policies. From this page you can view a table of policies that have been created; the format of the table is (from left to right): the name of the widget the policy applies to, the origin to allow, and whether the policy is granted or not granted. Finally, there is a button to toggle the state of the policy.</p>
+<p>By default, Wookie automatically grants WARPs when installing a new Widget, and notifies the Administrator with a message in the Admin interface and in the Wookie log file.</p>
+<h1 id="server-configuration">Server configuration</h1>
+<h2 id="user-management">User management</h2>
+<p>The Wookie server comes with a built-in user called "java" linked to the "widgetadmin" role. These are defined in the roles.properties and users.properties files located in WEB-INF/classes. These can be removed in a standard application server environment, and another user added to "widgetadmin" role, for example in tomcat-users.xml in a Tomcat installation.</p>
+<p>Login configuration settings can be found in the web.xml file located in wookie/WEB-INF.</p>
+<h2 id="integration-with-shindig">Integration with Shindig</h2>
+<p>See <a href="/wookie/docs/shindig.html">Integrating Wookie With Shindig</a></p>
+<h2 id="proxy-configuration">Proxy configuration</h2>
+<p>In order for widgets running in Wookie to communicate with external web services using Ajax, requests must be redirected through a server-side proxy. The proxy configuration is located in WEB-INF/classes/widgetserver.properties.</p>
+<p>The following parameters can be set:</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">usewhitelist</span><span class="o">=</span><span class="n">true</span><span class="o">|</span><span class="n">false</span>
+</pre></div>
+
+
+<p>Set this to true to enable a whitelist; this only works with the Wookie built-in proxy service.</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">checkdomain</span><span class="o">=</span><span class="n">false</span><span class="o">|</span><span class="n">true</span>
+</pre></div>
+
+
+<p>If this is set to true, the Wookie built-in proxy will only handle requests where the requesting domain is the same as the proxy server domain.</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">scheme</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">hostname</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">port</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">path</span><span class="o">=</span>
+</pre></div>
+
+
+<p>These allow you to set a custom proxy server location. To use the Wookie built-in proxy service, you only need to set widget.proxy.path=/wookie/proxy. To use instead the proxy service bundled with Apache Shindig, you need to set widget.proxy.path=/gadgets/proxy</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">username</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">password</span><span class="o">=</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">usentlmauthentication</span><span class="o">=</span><span class="n">false</span><span class="o">|</span><span class="n">true</span>
+</pre></div>
+
+
+<p>Use these settings to configure access control for the proxy. By default no authentication is set.</p>
+<h1 id="mail-setup">Mail setup</h1>
+<p>Wookie enables users to request API keys for their applications; these are then sent to their email address. The email service is configured as follows:</p>
+<div class="codehilite"><pre><span class="n">widget</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">server</span><span class="o">=</span><span class="n">your_mail_server</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">port</span><span class="o">=</span><span class="mi">25</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">username</span><span class="o">=</span><span class="n">username</span>
+<span class="n">widget</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">password</span><span class="o">=</span><span class="n">password</span>
+</pre></div>
+
+
+<p>Username and password are optional. You can use localhost if your server is set up to send email, e.g. using PostFix.</p>
+<h1 id="virtual-host-configuration">Virtual host configuration</h1>
+<p>See <a href="/wookie/docs/developer/running.html">Running Wookie</a></p>
+  </div>
+
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011-2012 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+
+</body>
+</html>

Added: websites/staging/wookie/trunk/content/docs/api.html
==============================================================================
--- websites/staging/wookie/trunk/content/docs/api.html (added)
+++ websites/staging/wookie/trunk/content/docs/api.html Tue Nov 27 09:54:44 2012
@@ -0,0 +1,392 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/wookie/css/wookie.css" rel="stylesheet" type="text/css">
+  <link href="/wookie/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache Wookie (Incubating) - API Reference</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="banner">
+    <img alt="Apache Wookie (Incubating)" src="/wookie/images/logo.png"/>
+    <h1 class="title">API Reference</h1>
+  </div>
+  
+  <div id="navigation">
+  <h1 id="general">General</h1>
+<ul>
+<li><a href="/wookie/index.html">Home</a></li>
+<li><a href="/wookie/news.html">News</a></li>
+<li><a href="/wookie/docs/download.html">Download</a></li>
+<li><a href="http://incubator.apache.org/projects/wookie.html">Incubator page</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+</ul>
+<h1 id="documentation">Documentation</h1>
+<ul>
+<li><a href="/wookie/docs/download.html">Download and Quickstart</a></li>
+<li><a href="/wookie/docs/admin.html">Server Admin</a></li>
+<li><a href="/wookie/docs/embedding.html">Embedding</a></li>
+<li><a href="/wookie/docs/shindig.html">Integrating with Shindig</a></li>
+<li><a href="/wookie/docs/widgets.html">Building widgets</a></li>
+<li><a href="/wookie/docs/faq.html">FAQ</a></li>
+<li><a href="/wookie/docs/api.html">API Reference</a></li>
+</ul>
+<h1 id="community">Community</h1>
+<ul>
+<li><a href="/wookie/get-involved.html">Get Involved</a></li>
+<li><a href="/wookie/mailing-lists.html">Mailing Lists</a></li>
+<li><a href="/wookie/people.html">People</a></li>
+</ul>
+<h1 id="development">Development</h1>
+<ul>
+<li><a href="/wookie/docs/source.html">Getting Started</a></li>
+<li><a href="/wookie/docs/developer/running.html">Running</a></li>
+<li><a href="/wookie/docs/templates.html">Widget Templates</a></li>
+<li><a href="/wookie/docs/developer/features.html">Extension Features</a></li>
+<li><a href="/wookie/docs/developer/widgets.html">Deploying Widgets</a></li>
+<li><a href="/wookie/docs/develop.html">Environment</a></li>
+<li><a href="/wookie/docs/developer/release-management.html">Release Management</a></li>
+<li><a href="/wookie/docs/developer/issues.html">Issue Tracker</a></li>
+<li><a href="/wookie/docs/developer/index.html">Management</a></li>
+<li><a href="/wookie/docs/developer/parser.html">W3C Widget Parser</a></li>
+</ul>
+<h1 id="asf">ASF</h1>
+<ul>
+<li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+<li><a href="http://www.apache.org/security/">Security</a></li>
+</ul>
+  </div>
+
+  <div id="content">
+    <p>This is the documentation for Wookie 0.10 and later. For the API for earlier versions of Wookie, see the <a href="/wookie/docs/api_9.html">0.9.x API Reference</a>.</p>
+<h2 id="authentication">Authentication</h2>
+<h3 id="api-keys">API keys</h3>
+<p>Some methods require the requesting application to have a valid API key issued by the Wookie server administrator.</p>
+<h3 id="http-basic-authentication">HTTP Basic Authentication</h3>
+<p>By default the Admin REST API is secured using the Admin security restrictions defined in web.xml. This means that typically the client needs to have authenticated with the server using the admin user credentials.</p>
+<h2 id="response-formats">Response formats</h2>
+<p>Clients may request a response in either XML or JSON by setting the appropriate request content type using the Accepts header. If it is not possible to specify a content type in the request, clients may use the optional "format" parameter to specify a content type override.</p>
+<p><em>Note that as of Wookie 0.10.0 not all APIs have yet been updated to supply JSON responses.</em></p>
+<h1 id="widget-instances">Widget Instances</h1>
+<p>The Widget Instances API is used to request an instance of a Widget for a particular viewer in a particular context.</p>
+<p>An instance is identified using a combination of the following parameters:</p>
+<ul>
+<li>api_key: The key issued to a particular application</li>
+<li>shareddatakey: The key generated by an application representing a specific context (e.g. a page, post, section, group or other identified context)</li>
+<li>userid: An identifier (typically a hash rather than a real user Id) issued by an application representing the current viewer of the widget instance</li>
+<li>widgetid: The URI of the widget this is an instance of</li>
+<li>locale: The preferred locale of the widget, expressed using a BCP47 Language Tag</li>
+</ul>
+<p>An instance is represented in XML as follows:</p>
+<div class="codehilite"><pre>  <span class="nt">&lt;widgetdata&gt;</span>  
+        <span class="nt">&lt;url&gt;</span>URL TO ACCESS WIDGET<span class="nt">&lt;/url&gt;</span>
+        <span class="nt">&lt;identifier&gt;</span>IH6rjs75tkb6I.pl.k0hUq7YdnFcjw.eq.<span class="nt">&lt;/identifier&gt;</span>
+        <span class="nt">&lt;title&gt;</span>Weather<span class="nt">&lt;/title&gt;</span> 
+        <span class="nt">&lt;height&gt;</span>125<span class="nt">&lt;/height&gt;</span> 
+        <span class="nt">&lt;width&gt;</span>125<span class="nt">&lt;/width&gt;</span> 
+  <span class="nt">&lt;/widgetdata&gt;</span>
+</pre></div>
+
+
+<table border="1">
+<tr>
+  <th>Request</th>
+   <th>Description</th>
+   <th>Authentication</th>
+</tr>
+
+<tr>
+ <td>GET {wookie}/widgetinstances/{instance id_key}</td>
+ <td>Returns the representation of a widget instance.  If the widget instance was not created using the provided api_key, then a 403 Forbidden status code will be returned. If no widget instance is found, a 404 Not Found status code will be returned. .</td>
+ <td>API key</td>
+</tr>
+
+<tr>
+ <td>GET {wookie}/widgetinstances/ {params:instance_params}</td>
+ <td>Returns the representation of a widget instance.  If the widget instance was not created using the provided api_key, then a 403 Forbidden status code will be returned. If no widget instance is found, a 404 Not Found status code will be returned. .</td>
+ <td>API key</td>
+</tr>
+
+<tr>
+ <td>POST {wookie}/widgetinstances {params:instance_params}</td>
+<td>
+Create a new widget instance using the given parameters. If a new widget instance is succesfully created, a status code of 201 is returned along with the widget instance represented in XML. 
+
+If an instance already exists for the given parameters, this method will return a status code of 200 along with the existing instance (this is intended to support legacy clients). Note this is DEPRECATED behaviour, and future versions of the API may simply return an error code. 
+</td>
+ <td>API key</td>
+</tr>
+
+<tr>
+  <td>PUT {wookie}/widgetinstances {params:instance_params, action, [cloneshareddatakey]}</td>
+   <td>Either stop, resume, or clone an instance, depending on the content of the action parameter. If the action is "clone", a shared data key for the clone must be provided using the "cloneshareddatakey" parameter.</td>
+ <td>API key</td>
+</tr>
+</table>
+
+<h1 id="widgets">Widgets</h1>
+<p>The Widgets API is used to get the list of available widgets, information about a specific widget. For administrators, this API is also used to manage widgets, including installing, updating and deleting.</p>
+<p>A Widget is represented in XML using an abbreviated form of the W3C Widgets packaging format:</p>
+<div class="codehilite"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
+<span class="nt">&lt;widgets&gt;</span>
+    <span class="nt">&lt;widget</span> <span class="na">id=</span><span class="s">&quot;http://wookie.apache.org/widgets/geo&quot;</span> <span class="na">width=</span><span class="s">&quot;620&quot;</span> <span class="na">height=</span><span class="s">&quot;660&quot;</span> <span class="na">version=</span><span class="s">&quot;0.1&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;name</span> <span class="na">short=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;</span>geo<span class="nt">&lt;/title&gt;</span>
+        <span class="nt">&lt;description&gt;</span>An example of a HTML 5 geolocation widget.<span class="nt">&lt;/description&gt;</span>
+        <span class="nt">&lt;icon</span> <span class="na">src=</span><span class="s">&quot;http://localhost:8080/wookie/wservices/wookie.apache.org/widgets/geo/icon.svg&quot;</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;author&gt;</span>Apache Wookie (Incubating) Team<span class="nt">&lt;/author&gt;</span>
+    <span class="nt">&lt;/widget&gt;</span>
+<span class="nt">&lt;/widgets&gt;</span>
+</pre></div>
+
+
+<p>The "id" attribute is used in other API requests.</p>
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+  <th>Authentication</th>
+</tr>
+<tr>
+<td > GET {wookie}/widgets{?locale=<em>language_tag</em>} </td>
+<td > Returns an XML representation of the set of available widgets. Note that this does not require an API key. 
+ If a locale is specified, the returned information is localized, for example widget titles, descriptions, license information will be in the specified language where available. 
+</td>
+<td>Not required</td>
+</tr>
+<tr>
+<td > GET {wookie}/widgets/{id} {?locale=<em>language_tag</em>}</td>
+<td > Returns an XML representation of the widget with the specified <em>id</em>. Note that in the current release this is the actual database key; future releases should implement this using the widget URI as the <em>id</em>. If a locale is specified, the returned information is localized, for example widget titles, descriptions, license information will be in the specified language where available.</td>
+<td>Not Required</td>
+</tr>
+<tr>
+<TD> POST {wookie}/widgets {file} </TD>
+<TD> Adds a widget to the server. The method echoes the widget metadata in the response.</TD>
+<td>Admin credentials</td>
+</tr>
+<tr>
+<TD> PUT {wookie}/widgets/{id} {file} </TD>
+<TD> Updates the specified widget on the server. </TD>
+<td>Admin credentials</td>
+</tr>
+<tr>
+<TD> DELETE {wookie}/widgets/{id} </TD>
+<TD> Deletes the specified widget on the server **and any related instances and their data**.</TD>
+<td>Admin credentials</td>
+</tr>
+</tbody></table>
+
+<h1 id="participants">Participants</h1>
+<p>A Participant consists of a <em>participant_display_name</em>, <em>participant_id</em>, and <em>participant_thumbnail_url</em>. Participants are always defined in relation to a specific Widget Instance; requests affecting one Participant have no effect on Participants associated with other Widget Instances.</p>
+<p>Participants are represented in XML as a &lt;participants&gt; document, containing a &lt;participant&gt; element for each participant, with the attributes:</p>
+<ul>
+<li>id: the participant id (not to be confused with Wookie's internal id of a participant)</li>
+<li>display_name: the participant display name</li>
+<li>thumbnail_url: the url of the thumbnail image for the participant</li>
+</ul>
+<p>For example:</p>
+<p><em>GET http://localhost:8080/wookie/participants?id_key=j5GGdhIQViNCRTWg5wnSrccDaks.eq.&amp;api_key=TEST</em></p>
+<div class="codehilite"><pre><span class="nt">&lt;participants&gt;</span>
+  <span class="nt">&lt;participant</span> <span class="na">id=</span><span class="s">&quot;testuser&quot;</span> <span class="na">display_name=</span><span class="s">&quot;First Test User&quot;</span> <span class="na">thumbnail_url=</span><span class="s">&quot;&quot;</span><span class="nt">/&gt;</span>
+  <span class="nt">&lt;participant</span> <span class="na">id=</span><span class="s">&quot;testuser2&quot;</span> <span class="na">display_name=</span><span class="s">&quot;Second Test User&quot;</span> <span class="na">thumbnail_url=</span><span class="s">&quot;&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/participants&gt;</span>
+</pre></div>
+
+
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+  <th>Authentication</th>
+</tr>
+<tr>
+<td >GET    {wookie}/participants {params: <em>instance_params</em>}</td>
+<td > Returns an XML representation of the Participants associated with the Widget instance specified by {instance params}.</td>
+<td>API key</td>
+</tr>
+<tr>
+<td >GET    {wookie}/participants {params:id_key, api_key}</td>
+<td >Returns an XML representation of the Participants associated with the Widget instance specified by {id_key}.</td>
+<td>API key</td>
+</tr>
+<tr>
+<td >POST {wookie}participants {params: <em>instance_params</em>, participant_id, participant_display_name, participant_thumbnail_url}</td>
+<td >Adds a participant to the specified Widget Instance. If successful, a HTTP status code of 201 is returned. If there is already a participant that matches {participant params} for the instance, a HTTP status code of 200 is returned.</td>
+<td>API key</td>
+</tr>
+<tr>
+<td >DELETE {wookie}/participants {params: <em>instance_params</em>, participant_id}</td>
+<td >Deletes the specified Participant from the specified Widget Instance.</td>
+<td>API key</td>
+</tr>
+</tbody></table>
+
+<h1 id="properties">Properties</h1>
+<p>The Properties API contains methods for both Preferences (properties affecting a single Widget Instance) and Shared Data (properties affecting sibling Widgets).</p>
+<p>A property consists of a <em>propertyname</em> and <em>propertyvalue</em>.</p>
+<p>Example:</p>
+<p>GET http://localhost:8080/wookie/properties?id_key=AoK9uakcv4M.pl.jRTcgQs3x4D0jrs.eq.&amp;api_key=TEST&amp;propertyname=city</p>
+<div class="codehilite"><pre><span class="n">manchester</span>
+</pre></div>
+
+
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+  <th>Authentication</th>
+</tr>
+<tr>
+<td >GET    {wookie}/properties {params: <em>instance_params</em>, propertyname}</td>
+<td >Returns the value of the specified property for the specified instance.</td>
+<td>API key</td>
+</tr>
+<tr>
+<td >POST {wookie}/properties {params: <em>instance_params</em>, propertyname, propertyvalue, [is_public=true]}</td>
+<td >Sets a property for the specified instance. If is_public=true is set, the property set is a Shared Data entry; otherwise it is a Preference.</td>
+<td>API key</td>
+</tr>
+<tr>
+<td >PUT    {wookie}/properties {params: <em>instance_params</em>, propertyname, propertyvalue}</td>
+<td >Updates the value of the specified property of the specified Widget Instance.</td>
+<td>API key</td>
+</tr>
+<tr>
+<td >DELETE {wookie}/properties {params: <em>instance_params</em>, propertyname}</td>
+<td >Deletes a property. This method returns a 404 status code if there is no matching property. </td>
+<td>API key</td>
+</tr>
+</tbody></table>
+
+<h2 id="api-keys_1">API Keys</h2>
+<p>This API is used to manage API Keys for applications accessing Wookie.</p>
+<div class="codehilite"><pre><span class="nt">&lt;keys&gt;</span>
+  <span class="nt">&lt;key</span> <span class="na">id=</span><span class="s">&quot;401&quot;</span> <span class="na">value=</span><span class="s">&quot;TEST&quot;</span> <span class="na">email=</span><span class="s">&quot;test@127.0.0.1&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/keys&gt;</span>
+</pre></div>
+
+
+<p><TABLE border="1"><TBODY>
+<TR>
+<TH>Request</TH>
+<TH>Description</TH>
+  <th>Authentication</th>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/keys </TD>
+<TD> Returns all API keys. </TD>
+<td>Admin credentials</td>
+</TR>
+<TR></p>
+<p><TD> POST {wookie}/keys/  {param:apikey, email} </TD></p>
+<p><TD> Creates a new API key with the details provided</TD>
+<td>Admin credentials</td>
+</TR>
+<TR></p>
+<p><TD> PUT {wookie}/keys/{id}  {param: apikey, email} </TD>
+<TD><strong>NOT YET IMPLEMENTED</strong>. Updates the API Key specified by <EM>id</EM>./TD&gt;
+<td>Admin credentials</td>
+</TR>
+<TR></p>
+<p><TD> DELETE {wookie}/keys/{id} </TD></p>
+<p><TD> Deletes the API key specified by <EM>id</EM></TD>
+<td>Admin credentials</td>
+</TR>
+</TBODY></TABLE></p>
+<h2 id="policies">Policies</h2>
+<p>This API is used to manage access policies for the server-side proxy. Note that policy strings should conform to the <em>scope origin directive</em> format as described in the <code>policies</code> file.</p>
+<p>Example:</p>
+<p>GET http://localhost:8080/wookie/policies</p>
+<div class="codehilite"><pre><span class="nt">&lt;policies&gt;</span>
+<span class="nt">&lt;policy</span> <span class="na">scope=</span><span class="s">&quot;http://wookie.apache.org/widgets/freeder&quot;</span> <span class="na">origin=</span><span class="s">&quot;*&quot;</span> <span class="na">directive=</span><span class="s">&quot;ALLOW&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;policy</span> <span class="na">scope=</span><span class="s">&quot;http://www.getwookie.org/widgets/weather&quot;</span> <span class="na">origin=</span><span class="s">&quot;http://newsrss.bbc.co.uk:80&quot;</span> <span class="na">directive=</span><span class="s">&quot;ALLOW&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;policy</span> <span class="na">scope=</span><span class="s">&quot;*&quot;</span> <span class="na">origin=</span><span class="s">&quot;http://127.0.0.1&quot;</span> <span class="na">directive=</span><span class="s">&quot;ALLOW&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;policy</span> <span class="na">scope=</span><span class="s">&quot;*&quot;</span> <span class="na">origin=</span><span class="s">&quot;http://localhost:8080&quot;</span> <span class="na">directive=</span><span class="s">&quot;ALLOW&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;policy</span> <span class="na">scope=</span><span class="s">&quot;*&quot;</span> <span class="na">origin=</span><span class="s">&quot;http://*.apache.org&quot;</span> <span class="na">directive=</span><span class="s">&quot;ALLOW&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/policies&gt;</span>
+</pre></div>
+
+
+<p><TABLE border="1"><TBODY>
+<TR>
+<TH>Request</TH>
+<TH>Description</TH>
+  <th>Authentication</th>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/policies </TD></p>
+<p><TD> Returns all policies.</TD>
+<td>Admin credentials</td>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/policies/{scope} </TD></p>
+<p><TD> Returns policies matching the specified scope (e.g. a URL-encoded Widget URI).</TD>
+<td>Admin credentials</td>
+</TR>
+<TR></p>
+<p><TD> POST {wookie}/policies/</TD></p>
+<p><TD> Creates a new policy using a policy string supplied in the body of the POST message. </TD>
+<td>Admin credentials</td>
+</TR>
+<TR></p>
+<p><TD> DELETE {wookie}/policies/{policy} </TD></p>
+<p><TD> Deletes the policy specified by <EM>policy</EM> which should be a URL-encoded policy string.</TD>
+<td>Admin credentials</td>
+</TR>
+</TBODY></TABLE></p>
+<h1 id="flatpack-unstable">Flatpack (unstable)</h1>
+<p>The Flatpack API contains methods for exporting a Widget Instance as a new Widget package (.wgt file) that can be downloaded by a client.</p>
+<p>This can be used, for example, for a plugin to support users exporting the widget (including any preferences they have set) for side-loading onto a mobile device or running in a desktop environment like Opera Widgets.</p>
+<p><strong>Note</strong> this is new functionality, and has a number of limitations (for example, Widgets using features like Wave won't export properly). For this reason this API is flagged as unstable and may change in future releases.
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+  <th>Authentication</th>
+</tr>
+<tr>
+<td >GET    {wookie}/flatpack/{package_id}.wgt</td>
+<td >Downloads the specified widget package.</td>
+<td>Not required</td>
+</tr>
+<tr>
+<td >POST {wookie}/flatpack {params: <em>instance_params</em></td>
+<td >creates a new W3C Widget package (.wgt) with an opaque file name for the specified widget instance, and returns the download URL. </td>
+<td>API key</td>
+</tr>
+</tbody></table></p>
+  </div>
+
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011-2012 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+
+</body>
+</html>

Added: websites/staging/wookie/trunk/content/docs/api_9.html
==============================================================================
--- websites/staging/wookie/trunk/content/docs/api_9.html (added)
+++ websites/staging/wookie/trunk/content/docs/api_9.html Tue Nov 27 09:54:44 2012
@@ -0,0 +1,424 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE- 2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+  <link href="/wookie/css/wookie.css" rel="stylesheet" type="text/css">
+  <link href="/wookie/css/code.css" rel="stylesheet" type="text/css">
+  <title>Apache Wookie (Incubating) - Wookie API Reference (version 0.9.x)</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+  <div id="banner">
+    <img alt="Apache Wookie (Incubating)" src="/wookie/images/logo.png"/>
+    <h1 class="title">Wookie API Reference (version 0.9.x)</h1>
+  </div>
+  
+  <div id="navigation">
+  <h1 id="general">General</h1>
+<ul>
+<li><a href="/wookie/index.html">Home</a></li>
+<li><a href="/wookie/news.html">News</a></li>
+<li><a href="/wookie/docs/download.html">Download</a></li>
+<li><a href="http://incubator.apache.org/projects/wookie.html">Incubator page</a></li>
+<li><a href="http://www.apache.org/licenses/LICENSE-2.0">License</a></li>
+</ul>
+<h1 id="documentation">Documentation</h1>
+<ul>
+<li><a href="/wookie/docs/download.html">Download and Quickstart</a></li>
+<li><a href="/wookie/docs/admin.html">Server Admin</a></li>
+<li><a href="/wookie/docs/embedding.html">Embedding</a></li>
+<li><a href="/wookie/docs/shindig.html">Integrating with Shindig</a></li>
+<li><a href="/wookie/docs/widgets.html">Building widgets</a></li>
+<li><a href="/wookie/docs/faq.html">FAQ</a></li>
+<li><a href="/wookie/docs/api.html">API Reference</a></li>
+</ul>
+<h1 id="community">Community</h1>
+<ul>
+<li><a href="/wookie/get-involved.html">Get Involved</a></li>
+<li><a href="/wookie/mailing-lists.html">Mailing Lists</a></li>
+<li><a href="/wookie/people.html">People</a></li>
+</ul>
+<h1 id="development">Development</h1>
+<ul>
+<li><a href="/wookie/docs/source.html">Getting Started</a></li>
+<li><a href="/wookie/docs/developer/running.html">Running</a></li>
+<li><a href="/wookie/docs/templates.html">Widget Templates</a></li>
+<li><a href="/wookie/docs/developer/features.html">Extension Features</a></li>
+<li><a href="/wookie/docs/developer/widgets.html">Deploying Widgets</a></li>
+<li><a href="/wookie/docs/develop.html">Environment</a></li>
+<li><a href="/wookie/docs/developer/release-management.html">Release Management</a></li>
+<li><a href="/wookie/docs/developer/issues.html">Issue Tracker</a></li>
+<li><a href="/wookie/docs/developer/index.html">Management</a></li>
+<li><a href="/wookie/docs/developer/parser.html">W3C Widget Parser</a></li>
+</ul>
+<h1 id="asf">ASF</h1>
+<ul>
+<li><a href="http://www.apache.org">Apache Software Foundation</a></li>
+<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+<li><a href="http://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
+<li><a href="http://www.apache.org/security/">Security</a></li>
+</ul>
+  </div>
+
+  <div id="content">
+    <p>This is the API reference for Wookie 0.9.0 to 0.9.2. For later versions of Wookie, see the <a href="/wookie/docs/api.html">current API docs</a></p>
+<h1 id="api-key">API key</h1>
+<p>Note that except where noted, all methods require the requesting application to have a valid API key issued by the Wookie server administrator.</p>
+<h1 id="widget-instances-from-090">Widget Instances (from 0.9.0)</h1>
+<p>An instance is identified using a combination of the following parameters:</p>
+<ul>
+<li>api_key: The key issued to a particular application</li>
+<li>shareddatakey: The key generated by an application representing a specific context (e.g. a page, post, section, group or other identified context)</li>
+<li>userid: An identifier (typically a hash rather than a real user Id) issued by an application representing the current viewer of the widget instance</li>
+<li>widgetid: The URI of the widget this is an instance of (optional, see servicetype below)</li>
+<li>servicetype: Where an individual widget is not requested by URI as above, this parameter should contain the category of widget to be instantiated, e.g. "chat"</li>
+<li>locale: The preferred locale of the widget, expressed using a BCP47 Language Tag</li>
+</ul>
+<h2 id="representation">Representation</h2>
+<p>An instance is represented in XML as follows:</p>
+<div class="codehilite"><pre>  <span class="nt">&lt;widgetdata&gt;</span>  
+        <span class="nt">&lt;url&gt;</span>URL TO ACCESS WIDGET<span class="nt">&lt;/url&gt;</span>
+        <span class="nt">&lt;identifier&gt;</span>IH6rjs75tkb6I.pl.k0hUq7YdnFcjw.eq.<span class="nt">&lt;/identifier&gt;</span>
+        <span class="nt">&lt;title&gt;</span>Weather<span class="nt">&lt;/title&gt;</span> 
+        <span class="nt">&lt;height&gt;</span>125<span class="nt">&lt;/height&gt;</span> 
+        <span class="nt">&lt;width&gt;</span>125<span class="nt">&lt;/width&gt;</span> 
+  <span class="nt">&lt;/widgetdata&gt;</span>
+</pre></div>
+
+
+<table border="1">
+<tr>
+  <th>Request</th>
+   <th>Description</th>
+</tr>
+
+<tr>
+ <td>GET {wookie}/widgetinstances</td>
+ <td>Not supported.</td>
+</tr>
+
+<tr>
+ <td>GET {wookie}/widgetinstances/{instance id_key}</td>
+ <td>Returns the representation of a widget instance.  If the widget instance was not created using the provided api_key, then a 403 Forbidden status code will be returned. If no widget instance is found, a 404 Not Found status code will be returned. .</td>
+</tr>
+
+<tr>
+ <td>GET {wookie}/widgetinstances/ {params:instance_params}</td>
+ <td>Returns the representation of a widget instance.  If the widget instance was not created using the provided api_key, then a 403 Forbidden status code will be returned. If no widget instance is found, a 404 Not Found status code will be returned. .</td>
+</tr>
+
+<tr>
+ <td>POST {wookie}/widgetinstances {params:instance_params}</td>
+<td>
+Create a new widget instance using the given parameters. If a new widget instance is succesfully created, a status code of 201 is returned along with the widget instance represented in XML. 
+
+If an instance already exists for the given parameters, this method will return a status code of 200 along with the existing instance (this is intended to support legacy clients). 
+</td>
+</tr>
+
+<tr>
+  <td>PUT {wookie}/widgetinstances {params:instance_params, action, [cloneshareddatakey]}</td>
+   <td>Either stop, resume, or clone an instance, depending on the content of the action parameter. If the action is "clone", a shared data key for the clone must be provided using the "cloneshareddatakey" parameter.</td>
+</tr>
+</table>
+
+<h1 id="widgets-from-090">Widgets (from 0.9.0)</h1>
+<h2 id="representation_1">Representation</h2>
+<p>A Widget is currently represented in XML using an abbreviated form of the W3C Widgets packaging format:</p>
+<div class="codehilite"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
+<span class="nt">&lt;widgets&gt;</span>
+    <span class="nt">&lt;widget</span> <span class="na">id=</span><span class="s">&quot;7&quot;</span> <span class="na">identifier=</span><span class="s">&quot;http://wookie.apache.org/widgets/geo&quot;</span> <span class="na">width=</span><span class="s">&quot;620&quot;</span> <span class="na">height=</span><span class="s">&quot;660&quot;</span> <span class="na">version=</span><span class="s">&quot;0.1&quot;</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;title</span>  <span class="na">short=</span><span class="s">&quot;&quot;</span><span class="nt">&gt;</span>geo<span class="nt">&lt;/title&gt;</span>
+        <span class="nt">&lt;description&gt;</span>An example of a HTML 5 geolocation widget.<span class="nt">&lt;/description&gt;</span>
+        <span class="nt">&lt;icon&gt;</span>http://localhost:8080/wookie/wservices/wookie.apache.org/widgets/geo/icon.svg<span class="nt">&lt;/icon&gt;</span>
+        <span class="nt">&lt;author&gt;</span>Apache Wookie (Incubating) Team<span class="nt">&lt;/author&gt;</span>
+    <span class="nt">&lt;/widget&gt;</span>
+<span class="nt">&lt;/widgets&gt;</span>
+</pre></div>
+
+
+<p><strong>Note</strong> the "id" attribute is a Wookie-specific identifier that should be used as the URL parameter for REST API methods; in the above example, requests relating to this widget would
+be addressed to /widgets/7. The "identifier" attribute corresponds to the W3C WIdgets "identifier" attribute, and contains the URI of the Widget,</p>
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+</tr>
+<tr>
+<td > GET {wookie}/widgets{?all=true, locale=<em>language_tag</em>} </td>
+<td > Returns an XML representation of the set of available widgets. Note that this does not require an API key. 
+ If a locale is specified, the returned information is localized, for example widget titles, descriptions, license information will be in the specified language where available.
+
+(Note: For versions before 0.10.0, if the "all=true" parameter is omitted, the list only contains the default widgets for defined service types. This parameter is ignored from 0.10.0 onwards)
+</td>
+</tr>
+<tr>
+<td > GET {wookie}/widgets/{service_name} {?locale=<em>language_tag</em>} </td>
+<td > Returns an XML representation of the set of widgets matching the service (category) specified. (Deprecated: Removed from 0.10 onwards) </td>
+</tr>
+<tr>
+<td > GET {wookie}/widgets/{id} {?locale=<em>language_tag</em>}</td>
+<td > Returns an XML representation of the widget with the specified <em>id</em>. Note that in the current release this is the actual database key; future releases should implement this using the widget URI as the <em>id</em>. If a locale is specified, the returned information is localized, for example widget titles, descriptions, license information will be in the specified language where available.</td>
+</tr>
+<tr>
+<TD> POST {wookie}/widgets {file} </TD>
+<TD> Posts a widget file to the server; this is identical in behaviour to dropping a &quot;.wgt&quot; file into the Wookie deploy folder. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication</TD>
+</tr>
+</tbody></table>
+
+<h1 id="participants-from-090">Participants (from 0.9.0)</h1>
+<p>A Participant consists of a <em>participant_display_name</em>, <em>participant_id</em>, and <em>participant_thumbnail_url</em>. Participants are always defined in relation to a specific Widget Instance; requests affecting one Participant have no effect on Participants associated with other Widget Instances.</p>
+<h2 id="representation_2">Representation</h2>
+<p>Participants are represented in XML as a &lt;participants&gt; document, containing a &lt;participant&gt; element for each participant, with the attributes:</p>
+<ul>
+<li>id: the participant id (not to be confused with Wookie's internal id of a participant)</li></li>
+<li>display_name: the participant display name</li></li>
+<li>thumbnail_url: the url of the thumbnail image for the participant</li></li>
+</ul>
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+</tr>
+<tr>
+<td >GET    {wookie}/participants </td>
+<td > Not supported.</td>
+</tr>
+<tr>
+<td >GET    {wookie}/participants {params: <em>instance_params</em>}</td>
+<td > Returns an XML representation of the Participants associated with the Widget instance specified by {instance params}.</td>
+</tr>
+<tr>
+<td >GET    {wookie}/participants {params:id_key, api_key}</td>
+<td >Returns an XML representation of the Participants associated with the Widget instance specified by {id_key}.</td>
+</tr>
+<tr>
+<td >POST {wookie}participants {params: <em>instance_params</em>, participant_id, participant_display_name, participant_thumbnail_url}</td>
+<td >Adds a participant to the specified Widget Instance. If successful, a HTTP status code of 201 is returned. If there is already a participant that matches {participant params} for the instance, a HTTP status code of 200 is returned.</td>
+</tr>
+<tr>
+<td >DELETE {wookie}/participants {params: <em>instance_params</em>, participant_id}</td>
+<td >Deletes the specified Participant from the specified Widget Instance.</td>
+</tr>
+</tbody></table>
+
+<h1 id="properties-from-090">Properties (from 0.9.0)</h1>
+<p>The Properties API contains methods for both Preferences (properties affecting a single Widget Instance) and Shared Data (properties affecting sibling Widgets).</p>
+<p>A property consists of a <em>propertyname</em> and <em>propertyvalue</em>.</p>
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+</tr>
+<tr>
+<td >GET {wookie}/properties</td>
+<td >Not supported.</td>
+</tr>
+<tr>
+<td >GET    {wookie}/properties {params: <em>instance_params</em>, propertyname}</td>
+<td >Returns the value of the specified property for the specified instance.</td>
+</tr>
+<tr>
+<td >POST {wookie}/properties {params: <em>instance_params</em>, propertyname, propertyvalue, [is_public=true]}</td>
+<td >Sets a property for the specified instance. If is_public=true is set, the property set is a Shared Data entry; otherwise it is a Preference.</td>
+</tr>
+<tr>
+<td >PUT    {wookie}/properties {params: <em>instance_params</em>, propertyname, propertyvalue}</td>
+<td >Updates the value of the specified property of the specified Widget Instance.</td>
+</tr>
+<tr>
+<td >DELETE {wookie}/properties {params: <em>instance_params</em>, propertyname}</td>
+<td >Deletes a property. This method returns a 404 status code if there is no matching property. </td>
+</tr>
+</tbody></table>
+
+<h1 id="flatpack-from-091">Flatpack (from 0.9.1)</h1>
+<p>The Flatpack API contains methods for exporting a Widget Instance as a new Widget package (.wgt file) that can be downloaded by a client.</p>
+<p>This can be used, for example, for a plugin to support users exporting the widget (including any preferences they have set) for side-loading onto a mobile device or running in a desktop environment like Opera Widgets.</p>
+<p><strong>Note</strong> this is new functionality only available in latest builds, and has a number of limitations (for example, Widgets using features like Wave won't export properly).
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+</tr>
+<tr>
+<td >GET {wookie}/flatpack</td>
+<td >Not supported.</td>
+</tr>
+<tr>
+<td >GET    {wookie}/flatpack/{package_id}.wgt</td>
+<td >Downloads the specified widget package.</td>
+</tr>
+<tr>
+<td >POST {wookie}/flatpack {params: <em>instance_params</em></td>
+<td >creates a new W3C Widget package (.wgt) with an opaque file name for the specified widget instance, and returns the download URL. </td>
+</tr>
+</tbody></table></p>
+<h1 id="administration-functions">Administration Functions</h1>
+<p>The following sections describe the API invoked by admin clients for managing the Wookie server, e.g. for managing whitelist entries or widget access policies.</p>
+<h2 id="authentication">Authentication</h2>
+<p>By default the Admin REST API is secured using the Admin security restrictions defined in web.xml. This means that typically the client needs to have authenticated with the server using the admin user credentials.</p>
+<h2 id="response-formats">Response formats</h2>
+<p>Clients may request a response in either XML or JSON by setting the appropriate request content type. (If it is not possible to specify a content type in the request, clients may use the optional "format" parameter to specify a content type override.)</p>
+<h2 id="api-keys-from-091">API Keys (from 0.9.1)</h2>
+<p>This API is used to manage API Keys for applications accessing Wookie.</p>
+<p><TABLE border="1"><TBODY>
+<TR>
+<TH>Request</TH>
+<TH>Description</TH>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/keys </TD></p>
+<p><TD> Returns all API keys. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication</TD>
+</TR>
+<TR></p>
+<p><TD> POST {wookie}/keys/  {param:apikey, email} </TD></p>
+<p><TD> Creates a new API key with the details provided. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+<TR></p>
+<p><TD> PUT {wookie}/keys/{id}  {param: apikey, email} </TD></p>
+<p><TD><strong>NOT YET IMPLEMENTED</strong>. Updates the API Key specified by <EM>id</EM>. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+<TR></p>
+<p><TD> DELETE {wookie}/keys/{id} </TD></p>
+<p><TD> Deletes the API key specified by <EM>id</EM>. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+</TBODY></TABLE></p>
+<h2 id="policies-from-092">Policies (from 0.9.2)</h2>
+<p>This API is used to manage access policies for the server-side proxy. Note that policy strings should conform to the <em>scope origin directive</em> format as described in the <code>policies</code> file.</p>
+<p><em>This API replaces the WARP and Whitelist APIs defined in 0.9.1.</em></p>
+<p><TABLE border="1"><TBODY>
+<TR>
+<TH>Request</TH>
+<TH>Description</TH>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/policies </TD></p>
+<p><TD> Returns all policies. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication</TD>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/policies/{scope} </TD></p>
+<p><TD> Returns policies matching the specified scope (e.g. a URL-encoded Widget URI). This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication</TD>
+</TR>
+<TR></p>
+<p><TD> POST {wookie}/policies/</TD></p>
+<p><TD> Creates a new policy using a policy string supplied in the body of the POST message. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+<TR></p>
+<p><TD> DELETE {wookie}/policies/{policy} </TD></p>
+<p><TD> Deletes the policy specified by <EM>policy</EM> which should be a URL-encoded policy string. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+</TBODY></TABLE></p>
+<h1 id="deprecated-and-legacy-apis">Deprecated and Legacy APIs</h1>
+<h2 id="widget-access-request-policies-warp-091-only">Widget Access Request Policies (WARP) (0.9.1 only)</h2>
+<p>This API is used to manage per-Widget access request policies in accordance with the <a href="http://www.w3.org/TR/widgets-access/">W3C Widgets Access Request Policy</a> specification.</p>
+<p><em>This API was replaced by the unified Policies API in 0.9.2</em></p>
+<p><TABLE border="1"><TBODY>
+<TR>
+<TH>Request</TH>
+<TH>Description</TH>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/warp {param: widgetId} </TD></p>
+<p><TD> Returns all access policies, or only the access policies that apply to the widget identified by the <EM>widgetId</EM> parameter. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication</TD>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/warp/{id} </TD></p>
+<p><TD> Returns the access policy specified by <EM>id</EM>. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication</TD>
+</TR>
+<TR></p>
+<p><TD> POST {wookie}/warp/  {param:widgetId, origin, subdomains} </TD></p>
+<p><TD> Creates a new policy with the details provided. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+<TR></p>
+<p><TD> PUT {wookie}/warp/{id}  {param: granted} </TD></p>
+<p><TD> Updates the policy specified by <EM>id</EM> with the status of <EM>granted</EM> if the <EM>granted</EM> parameter is set to &quot;true&quot;, otherwise sets the status of the policy to <EM>not granted</EM>. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+<TR></p>
+<p><TD> DELETE {wookie}/warp/{id} </TD></p>
+<p><TD> Deletes the policy specified by <EM>id</EM>. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+</TBODY></TABLE></p>
+<h2 id="whitelist-091-only">Whitelist (0.9.1 only)</h2>
+<p>This API is used to manage whitelist entries, which determine global access rules for the Wookie server-side proxy.</p>
+<p><em>This API was replaced by the unified Policies API in 0.9.2</em></p>
+<p><TABLE border="1"><TBODY>
+<TR>
+<TH>Request</TH>
+<TH>Description</TH>
+</TR>
+<TR></p>
+<p><TD> GET {wookie}/whitelist</TD></p>
+<p><TD> Returns all whitelist entries, consisting of an identifier and a URL. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication</TD>
+</TR>
+<TR></p>
+<p><TD> POST {wookie}/whitelist/  {param:url} </TD></p>
+<p><TD> Creates a new whitelist entry with the URL provided using the <EM>url</EM> parameter. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+<TR></p>
+<p><TD> DELETE {wookie}/whitelist/{id} </TD></p>
+<p><TD> Deletes the whitelist entry specified by <EM>id</EM>. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</TD>
+</TR>
+</TBODY></TABLE></p>
+<h2 id="services-090-092">Services (0.9.0-0.9.2)</h2>
+<p>This API is used to manage services (categories) for widgets.</p>
+<p>*This API was deprecated in 0.9.1 and was removed in 0.10</p>
+<table border="1"><tbody>
+<tr>
+<th >Request</th>
+<th >Description</th>
+</tr>
+<tr>
+<td > GET {wookie}/services {?locale=<em>language_tag</em>}</td>
+<td > Returns an XML document containing all services and any widgets associated with the service category. If a locale is specified, the returned information is localized, for example widget titles, descriptions, license information will be in the specified language where available.</td>
+</tr>
+<tr>
+<td > GET {wookie}/services/{service_name} {?locale=<em>language_tag</em>}</td>
+<td > Returns an XML representation of the service specified by <em>service_name</em> and all the widgets associated with it. If a locale is specified, the returned information is localized, for example widget titles, descriptions, license information will be in the specified language where available.</td>
+</tr>
+<tr>
+<td > POST {wookie}/services/  {param:name} </td>
+<td > Creates a new service with the name provided using the <em>name</em> parameter. If there is already a service with this name, a http 409 (conflict) error is returned. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</td>
+</tr>
+<tr>
+<td > PUT {wookie}/services/{service_name}  {param:name} </td>
+<td > Renames the service specified by <em>service_name</em> with the new name given by the <em>name</em> parameter. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</td>
+</tr>
+<tr>
+<td > DELETE {wookie}/services/{service_name} </td>
+<td > Deletes the service specified by <em>service_name</em>. This method requires authentication using a widgetadmin role, e.g. using HTTP Basic authentication.</td>
+</tr>
+</tbody></table>
+  </div>
+
+  <div id="footer">
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011-2012 The Apache Software Foundation, Licensed under
+        the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
+        <br />
+        Apache and the Apache feather logos are trademarks of The Apache Software Foundation.
+      </p>
+    </div>
+  </div>
+
+</body>
+</html>