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.

1759 lines
78 KiB

9 years ago
<?xml version="1.0" encoding="utf-8"?>
<!--
Sonos Music Service WSDL definition
Copyright (c) 2007-2015 Sonos, Inc. All Rights Reserved
This document is licensed under the Creative Commons Attribution, Share-Alike
license, v3.0 (Unported) with the following modifications:
As clarified in the license, distribution of any software (source or binary)
that instantiates the API will require the party(ies) distributing such
software to publish the revised API and associated documentation, at no charge,
in accordance with the terms of the license. There is no requirement, however,
to publish the underlying code.
-->
<wsdl:definitions name="Sonos"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.sonos.com/Services/1.1"
targetNamespace="http://www.sonos.com/Services/1.1">
<wsdl:types>
<xs:schema targetNamespace="http://www.sonos.com/Services/1.1"
elementFormDefault="qualified">
<xs:simpleType name="id">
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="algorithm">
<xs:restriction base="xs:token">
<xs:enumeration value="AES/CBC/PKCS#7"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="id" type="tns:id"/>
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="128"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="username">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="128"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="sessionId">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="128"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="label">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="128"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="login">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:username"/>
<xs:element ref="tns:password"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="loginToken">
<xs:complexType>
<xs:sequence>
<xs:element name="token" type="xs:string"/>
<xs:element name="key" type="xs:string"/>
<xs:element name="householdId" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="credentials">
<xs:complexType>
<xs:sequence>
<xs:element name="deviceId" type="tns:id" minOccurs="0"/>
<xs:element name="deviceProvider" type="xs:string" minOccurs="0"/>
<xs:choice minOccurs="0">
<xs:element ref="tns:sessionId"/>
<xs:element ref="tns:login"/>
<xs:element ref="tns:loginToken"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="context">
<xs:complexType>
<xs:sequence>
<xs:element name="timeZone" type="xs:string" minOccurs="0"/>
<xs:element name="zones" type="xs:string" minOccurs="0"/>
<xs:element name="location" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="itemType">
<xs:restriction base="xs:string">
<xs:enumeration value="artist"/>
<xs:enumeration value="album"/>
<xs:enumeration value="genre"/>
<xs:enumeration value="playlist"/>
<xs:enumeration value="track"/>
<xs:enumeration value="search"/>
<xs:enumeration value="stream"/>
<xs:enumeration value="show"/>
<xs:enumeration value="program"/>
<xs:enumeration value="favorites"/>
<xs:enumeration value="favorite"/>
<xs:enumeration value="collection"/>
<xs:enumeration value="container"/>
<xs:enumeration value="albumList"/>
<xs:enumeration value="trackList"/>
<xs:enumeration value="streamList"/>
<xs:enumeration value="artistTrackList"/>
<xs:enumeration value="other"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="itemType" type="tns:itemType"/>
<xs:simpleType name="mediaUriAction">
<xs:restriction base="xs:string">
<xs:enumeration value="IMPLICIT"/>
<xs:enumeration value="EXPLICIT:PLAY"/>
<xs:enumeration value="EXPLICIT:SEEK"/>
<xs:enumeration value="EXPLICIT:SKIP_FORWARD"/>
<xs:enumeration value="EXPLICIT:SKIP_BACK"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="mediaUriAction" type="tns:mediaUriAction" />
<xs:complexType name="AbstractMedia" abstract="true">
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element ref="tns:itemType"/>
<xs:element name="displayType" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<!--
The summary field will only be displayed if the displayType
maps to a HeroView or Editorial layout otherwise it will be ignored
-->
<xs:element name="summary" type="xs:string" minOccurs="0"/>
<!--Indicates that the item is currently favorited.
If omitted, we don't know the favorited state. -->
<xs:element name="isFavorite" type="xs:boolean" minOccurs="0"/>
<!--
Included for backwards compatibility with MOAPI 1.0. These are
currently all disregarded by the Sonos firmware. -->
<xs:element name="language" type="xs:string" minOccurs="0"/>
<xs:element name="country" type="xs:string" minOccurs="0"/>
<xs:element name="genreId" type="xs:string" minOccurs="0"/>
<xs:element name="genre" type="xs:string" minOccurs="0"/>
<xs:element name="twitterId" type="xs:string" minOccurs="0"/>
<xs:element name="liveNow" type="xs:boolean" minOccurs="0"/>
<xs:element name="onDemand" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="deviceLinkCodeResult">
<xs:sequence>
<xs:element name="regUrl" type="xs:string"/>
<xs:element name="linkCode" type="xs:string"/>
<xs:element name="showLinkCode" type="xs:boolean"/>
<xs:element name="linkDeviceId" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="deviceAuthTokenResult">
<xs:sequence>
<xs:element name="authToken" type="xs:string"/>
<xs:element name="privateKey" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="reportPlaySecondsResult">
<xs:sequence>
<xs:element name="interval" type="xs:int"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="albumArtUrl">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="requiresAuthentication" type="xs:boolean" use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="mediaCollection">
<xs:complexContent>
<xs:extension base="tns:AbstractMedia">
<xs:sequence>
<!--
Collections can optionally indicate a creator. For example, a
collection could represent an album and "artist" would indicate
the album artist. -->
<xs:element name="artist" type="xs:string" minOccurs="0"/>
<xs:element name="artistId" type="tns:id" minOccurs="0"/>
<!--
Indicates that the collection supports the getScrollIndices
method if omitted, canScroll is assumed to be false. -->
<xs:element name="canScroll" type="xs:boolean" minOccurs="0"/>
<!--
Indicates that the collection can be "played" by enumerating
using the "recursive" flag to obtain a flat list of all
mediaMetadata items it contains. If omitted, canPlay is assumed
to be false -->
<xs:element name="canPlay" type="xs:boolean" minOccurs="0"/>
<!--
Indicates that the collection can be enumerated, using the
collection id in a subsequent call to getMetadata. If omitted,
canEnumerate is assumed to be true -->
<xs:element name="canEnumerate" type="xs:boolean" minOccurs="0"/>
<!--
Indicates that the collection can be added to user favorites.
If omitted, canAddToFavorites is assumed to be true. -->
<xs:element name="canAddToFavorites" type="xs:boolean" minOccurs="0"/>
<!--
Indicates that the collection contains user favorites.
If omitted, containsFavorite is assumed to be false. -->
<xs:element name="containsFavorite" type="xs:boolean" minOccurs="0"/>
<!--
Included for backwards compatibility with MOAPI 1.0. This is
currently disregarded by the Sonos firmware. -->
<xs:element name="canCache" type="xs:boolean" minOccurs="0"/>
<!--
Indicates that playback of this whole collection allows skip
forward. Defaults to true. -->
<xs:element name="canSkip" type="xs:boolean" minOccurs="0"/>
<!-- This is really any artwork in the square album style. -->
<xs:element name="albumArtURI" type="tns:albumArtUrl" minOccurs="0"/>
<!--
Included for backwards compatibility with MOAPI 1.0. These
are currently all disregarded by the Sonos firmware. -->
<xs:element name="authRequired" type="xs:boolean" minOccurs="0"/>
<xs:element name="homogeneous" type="xs:boolean" minOccurs="0"/>
<xs:element name="canAddToFavorite" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="readOnly" type="xs:boolean" use="optional" default="true"/>
<xs:attribute name="userContent" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="renameable" type="xs:boolean" use="optional" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="trackMetadata">
<xs:sequence>
<xs:element name="artistId" type="tns:id" minOccurs="0"/>
<xs:element name="artist" type="xs:string" minOccurs="0"/>
<xs:element name="composerId" type="tns:id" minOccurs="0"/>
<xs:element name="composer" type="xs:string" minOccurs="0"/>
<xs:element name="albumId" type="tns:id" minOccurs="0"/>
<xs:element name="album" type="xs:string" minOccurs="0"/>
<xs:element name="albumArtistId" type="tns:id" minOccurs="0"/>
<xs:element name="albumArtist" type="xs:string" minOccurs="0"/>
<xs:element name="genreId" type="tns:id" minOccurs="0"/>
<xs:element name="genre" type="xs:string" minOccurs="0"/>
<xs:element name="duration" type="xs:int" minOccurs="0"/>
<xs:element name="rating" type="xs:int" minOccurs="0"/>
<xs:element name="albumArtURI" type="tns:albumArtUrl" minOccurs="0"/>
<xs:element name="trackNumber" type="xs:int" minOccurs="0"/>
<!--
Indicates that the track can be played. If not present, the
default value is "true". If "false" this flag indicates that the
user does not have rights to stream the track. -->
<xs:element name="canPlay" type="xs:boolean" minOccurs="0"/>
<!--
Indicates that playback of this track allows skip forward.
Defaults to true. -->
<xs:element name="canSkip" type="xs:boolean" minOccurs="0"/>
<!-- Indicates that this track can be added to the favorites. -->
<xs:element name="canAddToFavorites" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="streamMetadata">
<xs:sequence>
<xs:element name="currentHost" type="xs:string" minOccurs="0"/>
<xs:element name="currentShowId" type="tns:id" minOccurs="0"/>
<xs:element name="currentShow" type="xs:string" minOccurs="0"/>
<xs:element name="secondsRemaining" type="xs:int" minOccurs="0"/>
<xs:element name="secondsToNextShow" type="xs:int" minOccurs="0"/>
<xs:element name="bitrate" type="xs:int" minOccurs="0"/>
<xs:element name="logo" type="tns:albumArtUrl" minOccurs="0"/>
<xs:element name="hasOutOfBandMetadata" type="xs:boolean" minOccurs="0"/>
<xs:element name="description" type="xs:string" minOccurs="0"/>
<!-- is this short lived, if so do not allow adding to Sonos Favorites or alarms-->
<xs:element name="isEphemeral" type="xs:boolean" minOccurs="0"/>
<!--
Included for backwards compatibility with MOAPI 1.0. These are
currently all disregarded by the Sonos firmware. -->
<xs:element name="reliability" type="xs:anyURI" minOccurs="0"/>
<xs:element name="title" type="xs:anyURI" minOccurs="0"/>
<xs:element name="subtitle" type="xs:anyURI" minOccurs="0"/>
<xs:element name="nextShowSeconds" type="xs:anyURI" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="property">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="dynamicData">
<xs:sequence>
<xs:element name="property" type="tns:property" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="mediaMetadata">
<xs:complexContent>
<xs:extension base="tns:AbstractMedia">
<xs:sequence>
<xs:element name="mimeType" type="xs:string"/>
<xs:choice>
<xs:element name="trackMetadata" type="tns:trackMetadata"/>
<xs:element name="streamMetadata" type="tns:streamMetadata"/>
</xs:choice>
<xs:element name="dynamic" type="tns:dynamicData" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="segmentMetadata">
<xs:annotation>
<xs:documentation>segmentMetadata is metadata that applies to a specified time range.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element name="trackId" type="tns:id" minOccurs="0"/>
<xs:element name="track" type="xs:string" minOccurs="0"/>
<xs:element name="artistId" type="tns:id" minOccurs="0"/>
<xs:element name="artist" type="xs:string" minOccurs="0"/>
<xs:element name="composerId" type="tns:id" minOccurs="0"/>
<xs:element name="composer" type="xs:string" minOccurs="0"/>
<xs:element name="albumId" type="tns:id" minOccurs="0"/>
<xs:element name="album" type="xs:string" minOccurs="0"/>
<xs:element name="albumArtistId" type="tns:id" minOccurs="0"/>
<xs:element name="albumArtist" type="xs:string" minOccurs="0"/>
<xs:element name="genreId" type="tns:id" minOccurs="0"/>
<xs:element name="genre" type="xs:string" minOccurs="0"/>
<xs:element name="showId" type="tns:id" minOccurs="0"/>
<xs:element name="show" type="xs:string" minOccurs="0"/>
<xs:element name="episodeId" type="tns:id" minOccurs="0"/>
<xs:element name="episode" type="xs:string" minOccurs="0"/>
<xs:element name="host" type="xs:string" minOccurs="0"/>
<xs:element name="topic" type="xs:string" minOccurs="0"/>
<xs:element name="rating" type="xs:int" minOccurs="0"/>
<xs:element name="albumArtURI" type="xs:anyURI" minOccurs="0"/>
<xs:element name="startTime" type="xs:dateTime">
<xs:annotation>
<xs:documentation>Specifies the inclusive start time of the period to which this metadata
applies.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="duration" type="xs:int">
<xs:annotation>
<xs:documentation>Specifies the length of the period in milliseconds.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="mediaList">
<xs:sequence>
<xs:element name="index" type="xs:int"/>
<xs:element name="count" type="xs:int"/>
<xs:element name="total" type="xs:int"/>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="mediaCollection" type="tns:mediaCollection"/>
<xs:element name="mediaMetadata" type="tns:mediaMetadata"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="radioTrackList">
<xs:sequence>
<xs:element name="count" type="xs:int" />
<xs:element name="id" type="xs:string" minOccurs="0" />
<xs:element name="name" type="xs:string" minOccurs="0" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="mediaMetadata" type="tns:mediaMetadata"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="segmentMetadataList">
<xs:sequence minOccurs="0">
<xs:element name="startTime" type="xs:dateTime" minOccurs="0">
<xs:annotation>
<xs:documentation>Specifies the inclusive start time of the period for this list. If
omitted, defaults the startTime of the first temporalMediaMetadata element.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="duration" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:documentation>Specifies the length of the period of this list in milliseconds. If
omitted, defaults the duration between startTime and the last elment's end time.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="segmentMetadata" type="tns:segmentMetadata" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A chronologically ordered list of segmentMetadata elements
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lastUpdate">
<xs:sequence>
<xs:element name="catalog" type="xs:string"/>
<xs:element name="favorites" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="relatedBrowse">
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element name="type" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="relatedText">
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element name="type" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="relatedPlay">
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element ref="tns:itemType"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="canPlay" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="extendedMetadata">
<xs:sequence>
<xs:choice>
<xs:element name="mediaCollection" type="tns:mediaCollection" minOccurs="0" maxOccurs="1"/>
<xs:element name="mediaMetadata" type="tns:mediaMetadata" minOccurs="0" maxOccurs="1"/>
</xs:choice>
<xs:element name="relatedBrowse" type="tns:relatedBrowse" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="relatedText" type="tns:relatedText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="relatedPlay" type="tns:relatedPlay" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="itemRating">
<xs:sequence>
<xs:element name="shouldSkip" type="xs:boolean" minOccurs="0"/>
<xs:element name="messageStringId" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="httpHeader">
<xs:sequence>
<xs:element name="header" type="xs:string"/>
<xs:element name="value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="httpHeaders">
<xs:sequence>
<xs:element name="httpHeader" type="tns:httpHeader" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="mediaRequestInfo">
<xs:sequence>
<xs:element name="uri" type="xs:anyURI"/>
<xs:element name="httpHeaders" type="tns:httpHeaders" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="contentKey">
<xs:sequence>
<xs:element name="uri" type="xs:anyURI"/>
<xs:element name="algorithm" type="tns:algorithm"/>
<xs:element name="keySize" type="xs:int"/>
<xs:element name="value" type="xs:base64Binary"/>
<xs:element name="expiration" type="xs:int" minOccurs="0"/>
<xs:element name="mediaRequestInfo" type="tns:mediaRequestInfo" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element name="getSessionId">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:username"/>
<xs:element ref="tns:password"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getSessionIdResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getSessionIdResult" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getMetadata">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element name="index" type="xs:int"/>
<xs:element name="count" type="xs:int"/>
<xs:element name="recursive" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getMetadataResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getMetadataResult" type="tns:mediaList"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getExtendedMetadata">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getExtendedMetadataResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getExtendedMetadataResult" type="tns:extendedMetadata"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getExtendedMetadataText">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element name="type" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getExtendedMetadataTextResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getExtendedMetadataTextResult" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="rateItem">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element name="rating" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="rateItemResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="rateItemResult" type="tns:itemRating"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="search">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:id"/>
<xs:element name="term" type="xs:string"/>
<xs:element name="index" type="xs:int"/>
<xs:element name="count" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="searchResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="searchResult" type="tns:mediaList"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getMediaMetadata">
<xs:complexType>
<xs:sequence>
<xs:element ref="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getMediaMetadataResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getMediaMetadataResult" type="tns:mediaMetadata"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getMediaURI">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="action" type="tns:mediaUriAction" minOccurs="0" maxOccurs="1"/>
<xs:element name="secondsSinceExplicit" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getMediaURIResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getMediaURIResult" type="xs:anyURI"/>
<xs:element name="httpHeaders" type="tns:httpHeaders" minOccurs="0" maxOccurs="1"/>
<xs:element name="uriTimeout" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="createItem">
<xs:complexType>
<xs:sequence>
<xs:element name="favorite" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="createItemResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="createItemResult" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="deleteItem">
<xs:complexType>
<xs:sequence>
<xs:element name="favorite" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="deleteItemResponse">
<xs:complexType/>
</xs:element>
<xs:element name="getScrollIndices">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getScrollIndicesResponse">
<xs:complexType>
<xs:sequence>
<!--
Result is a comma separated list of name value pairs representing
the first letter prefix of an item and its position in the
list (e.g A,0,B,123 etc.) -->
<xs:element name="getScrollIndicesResult" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getLastUpdate">
<xs:complexType/>
</xs:element>
<xs:element name="getLastUpdateResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getLastUpdateResult" type="tns:lastUpdate"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reportStatus">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="errorCode" type="xs:int"/>
<xs:element name="message" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reportStatusResponse">
<xs:complexType/>
</xs:element>
<xs:element name="setPlayedSeconds">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="seconds" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="setPlayedSecondsResponse">
<xs:complexType/>
</xs:element>
<xs:element name="reportPlaySeconds">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="seconds" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reportPlaySecondsResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="reportPlaySecondsResult" type="tns:reportPlaySecondsResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reportPlayStatus">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="status" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reportPlayStatusResponse">
<xs:complexType/>
</xs:element>
<xs:element name="reportAccountAction">
<xs:complexType>
<xs:sequence>
<xs:element name="type" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reportAccountActionResponse">
<xs:complexType/>
</xs:element>
<xs:element name="getDeviceLinkCode">
<xs:complexType>
<xs:sequence>
<xs:element name="householdId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getDeviceLinkCodeResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getDeviceLinkCodeResult" type="tns:deviceLinkCodeResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getDeviceAuthToken">
<xs:complexType>
<xs:sequence>
<xs:element name="householdId" type="tns:id"/>
<xs:element name="linkCode" type="xs:string"/>
<xs:element name="linkDeviceId" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getDeviceAuthTokenResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getDeviceAuthTokenResult" type="tns:deviceAuthTokenResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="refreshAuthTokenResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="refreshAuthTokenResult" type="tns:deviceAuthTokenResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getStreamingMetadata">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="startTime" type="xs:dateTime"/>
<xs:element name="duration" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getStreamingMetadataResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="getStreamingMetadataResult" type="tns:segmentMetadataList"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getContentKey">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="uri" type="xs:anyURI" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="getContentKeyResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="contentKey" type="tns:contentKey"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="createContainer">
<xs:complexType>
<xs:sequence>
<xs:element name="containerType" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="parentId" type="tns:id"/>
<xs:element name="seedId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="createContainerResult">
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="updateId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
<xs:element name="createContainerResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="createContainerResult" type="tns:createContainerResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="addToContainer">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="parentId" type="tns:id"/>
<xs:element name="index" type="xs:int"/>
<xs:element name="updateId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="addToContainerResult">
<xs:sequence>
<xs:element name="updateId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
<xs:element name="addToContainerResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="addToContainerResult" type="tns:addToContainerResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="renameContainer">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="title" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="renameContainerResult">
<xs:sequence/>
</xs:complexType>
<xs:element name="renameContainerResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="renameContainerResult" type="tns:renameContainerResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="deleteContainer">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="deleteContainerResult">
<xs:sequence/>
</xs:complexType>
<xs:element name="deleteContainerResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="deleteContainerResult" type="tns:deleteContainerResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="removeFromContainer">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="indices" type="xs:string"/>
<xs:element name="updateId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="removeFromContainerResult">
<xs:sequence>
<xs:element name="updateId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
<xs:element name="removeFromContainerResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="removeFromContainerResult" type="tns:removeFromContainerResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="reorderContainer">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="tns:id"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="to" type="xs:int"/>
<xs:element name="updateId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="reorderContainerResult">
<xs:sequence>
<xs:element name="updateId" type="tns:id"/>
</xs:sequence>
</xs:complexType>
<xs:element name="reorderContainerResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="reorderContainerResult" type="tns:reorderContainerResult"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="customFaultDetail">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="SonosError" type="xs:int"/>
<xs:element name="ExceptionInfo" type="xs:string"/>
</xs:sequence>
<xs:element name="refreshAuthTokenResult" type="tns:deviceAuthTokenResult"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
<wsdl:message name="credentials">
<wsdl:part name="credentials" element="tns:credentials"/>
</wsdl:message>
<wsdl:message name="context">
<wsdl:part name="context" element="tns:context"/>
</wsdl:message>
<wsdl:message name="getSessionIdIn">
<wsdl:part name="parameters" element="tns:getSessionId"/>
</wsdl:message>
<wsdl:message name="getSessionIdOut">
<wsdl:part name="parameters" element="tns:getSessionIdResponse"/>
</wsdl:message>
<wsdl:message name="getMetadataIn">
<wsdl:part name="parameters" element="tns:getMetadata"/>
</wsdl:message>
<wsdl:message name="getMetadataOut">
<wsdl:part name="parameters" element="tns:getMetadataResponse"/>
</wsdl:message>
<wsdl:message name="getExtendedMetadataIn">
<wsdl:part name="parameters" element="tns:getExtendedMetadata"/>
</wsdl:message>
<wsdl:message name="getExtendedMetadataOut">
<wsdl:part name="parameters" element="tns:getExtendedMetadataResponse"/>
</wsdl:message>
<wsdl:message name="getExtendedMetadataTextIn">
<wsdl:part name="parameters" element="tns:getExtendedMetadataText"/>
</wsdl:message>
<wsdl:message name="getExtendedMetadataTextOut">
<wsdl:part name="parameters" element="tns:getExtendedMetadataTextResponse"/>
</wsdl:message>
<wsdl:message name="rateItemIn">
<wsdl:part name="parameters" element="tns:rateItem"/>
</wsdl:message>
<wsdl:message name="rateItemOut">
<wsdl:part name="parameters" element="tns:rateItemResponse"/>
</wsdl:message>
<wsdl:message name="searchIn">
<wsdl:part name="parameters" element="tns:search"/>
</wsdl:message>
<wsdl:message name="searchOut">
<wsdl:part name="parameters" element="tns:searchResponse"/>
</wsdl:message>
<wsdl:message name="getMediaMetadataIn">
<wsdl:part name="parameters" element="tns:getMediaMetadata"/>
</wsdl:message>
<wsdl:message name="getMediaMetadataOut">
<wsdl:part name="parameters" element="tns:getMediaMetadataResponse"/>
</wsdl:message>
<wsdl:message name="getMediaURIIn">
<wsdl:part name="parameters" element="tns:getMediaURI"/>
</wsdl:message>
<wsdl:message name="getMediaURIOut">
<wsdl:part name="parameters" element="tns:getMediaURIResponse"/>
</wsdl:message>
<wsdl:message name="getScrollIndicesIn">
<wsdl:part name="parameters" element="tns:getScrollIndices"/>
</wsdl:message>
<wsdl:message name="getScrollIndicesOut">
<wsdl:part name="parameters" element="tns:getScrollIndicesResponse"/>
</wsdl:message>
<wsdl:message name="createItemIn">
<wsdl:part name="parameters" element="tns:createItem"/>
</wsdl:message>
<wsdl:message name="createItemOut">
<wsdl:part name="parameters" element="tns:createItemResponse"/>
</wsdl:message>
<wsdl:message name="deleteItemIn">
<wsdl:part name="parameters" element="tns:deleteItem"/>
</wsdl:message>
<wsdl:message name="deleteItemOut">
<wsdl:part name="parameters" element="tns:deleteItemResponse"/>
</wsdl:message>
<wsdl:message name="getLastUpdateIn">
<wsdl:part name="parameters" element="tns:getLastUpdate"/>
</wsdl:message>
<wsdl:message name="getLastUpdateOut">
<wsdl:part name="parameters" element="tns:getLastUpdateResponse"/>
</wsdl:message>
<wsdl:message name="reportStatusIn">
<wsdl:part name="parameters" element="tns:reportStatus"/>
</wsdl:message>
<wsdl:message name="reportStatusOut">
<wsdl:part name="parameters" element="tns:reportStatusResponse"/>
</wsdl:message>
<wsdl:message name="setPlayedSecondsIn">
<wsdl:part name="parameters" element="tns:setPlayedSeconds"/>
</wsdl:message>
<wsdl:message name="setPlayedSecondsOut">
<wsdl:part name="parameters" element="tns:setPlayedSecondsResponse"/>
</wsdl:message>
<wsdl:message name="reportPlaySecondsIn">
<wsdl:part name="parameters" element="tns:reportPlaySeconds"/>
</wsdl:message>
<wsdl:message name="reportPlaySecondsOut">
<wsdl:part name="parameters" element="tns:reportPlaySecondsResponse"/>
</wsdl:message>
<wsdl:message name="reportPlayStatusIn">
<wsdl:part name="parameters" element="tns:reportPlayStatus"/>
</wsdl:message>
<wsdl:message name="reportPlayStatusOut">
<wsdl:part name="parameters" element="tns:reportPlayStatusResponse"/>
</wsdl:message>
<wsdl:message name="reportAccountActionIn">
<wsdl:part name="parameters" element="tns:reportAccountAction"/>
</wsdl:message>
<wsdl:message name="reportAccountActionOut">
<wsdl:part name="parameters" element="tns:reportAccountActionResponse"/>
</wsdl:message>
<wsdl:message name="getDeviceLinkCodeIn">
<wsdl:part name="parameters" element="tns:getDeviceLinkCode"/>
</wsdl:message>
<wsdl:message name="getDeviceLinkCodeOut">
<wsdl:part name="parameters" element="tns:getDeviceLinkCodeResponse"/>
</wsdl:message>
<wsdl:message name="getDeviceAuthTokenIn">
<wsdl:part name="parameters" element="tns:getDeviceAuthToken"/>
</wsdl:message>
<wsdl:message name="getDeviceAuthTokenOut">
<wsdl:part name="parameters" element="tns:getDeviceAuthTokenResponse"/>
</wsdl:message>
<wsdl:message name="getStreamingMetadataIn">
<wsdl:part name="parameters" element="tns:getStreamingMetadata"/>
</wsdl:message>
<wsdl:message name="getStreamingMetadataOut">
<wsdl:part name="parameters" element="tns:getStreamingMetadataResponse"/>
</wsdl:message>
<wsdl:message name="getContentKeyIn">
<wsdl:part name="parameters" element="tns:getContentKey"/>
</wsdl:message>
<wsdl:message name="getContentKeyOut">
<wsdl:part name="parameters" element="tns:getContentKeyResponse"/>
</wsdl:message>
<wsdl:message name="createContainerIn">
<wsdl:part name="parameters" element="tns:createContainer"/>
</wsdl:message>
<wsdl:message name="createContainerOut">
<wsdl:part name="parameters" element="tns:createContainerResponse"/>
</wsdl:message>
<wsdl:message name="addToContainerIn">
<wsdl:part name="parameters" element="tns:addToContainer"/>
</wsdl:message>
<wsdl:message name="addToContainerOut">
<wsdl:part name="parameters" element="tns:addToContainerResponse"/>
</wsdl:message>
<wsdl:message name="renameContainerIn">
<wsdl:part name="parameters" element="tns:renameContainer"/>
</wsdl:message>
<wsdl:message name="renameContainerOut">
<wsdl:part name="parameters" element="tns:renameContainerResponse"/>
</wsdl:message>
<wsdl:message name="deleteContainerIn">
<wsdl:part name="parameters" element="tns:deleteContainer"/>
</wsdl:message>
<wsdl:message name="deleteContainerOut">
<wsdl:part name="parameters" element="tns:deleteContainerResponse"/>
</wsdl:message>
<wsdl:message name="removeFromContainerIn">
<wsdl:part name="parameters" element="tns:removeFromContainer"/>
</wsdl:message>
<wsdl:message name="removeFromContainerOut">
<wsdl:part name="parameters" element="tns:removeFromContainerResponse"/>
</wsdl:message>
<wsdl:message name="reorderContainerIn">
<wsdl:part name="parameters" element="tns:reorderContainer"/>
</wsdl:message>
<wsdl:message name="reorderContainerOut">
<wsdl:part name="parameters" element="tns:reorderContainerResponse"/>
</wsdl:message>
<wsdl:message name="customFault">
<wsdl:part name="customFault" element="tns:customFaultDetail"/>
</wsdl:message>
<wsdl:portType name="SonosSoap">
<wsdl:operation name="getSessionId">
<wsdl:input message="tns:getSessionIdIn"/>
<wsdl:output message="tns:getSessionIdOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getMetadata">
<wsdl:input message="tns:getMetadataIn"/>
<wsdl:output message="tns:getMetadataOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getExtendedMetadata">
<wsdl:input message="tns:getExtendedMetadataIn"/>
<wsdl:output message="tns:getExtendedMetadataOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getExtendedMetadataText">
<wsdl:input message="tns:getExtendedMetadataTextIn"/>
<wsdl:output message="tns:getExtendedMetadataTextOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="rateItem">
<wsdl:input message="tns:rateItemIn"/>
<wsdl:output message="tns:rateItemOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="search">
<wsdl:input message="tns:searchIn"/>
<wsdl:output message="tns:searchOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getMediaMetadata">
<wsdl:input message="tns:getMediaMetadataIn"/>
<wsdl:output message="tns:getMediaMetadataOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getMediaURI">
<wsdl:input message="tns:getMediaURIIn"/>
<wsdl:output message="tns:getMediaURIOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="createItem">
<wsdl:input message="tns:createItemIn"/>
<wsdl:output message="tns:createItemOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="deleteItem">
<wsdl:input message="tns:deleteItemIn"/>
<wsdl:output message="tns:deleteItemOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getScrollIndices">
<wsdl:input message="tns:getScrollIndicesIn"/>
<wsdl:output message="tns:getScrollIndicesOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getLastUpdate">
<wsdl:input message="tns:getLastUpdateIn"/>
<wsdl:output message="tns:getLastUpdateOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="reportStatus">
<wsdl:input message="tns:reportStatusIn"/>
<wsdl:output message="tns:reportStatusOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="setPlayedSeconds">
<wsdl:input message="tns:setPlayedSecondsIn"/>
<wsdl:output message="tns:setPlayedSecondsOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="reportPlaySeconds">
<wsdl:input message="tns:reportPlaySecondsIn"/>
<wsdl:output message="tns:reportPlaySecondsOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="reportPlayStatus">
<wsdl:input message="tns:reportPlayStatusIn"/>
<wsdl:output message="tns:reportPlayStatusOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="reportAccountAction">
<wsdl:input message="tns:reportAccountActionIn"/>
<wsdl:output message="tns:reportAccountActionOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getDeviceLinkCode">
<wsdl:input message="tns:getDeviceLinkCodeIn"/>
<wsdl:output message="tns:getDeviceLinkCodeOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getDeviceAuthToken">
<wsdl:input message="tns:getDeviceAuthTokenIn"/>
<wsdl:output message="tns:getDeviceAuthTokenOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getStreamingMetadata">
<wsdl:input message="tns:getStreamingMetadataIn"/>
<wsdl:output message="tns:getStreamingMetadataOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="getContentKey">
<wsdl:input message="tns:getContentKeyIn"/>
<wsdl:output message="tns:getContentKeyOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="createContainer">
<wsdl:input message="tns:createContainerIn"/>
<wsdl:output message="tns:createContainerOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="addToContainer">
<wsdl:input message="tns:addToContainerIn"/>
<wsdl:output message="tns:addToContainerOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="renameContainer">
<wsdl:input message="tns:renameContainerIn"/>
<wsdl:output message="tns:renameContainerOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="deleteContainer">
<wsdl:input message="tns:deleteContainerIn"/>
<wsdl:output message="tns:deleteContainerOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="removeFromContainer">
<wsdl:input message="tns:removeFromContainerIn"/>
<wsdl:output message="tns:removeFromContainerOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
<wsdl:operation name="reorderContainer">
<wsdl:input message="tns:reorderContainerIn"/>
<wsdl:output message="tns:reorderContainerOut"/>
<wsdl:fault message="tns:customFault" name="customFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SonosSoap" type="tns:SonosSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getSessionId">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getSessionId" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getMetadata">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getMetadata" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getExtendedMetadata">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getExtendedMetadata" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getExtendedMetadataText">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getExtendedMetadataText" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="rateItem">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#rateItem" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="search">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#search" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getMediaMetadata">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getMediaMetadata" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getMediaURI">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getMediaURI" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getScrollIndices">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getScrollIndices" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="createItem">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#createItem" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="deleteItem">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#deleteItem" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getLastUpdate">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getLastUpdate" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="reportStatus">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#reportStatus" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="setPlayedSeconds">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#setPlayedSeconds" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="reportPlaySeconds">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#reportPlaySeconds" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="reportPlayStatus">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#reportPlayStatus" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="reportAccountAction">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#reportAccountAction" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getDeviceLinkCode">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getDeviceLinkCode" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getDeviceAuthToken">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getDeviceAuthToken" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getStreamingMetadata">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getStreamingMetadata" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="getContentKey">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#getContentKey" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="createContainer">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#createContainer" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="addToContainer">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#addToContainer" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="renameContainer">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#renameContainer" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="deleteContainer">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#deleteContainer" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="removeFromContainer">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#removeFromContainer" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="reorderContainer">
<soap:operation soapAction="http://www.sonos.com/Services/1.1#reorderContainer" style="document"/>
<wsdl:input>
<soap:header use="literal" message="tns:credentials" part="credentials"/>
<soap:header use="literal" message="tns:context" part="context"/>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="customFault">
<soap:fault name="customFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Sonos">
<wsdl:port name="SonosSoap" binding="tns:SonosSoap">
<soap:address location="http://moapi.sonos.com/Test/TestService.php"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>