This is the documentation for Wookie 0.10 and later. For the API for earlier versions of Wookie, see the 0.9.x API Reference.
Authentication¶
API keys¶
Some methods require the requesting application to have a valid API key issued by the Wookie server administrator.
HTTP Basic Authentication¶
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.
Response formats¶
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.
Note that as of Wookie 0.10.0 not all APIs have yet been updated to supply JSON responses.
Widget Instances¶
The Widget Instances API is used to request an instance of a Widget for a particular viewer in a particular context.
An instance is identified using a combination of the following parameters:
- api_key: The key issued to a particular application
- shareddatakey: The key generated by an application representing a specific context (e.g. a page, post, section, group or other identified context)
- userid: An identifier (typically a hash rather than a real user Id) issued by an application representing the current viewer of the widget instance
- widgetid: The URI of the widget this is an instance of
- locale: The preferred locale of the widget, expressed using a BCP47 Language Tag
An instance is represented in XML as follows:
<widgetdata> <url>URL TO ACCESS WIDGET</url> <identifier>IH6rjs75tkb6I.pl.k0hUq7YdnFcjw.eq.</identifier> <title>Weather</title> <height>125</height> <width>125</width> </widgetdata>
Request | Description | Authentication |
---|---|---|
GET {wookie}/widgetinstances/{instance id_key} | 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. . | API key |
GET {wookie}/widgetinstances/ {params:instance_params} | 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. . | API key |
POST {wookie}/widgetinstances {params:instance_params} | 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. | API key |
PUT {wookie}/widgetinstances {params:instance_params, action, [cloneshareddatakey]} | 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. | API key |
Widgets¶
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.
A Widget is represented in XML using an abbreviated form of the W3C Widgets packaging format:
<?xml version="1.0" encoding="UTF-8"?> <widgets> <widget id="http://wookie.apache.org/widgets/geo" width="620" height="660" version="0.1"> <name short="">geo</title> <description>An example of a HTML 5 geolocation widget.</description> <icon src="http://localhost:8080/wookie/wservices/wookie.apache.org/widgets/geo/icon.svg"/> <author>Apache Wookie (Incubating) Team</author> </widget> </widgets>
The "id" attribute is used in other API requests.
Request | Description | Authentication |
---|---|---|
GET {wookie}/widgets{?locale=language_tag} | 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. | Not required |
GET {wookie}/widgets/{id} {?locale=language_tag} | Returns an XML representation of the widget with the specified id. Note that in the current release this is the actual database key; future releases should implement this using the widget URI as the id. 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. | Not Required |
POST {wookie}/widgets {file} | Adds a widget to the server. The method echoes the widget metadata in the response. | Admin credentials |
PUT {wookie}/widgets/{id} {file} | Updates the specified widget on the server. | Admin credentials |
DELETE {wookie}/widgets/{id} | Deletes the specified widget on the server **and any related instances and their data**. | Admin credentials |
Participants¶
A Participant consists of a participant_display_name, participant_id, and participant_thumbnail_url. 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.
Participants are represented in XML as a <participants> document, containing a <participant> element for each participant, with the attributes:
- id: the participant id (not to be confused with Wookie's internal id of a participant)
- display_name: the participant display name
- thumbnail_url: the url of the thumbnail image for the participant
For example:
GET http://localhost:8080/wookie/participants?id_key=j5GGdhIQViNCRTWg5wnSrccDaks.eq.&api_key=TEST
<participants> <participant id="testuser" display_name="First Test User" thumbnail_url=""/> <participant id="testuser2" display_name="Second Test User" thumbnail_url=""/> </participants>
Request | Description | Authentication |
---|---|---|
GET {wookie}/participants {params: instance_params} | Returns an XML representation of the Participants associated with the Widget instance specified by {instance params}. | API key |
GET {wookie}/participants {params:id_key, api_key} | Returns an XML representation of the Participants associated with the Widget instance specified by {id_key}. | API key |
POST {wookie}participants {params: instance_params, participant_id, participant_display_name, participant_thumbnail_url} | 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. | API key |
DELETE {wookie}/participants {params: instance_params, participant_id} | Deletes the specified Participant from the specified Widget Instance. | API key |
Properties¶
The Properties API contains methods for both Preferences (properties affecting a single Widget Instance) and Shared Data (properties affecting sibling Widgets).
A property consists of a propertyname and propertyvalue.
Example:
GET http://localhost:8080/wookie/properties?id_key=AoK9uakcv4M.pl.jRTcgQs3x4D0jrs.eq.&api_key=TEST&propertyname=city
manchester
Request | Description | Authentication |
---|---|---|
GET {wookie}/properties {params: instance_params, propertyname} | Returns the value of the specified property for the specified instance. | API key |
POST {wookie}/properties {params: instance_params, propertyname, propertyvalue, [is_public=true]} | 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. | API key |
PUT {wookie}/properties {params: instance_params, propertyname, propertyvalue} | Updates the value of the specified property of the specified Widget Instance. | API key |
DELETE {wookie}/properties {params: instance_params, propertyname} | Deletes a property. This method returns a 404 status code if there is no matching property. | API key |
API Keys¶
This API is used to manage API Keys for applications accessing Wookie.
<keys> <key id="401" value="TEST" email="test@127.0.0.1"/> </keys>
Request | Description | Authentication |
---|---|---|
GET {wookie}/keys | Returns all API keys. | Admin credentials |
POST {wookie}/keys/ {param:apikey, email} | Creates a new API key with the details provided | Admin credentials |
PUT {wookie}/keys/{id} {param: apikey, email} | **NOT YET IMPLEMENTED**. Updates the API Key specified by id./TD> | Admin credentials |
DELETE {wookie}/keys/{id} | Deletes the API key specified by id | Admin credentials |
Policies¶
This API is used to manage access policies for the server-side proxy. Note that policy strings should conform to the scope origin directive format as described in the policies
file.
Example:
GET http://localhost:8080/wookie/policies
<policies> <policy scope="http://wookie.apache.org/widgets/freeder" origin="*" directive="ALLOW"/> <policy scope="http://www.getwookie.org/widgets/weather" origin="http://newsrss.bbc.co.uk:80" directive="ALLOW"/> <policy scope="*" origin="http://127.0.0.1" directive="ALLOW"/> <policy scope="*" origin="http://localhost:8080" directive="ALLOW"/> <policy scope="*" origin="http://*.apache.org" directive="ALLOW"/> </policies>
Request | Description | Authentication |
---|---|---|
GET {wookie}/policies | Returns all policies. | Admin credentials |
GET {wookie}/policies/{scope} | Returns policies matching the specified scope (e.g. a URL-encoded Widget URI). | Admin credentials |
POST {wookie}/policies/ | Creates a new policy using a policy string supplied in the body of the POST message. | Admin credentials |
DELETE {wookie}/policies/{policy} | Deletes the policy specified by policy which should be a URL-encoded policy string. | Admin credentials |
Flatpack (unstable)¶
The Flatpack API contains methods for exporting a Widget Instance as a new Widget package (.wgt file) that can be downloaded by a client.
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.
Note 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.
Request | Description | Authentication |
---|---|---|
GET {wookie}/flatpack/{package_id}.wgt | Downloads the specified widget package. | Not required |
POST {wookie}/flatpack {params: instance_params | creates a new W3C Widget package (.wgt) with an opaque file name for the specified widget instance, and returns the download URL. | API key |