1 <?xml version="1.0" encoding="UTF-8"?>
3 <html xmlns="http://www.w3.org/1999/xhtml">
5 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
6 <title>OUYA game meta data</title>
7 <style type="text/css">
11 background-color: lightgrey;
21 <th>Game data field</th>
22 <th><a href="http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-discover">Discover field</a></th>
23 <th><a href="http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-apps-xxx">App field</a></th>
24 <th><a href="http://cweiske.de/ouya-store-api-docs.htm#get-https-devs-ouya-tv-api-v1-details">Details field</a></th>
25 <th><a href="https://gitlab.com/devirich/BrewyaOnOuya/blob/master/store/models.py">BrewyaOnOuya field</a></th>
45 <td>Overview text</td>
46 <td>overview (optional)</td>
51 <td>Released in October 2015 by winterworks GmbH.</td>
61 <td>App.description</td>
62 <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>
67 <td>Number of players</td>
72 <td>App.playerNumbers</td>
74 <td>Any combination of 1-4</td>
84 <td>[Platformer, Retro]</td>
90 <li>Arcade/Pinball</li>
93 <li>Entertainment</li>
101 <li>Puzzle/Trivia</li>
104 <li>Role-Playing</li>
105 <li>Short on Time?</li>
106 <li>Sim/Strategy</li>
115 <td>Package name</td>
120 <td>App.packageName</td>
121 <td>evil.corptron.DuckGame</td>
122 <td>Run "aapt dump badging file.apk", field "package: name"</td>
132 <td>ouya://launcher/details?app=evil.corptron.DuckGame</td>
137 <td>Game website</td>
138 <td>website (optional)</td>
143 <td>http://www.winterworks.de</td>
148 <td>Content rating</td>
149 <td>contentRating (optional)</td>
150 <td>contentRating</td>
151 <td>contentRating</td>
152 <td>suggestedAge</td>
153 <td>App.contentRating</td>
167 <td>premium (optional)</td>
177 <td>When the game was published</td>
178 <td>firstPublishedAt (optional)</td>
180 <td>firstPublishedAt</td>
181 <td>firstPublishedAt (unix timestamp)</td>
182 <td>App.firstPublishedAt</td>
183 <td>2015-10-09T07:53:25Z</td>
188 <td>Are there in-app purchases?</td>
189 <td>inAppPurchases (optional)</td>
190 <td>inAppPurchases</td>
192 <td>inAppPurchases</td>
207 discover: "app", "discover" or "details_page" (for bundles)<br/>
208 details: "Game", FIXME
213 <td>Last update (unix timestamp)</td>
218 <td>AppVersion.releaseTime</td>
225 <td>releases.*.date (when "latest")</td>
229 <td>AppVersion.releaseTime</td>
230 <td>2014-12-04T22:16:30Z</td>
236 <td>Metadata about the file</td>
242 <td>["key:rating.average", "key:developer.name", "key:suggestedAge", "45.29 MiB"]</td>
243 <td>Always those 4 values and in the same order (at least for apps)</td>
248 <td>Number of likes?</td>
249 <td>rating.likeCount (optional)</td>
253 <td>Rating.likeCount</td>
259 <td>Average rating</td>
260 <td>rating.average (optional)</td>
261 <td>rating.average</td>
262 <td>ratingAverage</td>
263 <td>rating.average</td>
264 <td>Rating.rating</td>
270 <td>Number of ratings</td>
271 <td>rating.count (optional)</td>
272 <td>rating.count</td>
274 <td>rating.count</td>
275 <td>Rating.reviewCount</td>
282 <td>Promotion data</td>
283 <td>products.* (when "promoted=true")</td>
284 <td>promotedProduct</td>
285 <td>promotedProduct</td>
286 <td>promotedProduct</td>
287 <td>App.promotedProduct</td>
289 <td>May be "null" if none, otherwise object</td>
294 <td>products.*.identifier</td>
295 <td>promotedProduct.identifier</td>
296 <td>promotedProduct.identifier</td>
297 <td>promotedProduct.identifier</td>
298 <td>Product.identifier</td>
299 <td>unlock_rockets</td>
304 <td>Product name</td>
305 <td>products.*.name</td>
306 <td>promotedProduct.name</td>
307 <td>promotedProduct.name</td>
308 <td>promotedProduct.name</td>
309 <td>Product.name</td>
310 <td>Unlock Full Game</td>
315 <td>Product currency</td>
316 <td>products.*.currency</td>
317 <td>promotedProduct.currency</td>
318 <td>promotedProduct.currency</td>
319 <td>promotedProduct.currency</td>
326 <td>Product description</td>
327 <td>products.*.description</td>
328 <td>promotedProduct.description</td>
329 <td>promotedProduct.description</td>
330 <td>promotedProduct.description</td>
331 <td>Product.description</td>
333 Remove the 9 satellites limitation. Infinite satellites!<br/>
342 <td>promotedProduct.percentOff</td>
343 <td>promotedProduct.percentOff</td>
344 <td>promotedProduct.percentOff</td>
351 <td>Current price</td>
352 <td>products.*.localPrice</td>
353 <td>promotedProduct.localPrice</td>
354 <td>promotedProduct.localPrice</td>
355 <td>promotedProduct.localPrice</td>
362 <td>Previous price</td>
363 <td>products.*.originalPrice</td>
364 <td>promotedProduct.originalPrice</td>
365 <td>promotedProduct.originalPrice</td>
366 <td>promotedProduct.originalPrice</td>
367 <td>Product.originalPrice</td>
377 <td>promotedProduct.type</td>
379 <td>"entitlement" (502x), null (758x)</td>
385 <td>Human readable version</td>
386 <td>releases.*.name</td>
387 <td>latestVersion.versionNumber</td>
388 <td>versionNumber</td>
389 <td>version.number</td>
390 <td>Apk.versionName</td>
392 <td>Run "aapt dump badging file.apk", field "versionName"</td>
396 <td>UUID of latest apk version</td>
397 <td>releases.*.uuid</td>
406 <td>version.uuid</td>
408 <td>780688a9-95ee-429a-8755-69a8d0c88fe0</td>
409 <td>The OUYA API does not have app UUIDs, only release/apk uuids. </td>
413 <td>Internal version</td>
414 <td>releases.*.versionCode</td>
417 <td>apk.versionCode</td>
418 <td>Apk.versionCode</td>
419 <td>null (1162x), 120401, 11, 1001004</td>
420 <td>Run "aapt dump badging file.apk", field "versionCode"</td>
425 <td>releases.*.publicSize (optional)</td>
428 <td>apk.publicSize</td>
429 <td>Apk.publicSize</td>
436 <td>releases.*.nativeSize (optional)</td>
439 <td>apk.nativeSize</td>
440 <td>Apk.nativeSize</td>
446 <td>MD5 file hash</td>
447 <td>releases.*.md5sum</td>
448 <td>latestVersion.apk.md5sum</td>
452 <td>a5b0f82d54df5f551a64295e43771a10, null (432x)</td>
457 <td>APK file size</td>
458 <td>releases.*.size</td>
461 <td>apk.fileSize</td>
468 <td>APK publish date</td>
469 <td>releases.*.date</td>
472 <td>version.publishedAt (unix timestamp)</td>
473 <td>AppVersion.releaseTime</td>
474 <td>2015-10-23T09:58:19Z</td>
479 <td>downloadLink</td>
480 <td>releases.*.url</td>
483 <td>apk.filename</td>
484 <td>Apk.location</td>
486 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/>
487 details: 1zbYKRSS1elKIYI9eseH_BombSquad-ouya-release.apk
490 Also in download.json<br/>
491 Details field: only a file name, no path/domain. Always set.
510 <td>Discover image</td>
511 <td>media.discover</td>
516 <td>https://www.filepicker.io/api/file/05y2T8cKTY6cUfX7RYFR</td>
524 <td>mainImageFullUrl</td>
526 <td>App.titleImage</td>
527 <td>https://d3e4aumcqn8cw3.cloudfront.net/api/file/MASaiOBlTEO7GKYXsIns</td>
536 <td>heroImage.url</td>
539 https://s3.amazonaws.com/ouya-screenshots/3d819f4e-2195-433c-81ea-c766a6f3144f/ouya-image20170118-3-i56ad1<br/>
543 Most games, had "null" here, only 14 had one set.
544 When this was set, mobileAppIcon was also set.
550 <td>media.video (optional)</td>
555 <td>https://vimeo.com/141878938</td>
560 <td>Game screenshots</td>
561 <td>media.screenshots (optional)</td>
563 <td>filepickerScreenshots</td>
571 <td>Detail video</td>
572 <td>media.details.*.url</td>
575 <td>mediaTiles.*.url (type=video)</td>
581 "url": "https://vimeo.com/141878938"
586 Allows free ordering of images and videos on the details page.<br/>
587 "fp" is probably "FilePicker".<br/>
588 fp_url is not used in OUYA's launcher.
589 The launcher loads the thumbnail at first, immediately after the full image.
590 If no mediaTile is available, the app's mainImageFullUrl
591 is used. When offline, the apk image is used.<br/>
593 Game data information:
594 If details is not given or an emtpy array,
595 "mediaTile" array should automatically be created by combining
596 "media.large", "media.video" and "media.screenshots" into the
602 <td>Detail image thumbnail</td>
603 <td>media.details.*.thumb</td>
606 <td>mediaTiles.*.urls.thumb (type=image)</td>
609 Thumbnails were all size 852x479
614 "full": "http://...",
615 "thumb": "http://...",
617 "fp_url": "http://...."
624 <td>Detail image full resolution</td>
625 <td>media.details.*.url</td>
628 <td>mediaTiles.*.urls.full (type=image)</td>
631 Many detail images had a resolution of 1280x720.
636 "full": "http://...",
637 "thumb": "http://...",
639 "fp_url": "http://...."
646 <td>Detail image file picker URL</td>
650 <td>mediaTiles.*.fp_url</td>
657 "full": "http://...",
658 "thumb": "http://...",
660 "fp_url": "http://...."
670 <td>mobileAppIcon</td>
671 <td>mobileAppIcon</td>
672 <td>App.iconImage</td>
675 https://s3.amazonaws.com/ouya-screenshots/3ae8fc67-f7f5-4f97-a48c-8ea2d31460fd/ouya-image20170911-3-v6tjz1
678 1246x null, rest had its own URL.
679 Set when heroImage was filled.
685 <td>Developer name</td>
686 <td>developer.name</td>
689 <td>developer.name</td>
690 <td>Developer.name</td>
691 <td>winterworks GmbH</td>
696 <td>Developer support mail</td>
697 <td>developer.supportEmail (optional)</td>
699 <td>supportEmailAddress</td>
701 <td>Developer.supportEmail</td>
707 <td>Support phone number</td>
708 <td>developer.supportPhone (optional)</td>
710 <td>supportPhone</td>
712 <td>Developer.supportPhone</td>
718 <td>Developer is a founder</td>
719 <td>developer.founder (optional)</td>
722 <td>developer.founder</td>
723 <td>Developer.founder</td>
729 <td>Developer UUID</td>
730 <td>developer.uuid (optional)</td>
733 <td>developer.url (part of)</td>
734 <td>Developer.uuid</td>
735 <td>ouya://launcher/details?developer=5b015434-8a78-4274-aa5d-0cb2e330e50e</td>