<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.openhome.org/mediawiki/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.openhome.org/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Av%3ADeveloper%3AEriskay%3AStreamingServices</id>
		<title>Av:Developer:Eriskay:StreamingServices - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.openhome.org/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Av%3ADeveloper%3AEriskay%3AStreamingServices"/>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/mediawiki/index.php?title=Av:Developer:Eriskay:StreamingServices&amp;action=history"/>
		<updated>2026-05-22T09:14:22Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.openhome.org/mediawiki/index.php?title=Av:Developer:Eriskay:StreamingServices&amp;diff=1318&amp;oldid=prev</id>
		<title>Simonc: Created page with &quot;= Streaming Services =  == TIDAL == Tidal's API is private. See Tidal for access to it. Or speak to us for help if you think that your access to the API would benefit OpenHome.  ...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.openhome.org/mediawiki/index.php?title=Av:Developer:Eriskay:StreamingServices&amp;diff=1318&amp;oldid=prev"/>
				<updated>2015-12-15T14:47:25Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Streaming Services =  == TIDAL == Tidal&amp;#39;s API is private. See Tidal for access to it. Or speak to us for help if you think that your access to the API would benefit OpenHome.  ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Streaming Services =&lt;br /&gt;
&lt;br /&gt;
== TIDAL ==&lt;br /&gt;
Tidal's API is private. See Tidal for access to it. Or speak to us for help if you think that your access to the API would benefit OpenHome.&lt;br /&gt;
&lt;br /&gt;
Assuming access to Tidal's API, the [[Av:Developer:Eriskay:CredentialsService | Credentials]] service can be used to retrieve the following information:&lt;br /&gt;
* The &amp;lt;tt&amp;gt;Ids&amp;lt;/tt&amp;gt; property variable includes &amp;lt;tt&amp;gt;tidalhifi.com&amp;lt;/tt&amp;gt; if Tidal is supported.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Data&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;Get&amp;lt;/tt&amp;gt; is JSON and contains at least the following fields:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;country_code&amp;quot;: &amp;quot;Tidal country code&amp;quot;,&lt;br /&gt;
        &amp;quot;user_id&amp;quot;: &amp;quot;Tidal user identifier&amp;quot;&lt;br /&gt;
        .....&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;Status&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;Get&amp;lt;/tt&amp;gt; is blank if &amp;lt;tt&amp;gt;Username&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Password&amp;lt;/tt&amp;gt; are both either blank or set and valid. If &amp;lt;tt&amp;gt;Status&amp;lt;/tt&amp;gt; is not blank, it contains either JSON returned from a Tidal API or an error string.&lt;br /&gt;
* The token returned from &amp;lt;tt&amp;gt;Login&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Relogin&amp;lt;/tt&amp;gt; is JSON  and contains at least the following fields:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;session_id&amp;quot;: &amp;quot;Tidal session id&amp;quot;&lt;br /&gt;
        .....&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Tracks can be added to the [[Av:Developer:Eriskay:PlaylistService | Playlist]] service with urls in the form&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    tidal://track?version=1&amp;amp;trackId=[tidal_track_id]&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Qobuz ==&lt;br /&gt;
Qobuz's [https://github.com/Qobuz/api-documentation developer API] is published on github.&lt;br /&gt;
&lt;br /&gt;
The [[Av:Developer:Eriskay:CredentialsService | Credentials]] service can be used to retrieve the following information:&lt;br /&gt;
&lt;br /&gt;
* The &amp;lt;tt&amp;gt;Ids&amp;lt;/tt&amp;gt; state variable includes &amp;lt;tt&amp;gt;qobuz.com&amp;lt;/tt&amp;gt; if Qobuz is supported.&lt;br /&gt;
* &amp;lt;tt&amp;gt;Data&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;Get&amp;lt;/tt&amp;gt; is JSON  and contains at least the following fields:&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;app_id&amp;quot;: &amp;quot;qobuz app id&amp;quot;&lt;br /&gt;
        .....&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;Status&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;Get&amp;lt;/tt&amp;gt; is blank if &amp;lt;tt&amp;gt;Username&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Password&amp;lt;/tt&amp;gt; are both either blank or set and valid.  If &amp;lt;tt&amp;gt;Status&amp;lt;/tt&amp;gt; is not blank, it contains either JSON returned from a Qobuz API or an error string.&lt;br /&gt;
* The token returned from &amp;lt;tt&amp;gt;Login&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Relogin&amp;lt;/tt&amp;gt; is JSON and contains at least the &amp;lt;tt&amp;gt;user_auth_token&amp;lt;/tt&amp;gt; required by some Qobuz calls.&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;user_auth_token&amp;quot;: &amp;quot;[token from qobuz]&amp;quot;&lt;br /&gt;
        .....&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some Qobuz APIs require an &amp;lt;tt&amp;gt;app_secret&amp;lt;/tt&amp;gt; argument.  These APIs should not need to be called from control points.  Qobuz's standard development agreement prohibits this being shared between device and control point.&lt;br /&gt;
&lt;br /&gt;
Tracks can be added to the [[Av:Developer:Eriskay:PlaylistService | Playlist]] service with urls in the form&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
    qobuz://track?version=2&amp;amp;trackId=[qobuz_track_id]&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Simonc</name></author>	</entry>

	</feed>