My fork of airsonic with experimental fixes and improvements. See branch "custom"
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
airsonic-custom/airsonic-main/src/main/webapp/sonos/presentationMap.xsd

294 lines
11 KiB

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation xml:lang="en">
Presentation Map schema for Sonos controllers.
Copyright (c) 2007 - 2014 Sonos, Inc. All rights reserved worldwide.
</xs:documentation>
</xs:annotation>
<xs:element name="Presentation">
<xs:annotation>
<xs:documentation xml:lang="en">
We do not use a default/target namespace here. Everything is
assumed to be global as we have legacy services that have implemented
Presentation Maps without declaring the namespace in the XML.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="BrowseOptions">
<xs:complexType>
<xs:attribute type="xs:unsignedInt" name="PageSize"/>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" name="PresentationMap">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Match">
<xs:complexType>
<xs:choice minOccurs="1">
<xs:element minOccurs="0" ref="Ratings" />
<xs:element minOccurs="0" ref="Overlay" />
<xs:element minOccurs="0" ref="MenuItemOverrides" />
<xs:element minOccurs="0" ref="imageSizeMap" />
<xs:element minOccurs="0" ref="browseIconSizeMap" />
<xs:element minOccurs="0" ref="SearchCategories" />
</xs:choice>
<xs:attribute name="propname" type="xs:string" use="optional" />
<xs:attribute name="value" type="xs:unsignedByte" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="type" type="PresentationMaps" use="required" />
<xs:attribute name="trackEnabled" type="xs:boolean" use="optional" />
<xs:attribute name="programEnabled" type="xs:boolean" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Presentation -->
<xs:simpleType name="PresentationMaps">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines unique identifiers for known Presentation Map types
within the Sonos firmware.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="NowPlayingRatings" />
<xs:enumeration value="ListOverlays" />
<xs:enumeration value="InfoView" />
<xs:enumeration value="ArtWorkSizeMap" />
<xs:enumeration value="BrowseIconSizeMap" />
<xs:enumeration value="Search" />
</xs:restriction>
</xs:simpleType>
<!-- Ratings -->
<xs:element name="Ratings">
<xs:annotation>
<xs:documentation xml:lang="en">
Ratings define the UI implementation on the Now Playing screen
for a SMAPI service that supports the ratings feature for tracks
and streams (programs).
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="Rating" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Rating">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines the customization of a Rating exposed within the Now
Playing screen .
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="Icon" />
</xs:sequence>
<xs:attribute name="AutoSkip" type="xs:string" use="required" />
<xs:attribute name="Id" type="xs:unsignedInt" use="required" />
<xs:attribute name="OnSuccessStringId" type="xs:string" use="required" />
<xs:attribute name="StringId" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="Icon">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines an icon for use in Sonos controllers. Currently exposed
on the Now Playing screen as it implements Track Ratings.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Controller" type="xs:string" use="required" />
<xs:attribute name="LastModified" type="xs:string" use="required" />
<xs:attribute name="Uri" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<!-- Overlays -->
<xs:element name="Overlay">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="Icon" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- MenuItemOverrides -->
<xs:element name="MenuItemOverrides">
<xs:annotation>
<xs:documentation xml:lang="en">
MenuItemOverrides allow a SMAPI Service to customize the default
actions available within the Infoview on Sonos firmware,
particularly around adding and removing items from a Listener's
"favorites."
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="MenuItem" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MenuItem">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines a customization of a Menu Item exposed in the Infoview.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="FailureStringId" type="xs:string" use="required" />
<xs:attribute name="InProgressStringId" type="xs:string" use="optional" />
<xs:attribute name="MenuItem" type="xs:string" use="required" />
<xs:attribute name="StringId" type="xs:string" use="required" />
<xs:attribute name="SuccessStringId" type="xs:string" use="required" />
<xs:attribute name="PromptStringId" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
<!-- imageSizeMap -->
<xs:element name="imageSizeMap">
<xs:annotation>
<xs:documentation xml:lang="en">
The imageSizeMap defines the substitution rules that allow Sonos
firmware to utilize the albumArtUri returned in a SMAPI response
envelope as a default URL and apply the rules to request higher
or lower resolution album art as needed in the UI.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="sizeEntry" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- browseIconSizeMap -->
<xs:element name="browseIconSizeMap">
<xs:annotation>
<xs:documentation xml:lang="en">
The browseIconSizeMap defines the substitution rules that allow Sonos
firmware to utilize a static image as supplied in the albumArtUri returned
in a SMAPI response envelope as a default URL and apply the rules to request
higher or lower resolution album art as needed in the UI.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element ref="sizeEntry" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- sizeEntry, used by both imageSizeMap and browseIconSizeMap -->
<xs:element name="sizeEntry">
<xs:annotation>
<xs:documentation xml:lang="en">
Maps a known "size" string within a SMAPI albumArtUri with it's
substitution string.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="size" type="xs:unsignedShort" use="required" />
<xs:attribute name="substitution" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<!-- SearchCategories -->
<xs:element name="SearchCategories">
<xs:annotation>
<xs:documentation xml:lang="en">
SearchCategories define the searchable types of a SMAPI Service.
A Category maps a known CanonicalSearchId to a SMAPI Id defined
by a SMAPI service for the given type. A CustomCategory defines
a searchable type that is now explicitly known by Sonos firmware,
configures the SMAPI Id for the searchable type, and identifies
a node in the strings.xml stringtables in which the display name
can be found.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="Category" type="Category" />
<xs:element name="CustomCategory" type="CustomCategory" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Category">
<xs:annotation>
<xs:documentation xml:lang="en">
Maps a CanonicalSearchId (Category.id) to an actual SMAPI
identifier (Category.mappedId) utilized by the service in the
SMAPI search() method.
</xs:documentation>
</xs:annotation>
<xs:attribute name="id" type="CanonicalSearchIds" use="required" />
<xs:attribute name="mappedId" type="xs:string" use="optional" />
</xs:complexType>
<xs:complexType name="CustomCategory">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines a SearchCategory that lies outside the scope of known
CanonicalSearchIds. CustomCategory.mappedId identifies the SMAPI
search identifier with a string entry (CustomCategory.stringId)
in strings.xml. Sonos firmware will use the string entry for the
UI and will pass CustomCategory.mappedId to the SMAPI search()
method when the listener attempts to search for it.
</xs:documentation>
</xs:annotation>
<xs:attribute name="mappedId" type="xs:string" use="required" />
<xs:attribute name="stringId" type="xs:string" use="required" />
</xs:complexType>
<xs:simpleType name="CanonicalSearchIds">
<xs:annotation>
<xs:documentation xml:lang="en">
Defines unique identifiers for known categories of searchable
items across SMAPI services.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="artists" />
<xs:enumeration value="albums" />
<xs:enumeration value="composers" />
<xs:enumeration value="date" />
<xs:enumeration value="genres" />
<xs:enumeration value="hosts" />
<xs:enumeration value="location" />
<xs:enumeration value="podcasts" />
<xs:enumeration value="people" />
<xs:enumeration value="playlists" />
<xs:enumeration value="shows" />
<xs:enumeration value="stations" />
<xs:enumeration value="tags" />
<xs:enumeration value="tracks" />
</xs:restriction>
</xs:simpleType>
</xs:schema>