Better JSON schema validation error messages
[ouya-game-data.git] / game-metadata.html
index a8252163815e7f15edce0caba1f12a07d17a8231..43eaf030e42bb879f341586bf1e343a5eb399228 100644 (file)
@@ -4,6 +4,13 @@
  <head>
   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
   <title>OUYA game meta data</title>
  <head>
   <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
   <title>OUYA game meta data</title>
+  <style type="text/css">
+   thead th {
+     position: sticky;
+     top: 0px;
+     background-color: lightgrey;
+   }
+  </style>
  </head>
  <body>
   <table border="1">
  </head>
  <body>
   <table border="1">
     <tr>
      <th>Group</th>
      <th>Datum</th>
     <tr>
      <th>Group</th>
      <th>Datum</th>
+     <th>Game data field</th>
      <th><a href="http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-discover">Discover field</a></th>
      <th><a href="http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-discover">Discover field</a></th>
-     <th><a href="http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-apps-xxx">App details field</a></th>
+     <th><a href="http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-apps-xxx">App field</a></th>
+     <th><a href="http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-details">Details field</a></th>
      <th><a href="https://gitlab.com/devirich/BrewyaOnOuya/blob/master/store/models.py">BrewyaOnOuya field</a></th>
      <th>Example</th>
      <th>Description</th>
      <th><a href="https://gitlab.com/devirich/BrewyaOnOuya/blob/master/store/models.py">BrewyaOnOuya field</a></th>
      <th>Example</th>
      <th>Description</th>
    </thead>
    <tbody>
 
    </thead>
    <tbody>
 
-    <tr>
-     <td>app</td>
-     <td>Game UUID</td>
-     <td>uuid</td>
-     <td>uuid</td>
-     <td>App.uuid</td>
-     <td>780688a9-95ee-429a-8755-69a8d0c88fe0</td>
-     <td></td>
-    </tr>
     <tr>
      <td>app</td>
      <td>Game title</td>
      <td>title</td>
      <td>title</td>
     <tr>
      <td>app</td>
      <td>Game title</td>
      <td>title</td>
      <td>title</td>
+     <td>title</td>
+     <td>title</td>
      <td>App.title</td>
      <td>Bloo Kid 2</td>
      <td></td>
      <td>App.title</td>
      <td>Bloo Kid 2</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>Overview text</td>
     <tr>
      <td>app</td>
      <td>Overview text</td>
+     <td>overview (optional)</td>
      <td></td>
      <td>overview</td>
      <td></td>
      <td>overview</td>
+     <td>-</td>
      <td>App.overview</td>
      <td>Released in October 2015 by winterworks GmbH.</td>
      <td></td>
      <td>App.overview</td>
      <td>Released in October 2015 by winterworks GmbH.</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>Description</td>
     <tr>
      <td>app</td>
      <td>Description</td>
+     <td>description</td>
      <td></td>
      <td>description</td>
      <td></td>
      <td>description</td>
+     <td>description</td>
      <td>App.description</td>
      <td>Bloo Kid 2 is a classic 2D retro-style platformer experience with lovely designed pixel-graphics and a full chiptune soundtrack. Run, jump and swim your way through FIVE huge worlds with TWELVE levels each. Master brutal bossfights and discover lots of secrets in the world of Bloo Kid 2.\r\n\r\nBloo Kid 2 features:\r\n- five worlds with twelve levels each\r\n- handcrafted, colorful pixel-graphics\r\n- a full chiptune soundtrack\r\n- epic boss battles\r\n- tons of secrets\r\n- achievements</td>
      <td></td>
      <td>App.description</td>
      <td>Bloo Kid 2 is a classic 2D retro-style platformer experience with lovely designed pixel-graphics and a full chiptune soundtrack. Run, jump and swim your way through FIVE huge worlds with TWELVE levels each. Master brutal bossfights and discover lots of secrets in the world of Bloo Kid 2.\r\n\r\nBloo Kid 2 features:\r\n- five worlds with twelve levels each\r\n- handcrafted, colorful pixel-graphics\r\n- a full chiptune soundtrack\r\n- epic boss battles\r\n- tons of secrets\r\n- achievements</td>
      <td></td>
@@ -59,6 +65,8 @@
     <tr>
      <td>app</td>
      <td>Number of players</td>
     <tr>
      <td>app</td>
      <td>Number of players</td>
+     <td>players</td>
+     <td>gamerNumbers</td>
      <td>gamerNumbers</td>
      <td>gamerNumbers</td>
      <td>App.playerNumbers</td>
      <td>gamerNumbers</td>
      <td>gamerNumbers</td>
      <td>App.playerNumbers</td>
@@ -70,6 +78,8 @@
      <td>Genre list</td>
      <td>genres</td>
      <td>genres</td>
      <td>Genre list</td>
      <td>genres</td>
      <td>genres</td>
+     <td>genres</td>
+     <td>genres</td>
      <td>App.genres</td>
      <td>[Platformer, Retro]</td>
      <td>
      <td>App.genres</td>
      <td>[Platformer, Retro]</td>
      <td>
     <tr>
      <td>app</td>
      <td>Package name</td>
     <tr>
      <td>app</td>
      <td>Package name</td>
+     <td>packageName</td>
      <td>package</td>
      <td></td>
      <td>package</td>
      <td></td>
+     <td>apk.package</td>
      <td>App.packageName</td>
      <td>evil.corptron.DuckGame</td>
      <td>App.packageName</td>
      <td>evil.corptron.DuckGame</td>
-     <td></td>
+     <td>Run "aapt dump badging file.apk", field "package: name"</td>
     </tr>
     <tr>
      <td>app</td>
      <td>Details URL</td>
     </tr>
     <tr>
      <td>app</td>
      <td>Details URL</td>
+     <td>-</td>
      <td>url</td>
      <td></td>
      <td>url</td>
      <td></td>
-     <td>?</td>
+     <td>-</td>
+     <td>-</td>
      <td>ouya://launcher/details?app=evil.corptron.DuckGame</td>
      <td></td>
     </tr>
     <tr>
      <td>app</td>
      <td>Game website</td>
      <td>ouya://launcher/details?app=evil.corptron.DuckGame</td>
      <td></td>
     </tr>
     <tr>
      <td>app</td>
      <td>Game website</td>
+     <td>website (optional)</td>
      <td></td>
      <td>website</td>
      <td></td>
      <td>website</td>
+     <td>-</td>
      <td>App.website</td>
      <td>http://www.winterworks.de</td>
      <td></td>
      <td>App.website</td>
      <td>http://www.winterworks.de</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>Content rating</td>
     <tr>
      <td>app</td>
      <td>Content rating</td>
+     <td>contentRating (optional)</td>
      <td>contentRating</td>
      <td>contentRating</td>
      <td>contentRating</td>
      <td>contentRating</td>
+     <td>suggestedAge</td>
      <td>App.contentRating</td>
      <td>Everyone</td>
      <td>
      <td>App.contentRating</td>
      <td>Everyone</td>
      <td>
     <tr>
      <td>app</td>
      <td>FIXME</td>
     <tr>
      <td>app</td>
      <td>FIXME</td>
+     <td>premium (optional)</td>
+     <td>premium</td>
      <td>premium</td>
      <td>premium</td>
      <td>App.premium</td>
      <td>premium</td>
      <td>premium</td>
      <td>App.premium</td>
     <tr>
      <td>app</td>
      <td>When the game was published</td>
     <tr>
      <td>app</td>
      <td>When the game was published</td>
+     <td>firstPublishedAt (optional)</td>
      <td></td>
      <td>firstPublishedAt</td>
      <td></td>
      <td>firstPublishedAt</td>
+     <td>firstPublishedAt (unix timestamp)</td>
      <td>App.firstPublishedAt</td>
      <td>2015-10-09T07:53:25Z</td>
      <td></td>
      <td>App.firstPublishedAt</td>
      <td>2015-10-09T07:53:25Z</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>Are there in-app purchases?</td>
     <tr>
      <td>app</td>
      <td>Are there in-app purchases?</td>
+     <td>inAppPurchases (optional)</td>
      <td>inAppPurchases</td>
      <td></td>
      <td>inAppPurchases</td>
      <td></td>
+     <td>inAppPurchases</td>
      <td>-</td>
      <td>true</td>
      <td></td>
      <td>-</td>
      <td>true</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>FIXME</td>
     <tr>
      <td>app</td>
      <td>FIXME</td>
+     <td>-</td>
      <td>type</td>
      <td></td>
      <td>type</td>
      <td></td>
+     <td>type</td>
      <td>-</td>
      <td>app</td>
      <td>-</td>
      <td>app</td>
-     <td>"app", "discover" or "details_page" (for bundles)</td>
+     <td>
+      discover: "app", "discover" or "details_page" (for bundles)<br/>
+      details: "Game", FIXME
+     </td>
     </tr>
     <tr>
      <td>app</td>
      <td>Last update (unix timestamp)</td>
     </tr>
     <tr>
      <td>app</td>
      <td>Last update (unix timestamp)</td>
+     <td>-</td>
      <td>updated_at</td>
      <td></td>
      <td>updated_at</td>
      <td></td>
+     <td>-</td>
      <td>AppVersion.releaseTime</td>
      <td>1417731390</td>
      <td></td>
      <td>AppVersion.releaseTime</td>
      <td>1417731390</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>Last update</td>
     <tr>
      <td>app</td>
      <td>Last update</td>
+     <td>releases.*.date (when "latest")</td>
      <td>updatedAt</td>
      <td></td>
      <td>updatedAt</td>
      <td></td>
+     <td>-</td>
      <td>AppVersion.releaseTime</td>
      <td>2014-12-04T22:16:30Z</td>
      <td></td>
     </tr>
 
      <td>AppVersion.releaseTime</td>
      <td>2014-12-04T22:16:30Z</td>
      <td></td>
     </tr>
 
+    <tr>
+     <td>?</td>
+     <td>Metadata about the file</td>
+     <td>-</td>
+     <td>-</td>
+     <td></td>
+     <td>metaData</td>
+     <td>-</td>
+     <td>["key:rating.average", "key:developer.name", "key:suggestedAge", "45.29 MiB"]</td>
+     <td>Always those 4 values and in the same order (at least for apps)</td>
+    </tr>
+
     <tr>
      <td>rating</td>
      <td>Number of likes?</td>
     <tr>
      <td>rating</td>
      <td>Number of likes?</td>
+     <td>rating.likeCount (optional)</td>
      <td></td>
      <td>likeCount</td>
      <td></td>
      <td>likeCount</td>
+     <td>-</td>
      <td>Rating.likeCount</td>
      <td>0</td>
      <td></td>
      <td>Rating.likeCount</td>
      <td>0</td>
      <td></td>
     <tr>
      <td>rating</td>
      <td>Average rating</td>
     <tr>
      <td>rating</td>
      <td>Average rating</td>
+     <td>rating.average (optional)</td>
      <td>rating.average</td>
      <td>ratingAverage</td>
      <td>rating.average</td>
      <td>ratingAverage</td>
+     <td>rating.average</td>
      <td>Rating.rating</td>
      <td>4.1</td>
      <td></td>
      <td>Rating.rating</td>
      <td>4.1</td>
      <td></td>
     <tr>
      <td>rating</td>
      <td>Number of ratings</td>
     <tr>
      <td>rating</td>
      <td>Number of ratings</td>
+     <td>rating.count (optional)</td>
      <td>rating.count</td>
      <td>ratingCount</td>
      <td>rating.count</td>
      <td>ratingCount</td>
+     <td>rating.count</td>
      <td>Rating.reviewCount</td>
      <td>355</td>
      <td></td>
      <td>Rating.reviewCount</td>
      <td>355</td>
      <td></td>
     <tr>
      <td>product</td>
      <td>Promotion data</td>
     <tr>
      <td>product</td>
      <td>Promotion data</td>
+     <td>products.* (when "promoted=true")</td>
+     <td>promotedProduct</td>
      <td>promotedProduct</td>
      <td>promotedProduct</td>
      <td>App.promotedProduct</td>
      <td>promotedProduct</td>
      <td>promotedProduct</td>
      <td>App.promotedProduct</td>
     <tr>
      <td>product</td>
      <td>Product key</td>
     <tr>
      <td>product</td>
      <td>Product key</td>
+     <td>products.*.identifier</td>
+     <td>promotedProduct.identifier</td>
      <td>promotedProduct.identifier</td>
      <td>promotedProduct.identifier</td>
      <td>Product.identifier</td>
      <td>promotedProduct.identifier</td>
      <td>promotedProduct.identifier</td>
      <td>Product.identifier</td>
     <tr>
      <td>product</td>
      <td>Product name</td>
     <tr>
      <td>product</td>
      <td>Product name</td>
+     <td>products.*.name</td>
+     <td>promotedProduct.name</td>
      <td>promotedProduct.name</td>
      <td>promotedProduct.name</td>
      <td>Product.name</td>
      <td>promotedProduct.name</td>
      <td>promotedProduct.name</td>
      <td>Product.name</td>
     <tr>
      <td>product</td>
      <td>Product currency</td>
     <tr>
      <td>product</td>
      <td>Product currency</td>
+     <td>products.*.currency</td>
+     <td>promotedProduct.currency</td>
      <td>promotedProduct.currency</td>
      <td>promotedProduct.currency</td>
      <td>-</td>
      <td>promotedProduct.currency</td>
      <td>promotedProduct.currency</td>
      <td>-</td>
     <tr>
      <td>product</td>
      <td>Product description</td>
     <tr>
      <td>product</td>
      <td>Product description</td>
+     <td>products.*.description</td>
+     <td>promotedProduct.description</td>
      <td>promotedProduct.description</td>
      <td>promotedProduct.description</td>
      <td>Product.description</td>
      <td>promotedProduct.description</td>
      <td>promotedProduct.description</td>
      <td>Product.description</td>
-     <td>Remove the 9 satellites limitation. Infinite satellites!</td>
+     <td>
+      Remove the 9 satellites limitation. Infinite satellites!<br/>
+      null (759x)
+     </td>
      <td></td>
     </tr>
     <tr>
      <td>product</td>
      <td>Saving</td>
      <td></td>
     </tr>
     <tr>
      <td>product</td>
      <td>Saving</td>
+     <td>-</td>
+     <td>promotedProduct.percentOff</td>
      <td>promotedProduct.percentOff</td>
      <td>promotedProduct.percentOff</td>
      <td>-</td>
      <td>promotedProduct.percentOff</td>
      <td>promotedProduct.percentOff</td>
      <td>-</td>
     <tr>
      <td>product</td>
      <td>Current price</td>
     <tr>
      <td>product</td>
      <td>Current price</td>
+     <td>products.*.localPrice</td>
+     <td>promotedProduct.localPrice</td>
      <td>promotedProduct.localPrice</td>
      <td>promotedProduct.localPrice</td>
      <td>-</td>
      <td>promotedProduct.localPrice</td>
      <td>promotedProduct.localPrice</td>
      <td>-</td>
     <tr>
      <td>product</td>
      <td>Previous price</td>
     <tr>
      <td>product</td>
      <td>Previous price</td>
+     <td>products.*.originalPrice</td>
+     <td>promotedProduct.originalPrice</td>
      <td>promotedProduct.originalPrice</td>
      <td>promotedProduct.originalPrice</td>
      <td>Product.originalPrice</td>
      <td>1.99</td>
      <td></td>
     </tr>
      <td>promotedProduct.originalPrice</td>
      <td>promotedProduct.originalPrice</td>
      <td>Product.originalPrice</td>
      <td>1.99</td>
      <td></td>
     </tr>
+    <tr>
+     <td>product</td>
+     <td>FIXME</td>
+     <td>?</td>
+     <td>?</td>
+     <td>?</td>
+     <td>promotedProduct.type</td>
+     <td>?</td>
+     <td>"entitlement" (502x), null (758x)</td>
+     <td></td>
+    </tr>
 
     <tr>
      <td>apk</td>
 
     <tr>
      <td>apk</td>
-     <td>versionNumber</td>
+     <td>Human readable version</td>
+     <td>releases.*.name</td>
      <td>latestVersion.versionNumber</td>
      <td>versionNumber</td>
      <td>latestVersion.versionNumber</td>
      <td>versionNumber</td>
+     <td>version.number</td>
      <td>Apk.versionName</td>
      <td>1.6</td>
      <td>Apk.versionName</td>
      <td>1.6</td>
-     <td></td>
+     <td>Run "aapt dump badging file.apk", field "versionName"</td>
     </tr>
     <tr>
      <td>apk</td>
      <td>UUID of latest apk version</td>
     </tr>
     <tr>
      <td>apk</td>
      <td>UUID of latest apk version</td>
-     <td>latestVersion.uuid</td>
-     <td>latestVersion</td>
-     <td>Apk.versionCode</td>
+     <td>releases.*.uuid</td>
+     <td>
+      uuid<br/>
+      latestVersion.uuid
+     </td>
+     <td>
+      uuid<br/>
+      latestVersion
+     </td>
+     <td>version.uuid</td>
+     <td>App.uuid</td>
      <td>780688a9-95ee-429a-8755-69a8d0c88fe0</td>
      <td>780688a9-95ee-429a-8755-69a8d0c88fe0</td>
-     <td></td>
+     <td>The OUYA API does not have app UUIDs, only release/apk uuids. </td>
+    </tr>
+    <tr>
+     <td>apk</td>
+     <td>Internal version</td>
+     <td>releases.*.versionCode</td>
+     <td>-</td>
+     <td>-</td>
+     <td>apk.versionCode</td>
+     <td>Apk.versionCode</td>
+     <td>null (1162x), 120401, 11, 1001004</td>
+     <td>Run "aapt dump badging file.apk", field "versionCode"</td>
     </tr>
     <tr>
      <td>apk</td>
      <td>FIXME</td>
     </tr>
     <tr>
      <td>apk</td>
      <td>FIXME</td>
+     <td>releases.*.publicSize (optional)</td>
      <td></td>
      <td>publicSize</td>
      <td></td>
      <td>publicSize</td>
+     <td>apk.publicSize</td>
      <td>Apk.publicSize</td>
      <td>27275</td>
      <td></td>
      <td>Apk.publicSize</td>
      <td>27275</td>
      <td></td>
     <tr>
      <td>apk</td>
      <td>FIXME</td>
     <tr>
      <td>apk</td>
      <td>FIXME</td>
+     <td>releases.*.nativeSize (optional)</td>
      <td></td>
      <td>nativeSize</td>
      <td></td>
      <td>nativeSize</td>
+     <td>apk.nativeSize</td>
      <td>Apk.nativeSize</td>
      <td>20292</td>
      <td></td>
      <td>Apk.nativeSize</td>
      <td>20292</td>
      <td></td>
     <tr>
      <td>apk</td>
      <td>MD5 file hash</td>
     <tr>
      <td>apk</td>
      <td>MD5 file hash</td>
+     <td>releases.*.md5sum</td>
      <td>latestVersion.apk.md5sum</td>
      <td>md5sum</td>
      <td>latestVersion.apk.md5sum</td>
      <td>md5sum</td>
+     <td>apk.md5sum</td>
      <td>Apk.md5sum</td>
      <td>Apk.md5sum</td>
-     <td>a5b0f82d54df5f551a64295e43771a10</td>
+     <td>a5b0f82d54df5f551a64295e43771a10, null (432x)</td>
      <td></td>
     </tr>
     <tr>
      <td>apk</td>
      <td>APK file size</td>
      <td></td>
     </tr>
     <tr>
      <td>apk</td>
      <td>APK file size</td>
+     <td>releases.*.size</td>
      <td></td>
      <td>apkFileSize</td>
      <td></td>
      <td>apkFileSize</td>
+     <td>apk.fileSize</td>
      <td>Apk.size</td>
      <td>25507828</td>
      <td></td>
      <td>Apk.size</td>
      <td>25507828</td>
      <td></td>
     <tr>
      <td>apk</td>
      <td>APK publish date</td>
     <tr>
      <td>apk</td>
      <td>APK publish date</td>
+     <td>releases.*.date</td>
      <td></td>
      <td>publishedAt</td>
      <td></td>
      <td>publishedAt</td>
+     <td>version.publishedAt (unix timestamp)</td>
      <td>AppVersion.releaseTime</td>
      <td>2015-10-23T09:58:19Z</td>
      <td></td>
      <td>AppVersion.releaseTime</td>
      <td>2015-10-23T09:58:19Z</td>
      <td></td>
     <tr>
      <td>apk</td>
      <td>downloadLink</td>
     <tr>
      <td>apk</td>
      <td>downloadLink</td>
+     <td>releases.*.url</td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
+     <td>apk.filename</td>
      <td>Apk.location</td>
      <td>Apk.location</td>
-     <td>https://devs-ouya-tv-prod.s3.amazonaws.com/apps/5a3fbb4d-852b-4af4-becc-324dce6a3b42/de.eiswuxe.blookid2/780688a9-95ee-429a-8755-69a8d0c88fe0/lFzMjcZyQauvWX5k8HvH_blookid2.apk</td>
-     <td>Also in download.json</td>
+     <td>
+      url: https://devs-ouya-tv-prod.s3.amazonaws.com/apps/5a3fbb4d-852b-4af4-becc-324dce6a3b42/de.eiswuxe.blookid2/780688a9-95ee-429a-8755-69a8d0c88fe0/lFzMjcZyQauvWX5k8HvH_blookid2.apk<br/>
+      details: 1zbYKRSS1elKIYI9eseH_BombSquad-ouya-release.apk
+     </td>
+     <td>
+      Also in download.json<br/>
+      Details field: only a file name, no path/domain. Always set.
+     </td>
+    </tr>
+    <tr>
+     <td>apk</td>
+     <td>state</td>
+     <td>-</td>
+     <td>?</td>
+     <td>?</td>
+     <td>apk.state</td>
+     <td>?</td>
+     <td>
+      "complete"
+     </td>
+     <td></td>
     </tr>
 
     <tr>
      <td>media</td>
      <td>Discover image</td>
     </tr>
 
     <tr>
      <td>media</td>
      <td>Discover image</td>
+     <td>media.discover</td>
      <td>image</td>
      <td></td>
      <td>image</td>
      <td></td>
+     <td>tileImage</td>
      <td>Media</td>
      <td>https://www.filepicker.io/api/file/05y2T8cKTY6cUfX7RYFR</td>
      <td></td>
      <td>Media</td>
      <td>https://www.filepicker.io/api/file/05y2T8cKTY6cUfX7RYFR</td>
      <td></td>
     <tr>
      <td>media</td>
      <td>Large image</td>
     <tr>
      <td>media</td>
      <td>Large image</td>
+     <td>media.large</td>
      <td></td>
      <td>mainImageFullUrl</td>
      <td></td>
      <td>mainImageFullUrl</td>
+     <td>-</td>
      <td>App.titleImage</td>
      <td>https://d3e4aumcqn8cw3.cloudfront.net/api/file/MASaiOBlTEO7GKYXsIns</td>
      <td></td>
     </tr>
      <td>App.titleImage</td>
      <td>https://d3e4aumcqn8cw3.cloudfront.net/api/file/MASaiOBlTEO7GKYXsIns</td>
      <td></td>
     </tr>
+    <tr>
+     <td>media</td>
+     <td>FIXME</td>
+     <td>-</td>
+     <td>-</td>
+     <td>-</td>
+     <td>heroImage.url</td>
+     <td>?</td>
+     <td>
+      https://s3.amazonaws.com/ouya-screenshots/3d819f4e-2195-433c-81ea-c766a6f3144f/ouya-image20170118-3-i56ad1<br/>
+      null
+     </td>
+     <td>
+      Most games, had "null" here, only 14 had one set.
+      When this was set, mobileAppIcon was also set.
+     </td>
+    </tr>
     <tr>
      <td>media</td>
      <td>Video</td>
     <tr>
      <td>media</td>
      <td>Video</td>
+     <td>media.video (optional)</td>
      <td></td>
      <td>videoUrl</td>
      <td></td>
      <td>videoUrl</td>
+     <td></td>
      <td>Media</td>
      <td>https://vimeo.com/141878938</td>
      <td></td>
      <td>Media</td>
      <td>https://vimeo.com/141878938</td>
      <td></td>
     <tr>
      <td>media</td>
      <td>Game screenshots</td>
     <tr>
      <td>media</td>
      <td>Game screenshots</td>
+     <td>media.screenshots (optional)</td>
      <td></td>
      <td>filepickerScreenshots</td>
      <td></td>
      <td>filepickerScreenshots</td>
+     <td>-</td>
      <td>Media</td>
      <td>[urls]</td>
      <td></td>
     </tr>
      <td>Media</td>
      <td>[urls]</td>
      <td></td>
     </tr>
+    <tr>
+     <td>media</td>
+     <td>Detail video</td>
+     <td>media.details.*.url</td>
+     <td></td>
+     <td></td>
+     <td>mediaTiles.*.url (type=video)</td>
+     <td>?</td>
+     <td>
+      <pre>[
+  {
+    "type": "video",
+    "url": "https://vimeo.com/141878938"
+  }
+]</pre>
+     </td>
+     <td rowspan="4">
+      Allows free ordering of images and videos on the details page.<br/>
+      "fp" is probably "FilePicker".<br/>
+      fp_url is not used in OUYA's launcher.
+      The launcher loads the thumbnail at first, immediately after the full image.
+      If no mediaTile is available, the app's mainImageFullUrl
+      is used. When offline, the apk image is used.<br/>
+      <br/>
+      Game data information:
+      If details is not given or an emtpy array,
+      "mediaTile" array should automatically be created by combining
+      "media.large", "media.video" and "media.screenshots" into the
+      mediaTiles format.
+     </td>
+    </tr>
+    <tr>
+     <td>media</td>
+     <td>Detail image thumbnail</td>
+     <td>media.details.*.thumb</td>
+     <td></td>
+     <td></td>
+     <td>mediaTiles.*.urls.thumb (type=image)</td>
+     <td>?</td>
+     <td>
+      Thumbnails were all size 852x479
+      <pre>[
+  {
+    "type: "image",
+    "urls": [
+      "full": "http://...",
+      "thumb": "http://...",
+    ],
+    "fp_url": "http://...."
+  },
+]</pre>
+     </td>
+    </tr>
+    <tr>
+     <td>media</td>
+     <td>Detail image full resolution</td>
+     <td>media.details.*.url</td>
+     <td></td>
+     <td></td>
+     <td>mediaTiles.*.urls.full (type=image)</td>
+     <td>?</td>
+     <td>
+      Many detail images had a resolution of 1280x720.
+      <pre>[
+  {
+    "type: "image",
+    "urls": [
+      "full": "http://...",
+      "thumb": "http://...",
+    ],
+    "fp_url": "http://...."
+  }
+]</pre>
+     </td>
+    </tr>
+    <tr>
+     <td>media</td>
+     <td>Detail image file picker URL</td>
+     <td>-</td>
+     <td></td>
+     <td></td>
+     <td>mediaTiles.*.fp_url</td>
+     <td>?</td>
+     <td>
+      <pre>[
+  {
+    "type: "image",
+    "urls": [
+      "full": "http://...",
+      "thumb": "http://...",
+    ],
+    "fp_url": "http://...."
+  }
+]</pre>
+     </td>
+    </tr>
     <tr>
      <td>media</td>
      <td>FIXME</td>
     <tr>
      <td>media</td>
      <td>FIXME</td>
+     <td>-</td>
      <td></td>
      <td>mobileAppIcon</td>
      <td></td>
      <td>mobileAppIcon</td>
+     <td>mobileAppIcon</td>
      <td>App.iconImage</td>
      <td>App.iconImage</td>
-     <td>null</td>
-     <td></td>
+     <td>
+      null<br/>
+      https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-v6tjz1
+     </td>
+     <td>
+      1246x null, rest had its own URL.
+      Set when heroImage was filled.
+     </td>
     </tr>
 
     <tr>
      <td>developer</td>
      <td>Developer name</td>
     </tr>
 
     <tr>
      <td>developer</td>
      <td>Developer name</td>
+     <td>developer.name</td>
      <td></td>
      <td>developer</td>
      <td></td>
      <td>developer</td>
+     <td>developer.name</td>
      <td>Developer.name</td>
      <td>winterworks GmbH</td>
      <td></td>
      <td>Developer.name</td>
      <td>winterworks GmbH</td>
      <td></td>
     <tr>
      <td>developer</td>
      <td>Developer support mail</td>
     <tr>
      <td>developer</td>
      <td>Developer support mail</td>
+     <td>developer.supportEmail (optional)</td>
      <td></td>
      <td>supportEmailAddress</td>
      <td></td>
      <td>supportEmailAddress</td>
+     <td>-</td>
      <td>Developer.supportEmail</td>
      <td>null</td>
      <td></td>
      <td>Developer.supportEmail</td>
      <td>null</td>
      <td></td>
     <tr>
      <td>developer</td>
      <td>Support phone number</td>
     <tr>
      <td>developer</td>
      <td>Support phone number</td>
+     <td>developer.supportPhone (optional)</td>
      <td></td>
      <td>supportPhone</td>
      <td></td>
      <td>supportPhone</td>
+     <td>-</td>
      <td>Developer.supportPhone</td>
      <td>null</td>
      <td></td>
      <td>Developer.supportPhone</td>
      <td>null</td>
      <td></td>
     <tr>
      <td>developer</td>
      <td>Developer is a founder</td>
     <tr>
      <td>developer</td>
      <td>Developer is a founder</td>
+     <td>developer.founder (optional)</td>
      <td></td>
      <td>founder</td>
      <td></td>
      <td>founder</td>
+     <td>developer.founder</td>
      <td>Developer.founder</td>
      <td>false</td>
      <td></td>
     </tr>
      <td>Developer.founder</td>
      <td>false</td>
      <td></td>
     </tr>
+    <tr>
+     <td>developer</td>
+     <td>Developer UUID</td>
+     <td>developer.uuid (optional)</td>
+     <td>-</td>
+     <td>-</td>
+     <td>developer.url (part of)</td>
+     <td>Developer.uuid</td>
+     <td>ouya://launcher/details?developer=5b015434-8a78-4274-aa5d-0cb2e330e50e</td>
+     <td></td>
+    </tr>
 
    </tbody>
   </table>
 
    </tbody>
   </table>