add apk.versionCode and developer.uuid to game metadata
[ouya-game-data.git] / game-metadata.html
index a8252163815e7f15edce0caba1f12a07d17a8231..100ccaef41f2c0d74d6e9e5fd53d5a663a103cd4 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>
+  <style type="text/css">
+   thead th {
+     position: sticky;
+     top: 0px;
+     background-color: lightgrey;
+   }
+  </style>
  </head>
  <body>
   <table border="1">
     <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-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>
@@ -25,6 +34,8 @@
      <td>Game UUID</td>
      <td>uuid</td>
      <td>uuid</td>
+     <td>uuid</td>
+     <td>-</td>
      <td>App.uuid</td>
      <td>780688a9-95ee-429a-8755-69a8d0c88fe0</td>
      <td></td>
@@ -34,6 +45,8 @@
      <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>
     <tr>
      <td>app</td>
      <td>Overview text</td>
+     <td>overview (optional)</td>
      <td></td>
      <td>overview</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>
+     <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>
@@ -59,6 +76,8 @@
     <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>
@@ -70,6 +89,8 @@
      <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</td>
      <td>Package name</td>
      <td>package</td>
+     <td>package</td>
      <td></td>
+     <td>apk.package</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>
+     <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>website</td>
      <td></td>
      <td>website</td>
+     <td>-</td>
      <td>App.website</td>
      <td>http://www.winterworks.de</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>Content rating</td>
+     <td>contentRating (optional)</td>
      <td>contentRating</td>
      <td>contentRating</td>
+     <td>suggestedAge</td>
      <td>App.contentRating</td>
      <td>Everyone</td>
      <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>
     <tr>
      <td>app</td>
      <td>When the game was published</td>
+     <td>firstPublishedAt (optional)</td>
      <td></td>
      <td>firstPublishedAt</td>
+     <td>firstPublishedAt (unix timestamp)</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>
+     <td>inAppPurchases (optional)</td>
      <td>inAppPurchases</td>
      <td></td>
+     <td>inAppPurchases</td>
      <td>-</td>
      <td>true</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>FIXME</td>
+     <td>-</td>
      <td>type</td>
      <td></td>
+     <td>type</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>
+     <td>-</td>
      <td>updated_at</td>
      <td></td>
+     <td>-</td>
      <td>AppVersion.releaseTime</td>
      <td>1417731390</td>
      <td></td>
     <tr>
      <td>app</td>
      <td>Last update</td>
+     <td>releases.*.date (when "latest")</td>
      <td>updatedAt</td>
      <td></td>
+     <td>-</td>
      <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>
+     <td>rating.likeCount</td>
      <td></td>
      <td>likeCount</td>
+     <td>-</td>
      <td>Rating.likeCount</td>
      <td>0</td>
      <td></td>
      <td>rating</td>
      <td>Average rating</td>
      <td>rating.average</td>
+     <td>rating.average</td>
      <td>ratingAverage</td>
+     <td>rating.average</td>
      <td>Rating.rating</td>
      <td>4.1</td>
      <td></td>
      <td>rating</td>
      <td>Number of ratings</td>
      <td>rating.count</td>
+     <td>rating.count</td>
      <td>ratingCount</td>
+     <td>rating.count</td>
      <td>Rating.reviewCount</td>
      <td>355</td>
      <td></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>
     <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>
     <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>
     <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>
     <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>
     <tr>
      <td>product</td>
      <td>Saving</td>
+     <td>-</td>
+     <td>promotedProduct.percentOff</td>
      <td>promotedProduct.percentOff</td>
      <td>promotedProduct.percentOff</td>
      <td>-</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>
     <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>
+    <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>
-     <td>versionNumber</td>
+     <td>Human readable version</td>
+     <td>releases.*.name</td>
      <td>latestVersion.versionNumber</td>
      <td>versionNumber</td>
+     <td>version.number</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>
+     <td>releases.*.uuid</td>
      <td>latestVersion.uuid</td>
      <td>latestVersion</td>
-     <td>Apk.versionCode</td>
+     <td>version.uuid</td>
+     <td>-</td>
      <td>780688a9-95ee-429a-8755-69a8d0c88fe0</td>
      <td></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, 120401, 11, 1001004</td>
+     <td>Run "aapt dump badging file.apk", field "versionCode"</td>
+    </tr>
     <tr>
      <td>apk</td>
      <td>FIXME</td>
+     <td>releases.*.publicSize</td>
      <td></td>
      <td>publicSize</td>
+     <td>apk.publicSize</td>
      <td>Apk.publicSize</td>
      <td>27275</td>
      <td></td>
     <tr>
      <td>apk</td>
      <td>FIXME</td>
+     <td>releases.*.nativeSize</td>
      <td></td>
      <td>nativeSize</td>
+     <td>apk.nativeSize</td>
      <td>Apk.nativeSize</td>
      <td>20292</td>
      <td></td>
     <tr>
      <td>apk</td>
      <td>MD5 file hash</td>
+     <td>releases.*.md5sum</td>
      <td>latestVersion.apk.md5sum</td>
      <td>md5sum</td>
+     <td>apk.md5sum</td>
      <td>Apk.md5sum</td>
      <td>a5b0f82d54df5f551a64295e43771a10</td>
      <td></td>
     <tr>
      <td>apk</td>
      <td>APK file size</td>
+     <td>releases.*.size</td>
      <td></td>
      <td>apkFileSize</td>
+     <td>apk.fileSize</td>
      <td>Apk.size</td>
      <td>25507828</td>
      <td></td>
     <tr>
      <td>apk</td>
      <td>APK publish date</td>
+     <td>releases.*.date</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>
     <tr>
      <td>apk</td>
      <td>downloadLink</td>
+     <td>releases.*.url</td>
      <td></td>
      <td></td>
+     <td>apk.filename</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
+     </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>
+     <td>media.discover</td>
      <td>image</td>
      <td></td>
+     <td>tileImage</td>
      <td>Media</td>
      <td>https://www.filepicker.io/api/file/05y2T8cKTY6cUfX7RYFR</td>
      <td></td>
     <tr>
      <td>media</td>
      <td>Large image</td>
+     <td>media.large</td>
      <td></td>
      <td>mainImageFullUrl</td>
+     <td>-</td>
      <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>
+     <td>media.video</td>
      <td></td>
      <td>videoUrl</td>
+     <td>mediaTiles.*.url (when mediaTiles.*.type=video)</td>
      <td>Media</td>
      <td>https://vimeo.com/141878938</td>
      <td></td>
     <tr>
      <td>media</td>
      <td>Game screenshots</td>
+     <td>media.screenshots</td>
      <td></td>
      <td>filepickerScreenshots</td>
+     <td>mediaTiles.*.urls.full, mediaTiles.*.urls.thumb, mediaTiles.*.fp_url (when mediaTiles.*.type=image)</td>
      <td>Media</td>
      <td>[urls]</td>
      <td></td>
     <tr>
      <td>media</td>
      <td>FIXME</td>
+     <td>-</td>
      <td></td>
      <td>mobileAppIcon</td>
+     <td>mobileAppIcon</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>
+     <td>developer.name</td>
      <td></td>
      <td>developer</td>
+     <td>developer.name</td>
      <td>Developer.name</td>
      <td>winterworks GmbH</td>
      <td></td>
     <tr>
      <td>developer</td>
      <td>Developer support mail</td>
+     <td>developer.supportEmail</td>
      <td></td>
      <td>supportEmailAddress</td>
+     <td>-</td>
      <td>Developer.supportEmail</td>
      <td>null</td>
      <td></td>
     <tr>
      <td>developer</td>
      <td>Support phone number</td>
+     <td>developer.supportPhone</td>
      <td></td>
      <td>supportPhone</td>
+     <td>-</td>
      <td>Developer.supportPhone</td>
      <td>null</td>
      <td></td>
     <tr>
      <td>developer</td>
      <td>Developer is a founder</td>
+     <td>developer.founder</td>
      <td></td>
      <td>founder</td>
+     <td>developer.founder</td>
      <td>Developer.founder</td>
      <td>false</td>
      <td></td>
     </tr>
+    <tr>
+     <td>developer</td>
+     <td>Developer UUID</td>
+     <td>developer.uuid</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>