OpenService Format Specification for Accelerators - Version 0.8
Accelerator are a contextual service to access and retrieve service information from any Web page. An Accelerator is described using the OpenService Format. Similar to how the OpenSearch Description describes a search provider, the OpenService Format can be used to describe any type of service provider.
- Description - The service interface that specifies the functionality of a service provider.
- File - The specific description of a service provider based off of the template for the type of service it provides.
This document covers the minimum properties necessary to enable the publication and consumption of an Accelerator.
- OpenService Format
- Accelerator Description
- Accelerator URL Template
- Extensibility
- Licensing Information
- Revisions
OpenService Format
The OpenService format describes the core set of properties for a service.
Example:
This is an example of how to describe a map Accelerator using the OpenService Format.
<?xml version="1.0" encoding="UTF-8"?>
<openServiceDescription
xmlns="https://www.microsoft.com/schemas/openservicedescription/1.0">
<homepageUrl>http://maps.live.com</homepageUrl>
<display>
<name>Map with Windows Live</name>
<icon>http://www.live.com/favicon.ico</icon>
</display>
<activity category="Map">
<activityAction context="selection" >
<preview action=" http://maps.live.com/geotager.aspx">
<parameter name="b" value="{selection}" />
<parameter name="clean" value="true" />
<parameter name="w" value="320" />
<parameter name="h" value="240" />
</preview>
<execute action=" http://maps.live.com/default.aspx">
<parameter name="where1" value="{selection}" type="text" />
</execute>
</activityAction>
</activity>
</openServiceDescription>
The 'OpenServiceDescription' element
The root node of the OpenService document.
Parent: None
Requirements: The element must appear exactly once as the root node of the document.
Namespace - This namespace defines all of the elements in this specification. https://www.microsoft.com/schemas/openservicedescription/1.0
The 'homepageURL' element
Contains the URL of the homepage of the service provider.
Parent: openServiceDescription
Requirements: There must be only be one instance of this element
The 'display' element
Contains the display properties that are presented to the user.
Parent: openServiceDescription
Requirements: There must be only be one instance of this element
The 'name' element
Contains the name of the service. It should be able to standalone and succinctly describe the service.
It is recommended to lead with the verb followed by the name of the service.
Parent: display
Requirements:
- There must be only be one instance of this element
- The value must contain 50 or fewer characters of plain text
Examples:
<name>Map with Windows Live</name>
<name>Define with Encarta</name>
The 'icon' element
Contains a URL that identifies the location of the icon that can be used in association with the service.
Parent: display
Requirements: There can be zero or one instance of this element
Example:
<icon>http://www.live.com/favicon.ico</icon>
The 'description' element
Contains a brief description of the service.
Parent: display
Requirements:
- There can be zero or one instance of this element
- The value must contain 250 or fewer characters of plain text
Accelerator Description
This section covers the Accelerator description.
The 'activity' element
Contains the information specific to the Accelerator service.
Parent: openServiceDescription
Requirements: There must be exactly one instance of this element
The 'category' attribute
Contains the type of Accelerator. This is used in conjunction of the domain of the homepageUrl element as the identification of an Accelerator.
Requirements: The value must be plain text.
It is recommended to reuse a category that other similar providers use. For example, all map providers should use the "map" category.
Example:
<activity category="map">
The 'activityAction' element
Contains the information to the specific context.
Parent: activity
Requirements: There must be at least one instance of this element
The 'context' attribute
Contains what the Accelerator should act on: the user selection, the current document, or the selected URL.
Requirements:
- There may be one instance of this attribute
- The value must be either "selection", "document", or "link"
- The default value is "selection"
Example:
<activityAction context="selection">
The 'preview' element
Contains the information for previewing a webpage. The returned content must be HTML that fits within a 320 width x 240 height window.
Parent: activityAction
Requirements: There can be one instance of this element
The 'action' attribute
Contains the URL template to get the webpage to preview the Accelerator. The Accelerator URL Template section contains more detail.
Requirements: There must be one instance of this attribute
The 'method' attribute
Contains the type of HTTP submission for previewing the webpage.
Requirements:
- There may be one instance of this attribute
- The value must be either "get" or "post"
- The default value is "get"
The 'enctype' attribute
Contains the type of content for submitting data to the server as defined by HTML form submission.
Requirements:
- There may be one instance of this attribute
- The value must be a supported Form Content Types
- The default value is "application/x-www-form-urlencoded"
The 'accept-charset' attribute
Contains the character encoding to use for submitting data to server as defined by HTML form submission.
Requirements:
- There may be one instance of this attribute
- The value must be a supported charset
- The default value is "utf-8"
The 'execute' element
Contains the information for executing an Accelerator.
Parent: activityAction
Requirements: There must be one instance of this element
The execute element uses the same set of attributes as the preview element.
The 'parameter' element
Contains the parameter name and values to for the action URL. The parameter value can reference an Accelerator variable. The Accelerator URL Template section contains more detail.
Parent: preview, execute
Requirements: There can zero or one instances of this element
The 'name' attribute
Contains the name of the parameter to use.
Requirements: There must be one instance of this attribute
The 'value' attribute
Contains the value of the parameter to use. The value can reference an Accelerator variable.
Requirements: There must be one instance of this attribute
The 'type' attribute
Contains how to transform the Accelerator variable {selection}.
Requirements:
- There can be zero or one instance of this attribute
- The value must be either "text" or "html"
- The default value is "text"
Example:
<parameter name="body" value="{selection}" type="html" />
Security Warning: If you create an Accelerator that uses a {selection} parameter of type "html", then the service must be explicitly set up to correctly sanitize and handle arbitrary HTML input. Web services that allow arbitrary input without filtering or encoding are susceptible to HTML/script injection attacks. For more information, see the "Selection Types" section of OpenService Accelerators Developer Guide.
Accelerator URL Template
The Accelerator URL template represents content to pass to the service provider. There are two ways to define parameters in a URL template: inline and form-based parameters.
Examples
This is an example of an Accelerator URL template using inline parameter.
<execute action="https://encarta.msn.com/encnet/refpages/search.aspx?q={selection}" />
This is an example of an Accelerator URL template using form-based parameter.
<execute action="https://encarta.msn.com/encnet/refpages/search.aspx">
<parameter name="q" value="{selection}" type="html" />
</execute>
Variables
Variables are properties within the webpage. Variables are referenced using braces {}.
The {selection} variable | Represents the user selection within the webpage. |
The {documentUrl} variable | Represents the URL of the webpage where the Accelerator is invoked. |
The {documentTitle} variable | Represents the title of the webpage where the Accelerator is invoked. |
The {documentDomain} variable | Represents the top-level domain of the documentUrl variable. |
The {documentHost} variable | Represents the fully qualified domain of the documentUrl variable. |
The {link} variable | Represents the URL of the user selected URL. |
The {linkText} variable | Represents the text of the user selected URL. |
The {linkRel} variable | Represents the relationship of the user selected URL. |
The {linkType} variable | Represents the MIME type of the user selected URL. |
The {linkDomain} variable | Represents the top-level domain of the user selected URL. |
The {linkHost} variable | Represents the fully qualified domain of the user selected URL. |
Optional variables
All variables are treated as required unless it the modifier "?". An optional variable that cannot be resolved is treated as an empty string for an inline parameterized URL. In a form-based parameterized URL the entire parameter element is ignored.
Example of an optional variable in an inline parameterized URL:
<execute action="https://encarta.msn.com/encnet/refpages/search.aspx?q={selection?}" />
Escape Character
To specify { and } literally, escape them with a backslash \. Backslash can be used to escape any character.
\{{selection}\}
Extensibility
The OpenService format and Accelerator description can be extended through using W3C XML Namespace Spec convention. The XML namespace must be distinct from the OpenService namespace.
Licensing Information
Microsoft's copyrights in this specification are licensed under the Creative Commons Attribution-Share Alike License (version 3.0). To view a copy of this license, please visit http://creativecommons.org/licenses/by-sa/3.0. There is a separate patent promise called the Microsoft Open Specification Promise available to parties interested in implementing software that conforms to this specification. This patent promise is available at this location: https://www.microsoft.com/interop/osp/default.mspx.
Revisions
Version 0.8 (Beta 2)
- OpenService Activities renamed to OpenService Accelerators
- Add 'Escape Character' section
- Fix minor errors
Version 0.8
- First release